关于verilog的几点疑问
时间:10-02
整理:3721RD
点击:
1、请问verilog中:
1)4'h9,4'd9有什么区别?
2)4'd1,4'h1,4'b1又有什么区别?
我在写程序的过秤中经常遇到熟知的问题二相当的头疼。
依照老师的说法:1)中,4'h9指的是用四位二进制数表示的16进制数9,4'd9指的是用四位二进制数表示的十进制数9,那么他们相等么?
但是我做过测试,上面的那种说法似乎对又似乎不对。请高手指点!
2、verilog中经常涉及到在两个always中对同一个变量进行赋值,但是这样的话,在编译的时候就会提示出错,因为两个always之间可能存在冲突!请问优美有什么好的办法可一达到要求的效果,但又可以避免这种冲突。
谢谢指点!
1)4'h9,4'd9有什么区别?
2)4'd1,4'h1,4'b1又有什么区别?
我在写程序的过秤中经常遇到熟知的问题二相当的头疼。
依照老师的说法:1)中,4'h9指的是用四位二进制数表示的16进制数9,4'd9指的是用四位二进制数表示的十进制数9,那么他们相等么?
但是我做过测试,上面的那种说法似乎对又似乎不对。请高手指点!
2、verilog中经常涉及到在两个always中对同一个变量进行赋值,但是这样的话,在编译的时候就会提示出错,因为两个always之间可能存在冲突!请问优美有什么好的办法可一达到要求的效果,但又可以避免这种冲突。
谢谢指点!
写代码的过程中,还是尽量统一的好,实用性和可读性最主要,不需要花哨的语言形式!
对于1,没啥区别,但尽量统一
对于2,要些可综合的rtl,同一个变量只能在一个always中赋值,对于行为级别的rtl,可以在不同地方赋值,但你必须清楚赋值的时间顺序。
楼上正确
(1)请问8‘h30和8‘d30,4‘h10和4’d10它们分别相等么?各代表什么意义?
(2)有没有4’d30和4‘h30这两种写法,或者它们这样是否是对的?
8‘h30是十进制的48,而 8'd30就是十进制的30。
建议LZ先把基本的进制问题搞清楚,剩下的就是coding style的问题了。
对同一个变量赋值要放在一个模块中,利用使能条件来区分什么时候来赋什么值,这样在任何时候信号只会有一种驱动来驱动它,要不然有两个驱动同时对同一个线赋值,这肯定会冲突的啊,这样理解你就知道不应该在两个always模块中同时对一个信号赋值了。
有没有4’d30和4‘h30这两种写法,或者它们这样是否是对的?
ls的你还是没有理解这部分语法
4’d30和4’h30 写法没问题 但是要注意因为只有4位宽 很多位会被截掉
实际的值就不是30d和30h了
哦,明白了!
谢谢!
呵呵 习惯问题 两个always可以利用中间变量
明白了,多谢各位指教!
小编快来干掉楼上的
要对一个信号在两个always里赋值最直接的办法是合并两个always,当然也可以做一个mux:a=sel?b:c; always b<=*;always c<=*;不过不推荐这种做法,这样会综合出多余的logic。
bucuobucuo
