【verilog教程】verilog变量值怎么确定我看了夏宇闻的verilog数字系统设计教程这...

发布时间:2021-03-21 15:38:27

verilog变量值怎么确定我看了夏宇闻的verilog数字系统设计教程这本书,我在看第119页!有个很奇怪的问题不明白!请教一下reg [7:0] A;A=2'hFF;什么值和下面的值相等(1)8'b0000_0011 (2)8'h03 (3)8'b1111_1111 (4)8'b11111111 为什么书上说的答案是 和1、2相等还有reg [7:0] B;B=8'bZ0;(1)8'0000_00Z0 (2)8'bZZZZ_0000 (3)8'b0000_ZZZ0 (4)8'bZZZZ_ZZZ0这个更奇怪,为什么是和第四个值相等?我怎么也想不明白?到底是怎么计算的? 数学

网友回答

【答案】 第一个问题:
  A=2‘hFF是十六进制表示的,FF本来前面是8位表示才是完全,他只用了2位.
  举个例子,A这样写你是不是好理解,A=8‘hFF,转成2进制就是A=8’b1111_1111
  A写成这样,A=2‘hFF,就是取低两位,高位补0,所以2进制就是(1)8'b0000_0011
  同理写成十六进制就是(2)8'h03
  第二个问题:
  B=8'bZ0,是二进制表示的,2进制的0只能表示一个位,所以就只有一个0,在最末位
  (4)8'bZZZZ_ZZZ0
  
  希望能帮到你 追问: 你回答得真好啊!可是还有个小地方不明白? FF本来前面是8位表示才是完全,它只用了2位。那既然要用8位才能表示完成,那用2位表示有什么用处?这怎么理解? 16进制的FF不是要用8位二进制才能表示吗?什么叫做取低两位高位补零? 追答: 那既然要用8位才能表示完成,那用2位表示有什么用处?这怎么理解? 答:这个题目可能是想告诉你,在代码设计的时候可能因为你一时的疏忽把位宽写错了,那样得到的结果就不是你想要的结果。 16进制的FF不是要用8位二进制才能表示吗?什么叫做取低两位高位补零? 答:默认是8位表示,假如你写成了2位,那么系统会默认取低两位,又由于你的A定义的是8位,reg [7:0] A 所以不够的位就只能补0,是高位补0
以上问题属网友观点,不代表本站立场,仅供参考!