资源描述:
《verilog操作符》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Verilog操作符学习内容:熟悉Verilog语言的操作符操作符类型下表以优先级顺序列出了Verilog操作符。注意“与”操作符的优先级总是比相同类型的“或”操作符高。本章将对每个操作符用一个例子作出解释。操作符类型符号连接及复制操作符一元操作符算术操作符逻辑移位操作符关系操作符相等操作符按位操作符逻辑操作符条件操作符{}{{}}!~&
2、^*/%+-<<>>><>=<======!=!==&^~^
3、&&
4、
5、?:最高最低优先级Verilog中的大小(size)与符号Verilog根据表达式中变量的长度对表达式的值自动地进行调整。Verilog自动截断或扩展赋值语句中右边的值以适应左边变量
6、的长度。当一个负数赋值给无符号变量如reg时,Verilog自动完成二进制补码计算modulesign_size;reg[3:0]a,b;reg[15:0]c;initialbegina=-1;//a是无符号数,因此其值为1111b=8;c=8;//b=c=1000#10b=b+a;//结果10111截断,b=0111#10c=c+a;//c=10111endendmodule算术操作符modulearithops();parameterfive=5;integerans,int;reg[3:0]rega,regb;reg[3:0]num;initialbeginrega=3;regb=
7、4'b1010;int=-3;//int=1111……1111_1101endinitialfork#10ans=five*int;//ans=-15#20ans=(int+5)/2;//ans=1#30ans=five/int;//ans=-1#40num=rega+regb;//num=1101#50num=rega+1;//num=0100#60num=int;//num=1101#70num=regb%rega;//num=1#80$finish;joinendmodule+加-减*乘/除%模将负数赋值给reg或其它无符号变量使用2的补码算术。如果操作数的某一位是x或z,则结果为
8、x在整数除法中,余数舍弃模运算中使用第一个操作数的符号注意integer和reg类型在算术运算时的差别。integer是有符号数,而reg是无符号数。按位操作符modulebitwise();reg[3:0]rega,regb,regc;reg[3:0]num;initialbeginrega=4'b1001;regb=4'b1010;regc=4'b11x0;endinitialfork#10num=rega&0;//num=0000#20num=rega®b;//num=1000#30num=rega
9、regb;//num=1011#40num=regb®c;//num=
10、10x0#50num=regb
11、regc;//num=1110#60$finish;joinendmodule~not&and
12、or^xor~^xnor^~xnor按位操作符对矢量中相对应位运算。regb=4'b1010regc=4'b1x10num=regb®c=1010;位值为x时不一定产生x结果。如#50时的or计算。当两个操作数位数不同时,位数少的操作数零扩展到相同位数。a=4'b1011;b=8'b01010011;c=a
13、b;//a零扩展为8'b00001011逻辑操作符modulelogical();parameterfive=5;regans;reg[3:0]reg
14、a,regb,regc;initialbeginrega=4‘b0011;//逻辑值为“1”regb=4‘b10xz;//逻辑值为“1”regc=4‘b0z0x;//逻辑值为“x”endinitialfork#10ans=rega&&0;//ans=0#20ans=rega
15、
16、0;//ans=1#30ans=rega&&five;//ans=1#40ans=regb&®a;//ans=1#50ans=regc
17、
18、0;//ans=x#60$finish;joinendmodule!not&&and
19、
20、or逻辑操作符的结果为一位1,0或x。逻辑操作符只对逻辑值运算。如操作数为全0,则其
21、逻辑值为false如操作数有一位为1,则其逻辑值为true若操作数只包含0、x、z,则逻辑值为x逻辑反操作符将操作数的逻辑值取反。例如,若操作数为全0,则其逻辑值为0,逻辑反操作值为1。逻辑反与位反的对比modulenegation();reg[3:0]rega,regb;reg[3:0]bit;reglog;initialbeginrega=4'b1011;regb=4'b0000;endinitialfork#10bit=~re