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;

这回答了你的问题吗?这回答了你的问题吗?