如何解决在Verilog中将输入数组拆分为多个输入信号
我需要做这样的事情。我需要将阵列拆分为单独的信号。我没有启用信号来指定方向。而且,“ assign”语句也不可行。还有其他建议吗?
module conv (
inout [1:0] array,inout a,inout b
);
assign {a,b} = array;
endmodule
解决方法
您要别名一个信号的名称。请参阅IEEE 1800-2017 LRM中的10.11网络别名。
module conv ( inout [1:0] array,inout a,inout b );
alias {a,b} = array;
endmodule
,
做同样事情的Verilog方法是:
module conv ( io,io[1],io[0] );
inout [1:0] io;
endmodule
这是IEEE 1364-2001及更高版本。 (也可能是IEEE 1364-1995的投诉,但是LRM不清楚。)如果您需要绝对需要Verilog-95兼容的产品,则可以使用波纹管。我不认为以下支持在模块实例化时按名称进行连接。
tran
还有原始的module conv ( inout [1:0] array,b );
tran t1(array[1],a);
tran t0(array[0],b);
endmodule
。即使在IEEE 1364-1995中,我也没有使用支持它的合成器。
alias
如果您的工具支持SystemVerilog alias
,那么这将是首选方法。即使LRM支持已有数十年了,我也很少见过上面使用的样式。
如果您的合成器不喜欢{{1}}或以上任何一项,请检查标准单元库。它可能有一个等效的特殊单元格。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。