Questa Sim中的Assign语句产生x作为输出

问题描述

我编写了一个模块,该模块应该“或”带有延迟版本的信号。但是,当我仿真设计时,输出始终为x而不是1。我不知道为什么。这是我写设计的方式:

module DUT(
input data_in,input dw,input rst,output error
);
wire Edge;
wire #4 delayed_data_in;

assign Edge = data_in ^ delayed_data_in;
assign delayed_data_in = data_in;
always@(dw,Edge,rst) //Latch 1
begin
    if(rst)
    begin
        error <= 0;
    end
    else if(dw)
    begin
        error  <= Edge;
    end
end
endmodule

延迟版本的行为符合预期,但是Edgeerror只是变为“ x”而不是1。

解决方法

我的代码出现编译错误。您可以尝试在edaplayground上的不同模拟器上编译代码。问题是您无法对网络(error)进行程序分配。要解决该错误,请更改:

output error

收件人:

output reg error

通过这个简单的测试台,可以解决x:

module tb;

    reg data_in;
    reg dw;
    reg rst;
    wire error;

DUT dut (
        // Inputs:
    .data_in  (data_in),.dw       (dw),.rst      (rst),// Outputs:
    .error    (error)
);

initial begin
    data_in = 0;
    dw = 0;
    rst = 1;
    #30 rst = 0;
    #50 $finish;
end

endmodule

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...