《Verilog设计优化》PPT课件.ppt_第1页
《Verilog设计优化》PPT课件.ppt_第2页
《Verilog设计优化》PPT课件.ppt_第3页
《Verilog设计优化》PPT课件.ppt_第4页
《Verilog设计优化》PPT课件.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

第十章设计方法与设计优化,EDA技术与应用,教学重点,可综合的设计技术可综合的结构流水线设计技术,资源共享阻塞与非阻塞赋值毛刺的消除,10.1设计的可综合性,10.1.1可综合的设计,综合过程,Verilog行为级或数据流电路建模,RTL级功能块,逻辑优化,优化后的门级网表,目标工艺面积和定时约束,Verilog基本元素与硬件电路元件间的映射,数据类型(wire,reg,integer)常量语句(if,case,assign)结构(门,模块),值(0,1,无关值,不定值)元件(连线,触发器,寄存器,锁存器,ALU,MUX),不使用initial、延时描述和forever、while、repeat尽量采用同步方式建议采用行为语句always描述组合逻辑,敏感信号列出所有输入信号尽量使用器件的全局复位端和时钟端任务和函数通常被综合成组合逻辑,10.1.2可综合的verilog结构,不支持=,!=要求/,%除数是2的指数,运算符+,-,*,%,output7:0sum;outputcout;input7:0ina,inb;inputcin,clk;reg7:0tempa,tempb,sum;regcout;regtempc;,always(posedgeclk)begintempa=ina;tempb=inb;tempc=cin;endalways(posedgeclk)begincout,sum=tempa+tempb+tempc;endendmodule,普通8位全加器RTL图,时序分析Tools|TimingAnalyzerTool目标器件FLEX10KEPF10K10TC144-3,普通8位全加器,【例10.2】4级流水线8位全加器modulepipeline(cout,sum,ina,inb,cin,clk);output7:0sum;outputcout;input7:0ina,inb;inputcin,clk;reg7:0tempa,tempb,sum;regtempci,firstco,secondco,thirdco,cout;reg1:0firsts,thirda,thirdb;reg3:0seconda,secondb,seconds;reg5:0firsta,firstb,thirds;,always(posedgeclk)begintempa=ina;tempb=inb;tempci=cin;endalways(posedgeclk)/第一级加(低2位)beginfirstco,firsts=tempa1:0+tempb1:0+tempci;firsta=tempa7:2;firstb=tempb7:2;endalways(posedgeclk)/第二级加(第2、3位相加)beginsecondco,seconds=firsta1:0+firstb1:0+firstco,firsts;seconda=firsta5:2;secondb=firstb5:2;end,always(posedgeclk)/第三级加(第4、5位相加)beginthirdco,thirds=seconda1:0+secondb1:0+secondco,seconds;thirda=seconda3:2;thirdb=secondb3:2;endalways(posedgeclk)/第四级加(高两位相加)begincout,sum=thirda1:0+thirdb1:0+thirdco,thirds;endendmodule,4级流水线8位全加器,10.3资源共享,采用函数或任务,共享复杂的运算单元用括号控制综合结果,重用计算结果模块数据宽度尽量小,【例10.3】2个加法器和1个选择器moduleresource1(sum,a,b,c,d,sel);parametersize=4;outputsize:0sum;inputsel;inputsize-1:0a,b,c,d;regsize:0sum;always(aorborcordorsel)beginif(sel)sum=a+b;elsesum=c+d;endendmodule,【例10.4】2个选择器和1个加法器moduleresource2(sum,a,b,c,d,sel);parametersize=4;outputsize:0sum;inputsel;inputsize-1:0a,b,c,d;regsize:0sum;regsize-1:0atemp,btemp;always(aorborcordorsel)beginif(sel)beginatemp=a;btemp=b;endelsebeginatemp=c;btemp=d;endsum=atemp+btemp;endendmodule,器件资源消耗比较,【例10.5】设计可重用举例1moduleadder(s1,s2,a,b,c);output4:0s1,s2;input3:0a,b,c;reg4:0s1,s2;always(aorborc)begins1=a+b;s2=c+a+b;endendmodule,RTL图,【例10.6】设计可重用举例2moduleadder(s1,s2,a,b,c);output4:0s1,s2;input3:0a,b,c;reg4:0s1,s2;always(aorborc)begins1=a+b;s2=c+(a+b);endendmodule,RTL图,10.4过程,过程是一个独立的运行单元always过程initial过程assign赋值语句元件调用,10.4.1过程,过程的特点过程只有执行和等待两种状态过程一般由敏感信号的变化启动各过程并发执行1个过程只能描述1个同步时序逻辑,组合与时序逻辑尽量分配到不同过程各过程通过握手信号相互通信和协调,10.4.1过程间的通信,DATA,10.5阻塞与非阻塞赋值,阻塞与非阻塞赋值的定义,(1)非阻塞(non_blocking)赋值方式赋值符号为=,在整个过程块结束时完成赋值,可以理解为并行执行。(2)阻塞(blocking)赋值方式赋值符号为=,在该语句结束时就完成赋值。如果一个块语句有多条阻塞赋值语句,那么在前面的赋值语句没有完成之前,后面的语句就不能执行,可以理解为顺序执行。,在可综合的硬件设计中,使用阻塞和非阻塞赋值语句时,应注意以下原则(1)当用“always”块来描述组合逻辑时,既可以用阻塞赋值,也可以采用非阻塞赋值,应尽量使用阻塞赋值。(2)对时序逻辑描述和建模,使用非阻塞赋值方式。(3)为锁存器(Latch)建模,应使用非阻塞赋值。(4)若在同一个“always”过程块中既为组合逻辑建模,又为时序逻辑建模,最好使用非阻塞赋值方式。,在可综合的硬件设计中,使用阻塞和非阻塞赋值语句时,应注意以下原则(5)在一个“always”过程块中,最好不要混合使用阻塞赋值和非阻塞赋值,虽然同时使用这两种赋值方式在综合时并不一定会出错,但对同一个变量不能既进行阻塞赋值,又进行非阻塞赋值,这样在综合时会报错。(6)不能在两个个或两个以上的“always”过程块中对同一个变量赋值,这样会引发冲突,在综合时会报错。(7)仿真时使用$strobe显示非阻塞赋值的变量。,时序逻辑建模应尽量使用非阻塞赋值方式,【例10.9】阻塞赋值方式描述的移位寄存器1moduleblock1(q0,q1,q2,q3,din,clk);inputclk,din;outputregq0,q1,q2,q3;always(posedgeclk)beginq3=q2;/注意赋值语句的顺序q2=q1;q1=q0;q0=din;endendmodule,例10.9的RTL综合结果,【例10.10】阻塞赋值方式描述的移位寄存器2。moduleblock2(q0,q1,q2,q3,din,clk);inputclk,din;outputregq0,q1,q2,q3;always(posedgeclk)beginq3=q2;q1=q0;/该句与下句的顺序与例10.9颠倒q2=q1;q0=din;endendmodule,例10.10的RTL综合结果,【例10.11】阻塞赋值方式描述的移位寄存器3。moduleblock3(q0,q1,q2,q3,din,clk);inputclk,din;outputregq0,q1,q2,q3;always(posedgeclk)beginq0=din;/4条赋值语句的顺序与例10.9中完全颠倒q1=q0;q2=q1;q3=q2;endendmodule,例10.11的RTL综合结果,【例10.12】非阻塞赋值方式描述的移位寄存器。moduleblock4(q0,q1,q2,q3,din,clk);inputclk,din;outputregq0,q1,q2,q3;always(posedgeclk)beginq3=q2;q1=q0;q2=q1;q0=din;endendmodule,结论,对于阻塞赋值来说,赋值语句的顺序对最后的综合结果有着直接的影响。而如果采用非阻塞赋值方式来描述的话,则可以不考虑赋值语句的排列顺序,只需将其连接关系描述清楚即可。,信号在FPGA器件内部通过连线和逻辑门时,都有一定的延时。因此多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,往往会出现一些不正确的“毛刺”(Glitch),称为“冒险”(Hazard)现象。这些毛刺在电路板的设计中由于PCB走线时,存在分布电感和分布电容,所以许多毛刺能够被自然滤除,而在PLD内部没有分布电感和电容,这些毛刺将被完整地保留并向下一级传递,所以在FPGA设计中,如何消除毛刺就变得很重要。,10.6毛刺的消除,可通过改变设计,破坏毛刺产生的条件,来减少毛刺的发生。例如,在数字电路设计中,常常采用格雷码计数器取代普通的二进制计数器。还可根据D触发器的D输入端对毛刺不敏感的特点而消除毛刺,举例说明,【例10.23】长帧同步时钟的产生modulelongframe1(clk,strb);parameterDELAY=8;inputclk;outputregstrb;reg7:0counter;always(posedgeclk)beginif(counter=255)counter=0;elsecounter=counter+1;endalways(counter)beginif(counter=(DELAY-1)strb=1;elsestrb=0;endendmodule,毛刺,时序仿真输出波形,引入了D触发器的长帧同步时钟的产生modulelongframe2(clk,strb);parameterDELAY=8;inputclk;outp

温馨提示

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

评论

0/150

提交评论