我需要创建与inout引脚配合使用的多路复用器模块。 我的模块有n个输入和n个输出,我希望能够切换 在不同的输出之间。
我目前遇到的问题是我需要这样做 入针。因此,如果我的输出引脚被拉低, 多路复用器会看到这一点。这不适用于常见的assign语句,因为 它只会在一个方向上写入。我尝试了一个别名声明, 就像双向分配一样工作,但是我无法将其与多路复用器的if语句结合使用。
我想做什么:
alias net_out = (config) ? net1 : net2;
我创建了一个示例on edaplayground
预先感谢, 帕特里克
答案 0 :(得分:2)
您可以使用双向tran
原语,这正是在MOS硬件中实现该原语的方式。
tranif1(net_out, net1, config);
tranif0(net_out, net2, config);
如果您希望在硬件中执行此操作,则必须由您的技术支持。大多数FPGA不支持此功能。
但是,如果此config
信号是参数而不是变量,则可以将alias
语句与generate-if一起使用
if(config)
alias net_out = net1;
else
alias net_out = net2;