资源描述:
《第5章数字系统设计verilog HDL(第6版)王金明》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第5章Verilog语法与要素5.1Verilog语言要素空白符和注释标识符(Identifiers)=count=COUNT//COUNT与count是不同的=_A1_d2//以下划线开头=R56_68=FIVE关键字(Keywords)5.2常量整数(integer)整数(integer)实数(Real)字符串(Strings)5.3数据类型数据类型5.3.1net型5.3.2Variable型5.4参数(parameter)【例5.2】采用参数定义的数据比较器modulecompare_w(a,b,larger,equal,less);parameterSIZE=6;//参数定义
2、input[SIZE-1:0]a,b;outputlarger,equal,less;wirelarger,equal,less;assignlarger=(a>b);assignequal=(a==b);assignless=(a
3、;inputclk,reset,en;parameterWIDTH=8;//参数定义output[WIDTH-1:0]out;reg[WIDTH-1:0]out;always@(posedgeclkornegedgereset)if(!reset)out=0;elseif(en)out=out+1;endmodule5.5向量n1.标量与向量宽度为1位的变量称为标量,如果在变量声明中没有指定位宽,则默认为标量(1位)。举例如下:wirea;//a为标量regclk;//clk为标量reg型变量n线宽大于1位的变量(包括net型和variable型)称为向量(vector)。向量的宽度用
4、下面的形式定义:[msb:lsb]n比如:wire[3:0]bus;//4位的总线n2.位选择和域选择在表达式中可任意选中向量中的一位或相邻几位,分别称为位选择和域选择,例如:A=mybyte[6];//位选择B=mybyte[5:2];//域选择n再比如:reg[7:0]a,b;reg[3:0]c;regd;d=a[7]&b[7];//位选择c=a[7:4]+b[3:0];//域选择5.6运算符(Operators)1.算术运算符(Arithmeticoperators)常用的算术运算符包括:+加-减*乘/2.逻辑运算符(Logicaloperators)&&逻辑与
5、
6、逻辑或!逻辑非
7、3.位运算符(Bitwiseoperators)位运算,即将两个操作数按对应位分别进行逻辑运算。~按位取反&按位与
8、按位或^按位异或^~,~^按位同或(符号^~与~^是等价的)4.关系运算符(Relationaloperators)<小于<=小于或等于>大于>=大于或等于5.等式运算符(EqualityOperators)==等于!=不等于===全等!==不全等6.缩位运算符(Reductionoperators)&与~&与非
9、或~
10、或非^异或^~,~^同或7.移位运算符(shiftoperators)>>右移<<左移8.条件运算符(conditionaloperators)?:n三目
11、运算符,其定义方式如下:signal=condition?true_expression:false_expression;n即:信号=条件?表达式1:表达式2;当条件成立时,信号取表达式1的值,反之取表达式2的值。9.位拼接运算符(concatenationoperators){}该运算符将两个或多个信号的某些位拼接起来。{信号1的某几位,信号2的某几位,……,信号n的某几位}运算符的优先级在书写程序时建议用括号()来控制运算的优先级习题55.1下列标识符哪些是合法的,哪些是错误的?Cout,8sum,a*b,_data,wait,initial,$latch5.2下列数字的表示
12、是否正确?6'd18,'Bx0,5'b0x110,'da30,10'd2,'hzF5.3reg型和wire型变量有什么本质的区别?5.4如果wire型变量没有被驱动,其值为多少?5.5reg型变量的初始值一般是什么?习题55.6定义如下的变量和常量:(1)定义一个名为count的整数;(2)定义一个名为ABUS的8位wire总线;(3)定义一个名为address的16位reg型变量,并将该变量的值赋为十进制数128;(4)定义参数Delay_t