IEEE standard for verilog (4)
4.Expressions
ieee verilog 2001的阅读笔记
4.1 operators
4.1.8 Equality operators
项目 | Value |
---|---|
a===b | a与b相等包括x与z的状态 |
a!==b | a与b不相等包括x与z的状态 |
4.1.10 bit-wise(按位) operators
x与z的操作结果与x的操作结果相同
4.1.11 Reduction operators
项目 | Value |
---|---|
^ | xor 异或 odd number 1 set |
~^ | xnor 同或 even(偶数) number 1 set |
4.1.12 shift operators
有逻辑移位操作 “<<”,“>>” 算术移位操作 “>>>”,“<<<”
算术移位操作右移时根据最高位的值进行填充
4.1.13 Conditional operators
条件运算符也叫(ternary)三目运算符.如果表达式1的结果是模糊值(ambiguous value)x,z那么结果是表达式2和表达式3的组合值。组合值按位组合相同则输出相同值(除开z),不同则输出未知x。如果位数不相等则更短的数高位进行0扩展。
4.1.14 concatenations
concatenations连接运算符,以commas逗号分隔。表达式的第一项应该非0,非未知x,非高阻z。未知大小的数字不允许出现在连接运算符中。{a,b}
4.2 Operands
4.2.1 Vector bit-select and part-select addressing
bit-select中如果位选择的地址范围超过大小或者地址是X或者Z那么返回的值是x。part-selects中选择几个contiguous相邻的位。
vect[msb_expr:lsb_expr]
向量的part-select
reg [15:0]big_vect;
reg [0:15]little_vect;
big_vect[lsb_base_expr +:width_expr]
little_vect[msb_base_expr +:width_expr]
big_vect[msb_base_expr -:width_expr]
little_vect[lsb_base_expr -:width_expr]
位宽表达式必须为常量width_expr,base_expr位基表达式可以运行时变化
4.2.2 Array and memory addressing
申明一个位宽为8长度为1024的数组
reg [7:0] mem_name[0:1023]
多维数组
wire threed_arry[0:255] [0:255] [0:7]
4.2.3 Strings
操作符会把字符串当做数值进行操作。字符串对应一个8位的ASCII码。
1.string opeerations:有复制、拼接、比较三种操作对应赋值、拼接、等号操作符。
2.String value padding and potential problems:字符串进行赋值操作会进行0填充最高位会影响拼接与比较的结果。
3.NUll string handing:空字符串(" ")的值等于ASCII NULL(“\0”)其值为0.
4.3 Minimum, typical,and maximum delay expressions
延迟表达式可以定义为3种表达式通过colons(冒号)分隔包围在parentheses(括号中)
(a:b:c) min:typ:max
4.4 Expression bit lengths
处理在运算时结果的位数是未知的情况。
4.4.1 Rules for expression bit lengths
self-determined expression:表达式的位长仅仅由表达式自身决定
context-determined expression:由表达式的位长以及另一个表达式的结果。
4.4.2 An example of an expression bit-length problem
在对一个表达式进行评估时,interim(临时)的结果采用最大操作数的结果。
4.4.3 Example of self-determined expressions
4.5 Signed expressions
返回的值与表达式相同位宽相同类型由函数确定
$signed() regS= $signed(4'b1100) regS = -4
$unsigned() regA = $unsigned(-4) regA=4'b1100
4.5.1 Rules for expression types
实数通过类型强制(coercion)转换到整数是有符号的。
4.5.2 steps for evaluating an expression
只有操作数是有符号类型的才进行有符号拓展
4.5.3 Steps for evaluating an assignment
只有表达式右值是有符号类型才进行有符号的拓展
4.5.4 Handling X and Z in signed expressions
有符号操作数被拓展成更大的有符号数时有符号位为X