Verilog硬件描述语言.ppt_第1页
Verilog硬件描述语言.ppt_第2页
Verilog硬件描述语言.ppt_第3页
Verilog硬件描述语言.ppt_第4页
Verilog硬件描述语言.ppt_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,Verilog硬件描述语言(二),2,课程内容,一、VerilogHDL运算符二、VerilogHDL语句三、可综合设计,一、VerilogHDL运算符,按功能分:算术运算符、逻辑运算符、关系运算符、缩减运算符、条件运算符、位运算符、移位运算符、拼接运算符等类。按操作数的个数分:单目运算符、双目运算符、三目运算符。,一、VerilogHDL运算符,算术运算符(Arithmeticoperator),+加-减*乘/除%求模,一、VerilogHDL运算符,逻辑运算符(Logicaloperator),即:信号=条件?表达式1:表达式2;条件成立时,信号取表达式1的值,反之取2。,?,一、VerilogHDL运算符,举例:,一、VerilogHDL运算符,位接运算符,用法:信号1的某几位,信号2的某几位,信号n的某几位,举例:assigncout,sum=a+b+cin;,二、VerilogHDL语句,分类,二、VerilogHDL语句,过程语句:always,always()begin/过程赋值/if-else,case选择语句end,二、VerilogHDL语句,敏感信号类型:(a)(aorb)(posedgeclock)(negedgeclock)(posedgeclkornegedgereset),举例:DFF,moduleDFF(d,clk,reset,q,qb);outputq,qb;inputclk,reset,d;regq,qb;always(posedgeclk)beginif(!reset)beginq=0;qb=1;endelsebeginq=d;qb=d;endendendmodule,二、VerilogHDL语句,特点:,只有两种状态:执行状态和等待状态一般由敏感信号的变化来启动各个always间通过信号线进行通信一个always中只允许描述对应于一个时钟信号的同步时序逻辑always之间是并发执行的,二、VerilogHDL语句,块语句:beginend,总是在always内部按顺序执行,二、VerilogHDL语句,举例:,regqa,qb,qc;always(posedgeclk)beginqa=d;qb=qa;qc=qb;end,二、VerilogHDL语句,赋值语句:,持续赋值语句过程赋值语句,二、VerilogHDL语句,持续赋值语句:,assignc=a,二、VerilogHDL语句,过程赋值语句:,非阻塞赋值“=”阻塞赋值“=”分为两步骤:右式计算、左式更新,二、VerilogHDL语句,非阻塞赋值:,当前语句的执行不会阻塞下一语句的执行语句之间并发执行左式更新在块结束后才进行,二、VerilogHDL语句,阻塞赋值:,当前语句的执行会阻塞下一语句的执行语句之间顺序执行右式计算和左式更新同时进行,举例:,modulenonblocking(clk,reset,a,b);inputclk,reset;input3:0a;output3:0b;reg3:0b;reg3:0y;always(posedgeclkornegedgereset)beginif(!reset)beginy=0;b=0;endelsebeginy=a;b=y;endendendmodule,结果:,举例:,modulenonblocking(clk,reset,a,b);inputclk,reset;input3:0a;output3:0b;reg3:0b;reg3:0y;always(posedgeclkornegedgereset)beginif(!reset)beginy=0;b=0;endelsebeginb=y;y=a;endendendmodule,结果:,举例:,moduleblocking(clk,reset,a,b);inputclk,reset;input3:0a;output3:0b;reg3:0b;reg3:0y;always(posedgeclkornegedgereset)beginif(!reset)beginy=0;b=0;endelsebeginy=a;b=y;endendendmodule,结果:,举例:,moduleblocking(clk,reset,a,b);inputclk,reset;input3:0a;output3:0b;reg3:0b;reg3:0y;always(posedgeclkornegedgereset)beginif(!reset)beginy=0;b=0;endelsebeginb=y;y=a;endendendmodule,结果:,举例:,modulenonblocking(clk,reset,a,b);inputclk,reset;input3:0a;output3:0b;reg3:0b;reg3:0y;always(posedgeclkornegedgereset)beginif(!reset)beginy=0;b=0;endelsebeginy=a;b=y;endendendmodule,结果:,举例:,modulenonblocking(clk,reset,a,b);inputclk,reset;input3:0a;output3:0b;reg3:0b;reg3:0y;always(posedgeclkornegedgereset)beginif(!reset)beginy=0;b=0;endelsebeginy=a;b=y;endendendmodule,结果:,阻塞非阻塞使用原则:,有clock的always进程要使用non-blocking,always(posedgeclkornegedgereset_n)beginif(!reset_n)counter=8b00;elsecounter=counter+1;end,二、VerilogHDL语句,always(seloraorb)begincase(sel)2b00:c=a;2b01:c=b;endcaseend,无clock的always进程使用blocking,二、VerilogHDL语句,二、VerilogHDL语句,continuousassignment使用blocking,一个always进程中不要同时使用blocking与non-blocking,assigny=a,二、VerilogHDL语句,书P286页图8-10错误参考MIT课件,说明:,二、VerilogHDL语句,条件语句:,ifelsecaseendcase,二、VerilogHDL语句,ifelse:,if(表达式)语句1;if(表达式)语句1;else语句2;if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;elseif(表达式n)语句n;else语句n+1;,二、VerilogHDL语句,特点:,不完整的ifelse容易导致产生latch总是在always内部按顺序执行,二、VerilogHDL语句,Latch与DFF比较:,latch由电平触发,DFF由时钟沿触发latch容易产生毛刺(glitch),DFF则不易产生毛刺latch消耗的门资源比DFF要少,但耗费的LE资源要多latch将静态时序分析变得极为复杂,二、VerilogHDL语句,caseendcase:,case(敏感表达式)值1:语句1;值2:语句2;值n:语句n;default:语句n+1;endcase,二、VerilogHDL语句,特点:,不完整的caseendcase容易导致产生latch总是在always内部根据敏感量执行,二、VerilogHDL语句,比较:,ifelse带有优先级caseendcase延时小,举例:四位选择器,always(sel)beginif(sel=2b00)out=in0;elseif(sel=2b01)out=in1;elseif(sel=2b10)out=in2;elseout=in3;end,always(sel)begincase(sel)2b00:out=in0;2b01:out=in1;2b10:out=in2;default:out=in3;end,举例:七段数码管显示译码器,moduledecode4_7(decodeout,indec);output6:0decodeout;input3:0indec;reg6:0decodeout;always(indec)begincase(indec)4d0:decodeout=7b1111110;4d1:decodeout=7b0110000;4d2:decodeout=7b1101101;4d3:decodeout=7b1111001;4d4:decodeout=7b0110011;4d5:decodeout=7b1011011;4d6:decodeout=7b1011111;4d7:decodeout=7b1110000;4d8:decodeout=7b1111111;4d9:decodeout=7b1111011;default:decodeout=7b1111111;endcaseendendmodule,三、可综合设计,要点:,不使用初始化语句,不使用任务和函数不使用带有延时的描述不使用for循环在always里面慎用乘法和除法,举例:,moduletest_13(clk,rst_n,data,num);inputclk,rst_n;input12:0data;output3:0num;reg3:0i;reg3:0num;always(posedgeclk)beginif(!rst_n)num=0;elsebeginfor(i=0;i13;i=i+1)if(datai)num=num+1;endendendmodule,结果:,举例:,modulemultip(clk,rst_n,a,b,num);inputclk,rst_n;input7:0a;input7:0b;output15:0num;reg15:0num;always(posedgeclk)beg

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论