【发布时间】:2021-04-27 07:43:57
【问题描述】:
我是 Verilog 编码的新手,我的代码中出现错误。有人可以帮忙调试一下吗?
主要代码:
module tff (q,t,clk,clear);
input t,clk,clear;
output reg q;
always @(negedge clk or posedge clear)
begin
if (clear) q <= 0;
else if(t==1) q <= ~q;
else q<= q;
end
endmodule
module seriesof3 (y,q1,q2,a,clk,clear);
input a,clk,clear,q1,q2;
output reg y,q1,q2;
always @(negedge clk or posedge clear)
begin
if (clear) begin
q1 <= 0;
q2 <= 0;
end
else begin
tff ta (q1,a,clk,clear);
tff tb (q2,~q1&(q2^a),clk,clear);
y <= a&q2;
end
end
endmodule
测试台代码:
'timescale = 1 ms/1 ms
module testbench(y,a,clk,clear)
reg a,clk,clear;
wire y,q1,q2;
seriesof3 DUT (y,q1,q2,a,clk,clear);
initial
begin
$ dumpvars(0,test_bench);
$ dumpfile("first.vcd");
$ monitor ($time,"a=%b, Y= %b",a,y);
clear<=0;
a<=0;
#2 clear<=1;
#5 clear<=0;
end
forever #5 clk= ~clk;
begin
#8 a=0;
#5 a=1;
#5 a=1;
#5 a=1;
#5 a=1;
#5 a=0;
#5 a=1;
#5 a=1;
#5 a=0;
#5 a=1;
#5 a=1;
#5 $finish;
end
endmodule
在这里,我希望使用程序方法检测三个或更多的。我知道我可以直接使用状态图和更新状态来实现它,但我想将它作为硬件实现来实现。 提前致谢!
【问题讨论】:
-
您能具体说明您遇到的错误类型吗?
标签: verilog hardware-programming iverilog