《[PPT模板]5运算符及表达式.ppt》由会员分享,可在线阅读,更多相关《[PPT模板]5运算符及表达式.ppt(35页珍藏版)》请在三一办公上搜索。
1、Verilog 语法总结:,标识符(P125)数据类型(P128 wire reg parameter)常量(P126 整数)运算符及表达式(P132)语句(P142)注释,运算符与表达式,p132,不可综合,不建议直接使用,运算符按所带操作数的个数分为:,单目运算双目运算三目运算,1.逻辑运算符,逻辑操作符只对逻辑值运算。逻辑操作符的结果为一位:1,0或x。操作数由多位组成,应将其看做一个整体:若操作数为全0,则其逻辑值为false,即0若操作数有某一位为1,则其逻辑值为true,即1若存在不定态,则逻辑运算也是不定态x!实现为或非结构,&实现为或与结构,|实现为或或结构,即会先对操作数的各
2、比特位进行或的操作,!(单目)&|,中间不能有空格,练:设寄存器变量a=4b0110;b=4b0000,2.关系运算符,进行关系运算时:如果声明的关系是假,则返回值是0;如果声明的关系是真,则返回值是1;如果某个操作数是不定值,则关系是模糊的,返回不定值;实现为对应类型的比较器,比较位数和操作数的位数较大者一致,位数较少者进行符号扩展(reg类型或wire类型变量固定扩展0,正常量扩展0,负常量扩展1),=,3.相等与全等运算符,相等运算符:参与比较的两个操作数,必须逐位相等比较的结果才为1,如果某些位是不定态或高阻值,其相等比较的结果是不定值。全等运算符:对不定态或高阻值位也进行比较,两个操
3、作数必须完全一致结果才位1,否则为0。a=5b11x01;b=5b11x01a=b得到的结果为不定值a=b得到的结果为1.,=全等!=非全等,=逻辑相等!=逻辑不等,不可综合,4.位运算符,例:A=5b11001,B=5b10101,A=5b00110,A&B=5b10001,A|B=5b11101,AB=5b01100,AB=5b10011,按位取反(单目)&按位与|按位或 按位异或,按位同或,按位操作符对操作数中相对应“位”运算。,不同长度的数据进行位运算时,系统会自动在位数少的操作数的高位补0。(如果短的操作数最高位是x,则扩展的部分也是x),以使两个操作数按位进行操作。a=4b1011
4、;b=8b01010011;c=a|b;,regb=4b1 0 1 0regc=4b1 x 1 0num=regb,a零扩展为 8b00001011,5.归约(缩减)运算符(单目),在单一操作数的所有位上进行操作,并产生1位运算结果。,例:A=5b11001,&A=(1&0)&0)&1)&1=0,|A=1,A=(10)0)1)1=0,&归约与|归约或 归约异或&归约与非|归约或非归约异或非,归约运算符实现为一个对应操作数比特位数的相应功能的逻辑门,6.移位运算符,左移,an 把a右移n位,an 把a左移n位,a=4b1010,b=a2,则b?,b=4b1000,b=6b101000,固定的移位
5、运算实现为一些硬件连线,7.条件运算符(三目),信号=条件表达式?表达式1:表达式2,当条件成立时,信号取表达式1的值,反之取表达式2的值。,例:二选一多路选择器module mux2_1(out,a,b,sel);output out;input a,b,sel;assign out=sel?b:aendmodule,若sel为0则out=a;若sel为1则out=b。如果sel为x或z,若a=b=0,则out=0;若ab,则out值不确定。,8.连接/位拼接运算符,连接运算符是将两组或两组以上的信号,拼接成一组新的信号。信号1的某些位,信号2的某些位,例:a,b3,c,3b101 如果a是
6、一位的信号,c是三位的信号,则拼接之后的位宽为8位。注意:常数表达式前面的位宽不能省略。如果省略则默认32位。,对于一些重复信号的连接,连接运算可以简化表达方式na。a是被连接的对象,n 是重复的次数,表示将a重复连接n次。4w w,w,w,wb,3a,b b,a,b,a,b,a,b,用连接运算符描述全加器module full_adder(sum_out,c,ina,inb)output3:0 sum_out;output carry_out;input3:0ina,inb;input carry_in;assign carry_out,sum_out=ina+inb+carry_in;en
7、dmodule,9.算术运算符,负数使用补码表示,并根据最终位数进行符号扩展。减运算一般用加法器实现,减一个数相当于加上该数的反码再加上1算数运算中操作数整体参与运算,所以某一位是x或z,则结果为x。,+-*/%,不建议直接使用,练习,高,低,注:“与”操作符的优先级总是比相同类型的“或”操作符高,优先级,空格和注释,空格在文本中起一个分隔符的作用,没有其他用处。单行注释符用/*多行注释符用/*-*/,ab&xy!a|abasize-1为了提高程序的可读性,明确表达各运算符间的优先关系,建议使用括号。,(ab)&(xy),(!a)|(ab),a(size-1),练习:,1.下列标识符合法的是:
8、,shift_reg_a BUS263_ddr1_t2o$241(a+b),a*b_net 34net_daaiDAandAND,2.P,Q,R都是4位输入,下面那种表达形式正确?,A.input P3:0,Q,R;B.input P,Q,R3:0;C.input P3:0,Q3:0,R3:0;D.input 3:0 P,3:0 Q,3:0 R;E.input 3:0 P,Q,R;,3.根据以下两条语句,从选项中选择正确答案,reg7:0 A;A=2hff;A=A.8b0000_0011B.8hffC.8b1111_1111D.2b11,reg7:0 B;B=8bz0;A.8b0000_00z
9、0B.8bzzzz_0000C.8b0000_zzz0D.8bzzzz_zzz0,4b1010&4b1101=1b14b1011&4b0100=4b1111 4b1100=1b1!4b1011|!4b0000=1b1&4b1101=1b14b01011=5b01011,4.从下面表达式中选出正确的,&按位与&逻辑与,按位取反!逻辑非,5.下列程序中always状态将描述一个带异步Nreset和Nset输入端的上升沿触发器,那么括号内应选择(),always()if(!Nrest)Q=0;else if(!Nset)Q=1 elseQ=D;,A.negedge Nset or posedge c
10、lk,B.posedge clk,C.negedge Nrset or posedge clk,D.negedge Nrset or negedge Nset or posedge clk,E.negedge Nrset or negedge Nset,模块中的功能定义部分可以有一下三种:,实例元件 and u1(q,a,b);assign 语句 assign q=a如果这3项同时出现在一个模块中,它们是同时执行,也就是并发的。并且相互不能嵌套使用。只有实例引用语句和assign语句可以独立于过程块而存在于模块的功能定义部分,条件语句等都只能出现在过程块中。,内置元语,Verilog基本单元提
11、供基本的逻辑功能,也就是说这些逻辑功能是预定义的,用户不需要再定义这些基本功能。基本单元是Verilog开发库的一部分。大多数ASIC和FPGA元件库是用这些基本单元开发的。基本单元库是自下而上的设计方法的一部分。,not 非门and与门or或门nand与非门nor或非门xor异或门xnor异或非门buf缓冲器,(26-8),and u1(out,in1,in2,in3)实例化时实例的名字是可选项。在端口列表中,先说明输出端口,然后是输入端口。,module text3(k0,k1,dr0,dr1,dr2,dr3);input k0,k1;output dr0,dr1,dr2,dr3reg dr2,dr3;and u1(dr0,k0,k1);/与门assign dr1=!(k0/异或门endmodule,比较,reg d1,d2,d3;always(posedge clk)begin out=d3;d3=d2;d2=d1;d1=in;end,reg d1,d2,d3;always(posedge clk)begin d1=in;d2=d1;d3=d2;out=d3;end,以上两段程序哪个与下面等价?,reg d1,d2,d3;always(posedge clk)begin d1=in;d2=d1;d3=d2;out=d3;end,