Taken from 2015 midterm question 1k
Create a circuit that has two 2-bit inputs A[1:0] and B[1:0], and produces an output z. The value of z should be 1 if A = B, otherwise z should be 0.
module top_module ( input [1:0] A, input [1:0] B, output z );
assign z = (A==B)?1'b1:1'b0; // 如果直接assign z = (A==B)?1:0; 会有告警
endmodule
如果按照注释那样写会有如下告警:
Warning (10230): Verilog HDL assignment warning at top_module.v(2): truncated value with size 32 to match size of target (1) File: /home/h/work/hdlbits.4807718/top_module.v Line: 2
数字表达式分为三种:
1)<位宽><进制><数字>,这是最完整的形式。(要求数字格式必须和进制一致,否则编译会出现错误)
2)<进制><数字>,数字的位宽采用默认位宽(不同的机器系统不同,至少32位)。
3)<数字>,采用默认进制(十进制)
位宽
位宽——指的是时间所占位数,而不是指十六进制有几位。前面一个数字代表总共多少bit。然后b,h代表用二进制,十六进制来表示,后面是实际的用多少进制来表示的数据。缺省位宽说明时,一般默认为32位。
**例如:**每一位十六进制数字需要4位二进制数字表示,所以2位十六进制的位宽为8,8’h11等价8’b0001_0001