模块输出中的Verilog连接

时间:2011-07-25 17:38:43

标签: verilog

当我实例化一个模块而我只关心输出中的一些位时,是否有一个简单的语法来丢弃这些位?像

这样的东西
my_module module_instance
( 
 .some_output({garbage1,important1[7:0]})
);

在这种情况下,some_output中的信号my_module为9位宽,但我只想将低8位粘贴到important1。我可以用所有9位发出一个信号,然后从中选择8,我知道编译器会优化它,但我正在寻找一个成语或缩写。

2 个答案:

答案 0 :(得分:3)

如果参数化模块中输出端口的宽度,然后将参数传递给实例,则无需创建信号来丢弃未使用的位:

my_module module_instance #(.WIDTH(8))
( 
 .some_output(important1[7:0])
);

答案 1 :(得分:1)

一种选择是参数化模块,正如工具所暗示的那样。如果您遇到宽端口,我不知道有什么无缝方式可以丢弃额外的位。

对未使用的位使用1'bz很有诱惑力,但不合法。

如果未使用的位是MSB,则可以将9位端口连接到8位信号,但编码风格很差,会导致某些工具发出警告。

一种可能性是为未使用的信号定义约定,例如,后缀为_NC(无连接)。这将有助于记录意图。您也可以使用模式匹配过滤关于悬空信号的任何警告,而不是单独列出信号。

另一种可能性,特别是如果你采用的编码方式是信号在通过端口时没有被重命名,就是通过端口保持信号的整个宽度,并在其他地方修剪额外的位。