【问题标题】:Connecting modules using conditional (?:) assign statements使用条件 (?:) 分配语句连接模块
【发布时间】:2013-11-04 18:37:21
【问题描述】:

我正在尝试根据 bit_proc_rw 信号值以不同方式连接 2 个模块。 还不能发图片,所以:

如果 bit_proc_rw 数据流:bit_in --> SCR --> CRC --> bit_out

如果不是,它是一个接收者:bit_in --> CRC --> SCR --> bit_out

所以我在一个顶级模块中做了这个(全线型):

assign SCR_input = (bit_proc_rw) ?  bit_proc_in : CRC_output; 
assign SCR_input_dav = (bit_proc_rw) ? bit_proc_in_dav : CRC_output_dav;

assign SCR_output = (bit_proc_rw) ? CRC_input : bit_proc_out;
assign SCR_output_dav = (bit_proc_rw) ? CRC_input_dav : bit_proc_out_dav;

assign CRC_input = (bit_proc_rw) ?  SCR_output : bit_proc_in; 
assign CRC_input_dav = (bit_proc_rw) ? SCR_output_dav : bit_proc_in_dav;

assign CRC_output = (bit_proc_rw) ? bit_proc_out : SCR_input;
assign CRC_output_dav = (bit_proc_rw) ? bit_proc_out_dav : SCR_input_dav;


crc_gen crc_gen_u (
.clk (clk),
.crc_in (CRC_input),
.crc_in_dav (CRC_input_dav),
.crc_out (CRC_output),
.crc_out_dav (CRC_output_dav),
.bit_proc_rw (bit_proc_rw),

);

scr scr_u (
.clk (clk),
.scr_in (SCR_input),
.scr_in_dav (SCR_input_dav),
.scr_out (SCR_output),
.scr_out_dav (SCR_output_dav),
.bit_proc_rw (bit_proc_rw)
);

Testbench 显示只有输入被驱动(例如 rw=0 CRC 输入有效,但其余的值未知)。 是因为我同时将输入分配给输出和输出分配给输入吗? 或者这是正确的,我应该在我的代码中寻找错误? 如果没有,如何仅使用每个模块的 1 个实例来执行此操作?

希望我把一切都说清楚了,感谢您的宝贵时间!

【问题讨论】:

    标签: verilog


    【解决方案1】:

    条件运算符 (?:) 是 2:1 单向多路复用器。分配语句也是单向的。因此,分配在匹配*_output* 的信号上添加了额外的驱动程序。多个冲突的驱动程序值是未知值的原因。要更正错误,请删除输出分配并使用 mux 将 mux 分配给 bit_proc_out*

    /* Remove / comment out:
     * assign SCR_output = (bit_proc_rw) ? CRC_input : bit_proc_out;
     * assign SCR_output_dav = (bit_proc_rw) ? CRC_input_dav : bit_proc_out_dav;
     *
     * assign CRC_output = (bit_proc_rw) ? bit_proc_out : SCR_input;
     * assign CRC_output_dav = (bit_proc_rw) ? bit_proc_out_dav : SCR_input_dav;
     */
    
    // Add
    assign bit_proc_out = (bit_proc_rw) ? CRC_output : SCR_output;
    assign bit_proc_out_dav = (bit_proc_rw) ? CRC_output_dav : SCR_output_dav;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      相关资源
      最近更新 更多