********************************************************************************
`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