vhdl语言构造体的描述方式教学PPT.ppt_第1页
vhdl语言构造体的描述方式教学PPT.ppt_第2页
vhdl语言构造体的描述方式教学PPT.ppt_第3页
vhdl语言构造体的描述方式教学PPT.ppt_第4页
vhdl语言构造体的描述方式教学PPT.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

第5章vhdl语言构造体的描述方式,行为描述方式数据流描述方式(寄存器传输描述rtl)结构描述方式混合描述方式,可进行逻辑综合,不能进行逻辑综合,5.1行为描述方式,所谓行为描述,就是对设计实体的数学模型的描述,其抽象程度远远高于数据流描述方式和结构描述方式.行为描述类似于高级编程语言,当要描述一个设计实体的行为时,无须知道具体电路的结构,只需要用一组状态来描述即可.,行为描述的优点在于只需要描述清楚输入与输出的行为,而不需要花费更多的精力关注设计功能的门级实现.描述数字系统的行为,主要用于仿真和系统工作原理的研究。,代入语句格式:信号量=敏感信号量表达式;例如:z=anor(bnandc);该例中有三个敏感量,无论哪一个发生变化都可以使z变化。具有时间延迟的代入语句:a=bafter10ns表示当b发生变化10ns后a才变化。a:=bafter5ns,语法错误,例如:entityand2isport(a,b:inbit;c:outbit);endand2;architectureand2_behaveofand2isbeginc=aandb;endand2_behave;,c=aandb;被替换为c=aandbafter5ns;,延时语句vhdl中有两种延时语句:惯性延时和传输延时。惯性延时vhdl中惯性延时是缺省的,因为逻辑硬件电路总是有时间延迟的。若延迟时间是20ns,那么输入信号时间若小于20ns,则输出信号将不跟随输入信号的变化。有时为使延迟时间更逼真实际电路,就专门设置惯性时间:b=aafter10ns;传输延时传输延时常代表总线、连接线的延迟时间,该时间必须专门说明。该传输延时只对信号起纯延时作用。例:b=transportaafter20ns;,generic语句generic语句常用于不同层次之间的信息传递。该语句说设计的数据除整数类型以外,如涉及其他类型的数据则不能进行逻辑综合。该语句主要用于行为描述方式。使用generic语句易于使器件模块化和通用化。例如书中p54页例题4-4,4-5,数据流描述方式数据流描述方式是一种可以进行逻辑综合的描述方式,由于要进行逻辑综合所以对使用的语句有一定的限制,vhdl中的每一个命令和语句都对逻辑综合能力进行了定义,要进行逻辑综合的设计实体就要使用有逻辑综合能力的命令和语句。,数据流描述是对从信号到信号的数据流的路径形式进行描述,因此很容易进行逻辑综合.由于要对信号的流动路径进行描述,因此要求设计人员对设计实体的功能实现要有一定的了解,有时候还需要对内部电路有清楚的认识,具有一定的难度.,例:四选一电路libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitymux42isport(input:instd_logic_vector(3downto0);sel:instd_logic_vector(1downto0);y:outstd_logic);endmux42;architectureappofmux42isbeginy=input(0)whensel=0elseinput(1)whensel=1elseinput(2)whensel=2elseinput(3);endapp;,使用数据流描述方式应该注意的问题:1x状态的传递问题有时x状态会逐级传递,造成系统的输出为不确定或者错误,所以要在设计中考虑x状态对输出的影响。,process(sel)beginif(sel=1)theny=0;elsey=1;endif;endprocess;,process(sel)beginif(sel=1)theny=0;elsey=1;endif;endprocess;,如下更改process(sel)beginif(sel=1)theny=0;elseif(sel=0)theny=1;elsey=x;endifendprocess,2.一些限制*禁止在一个进程中使用两个寄存器*在进程中,对变量要先读后写*在if语句描述寄存器时,禁止else项*在寄存器描述中,禁止将变量代入信号*关连性强的信号应该放在一个进程中,例1:process(clk1,clk2)beginifclk1eventandclk1=1theny=m;endif;ifclk2eventandclk2=1then-错误x=m;endif;endprocess;,例2:process(clk,reset)variablea:std_logic;beginifreset=1thena:=0;outsignal=0;elsifrising_edge(clk)thenoutsignal=a;-先读a:=insignal;-后写endif;endprocess;因为变量值是立即获得的,所以如果先写后读就会产生长的组合逻辑和锁存器(或寄存器)。因此在编写代码过程中,对变量要先读后写。,对于rtl描述方式中的if语句在其描述寄存器功能时,禁止采用else项,因为这种赋值方式相当于检测如果没有时钟信号时,则赋新值,而实际上不可能有这样的硬件电路与之对应,如例3所示。而如例4所示的else项在rtl描述方式中是可以使用的。,例3:process(clk)beginifclkeventandclk=1theny=m;else-禁止使用y=n;endif;endprocess;,例4:process(clk)beginifclkeventandclk=1thenifena=1thenyn2,c=m);,asic级结构描述插板级结构描述系统级的结构描述,构造体结构描述的基本框架,全加器,设有两个四位二进制数相加1001被加数a0101加数b1110和s在相加过程中,两数相加有时要产生进位,这个进位要送到高位的和中去.所以一个全加器要求三个变量(被加数ai和加数bi以及低位向本位的进位ci-1)的和si和向高位的进位ci.,全加器真值表,一位全加器的逻辑示意图,a,b,cin,s,co,采用行为描述方法设计一位全加器,libraryieee;useieee.std_logic_1164.all;entityfull_adderisport(a,b,cin:instd_logic;co,s:outstd_logic);endfull_adder;architecturebehavoffull_adderisbeginprocess(a,b,cin)variableai,bi,ci,si:integer;beginif(a=0)thenai:=0;elseai:=1;endif;if(b=0)thenbi:=0;elsebi:=1;endif;,if(cin=0)thenci:=0;elseci:=1;endif;si:=ai+bi+ci;casesiiswhen0=s=0;co=0;when1=s=1;co=0;when2=s=0;co=1;when3=s=1;co=1;whenothers=s=x;co=0;endcase;endprocess;endbehav;,错误;应为=,错误;应在32位之内,一位全加器实现的逻辑电路图,采用数据流描述方法设计一位全加器,libraryieee;useieee.std_logic_1164.all;entityfull_adderisport(a,b,cin:instd_logic;co,s:outstd_logic);endfull_adder;architecturedataflowoffull_adderissignaltemp1,temp2:std_logic;begintemp1=axorb;temp2=temp1andcin;s=temp1xorcin;co=temp2or(aandb);enddataflow;,采用半加器设计全加器,1位半加器,1位全加器,h_adderacobso,h_adderacobso,h_adderacobso,f_adderaincoutbinsumcin,ain,bin,ain,acb,u1,u2,u3,sum,cout,d,e,f,libraryieee;useieee.std_logic_1164.all;entityor2isport(a,b:instd_logic;c:outstd_logic);endor2;architecturefulofor2isbeginc=aorb;endfu1;,或门设计,libraryieee;useieee.std_logic_1164.all;entityh_adderisport(a,b:instd_logic;co,so:outstd_logic);endh_adder;architecturefh1ofh_adderisbeginso=aand(anandb);co=not(anandb);endfh1;,半加器设计,libraryieee;useieee.std_logic_1164.all;entityf_adderisport(ain,bin,cin:instd_logic;cout,sum:outstd_logic);endf_adder;architecturefd1off_adderiscomponenth_adderport(a,b:instd_logic;co,so:outstd_logic);endco

温馨提示

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

评论

0/150

提交评论