EDA 第4章 VHDL设计初步_第1页
EDA 第4章 VHDL设计初步_第2页
EDA 第4章 VHDL设计初步_第3页
EDA 第4章 VHDL设计初步_第4页
EDA 第4章 VHDL设计初步_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

EDA技术实用教程,第4章VHDL设计初步,4.1多路选择器的VHDL描述,KX康芯科技,4.1.12选1多路选择器的VHDL描述,图4-1mux21a实体,4.1多路选择器的VHDL描述,KX康芯科技,4.1.12选1多路选择器的VHDL描述,图4-2mux21a结构体,4.1多路选择器的VHDL描述,KX康芯科技,4.1.12选1多路选择器的VHDL描述,【例4-1】ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINy=aWHENs=0ELSEb;ENDARCHITECTUREone;,4.1多路选择器的VHDL描述,KX康芯科技,4.1.12选1多路选择器的VHDL描述,【例4-2】ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISSIGNALd,e:BIT;BEGINd=aAND(NOTS);e=bANDs;y=dORe;ENDARCHITECTUREone;,4.1多路选择器的VHDL描述,KX康芯科技,4.1.12选1多路选择器的VHDL描述,【例4-3】ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIFs=0THENy=a;ELSEy=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;,4.1多路选择器的VHDL描述,KX康芯科技,4.1.12选1多路选择器的VHDL描述,图4-3mux21a功能时序波形,4.1多路选择器的VHDL描述,KX康芯科技,4.1.2相关语句结构和语法说明,【例4-4】ENTITYe_nameISPORT(p_name:port_mdata_type;.p_namei:port_midata_type);ENDENTITYe_name;,1.实体表达,2.实体名,3.端口语句和端口信号名,4.1多路选择器的VHDL描述,KX康芯科技,4.1.2相关语句结构和语法说明,4.端口模式,4.1多路选择器的VHDL描述,KX康芯科技,4.1.2相关语句结构和语法说明,5.数据类型,6.结构体表达,【例4-5】ARCHITECTUREarch_nameOFe_nameIS说明语句BEGIN(功能描述语句)ENDARCHITECTUREarch_name;,4.1多路选择器的VHDL描述,KX康芯科技,4.1.2相关语句结构和语法说明,7.赋值符号和数据比较符号,赋值符“=”,表式中的等号“=”没有赋值的含义,只是一种数据比较符号。,IFaTHEN.-注意,a的数据类型必须是booleanIF(s1=0)AND(s2=1)OR(cb+1)THEN.,4.1多路选择器的VHDL描述,KX康芯科技,4.1.2相关语句结构和语法说明,8.逻辑操作符,AND、OR、NOT,9.条件语句,IF_THEN_ELSE,IF语句必须以语句“ENDIF;”结束,4.1多路选择器的VHDL描述,KX康芯科技,4.1.2相关语句结构和语法说明,10.WHEN_ELSE条件信号赋值语句,赋值目标=表达式WHEN赋值条件ELSE表达式WHEN赋值条件ELSE.表达式;,zb1THENq1=1;ELSIFa1b1THENq1b1THENq1=1;ELSEq1=0;ENDIF;.,KX康芯科技,4.2.3实现时序电路的VHDL不同表述,4.2寄存器描述及其VHDL语言现象,【例4-9】.PROCESS(CLK)BEGINIFCLKEVENTAND(CLK=1)AND(CLKLAST_VALUE=0)THENQ=D;-确保CLK的变化是一次上升沿的跳变ENDIF;ENDPROCESS;,KX康芯科技,4.2.3实现时序电路的VHDL不同表述,4.2寄存器描述及其VHDL语言现象,【例4-10】.PROCESS(CLK)BEGINIFCLK=1ANDCLKLAST_VALUE=0-同例3-9THENQ=D;ENDIF;ENDPROCESS;,KX康芯科技,【例4-11】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISSIGNALQ1:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFrising_edge(CLK)-必须打开STD_LOGIC_1164程序包THENQ1=D;ENDIF;ENDPROCESS;Q=Q1;-在此,赋值语句可以放在进程外,作为并行赋值语句END;,KX康芯科技,4.2.3实现时序电路的VHDL不同表述,4.2寄存器描述及其VHDL语言现象,【例4-12】.PROCESSBEGINwaituntilCLK=1;-利用wait语句Q=D;ENDPROCESS;,KX康芯科技,4.2.3实现时序电路的VHDL不同表述,【例4-13】.PROCESS(CLK)BEGINIFCLK=1THENQ=D;-利用进程的启动特性产生对CLK的边沿检测ENDIF;ENDPROCESS;,图4-7例4-13的时序波形,KX康芯科技,4.2.3实现时序电路的VHDL不同表述,【例4-14】.PROCESS(CLK,D)BEGINIFCLK=1-电平触发型寄存器THENQ=D;ENDIF;ENDPROCESS;,图4-8例4-14的时序波形,KX康芯科技,4.2.4异步时序电路设计,【例4-15】.ARCHITECTUREbhvOFMULTI_DFFISSIGNALQ1,Q2:STD_LOGIC;BEGINPRO1:PROCESS(CLK)BEGINIFCLKEVENTANDCLK=1THENQ1=NOT(Q2ORA);ENDIF;ENDPROCESS;PRO2:PROCESS(Q1)BEGINIFQ1EVENTANDQ1=1THENQ2=D;ENDIF;ENDPROCESS;QQ=Q2;.,KX康芯科技,图4-9例4-15综合后的电路(Synplify综合),4.2.4异步时序电路设计,4.2寄存器描述及其VHDL语言现象,KX康芯科技,图4-10半加器h_adder电路图及其真值表,4.3.1半加器描述,4.31位二进制全加器的VHDL描述,KX康芯科技,图4-11全加器f_adder电路图及其实体模块,4.3.1半加器描述,4.31位二进制全加器的VHDL描述,KX康芯科技,4.3.1半加器描述,4.31位二进制全加器的VHDL描述,【例4-16】LIBRARYIEEE;-半加器描述(1):布尔方程描述方法USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_adderISPORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYh_adder;ARCHITECTUREfh1OFh_adderisBEGINso=NOT(aXOR(NOTb);cobin,co=d,so=e);-例化语句u2:h_adderPORTMAP(a=e,b=cin,co=f,so=sum);u3:or2aPORTMAP(a=d,b=f,c=cout);ENDARCHITECTUREfd1;,KX康芯科技,4.3.2CASE语句,4.31位二进制全加器的VHDL描述,1.CASE语句,CASEISWhen=;.;;When=;.;;.WHENOTHERS=;ENDCASE;,KX康芯科技,4.3.2CASE语句,4.31位二进制全加器的VHDL描述,2.标准逻辑矢量数据类型,STD_LOGIC_VECTORSTD_LOGIC,在使用STD_LOGIC_VECTOR中,必须注明其数组宽度,即位宽,如:B:OUTSTD_LOGIC_VECTOR(7DOWNTO0);或SIGNALA:STD_LOGIC_VECTOR(1TO4),B=01100010;-B(7)为0B(4DOWNTO1)=1101;-B(4)为1B(7DOWNTO4)=A;-B(6)等于A(2),KX康芯科技,4.3.2CASE语句,4.31位二进制全加器的VHDL描述,3.并置操作符,SIGNALa:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALd:STD_LOGIC_VECTOR(1DOWNTO0);.a连接端口名,.);,KX康芯科技,4.4计数器设计,【例4-20】ENTITYCNT4ISPORT(CLK:INBIT;Q:BUFFERINTEGERRANGE15DOWNTO0);END;ARCHITECTUREbhvOFCNT4ISBEGINPROCESS(CLK)BEGINIFCLKEVENTANDCLK=1THENQ=Q+1;ENDIF;ENDPROCESS;ENDbhv;,KX康芯科技,4.4计数器设计,4.4.14位二进制加法计数器设计,表式Q=Q+1的右项与左项并非处于相同的时刻内,对于时序电路,除了传输延时外,前者的结果出现于当前时钟周期;后者,即左项要获得当前的Q+1,需等待下一个时钟周期。,KX康芯科技,4.4计数器设计,4.4.2整数类型,Q:BUFFERINTEGERRANGE15DOWNTO0;,Q:BUFFERNATURALRANGE15DOWNTO0;,KX康芯科技,4.4.3计数器设计的其他表述方法,【例4-21】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT4ISPORT(CLK:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0);END;ARCHITECTUREbhvOFCNT4ISSIGNALQ1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLKEVENTANDCLK=1THENQ1=Q1+1;ENDIF;ENDPROCESS;Q0);-计数器异步复位ELSIFCLKEVENTANDCLK=1THEN-检测时钟上升沿接下页,KX康芯科技,4.5一般加法计数器设计,IFEN=1THEN-检测是否允许计数(同步使能)IFCQI0);-大于9,计数值清零ENDIF;ENDIF;ENDIF;IFCQI=9THENCOUT=1;-计数大于9,输出进位信号ELSECOUT0);,d1e(3),3=e(5),OTHERS=e(1);,f=e(1),KX康芯科技,4.5一般加法计数器设计,4.5.2程序分析,图4-14例4-22的RTL电路(Synplify综合),KX康芯科技,4.5一般加法计数器设计,4.5.2程序分析,图4-15例4-22的工作时序,KX康芯科技,4.5.3含并行置位的移位寄存器设计,【例4-23】LIBRARYIEEE;USEIEEE.STD_(LOGIC_1164.ALL;ENTITYSHFRTIS-8位右移寄存器PORT(CLK,LOAD:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);QB:OUTSTD_LOGIC);ENDSHFRT;ARCHITECTUREbehavOFSHFRTISBEGINPROCESS(CLK,LOAD)VARIABLEREG8:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFCLKEVENTANDCLK=1THENIFLOAD=1THENREG8:=DIN;-由(LOAD=1)装载新数据ELSEREG8(6DOWNTO0):=REG8(7DOWNTO1);ENDIF;ENDIF;QB=REG8(0);-输出最低位ENDPROCESS;ENDbehav;,KX康芯科技,4.5一般加法计数器设计,4.5.3含并行置位的移位寄存器设计,图4-16例4-23的工作时序,习题,KX康芯科技,4-1.画出与下例实体描述对应的原理图符号元件:ENTITYbuf3sIS-实体1:三态缓冲器PORT(input:INSTD_LOGIC;-输入端enable:INSTD_LOGIC;-使能端output:OUTSTD_LOGIC);-输出端ENDbuf3x;ENTITYmux21IS-实体2:2选1多路选择器PORT(in0,in1,sel:INSTD_LOGIC;output:OUTSTD_LOGIC);,习题,KX康芯科技,4-2.图4-17所示的是4选1多路选择器,试分别用IF_THEN语句和CASE语句的表达方式写出此电路的VHDL程

温馨提示

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

评论

0/150

提交评论