📄 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 + -