?? signal.v
字號:
//頂層模塊(信號發生器)。
//產生編碼解碼時使用的clk_1以及頻率為它31倍的clk_31信號。
//產生M序列的發送信號indata(隨機),并且將接收到的解碼信號(decode)進行比較。
//發送的頭10個信號為1,第11個為0,在解碼的開始時期進行同步判斷時用到。
`timescale 1ns/1ns
module signal;
reg indata; //待調制信號序列
reg rst,en,clk_1,clk_31;
wire [8:0] sum;
wire decode_data;
wire [1:0] unnoised_data;
wire [2:0] noised_data;
integer i;
integer OUTFILE,INFILE;
initial
begin
clk_1 =0;
clk_31 =0;
i =0;
en =0;
rst =0;
#400 rst =1;
en =1;
#5 clk_1 =1;
end
always #100 clk_31 <=~clk_31; //clk_1的周期是100個時間單位(ns)
always #(31*100) clk_1 <=~clk_1; //clk_1信號的周期是clk_31的31倍
always@(negedge clk_1)
begin
if(i<10)
begin
i =i+1;
indata =1;
end
else if(i==10)
begin
indata =0;
i =i+1;
end
else
indata =$random%2; //待調制信號由隨機數對2取余數,就得到隨機數列0或1
$fdisplay (INFILE ,"@%0b",indata);
$fdisplay (OUTFILE,"@%0b",decode_data);
end
initial
begin
INFILE =$fopen("./indata.dat"); //將編碼前的信號和解碼后的信號分別寫入
OUTFILE =$fopen("./outdata.dat"); //indata.dat和outdata.dat中以便后來進行檢驗
end
coder coder (.rst(rst),.en(en),.clk_1(clk_1),.clk_31(clk_31),
.indata(indata),.outdata(unnoised_data));
add_noise add_noise (.rst(rst),.en(en),.clk_31(clk_31),.unnoised_data(unnoised_data),
.noised_data(noised_data));
decoder decoder (.clk_31(clk_31),.indata(noised_data),.outdata(decode_data),
.rst(rst),.en(en),.sum(sum));
endmodule
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -