【问题标题】:Verilog code errorVerilog 代码错误
【发布时间】:2014-04-15 16:00:41
【问题描述】:

我在这段代码中遇到错误。该代码用于 4 位比较器。错误是我在out1 端口中得到“未指定”的输出。

请帮忙。

module bitCompare(num1,num2,out1,out2);

    parameter n = 3;

    output out1;
    output out2;
    input  [n:0] num1;
    input  [n:0] num2;

    wire [n:0] eq;
    wire x0,x1,x2,x3;
    wire a,b,c,d;
    wire an;

    // Comparator in structural mode
    xnor xn1(x0,num1[0],num2[0]);
    xnor xn2(x1,num1[1],num2[1]);
    xnor xn3(x2,num1[2],num2[2]);
    xnor xn4(x3,num1[3],num2[3]);
    and  a1(out2,x0,x1,x2,x3);
    not  n1(an,num1[3]);
    and  a2(a,an,num2[3]);
    not  n2(an,num1[2]);
    and  a3(b,x3,an,num2[2]);
    not  n3(aN,num1[1]);
    and  a4(c,x3,x2,an,num2[1]);
    not  n4(an,num1[0]);
    and  a5(d,x3,x2,x1,an,num2[0]);
    or   o1(out1,a,b,c,d);
endmodule

module Testbench;

    reg [3:0] numb1, numb2;
    wire outp1;
    wire outp2;
    bitCompare c(numb1, numb2,outp1,outp2);

    initial
    begin
    //case 0
        numb1 <= 4'b0000;
        numb2 <= 4'b0001;  #20;  $display("isEqual= %b\t",outp2); $display("less= %b\n",outp1);
        numb1 <= 4'b1111;
        numb2 <= 4'b1111;  #10;  $display("isEqual= %b\t",outp2); $display("less= %b\n",outp1);
        numb1 <= 4'b1000;
        numb2 <= 4'b1010;  #10;  $display("isEqual= %b\t",outp2); $display("less= %b\n",outp1);
        numb1 <= 4'b0111;
        numb2 <= 4'b0111;  #10;  $display("isEqual= %b\t",outp2); $display("less= %b\n",outp1);
    //case2
    end
endmodule

【问题讨论】:

  • 运行时数据比较错误; outp1 变为 X。信号an 的驱动程序太多。它由实例n1n2n4 驱动。还有一个信号aN 看起来是无意的。
  • 修复了问题。开太多次了。你能解释一下为什么我不应该附加太多具有相同信号的驱动程序吗? @格雷格
  • 一根电线只能有一个驱动器。当值不同时,它如何知道该怎么做?如果我说分配 a= 1'b1;分配 a=1'b0; a的值是多少?如果你想组合成信号,你必须使用一些逻辑或三态。

标签: verilog verification


【解决方案1】:

Verilog 几乎可以并行模拟所有内容。当网络有多个驱动程序时,需要解析值值。如果驱动程序都是相同的值,则输出将具有已知值。如果驱动值不匹配,则输出为X。除了在阻塞语句中之外,没有最后的分配获胜。

Verilog 允许网络上有多个驱动程序,它不会警告您。可以通过切换到 SystemVerilog 并在 always_combalways_ffalways_latch 块内分配值来确保单个驱动程序。

【讨论】:

    猜你喜欢
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多