触发器结构代码和测试台代码
我不知道我犯了什么错误。我输出中的错误很少。
`timescale 1ns/1ps
module t_ff (
input clk,t,rst_n,
output reg q);
always@(posedge clk ,negedge rst_n)
begin
if (!rst_n)
q <= 1'b0;
else if(t)
q <= ~q;
else
q <= q;
end
endmodule
@@@ test bench @@@@
`timescale 1ns/1ps
module tb_tff;
reg RST_n, CLK,T;
wire Q;
t_ff TFF (.clk(CLK) ,.rst_n(RST_n) ,.q( Q ),.t(T));
initial begin
RST_n = 1'b0;
CLK =1'b0;
T =1'b0;
#5 RST_n = 1'b1;
#13 RST_n = 1'b0;
#7 RST_n = 1'b1;
#45 $finish;
end
always #3 CLK = ~CLK;
always #6 T = ~T;
always @(posedge CLK ,negedge RST_n)
$strobe("time =%0t \t INPUT VALUES \t T =%b RST_n =%b \t OUTPUT VALUES
Q=%d",$time,T,RST_n,Q);
endmodule
得到如下错误:
错误 - 使用[V2KS] Verilog IEEE 1364-2000语法
TFlipflop.v,4 Verilog 2000 IEEE 1364-2000使用的语法:组合 端口和类型声明。请用+ v2k编译以支持 这个结构。
错误 - 使用[V2KS] Verilog IEEE 1364-2000语法
TFlipflop.v,4使用Verilog 2000 IEEE 1364-2000语法:Ansi风格 港口申报。请使用+ v2k编译以支持此功能 构造
错误 - 使用[V2KS] Verilog IEEE 1364-2000语法
TFlipflop.v,6使用Verilog 2000 IEEE 1364-2000语法:逗号 分开的敏感度列表请用+ v2k编译以支持 这个结构。
解析设计文件'test_TFlipflop.v'
错误 - 使用[V2KS] Verilog IEEE 1364-2000语法
test_TFlipflop.v,使用了21 Verilog 2000 IEEE 1364-2000语法: 逗号分隔的敏感度列表。请用+ v2k编译 支持这种结构。
4个错误CPU时间:.036秒
答案 0 :(得分:0)
似乎您的模拟器需要更新。试试新版本。所有这些都是有效的ANSI样式。以下是错误原因和一些解决方法:
Error-[V2KS] Verilog IEEE 1364-2000 syntax used
TFlipflop.v, 4
Verilog 2000 IEEE 1364-2000 syntax used : Combined port and type
declaration.
我猜错误说output reg q
无效,即使它是有效的ANSI样式。所以,做这样的事情:
module t_ff (input clk,t,rst_n,output q);
reg q;
// Alternate Non-ANSI style
module t_ff (clk,t,rst_n,q);
input clk,t,rst_n;
output q;
reg q;
接下来是:
Error-[V2KS] Verilog IEEE 1364-2000 syntax used
TFlipflop.v, 6
Verilog 2000 IEEE 1364-2000 syntax used : Comma separated sensitivity lists.
这也是有效的可合成声明,在testbench和design中使用如下:
always@(posedge clk or negedge rst_n) // use or
您还可以添加+v2k
开关,然后重试。我已经在EDAPlayground模拟了您的代码,并且运行得非常好。