VHDL设计深入课件_第1页
VHDL设计深入课件_第2页
VHDL设计深入课件_第3页
VHDL设计深入课件_第4页
VHDL设计深入课件_第5页
已阅读5页,还剩74页未读, 继续免费阅读

下载本文档

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

文档简介

第7章VHDL设计深入

7.1进程中的信号赋值与变量赋值7.1进程中的信号赋值与变量赋值判断下面3个程序中是否有错误,若有则指出错误所在,并给出完整程序。

程序1:

程序2:SignalA,EN:std_logic;ArchitectureoneofsampleisProcess(A,EN)variablea,b,c:integer;VariableB:std_logic;beginBeginc<=a+b;ifEN=1thenB<=A;endif;end;endprocess;判断下面3个程序中是否有错误,若有则指出错误所在,并给出完整程序。

程序3:libraryieee;useieee.std_logic_1164.all;entitymux21isport(a,b:instd_logic;sel:instd_logic;c:outstd_logic;);endsam2;architectureoneofmux21isbeginifsel='0'thenc:=a;elsec:=b;endif;endtwo;【例7-3】ARCHITECTUREbhvOFDFF3ISSIGNALA,B:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENA<=D1;B<=A;Q1<=B;ENDIF;ENDPROCESS;

END;

时序波形图的分析【例7-4】ARCHITECTUREbhvOFDFF3ISBEGINPROCESS(CLK)VARIABLEA,B:STD_LOGIC;BEGINIFCLK'EVENTANDCLK='1'THENA:=D1;B:=A;Q1<=B;ENDIF;ENDPROCESS;

END;

时序波形图的分析VHDL语句的执行时间顺序问题

和软件语言的重要差异。很令人困惑的问题!!执行赋值≠完成赋值:结论:关于VHDL代码的

执行时间顺序问题signal和variable代入语句的执行时间不同variable代入后,其数值立即发生改变!signal代入后,数值不立即改变,只有在ENDPROCESS前才改变。7.1进程中的信号赋值与变量赋值Signal的一个例子p39ARCHITECTUREbhvOFp39ISSIGNAL a,b,c,y,z: INTEGER;BEGIN PROCESS(a,b,c) BEGIN y<=a+b; z<=c-a; y<=b; ENDPROCESS;ENDARCHITECTUREbhv;如果a,b,c分别为1,2,3Y的值等于多少?线与【例7-6】process(i0,i1,i2,i3,a,b)beginmuxval<=0;if(a='1')thenmuxval<=muxval+1;endif;if(b='1')thenmuxval<=muxval+2;endif;casemuxvaliswhen0=>q<=i0;when1=>q<=i1;when2=>q<=i2;when3=>q<=i3;whenothers=>null;4选1选择器的电路图(7-6代码)【例7-7】variablemuxval:integerrange7downto0;beginmuxval:=0;if(a='1')thenmuxval:=muxval+1;endif;if(b='1')thenmuxval:=muxval+2;endif;casemuxvaliswhen0=>q<=i0;when1=>q<=i1;when2=>q<=i2;when3=>q<=i3;whenothers=>null;

4选1选择器的电路图(7-7代码)差之毫厘谬之千里上面2

个图的差异?看似相似的代码,生成的电路却

大相径庭!!产生了不需要的 时序电路单元(DFF)图

例7-6中错误的工作时序

图例7-7中正确的工作时序

小结:变量赋值与信号赋值

变量与信号的差异:

1)赋值方式的不同:变量:=表达式;信号<=表达式;

2)硬件实现的功能不同:信号代表电路单元、功能模块间的互联,代表实际的硬件连线;变量代表电路单元内部的操作,代表暂存的临时数据。3)有效范围的不同:信号:程序包、实体、结构体;全局量。变量:进程、子程序;局部量。

ARCHITECTURE{SIGNALDeclarations}label1:PROCESS{VARIABLEDeclarations}label2:PROCESS{VARIABLEDeclarations}┇4)赋值行为的不同:信号赋值延迟更新数值、时序电路;变量赋值立即更新数值、组合电路。5)信号的多次赋值

a.一个进程:最后一次赋值有效

b.多个进程:多源驱动线与、线或、三态例:信号的多次赋值architecturertlofexissignala:std_logic;beginprocess(…)begina<=b;…a<=c;endprocess;endrtl;architecturertlofexissignala:std_logic;beginprocess(…)begina<=b;…endprocess;process(…)begina<=c;...endprocess;endex;三态门:要点三态电路是总线电路设计的必须状态CPLD/FPGA器件

不能 在内部产生三态电路

只能在

端口处产生三态电路内部三态电路必须用

选择器电路代替7.2含高阻输出的电路设计

EN1EN1EN1…G1G2GnA1A2An数据总线011…101…110…

