原创 [Verilog HDL入门]第四章 表达式

2010-2-4 22:33 2036 5 5 分类: FPGA/CPLD

1.操作数:常数、参数、线网、变量、位选、部分位选、


                   存储器和数组元素、函数调用


   常数:


   用基数或不用基数表示的整数,其负值的处理方式是各不相同的。


   不用基数表示的负整数值被当作有符号数处理;用基数表示的负数值被当作


   无符号数。


   参数:


   类似于常量使用参数声明语句加以说明。


   线网:


   标量线网(1位)和向量线网(多位)


   例:wire [0:3] gpio_port;//gpio_port是一个4位的向量线网


           wire intr;// intr是标量线网


   在线网的声明语句中若没有关键词signed,则线网中的值被解释为无符号的数。


   变量:


   整型变量的值被解释为有符号的二进制补码数;


   时间变量中的值被解释为无符号数;


   reg变量声明语句中包含signed则变量值被解释为有符号数,否则为无符号数;


   实型与实型时间变量中的值被解释为有符号浮点数。


   位选:指从一个向量中抽取指定的位


   格式:net_or_reg_vector[bit_select_expr]


   例:mis_state[1] && mis_state[4]//变量的位选


   若表达式索引的位为x、z或越界,则位选值为x。


   部分位选:指在向量中选取相邻的若干位


   格式:net_or_reg_vector[msb_const_expr : lsb_const_expr]


   例:integer mark;


           reg[0:15] inst_code;


          inst_code[mark + : 2] //选择mark、mark+1 两位


  存储器和数组元素:


  存储器元素:指从某个存储器中选取一个字


  数组元素:选择数组中的一个字


 函数调用:


 2、操作符(9类)


 算术操作符:+、-、×、/、%(取模)、**(幂运算)


 算术操作符中任意操作数中只要有一位为x或z,则整个运算结果为x。


 算术表达式运算结果的位宽由最大操作数的位宽决定;在赋值语句下,算术


运算结果的位宽也由赋值等号左端目标变量的位宽决定。表达式中的所有中间


结果应取最大操作数的位宽。


只要有一个操作数是无符号的,那么在开始任何操作前,所有其他的操作数都


被转换成了无符号数;为了进行有符号的运算,在一个表达式中的所有操作数


必须都是有符号数。


关系操作符:>、<、>=、<=


若操作数中有一位为x或z,则结果为x。


若表达式中一个操作数是无符号的,则该表达式的其余操作数均被当作无符号数


处理


相等操作符:==、!=、===(全等)、!==(非全等)


全等和非全等:把x和z当作数值严格按照字符去比较


逻辑操作符:&&、||、!


按位操作符:~、&、|、^、~^、^~


缩减操作符:&(缩减与)、~&(缩减与非)、|(缩减或)、~|(缩减或非)


                        ^(缩减异或)、~^(缩减同或)


 缩减异或操作符可以被用来确定向量中是否存在任何为x的位


移位操作符:<<、>>、<<<(算术左移)、>>>(算术右移)


条件操作符:


拼接和复制操作符:


 


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条