FPGA中parameter TIME=48000000和parameter TIME=32'b48000000有什么区别?
答案:1 悬赏:30 手机版
解决时间 2021-12-03 23:12
- 提问者网友:听门外雪花风
- 2021-12-03 00:48
FPGA中parameter TIME=48000000和parameter TIME=32'b48000000有什么区别?
最佳答案
- 五星知识达人网友:醉吻情书
- 2021-12-03 02:04
第一个参数定义是正确的,但不规范,表达不准确,含义是 声明一个参数 TIME 值为 十进制的“48000000” 说它不规范是因为一般verilog语言赋值时需要写出位宽和数据格式,你这种表
达没有这两个元素,默认为十进制,位宽和你声明的值有关,如果在严格等价判断语句里,这
种隐含的位宽会导致虽然实际有效值一样,但认为值不相等的异常错误。
第二个参数定义是错误的,主要是你虽然声明了 TIME参数的值,也写出了位宽为32位,数据
格式是binary二进制,但“32‘bxxxx”这种二进制数据是不允许出现0,1以外的字符的。
正确且严格的声明应该是:
parameter TIME = 32’b0100_1000_0000_0000_0000_0000_0000_0000;
或者
parameter TIME = 32‘h4800_0000;(十六进制的 “48000000”)
parameter TIME = 32'd4800_0000;(十进制的“48000000”)
达没有这两个元素,默认为十进制,位宽和你声明的值有关,如果在严格等价判断语句里,这
种隐含的位宽会导致虽然实际有效值一样,但认为值不相等的异常错误。
第二个参数定义是错误的,主要是你虽然声明了 TIME参数的值,也写出了位宽为32位,数据
格式是binary二进制,但“32‘bxxxx”这种二进制数据是不允许出现0,1以外的字符的。
正确且严格的声明应该是:
parameter TIME = 32’b0100_1000_0000_0000_0000_0000_0000_0000;
或者
parameter TIME = 32‘h4800_0000;(十六进制的 “48000000”)
parameter TIME = 32'd4800_0000;(十进制的“48000000”)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