我正在尝试根据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)
);
测试台显示只有输入被驱动(例如 rw=0 CRC 输入有效,但其余的值未知)。是因为我同时将输入分配给输出和输出分配给输入吗?或者这是正确的,我应该在我的代码中寻找错误?如果没有,如何仅使用每个模块的 1 个实例来执行此操作?
希望我把一切都说清楚了,谢谢你的时间!