




已阅读5页,还剩78页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章VHDL基础,3.1VHDL基本语法,3.1.1组合电路描述,图3-1mux21a实体图3-2mux21a结构体,实体:描述电路的外部情况及各信号端口的基本性质,结构体:描述电路的内部逻辑功能和电路结构,3.1VHDL基本语法,3.1.1组合电路描述,【例3-1】ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINy=aWHENs=0ELSEb;ENDARCHITECTUREone;,跳至3.2,3.1VHDL基本语法,3.1.1组合电路描述,【例3-2】ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISSIGNALd,e:BIT;BEGINd=aAND(NOTS);e=bANDs;y=dORe;ENDARCHITECTUREone;,3.1VHDL基本语法,【例3-3】ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIFs=0THENy=a;ELSEy=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;,3.1.1组合电路描述,3.1VHDL基本语法,图3-3mux21a功能时序波形,3.1.1组合电路描述,3.1VHDL基本语法,3.1.2VHDL结构,【例3-4】ENTITYe_nameISPORT(p_name:port_mdata_type;.p_namei:port_midata_type);ENDENTITYe_name;,1.实体表达,3.1VHDL基本语法,2.实体名,3.端口语句和端口信号名,4.端口模式,“IN”、“OUT”、“INOUT”、“BUFFER”,5.数据类型,3.1VHDL基本语法,6.结构体表达,【例3-5】ARCHITECTUREarch_nameOFe_nameIS说明语句BEGIN(功能描述语句)ENDARCHITECTUREarch_name;,3.1VHDL基本语法,9.条件语句,10.WHEN_ELSE条件信号赋值语句,赋值目标=表达式WHEN赋值条件ELSE表达式WHEN赋值条件ELSE.表达式;,z=aWHENp1=1ELSEbWHENp2=1ELSEc;,3.1VHDL基本语法,7.赋值符号和数据比较符号,IFaTHEN.-注意,a的数据类型必须是booleanIF(s1=0)AND(s2=1)OR(cb1THENq1=1;ELSIFa1b1THENq1b1THENq1=1;ELSEq1=0;ENDIF;.,3.2时序电路描述,3.2.3时序电路的不同表述,【例3-9】.PROCESS(CLK)BEGINIFCLKEVENTAND(CLK=1)AND(CLKLAST_VALUE=0)THENQ=D;-确保CLK的变化是一次上升沿的跳变ENDIF;ENDPROCESS;【例3-10】.PROCESS(CLK)BEGINIFCLK=1ANDCLKLAST_VALUE=0-同例3-9THENQ=D;ENDIF;ENDPROCESS;,3.2时序电路描述,【例3-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;,3.2时序电路描述,3.2.3实现时序电路的不同表述,【例3-12】.PROCESSBEGINwaituntilCLK=1;-利用wait语句Q=D;ENDPROCESS;,3.2时序电路描述,【例3-13】.PROCESS(CLK)BEGINIFCLK=1THENQbin,co=d,so=e);-例化语句u2:h_adderPORTMAP(a=e,b=cin,co=f,so=sum);u3:or2aPORTMAP(a=d,b=f,c=cout);ENDARCHITECTUREfd1;,3.3全加器的VHDL描述,跳至3.6,3.3全加器的VHDL描述,3.3.2CASE语句,1.CASE语句,CASEISWhen=;.;;When=;.;;.WHENOTHERS=;ENDCASE;,复习,3.3全加器的VHDL描述,2.标准逻辑矢量数据类型,B=01100010;-B(7)为0B(4DOWNTO1)=1101;-B(4)为1B(7DOWNTO4)=A;-B(6)等于A(2),SIGNALC:BIT_VECTOR(3DOWNTO0);,B:OUTSTD_LOGIC_VECTOR(7DOWNTO0);或SIGNALA:STD_LOGIC_VECTOR(1TO4),复习,3.3全加器的VHDL描述,3.并置操作符,SIGNALa:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALd:STD_LOGIC_VECTOR(1DOWNTO0);.a连接端口名,.);,跳至3.6,复习,3.4计数器设计,【例3-19】ENTITYCNT4ISPORT(CLK:INBIT;Q:BUFFERINTEGERRANGE15DOWNTO0);END;ARCHITECTUREbhvOFCNT4ISBEGINPROCESS(CLK)BEGINIFCLKEVENTANDCLK=1THENQ=Q+1;ENDIF;ENDPROCESS;ENDbhv;,3.4计数器设计,1程序说明,表式Q=Q+1的右项与左项并非处于相同的时刻内,对于时序电路,除了传输延时外,前者的结果出现于当前时钟周期;后者,即左项要获得当前的Q+1,需等待下一个时钟周期。,3.4计数器设计,2数据类型说明,1十进制整数0十进制整数35十进制整数10E3十进制整数,等于十进制整数100016#D9#十六进制整数,等于十六进制整数D9H8#720#八进制整数,等于八进制整数720O2#11010010#二进制整数,等于二进制整数11010010B,Q:BUFFERNATURALRANGE15DOWNTO0;,Q:BUFFERINTEGERRANGE15DOWNTO0;,3.4计数器设计,3计数器的其他表述方法,【例3-20】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-检测时钟上升沿IFEN=1THEN-检测是否允许计数(同步使能)IFCQI0);-大于9,计数值清零ENDIF;ENDIF;ENDIF;IFCQI=9THENCOUT=1;-计数大于9,输出进位信号ELSECOUTe(5),OTHERS=e(1);,f=e(1),3.5一般计数器的VHDL设计方法,3.5.2程序功能分析,图3-11例3-21的RTL电路(Synplify综合),3.5一般计数器的VHDL设计方法,3.5.2程序功能分析,图3-12例3-21的工作时序,3.5一般计数器的VHDL设计方法,3.5.3移位寄存器设计,【例3-22】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;,3.5一般计数器的VHDL设计方法,3.5.3移位寄存器设计,图3-13例3-22的工作时序,3.6数据对象,3.6.1常数,CONSTANT常数名:数据类型:=表达式;,CONSTANTFBT:STD_LOGIC_VECTOR:=010110;-标准位矢类型CONSTANTDATAIN:INTEGER:=15;-整数类型,3.6数据对象,3.6.2变量,VARIABLE变量名:数据类型:=初始值;,VARIABLEa:INTEGERRANGE0TO15;-变量a定义为常数,取值范围是0到15VARIABLEd:STD_LOGIC:=1;-变量a定义为标准逻辑位数据类型,初始值是1,目标变量名:=表达式;,VARIABLEx,y:INTEGERRANGE15DOWNTO0;-分别定义变量x和y为整数类型VARIABLEa,b:STD_LOGIC_VECTOR(7DOWNTO0);x:=11;y:=2+x;-运算表达式赋值,y也是整数变量a:=b-b向a赋值a(0TO5):=b(2TO7);,3.6数据对象,3.6.3信号,SIGNAL信号名:数据类型:=初始值;,目标信号名=表达式AFTER时间量;,SIGNALa,b,c,y,z:INTEGER;.PROCESS(a,b,c)BEGINy=a+b;z=ca;y=b;ENDPROCESS;,3.6数据对象,3.6.4进程中的信号赋值与变量赋值,表3-1信号与变量赋值语句功能的比较,跳至3.7,3.6数据对象,【例3-25】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D1:INSTD_LOGIC;Q1:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISSIGNALA,B:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFCLKEVENTANDCLK=1THENA=D1;B=A;Q1=B;ENDIF;ENDPROCESS;END;,3.6数据对象,【例3-26】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D1:INSTD_LOGIC;Q1:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISBEGINPROCESS(CLK)VARIABLEA,B:STD_LOGIC;BEGINIFCLKEVENTANDCLK=1THENA:=D1;B:=A;Q1REG(0)REG(0)REG(7)REG(7)REG(7DOWNTO0)REG=REG;CY=CY;-保持ENDCASE;ENDIF;ENDPROCESS;QB(7DOWNTO0)=REG(7DOWNTO0);CN=CY;-移位后输出ENDBEHAV;,3.6数据对象,3.6.4进程中的信号赋值与变量赋值,图3-20例3-30中带进位循环左移仿真波形(MD=001),3.7IF语句概述,跳至3.8,【例3-31】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcontrol_stmtsISPORT(a,b,c:INBOOLEAN;output:OUTBOOLEAN);ENDcontrol_stmts;ARCHITECTUREexampleOFcontrol_stmtsISBEGINPROCESS(a,b,c)VARIABLEn:BOOLEAN;BEGINIFaTHENn:=b;ELSEn:=c;ENDIF;output=n;ENDPROCESS;ENDexample;,【例3-32】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcoderISPORT(din:INSTD_LOGIC_VECTOR(0TO7);output:OUTSTD_LOGIC_VECTOR(0TO2);ENDcoder;ARCHITECTUREbehavOFcoderISSIGNALSINT:STD_LOGIC_VECTOR(4DOWNTO0);BEGINPROCESS(din)BEGINIF(din(7)=0)THENoutput=000;ELSIF(din(6)=0)THENoutput=100;ELSIF(din(5)=0)THENoutput=010;ELSIF(din(4)=0)THENoutput=110;ELSIF(din(3)=0)THENoutput=001;ELSIF(din(2)=0)THENoutput=101;ELSIF(din(1)=0)THENoutput=011;ELSEoutputsososososoNULL;ENDCASE;ENDPROCESS;,3.8进程语句归纳,3.进程必须由敏感信号的变化来启动,4.进程语句本身是并行语句,3.8.3进程要点,5.信号是多个进程间的通信线,6.一个进程中只允许描述对应于一个时钟信号的同步时序逻辑,跳回例3-25,3.8进程语句归纳,【例3-33】ENTITYmulISPORT(a,b,c,selx,sely:INBIT;data_out:OUTBIT);ENDmul;ARCHITECTUREexOFmulISSIGNALtemp:BIT;BEGINp_a:PROCESS(a,b,selx)BEGINIF(selx=0)THENtemp=a;ELSEtemp=b;ENDIF;ENDPROCESSp_a;p_b:PROCESS(temp,c,sely)BEGINIF(sely=0)THENdata_out=temp;ELSEdata_out=c;ENDIF;ENDPROCESSp_b;ENDex;,3.9并行赋值语句概述,【例3-34】SIGNALseiect:INTEGERRANGE15DOWNTO0;.Select=0WHENs0=0ANDs1=0ELSE1WHENs0=1ANDs1=0ELSE2WHENs0=0ANDs1=1ELSE3;x=aWHENselect=0ELSEbWHENselect=1ELSEcWHENselect=2ELSEd;,3.10双向和三态电路信号赋值,【例3-36】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYtri_sISport(enable:INSTD_LOGIC;datain:INSTD_LOGIC_VECTOR(7DOWNTO0);dataout:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ENDtri_s;ARCHITECTUREbhvOFtri_sISBEGINPROCESS(enable,datain)BEGINIFenable=1THENdataout=datain;ELSEdataout=ZZZZZZZZ;ENDIF;ENDPROCESS;ENDbhv;,3.10.1三态门设计,3.10双向和三态电路信号赋值,3.10.1三态门设计,图3-218位3态控制门电路,3.10双向和三态电路信号赋值,【例3-36】libraryieee;useieee.std_logic_1164.all;entitytri_stateisport(control:instd_logic;in1:instd_logic_vector(7downto0);q:inoutstd_logic_vector(7downto0);x:outstd_logic_vector(7downto0);endtri_state;architecturebody_trioftri_stateisbeginprocess(control,q,in1)beginif(control=0)thenx=q;elseq=in1;x=ZZZZZZZZ;endif;endprocess;endbody_tri;,3.10.2双向端口设计,3.10双向和三态电路信号赋值,【例3-37】(以上部分同上例)process(control,q,in1)beginif(control=0)thenx=q;q=ZZZZZZZZ;elseq=in1;x=ZZZZZZZZ;endif;endprocess;endbody_tri;,3.10.2双向端口设计,3.10双向和三态电路信号赋值,3.10.2双向端口设计,图3-23例3-36的仿真波形图,3.10双向和三态电路信号赋值,3.10.2双向端口设计,图3-24例3-37的综合结果,3.10双向和三态电路信号赋值,3.10.2双向端口设计,图3-25例3-37的仿真波形图,3.10双向和三态电路信号赋值,3.10.3三态总线电路设计,【例3-38】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYtristate2ISport(input3,input2,input1,input0:INSTD_LOGIC_VECTOR(7DOWNTO0);enable:INSTD_LOGIC_VECTOR(1DOWNTO0);output:OUTSTD_LOGIC_VECTOR(7DOWNTO0);ENDtristate2;ARCHITECTUREmultiple_driversOFtristate2ISBEGINPROCESS(enable,input3,input2,input1,input0)BEGINI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳动理论考试题及答案
- 2025年中国纸制生日帽数据监测报告
- 口腔验收考试题及答案
- 教师招聘之《幼儿教师招聘》考前冲刺练习试题附参考答案详解【a卷】
- 科技考试题目及答案
- 押题宝典教师招聘之《幼儿教师招聘》通关考试题库含答案详解(典型题)
- 热力网值班员技能比武考核试卷及答案
- 轻冶料浆配料工协同作业考核试卷及答案
- 手工织毯工操作考核试卷及答案
- 铝吸出工专业知识考核试卷及答案
- 广东省湛江市《综合能力测试》公务员考试真题含答案
- GB/T 26562-2011自行式坐驾工业车辆踏板的结构与布置踏板的结构与布置原则
- 一年级上学期体育教学工作计划
- 选矿厂安全风险分级管控表
- 我国公共卫生架构与功能课件
- 工作票和操作票样本
- 《高频电子线路》课后答案-曾兴雯版高等教育出版社
- 《舞蹈艺术赏析》课件
- PLC项目实操练习题
- 《国有企业经营者薪酬激励研究(论文)9500字》
- 建设工地疫情防控24小时值班表
评论
0/150
提交评论