Verilog中的参数值是否有上限?
我有一个参数定义为:Verilog中的参数值是否有上限?,verilog,register-transfer-level,Verilog,Register Transfer Level,我有一个参数定义为:参数目标=18000000000。这个数字的十六进制等价物是“430E23400”。 但是当我在FPGA上移植这个设计并检查波形时,我可以看到820130816正在通过。这个数字的十六进制等价物是“30E23400” 因此,这里似乎只考虑较低的32位,而忽略较高的位 有人能告诉我我们可以传递的参数值有没有上限(在本例中是32位)?还是我做得不正确?参数如果不指定类型,将使用rhs表达式的类型。在您的例子中,rhs表达式是32位整数。即使指定的数字超过32位,它也会被截断为默认
参数目标=18000000000
。这个数字的十六进制等价物是“430E23400”。
但是当我在FPGA上移植这个设计并检查波形时,我可以看到820130816
正在通过。这个数字的十六进制等价物是“30E23400”
因此,这里似乎只考虑较低的32位,而忽略较高的位
有人能告诉我我们可以传递的参数值有没有上限(在本例中是32位)?还是我做得不正确?
参数
如果不指定类型,将使用rhs表达式的类型。在您的例子中,rhs表达式是32位整数。即使指定的数字超过32位,它也会被截断为默认宽度32。这是数值常量的宽度,不指定其宽度
因此,为了使其正确,您需要指定rhs文本的宽度。以下步骤可以:
parameter TARGET = 64'd18000000000;
参数
如果不指定类型,将使用rhs表达式的类型。在您的例子中,rhs表达式是32位整数。即使指定的数字超过32位,它也会被截断为默认宽度32。这是数值常量的宽度,不指定其宽度
因此,为了使其正确,您需要指定rhs文本的宽度。以下步骤可以:
parameter TARGET = 64'd18000000000;
这回答了你的问题吗?这回答了你的问题吗?