注意:任何时刻,只允许一个三态门使能,其余为高阻态。用途主要作为TTL电路与总线(BUS)间的接口电路三态门:图VHDL应如何表达?ENTITYtri_sIS PORT(enable, :IN STD_LOGIC;

datain :IN STD_LOGIC_VECTOR(7DOWNTO0);

dataout :OUT STD_LOGIC_VECTOR(7DOWNTO0));ENDENTITYtri_s;ARCHITECTUREBEHAVOFtri_sISBEGIN PROCESS(enable,datain) BEGIN IFenable='1'THEN

dataout <=datain; ELSE

dataout <="ZZZZZZZZ"; --errorcode:dataout<="zzzzzzzz"; ENDIF; ENDPROCESS;ENDARCHITECTUREBEHAV;三态门:代码详细参见:P1777-87.2.2双向缓冲器:图VHDL应如何表达?ENTITYbitri_stateIS PORT(control :IN STD_LOGIC; in1 :IN STD_LOGIC_VECTOR(7DOWNTO0); x :OUT STD_LOGIC_VECTOR(7DOWNTO0); q :INOUT STD_LOGIC_VECTOR(7DOWNTO0) );ENDENTITYbitri_state;ARCHITECTUREBEHAVOFbitri_stateISBEGINPROCESS(control,q,in1)BEGINIFcontrol=‘0'THEN x<=q; --errorcode,

ELSE q<=in1; x<="ZZZZZZZZ"; ENDIF;ENDPROCESS;ENDARCHITECTUREBEHAV;详细参见:p178电路图是?双向端口:ex7-9Ex7-93.10双向和三态电路信号赋值3.10.2双向端口设计图

例7-9的仿真波形图

双向端口:设计提示如果一个双向端口用于输入模式,必须使得原来呈现输出模式的端口

为“Z”状态ENTITYbitri_stateokIS PORT(control :IN STD_LOGIC; in1 :IN STD_LOGIC_VECTOR(7DOWNTO0); x :OUT STD_LOGIC_VECTOR(7DOWNTO0); q :INOUT STD_LOGIC_VECTOR(7DOWNTO0) );ENDENTITYbitri_stateok;ARCHITECTUREBEHAVOFbitri_stateokISBEGINPROCESS(control,q,in1)BEGINIFcontrol=‘0'THEN x<=q; q<="ZZZZZZZZ"; --correctcode,comparewithexample5_14;ELSE q<=in1; x<="ZZZZZZZZ"; --thecodecanbeomitted!!!ENDIF;ENDPROCESS;ENDARCHITECTUREBEHAV;详细参见:p178_ex7-10双向和三态电路信号赋值双向端口设计图

例7-10的仿真波形图

声明本部分内容是数字电子系统的设计中要遇到的特殊问题,虽不是考试重点,但却是实际设计中的关键注意事项。艺无止境,讲授本部分的目的仅仅是带领入门,修行仍靠自身。要熟练使用这些技巧,并且有进一步的提高,必须经过大量的项目实践去积累。7.3资源优化7.3.1资源共享资源共享即RTL级模块中的两个或两个以上的部分共享一组逻辑7.3资源优化7.3.2逻辑优化

减少资源的占用7.3资源优化7.3.3串行化在时间上复用逻辑块7.3资源优化7.3.3串行化47流水线技术几乎是最常用的提供系统工作速率的强有力手段。7.4速度优化

7.4.1流水线设计

将处理过程分成串连的n个步骤,并将单向串连起来,每个步骤之间用D触发器分割。Step1Step2Stepn…问题:下图的流水线为何可以提高速度?时序电路的主要时序参数clkDinclkDinThTsuTcoTsu:setuptimeTh:holdtimeTco:clockoutputdelay流水线设计:

方法Tclk≥

Tdelay/2+Tco+Tsetup电子科技大学51关于寄存输入和寄存输出数字系统中,各模块应采取(寄存输入和)寄存输出,这样做有如下优点:模块化清晰(特别是寄存输出);提高系统最高工作速率;有利于整个系统和单个模块分别进行静态时序分析。关键路径一个同步系统中的关键路径,就是它所有的路径中,路径延迟最长的那一条。显然,这个同步系统的最高工作频率,等于关键路径延迟的倒数。7.4速度优化

7.4.1流水线设计

Clk=129MHz7.4速度优化

7.4.1流水线设计

T=7.748nsf=129MT=3.63n3f=275M7.4速度优化

7.4.2关键路径法长路径的避免实际上是一个很泛的技巧,总之,在设计中,时序能走短路径就尽量走短路径;组合电路能缩小就尽量缩小。以下仅举两例来说明。7.5仿真延时7.5.1固有延时z<=xXORyAFTER5ns;

z<=xXORy;

B<=AAFTER20ns;--固有延时模型

7.5仿真延时7.5.2传输延时B<=TRANSPORTAAFTER20ns;--

传输延时模型

图3-28固有延时输入输出波形

温馨提示

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

评论

0/150

提交评论