QPSK调制程序的testbench程序如下:
********************************************************************************
`timescale 1ns/1ns //单位时间,时间精度
module qpsk_tb; //qpsk调制的testbench
reg clk;
reg rst;
reg x;
wire y;
qpsk qpsk(.clk(clk),.rst(rst),.x(x),.y(y)); //将tb输入输出与主程序qpsk关联起来
always #25 clk=~clk; //#25表示25个时间单位,
// 这句表示clk信号的周期是50(*1ns)
initial
begin
clk=0;x=0;rst=0; //赋初值
#10;rst=1;x=1; //间隔10ns,将复位信号置为1
#10;x=0;
#400; x=1; //时钟周期是50ns,这里的信号表示的波形为
#400; x=0; //1111111100000000111100001100
#200; x=1;
#200; x=0;
#100; x=1;
#100; x=0;
end
endmodule
QPSK解调程序的testbench程序如下:
********************************************************************************
`timescale 1ns/1ns //单位时间,时间精度
module qpsk_detb; //qpsk解调的testbench
reg clk;
reg rst;
reg x;
wire y;
qpsk_de qpsk_de(.clk(clk),.rst(rst),.x(x),.y(y)); //将tb输入输出与主程序qpsk_de关联起来
always #25 clk=~clk; //#25表示25个时间单位
initial
begin
clk=0;x=0;rst=0;
#10;rst=1;x=1;#10;x=0; //时钟周期是50ns,这里的信号表示的波形为
#400;x=1;#400;x=0; //1111111100000000
#200;x=1;#200;x=0; //11110000
#200;x=0;#200;x=1; //00001111
#100;x=0;#200;x=1;#100;x=0; //00111100
#100;x=1;#200;x=0;#100;x=1; //11000011
#100;x=1;#100;x=0; //1100
end
endmodule
对边写,每4个周期x变一次,然后与解调输出比较就行了
好像代码有问题。解调部分没看,调制部分yreg应该根据xreg的值选择载波carriers。这里却根据count选择
我也遇到这个问题了,我想问下这个代码是正确的不啊?