Verilog表达式和语句课件.ppt

上传人(卖家):晟晟文业 文档编号:4767869 上传时间:2023-01-08 格式:PPT 页数:38 大小:406.50KB
下载 相关 举报
Verilog表达式和语句课件.ppt_第1页
第1页 / 共38页
Verilog表达式和语句课件.ppt_第2页
第2页 / 共38页
Verilog表达式和语句课件.ppt_第3页
第3页 / 共38页
Verilog表达式和语句课件.ppt_第4页
第4页 / 共38页
Verilog表达式和语句课件.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、A1Verilog表达式和语句A2目录目录一运算符及表达式二语句目录A3壹运算符及表达式u1、基本的算数运算符、基本的算数运算符u2、赋值运算符、赋值运算符u3、关系运算符、关系运算符u4、逻辑运算符、逻辑运算符u5、位运算符、位运算符u6、等式运算符、等式运算符u7、移位运算符、移位运算符u8、位拼接运算符、位拼接运算符u9、优先级别、优先级别第4页一 运算符运算符(1)算数运算符:+、-、x、/、%(2)赋值运算符:=、=、=(4)逻辑运算符:&、|、!(5)条件运算符:?:(6)位运算符:&、|、(7)移位运算符:(8)拼接运算符:(9)其他。第5页1、基本的算数运算符(二进制运算符)、

2、基本的算数运算符(二进制运算符)(1)+(加法运算符,正值运算符,如rega+regb,+3)(2)-(减法运算符,负值运算符,如rega-2,-3)(3)x(乘法运算符,如rega*3)(4)/(除法运算符,如5/3)在进行整数除法运算时,结果值略去小数部分,只取整数部分。(5)%(模运算符,或者求余运算符,如7%3值为1)结果的符号位采用模运算式里第一个操作数的符号位,如:10%3,-10%3,10%-3第6页2、赋值运算符、赋值运算符(1)非阻塞赋值方式(如b=a)特点:1、所赋变量值不能立即为下面语句所用;2、块结束后才完成赋值操作,所赋的变量是上一次赋值得到的;3、编写可综合的时序逻

3、辑模块,这是最常用的赋值。例1 always(posedge clk)begin b=a;c=b;end第7页 (2)阻塞赋值方式(如b=a)特点:1、赋值语句执行完后,块才结束;2、赋值语句执行后,变量值立即改变;3、用在时序逻辑中,会产生意想不到的结果。例2 always(posedge clk)begin b=a;c=b;endDCLKQclkabc第8页3、关系运算符、关系运算符(1)ab (3)a=b 在进行关系运算时,如果声明关系为假(flase),返回值为0;如果声明关系为真(true),则返回值为1;如果某个操作数不定,则关系模糊,返回值为不定值。第9页4、逻辑运算符、逻辑运算

4、符(1)&逻辑与;(2)|逻辑或;(3)!逻辑非;“&”和“|”是双目运算符,“!”是单目运算符第10页5、位运算符、位运算符(1)按位取反,单目,如a=b1010;(2)&按位取与,将两个操作数相应位进行与运算。(3)|按位取或,将两个操作数相应位进行或运算。(4)按位异或,也称XOR运算符,将两个操作数相应位进行异或运算。(5)按位同或,将两个操作数先进行相应位异或运算在进行非运算。两个不同长度的数据进行位运算,系统会自动地将两者按右端对齐,位数少的操作数会在相应的高位用0填满,再进行位操作。第11页第12页6、等式运算符、等式运算符(1)=等于(2)!=不等于 又称逻辑等式运算符,结果由

5、两个操作数的值决定。操作数中可能为不定值x和高阻态z,结果可能为不定值x。第13页(3)=等于 (4)!=不等于 case等式运算符,常用于case表达式的判别。对操作数进行比较时对某些位的不定值和高阻态也进行比较,两个操作数必须完全一致时,结果才是1,否则为0。第14页7、移位运算符、移位运算符(1)右移位 使用方法:an,a代表进行移位的操作数,n代表要移几位。用0来填补移出的空位。例:4b10012=4b0010;第15页8、位拼接运算符、位拼接运算符 位拼接运算符,用这个运算符可以把两个或多个信号的某些位拼接起来进行运算操作,使用方法:信号1的某几位,信号2的某几位,信号n的某几位 例

