0

触发器结构代码和测试台代码

我不知道我在哪里犯了错误。我在输出中几乎没有错误。

`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

@@@试验台@@@@

`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 时间:0.036 秒

4

1 回答 1

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.

这也是有效的可综合声明,在测试台和设计中使用如下:

always@(posedge clk or negedge rst_n) // use or

您也可以添加+v2k开关并重试。我已经在EDAPlayground模拟了您的代码,并且运行良好。

于 2015-11-17T04:28:32.963 回答