verilog - Verilog中的参数值有上限吗?
问题描述
我有一个参数定义为:parameter TARGET = 18000000000
. 此数字的十六进制等效值为“4 30E2 3400”。但是当我将这个设计移植到 FPGA 上并检查波形时,我可以看到它820130816
正在通过。此数字的十六进制等效值为“30E2 3400”。
因此,似乎这里只考虑了低 32 位,而忽略了高位。
有人能告诉我我们可以传递的参数值是否有上限(在本例中为 32 位)?还是我做错了?
解决方案
parameter
不指定类型将使用 rhs 表达式的类型。在您的情况下, rhs 表达式是一个 32 位整数。即使您指定了一个超过 32 位的数字,它也会被截断为默认宽度 32。这是未指定宽度的数字常量的宽度。
因此,为了使其正确,您需要指定 rhs 文字的宽度。以下将做:
parameter TARGET = 64'd18000000000;
推荐阅读
- c++ - GMock 死亡案例 - 未调用模拟函数
- r - 信号的所有值在它们降至最小值之前的平均值
- ios - Adobe Air - 应用程序上传错误 - 无效的可执行文件大小
- javascript - Invariant Violation:对象作为 React 子级无效(React Native)
- javascript - 我们可以从异步函数中调用非异步函数吗?
- python - VUE axios get API not found
- android - 检查 Playstore 中的内部测试人员是否已安装该应用程序
- excel - ActiveSheet.ShowAllData 在 2 台机器上返回不同的结果
- sql - 如何获取关系中所有ID的所有连续间隔
- c# - 如何将凭据分配给 WebRequest 然后导航到它?