6、:a,b3:0,w,3b101,可以写成 a,b3,b2,b1,b0,w,1b1,1b0,1b1 在位拼接表达式中不允许存在没有指明位数的信号。例:重复,4w等同于w,w,w,w 嵌套,b,3a,b等同于b,a,b,a,b,a,b第16页9、优先级别、优先级别第17页贰语句语句u1、条件语句(、条件语句(if_else)u2、case语句语句u3、循环语句、循环语句u4、块语句、块语句u5、过程块、过程块第18页1、条件语句(、条件语句(if_else)(1)if(表达式)语句。例如:if(ab)out1=int1;(2)if(表达式)语句1 else 语句2例如:if(ab)begin ou

7、t1=int1;out2=int2;end else begin out1=int2;out2=int1;end第21页(4)允许一定形式的表达式简写方式。例如:if(expression)等同与 if(expression=1)if(!expression)等同与 if(expression!=1)(5)if语句的嵌套。例如:if(expression1)if(expression2)语句1;(内嵌if)else 语句2;else if(expression3)语句3;(内嵌if)else 语句4;注:注意if和else的配对关系,else总是和它上面最近的if配对。如果if和else的数目

8、不一样,为了实现程序设计者的企图,可以用begin_end块语句来确定配对关系。第22页2、case语句语句(1)case(表达式)endcase(2)casez(表达式)endcase(3)casex(表达式)endcase case分支项的一般格式如下:分支表达式:语句;默认项(default项):语句;说明:(1)case括弧内的表达式成为控制表达式,case分支项中的表达式称为分支表达式。(2)当控制表达式的值等于分支表达式的值时,就执行分支表达式后面的语句。第23页(3)default项可有可无,有且只准有一个default项。(4)每个case分项的分项表达式的值必须互不相同。(5

9、)执行完case分项后的语句,则跳出该case语句结构,终止case语句的执行。(6)在用case语句表达式进行比较时,只有当信号的相应位的值能明确进行比较时,比较才能成功。(7)case语句的所有表达式值得位宽必须相同。第24页case,casez和casex的真值表casez语句用来处理不考虑高阻态z的比较过程。casex语句则将高阻态z和不定值x都视为不必关心的情况。第25页 例1:reg7:0 ir;casez(ir)8b1?:instruction1(ir);8b01?:instruction2(ir);8b00010?:instruction3(ir);8b000001?:inst

10、ruction4(ir);endcase例2:reg7:0 r,mask;mask=8bx0 x0 x0 x0;casex(rmask)8b001100 xx:stat1;8b1100 xx00:stat2;8b00 xx0011:stat3;8bxx001100:stat4;endcase第26页例3、case语句实现四选一多路选择器 module mux4_to_1(out,i0,i1,i2,i3,s1,s0);output out;input i0,i1,i2,i3;input s0,s1;reg out;always(s1 or s0 or i0 or i1 or i2 or i3)b

11、egin case(s1,s0)2b00:out=i0;2b01:out=i1;2b10:out=i2;2b11:out=i3;default:out=1bx;endcase end endmodule第27页3、循环语句、循环语句(1)forever语句 格式:forever 语句;或 forever begin多条语句end 常用来产生周期性的波形,用来作为仿真测试信号。与always语句不同之处在于不能独立写在程序中,而必须写在initial块中。(2)repeat语句 格式:repeat(表达式)语句;或者repeat(表达式)begin多条语句end 其表达式通常为常量表达式第28页

12、(3)while语句 格式:while(表达式)语句;或者while(表达式)begin多条语句end 例:对rega八位二进制数中值为1的位进行计数。begin:countls reg7:0 tempreg;count=0;tempreg=rega;while(tempreg)begin if(tempreg0)count=count+1;tempreg=tempreg1;end end第29页(4)for语句 格式:for(表达式1;表达式2,表达式3)语句;最简单的应用形式:for(循环变量赋初值;循环结束条件;循环变量增值)执行语句;相当于采用while循环语句建立如下结构:begin

13、 循环变量赋初值;while(循环结束条件)begin 执行语句;循环变量增值;end end(1)先求解表达式1.(2)求解表达式2,若其值为真(非0)则执行for语句中指定的内嵌语句,然后执行下面的第(3)步。若为假(0)则结束循环,转到第(5)步。(3)若表达式为真,在执行指定语句,求解表达式3.(4)转回上面的第(2)步骤继续执行。(5)执行for语句下面的语句第30页 例1:for语句初始化memory begin:init_mem reg7:0 tempi;for(tempi=0;tempi1)if(tempreg0)count=count+1;end第31页4、块语句、块语句(1

14、)顺序块(也称过程块)关键字begin_end用于将多条语句组成顺序块 特点:1、顺序块中的语句是一条一条按顺序执行的,只有前面的语句执行完成之后才能执行后面的语句。2、如果语句包括延迟或者事件控制,那么延迟总是相对于前面那条语句执行完成的仿真时间的。reg x,y;reg 1:0 z,w;initialbeginx=1b0;/仿真时刻0完成#5 y=1b1;/仿真时刻5完成#10 z=x,y;/仿真时刻15完成#20 w=y,x;/仿真时刻35完成end第32页(2)并行块 关键词fork_join声明 特点:1、块内语句并行执行;2、语句执行顺序是由各自语句内延迟或事件控制决定的;3、语句

15、中的延迟或事件控制是相对于快语句开始执行的时刻而言的;reg x,y;reg 1:0 z,w;initialforkx=1b0;/仿真时刻0完成#5 y=1b1;/仿真时刻5完成#10 z=x,y;/仿真时刻10完成#20 w=y,x;/仿真时刻20完成join第33页(3)块语句特点 1、嵌套块 initial begin x=1b0;fork#5 y=1b1;#10 z=x,y;join#20 w=y,x;end 2、命名块特点:(1)命名块中可以声明局部变量;(2)命名块是设计层次的一部分,命名块中声明的变量可以通过层次名引用进行访问;(3)命名块可以被禁用,例如停止其执行第34页5、过

16、程块、过程块(1)initial语句 格式:initial begin 语句1;语句2;语句n;end例1:对存储器变量赋初始值。initial begin areg=0;for(index=0;indexsize;index=index+1)memoryindex=0;end例2:用initial语句生成激励波形。initial begin inputs=b000000;#10 inputs=b011001;#10 inputs=b011011;#10 inputs=b011000;#10 inputs=b001000;end第35页(2)always语句 always语句在仿真过程中是不断

17、活动着的。后跟的过程块是否执行,则看它的触发条件是否满足,如满足则执行一次;如不断满足,则不断地循环执行。其声明格式如下:always always语句由于其不断活动的特性,只有和一定的时序控制结合在一起才有用。如果一个always语句没有时序控制,则这个always语句将会使仿真器产生死锁。例1:always areg=areg;生成一个0延迟的无限循环跳变过程,发生仿真死锁。例2:always#half_period areg=areg;生成一个周期为period的无限延续的信号波形。常用来描述时钟信号,并作为激励信号来测试所设计的电路。always的时间控制可以是沿触发也可以是沿电平触发

18、的,可以是单信号也可以是多信号,中间用关键字or连接。沿触发的always块常常描述时序行为,如有限状态机。电平触发的always块常常用来描述组合逻辑的行为。第36页 例3:reg7:0 counter;reg tick;always(posedge areg)begin tick=tick;counter=counter+1;end说明:一个程序模块可以有多个initial和always过程块。每个initial和always说明语句在仿真的一开始同时立即开始执行。initial语句只执行一次,而always语句是不断地重复活动着,直到仿真过程结束。在一个模块中,使用initial和always语句次数不受限制,它们都是同时开始运行的。第37页复习 1、逻辑运算符和按位运算符有什么不同?2、举例说明顺序块和并行块的不同?3、阻塞和非阻塞赋值的区别和使用?4、仔细阐述case、casex和casez之间的不同?5、阐述for语句的执行过程第38页THANK YOU

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Verilog表达式和语句课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|