verilog ask调制解调testbench 5C

请高手帮忙写下ask调制解调的testbench。
//基于verilog HDL描述语言,对基带信号进行ASK振幅调制

module ASK_modulator(clk,start,x,y);

input clk; //系统时钟
input start; //开始调制信号
input x; //基带信号

output y; //调制信号

reg [1:0] q; //分频计数器
reg f; //载波信号

always @(posedge clk) begin
if(start == 0)
q <= 0;
else if(q <= 1) begin
f <= 1;
q <= q + 1;
end
else if(q == 3) begin
f <= 0;
q <= 0;
end
else begin
f <= 0;
q <= q + 1;
end
end
assign y = x && f; //对基带信号进行调制

endmodule

//基于verilog HDL描述语言,对ASK调制信号进行解调

module ASK_demodulator(clk,start,x,y);
input clk; //系统时钟
input start; //同步信号

input x; //调制信号
output y; //基带信号

reg y;
reg xx; //寄存x信号
reg [3:0] q; //计数器
reg [2:0] m; //计xx的脉冲数

always @(posedge clk)
begin
xx <= x; //clk上升沿时,把x信号赋给中间信号xx
if(!start)
q <= 0;
else if(q == 11) //if语句完成q的循环计数
q <= 0;
else
q <= q + 1;
end

always @(posedge clk) //此进程完成ASK解调
begin
if(q == 11) //m计数器清零
m <= 0;
else if(q == 10)
begin
if(m < 3) //if语句通过对m大小,来判决y输出的电平
y <= 0;
else
y <= 1;
end
else if(xx == 1)
m <= m + 1;
end

endmodule

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