版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
要点回顾1组合电路实现(半加器)2元件例化(全加器)3时序电路实现(触发器)4信号与变量5VHDL语法EDA技术实用教程第5章VHDL设计进阶5.1数据对象DATAOBJECTS5.1.1常数(CONSTANT)常数定义的一般表述:
CONSTANT常数名:数据类型:=表达式;5.1.2变量(VARIABLE)定义变量的一般表述:
VARIABLE变量名:数据类型:=初始值;
5.1.3信号(SIGNAL)定义格式:
SIGNAL信号名:数据类型:=初始值;5.1数据对象DATAOBJECTS5.1.4进程中的信号与变量赋值语句
信号SIGNAL变量VARIABLE基本用法用于作为电路中的信号连线
用于作为进程中局部数据存储单元
适用范围在整个结构体内的任何地方都能适用
只能在所定义的进程中使用
行为特性在进程的最后才对信号赋值
立即赋值
表5-1信号与变量赋值语句功能的比较5.1.4进程中的信号与变量赋值语句【例5-1】使用变量赋值的时序模块设计
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D1:INSTD_LOGIC;Q1:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISBEGINPROCESS(CLK)VARIABLEQQ:STD_LOGIC;BEGINIFCLK'EVENTANDCLK='1'THENQQ:=D1;ENDIF;Q1<=QQ;ENDPROCESS;END;5.1.4进程中的信号与变量赋值语句【例5-2】
】使用信号赋值的时序模块设计...
ARCHITECTUREbhvOFDFF3ISSIGNALQQ:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQQ<=D1;ENDIF;ENDPROCESS;Q1<=QQ;
END;【例5-3】使用信号赋值的时序模块设计
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D1:INSTD_LOGIC;Q1:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISSIGNALA,B:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENA<=D1;B<=A;Q1<=B;ENDIF;ENDPROCESS;END;5.1.4进程中的信号与变量赋值语句【例5-4】使用变量赋值的时序模块设计LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D1:INSTD_LOGIC;Q1:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISBEGINPROCESS(CLK)VARIABLEA,B:STD_LOGIC;BEGINIFCLK'EVENTANDCLK='1'THENA:=D1;B:=A;Q1<=B;ENDIF;ENDPROCESS;END;5.1.4进程中的信号与变量赋值语句5.1.4进程中的信号与变量赋值语句图5-2例5-3的RTL电路图5-1D触发器电路【例5-5】
SIGNALin1,in2,e1,...:STD_LOGIC;...PROCESS(in1,in2,...)VARIABLEc1,...:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFin1='1'THEN...–-第1行
e1<="1010";–-第2行...
IFin2='0'THEN...–-第15+n行...
c1:="0011";–-第30+m行...
ENDIF;ENDPROCESS;【例5-6】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux4ISPORT(i0,i1,i2,i3,a,b:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDmux4;ARCHITECTUREbody_mux4OFmux4ISsignalmuxval:integerrange7downto0;BEGINprocess(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;endcase;endprocess;ENDbody_mux4;【例5-7】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux4ISPORT(i0,i1,i2,i3,a,b:INSTD_LOGIC;q:OUTSTD_LOGIC);ENDmux4;ARCHITECTUREbody_mux4OFmux4ISBEGINprocess(i0,i1,i2,i3,a,b)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;endcase;endprocess;ENDbody_mux4;图5-3例5-6的错误的工作时序图5-4例5-7的正确工作时序5.2.1含同步并行预置功能的8位移位寄存器设计LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSHFTIS
PORT(CLK,LOAD:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);
DOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0);QB:OUTSTD_LOGIC);ENDSHFT;ARCHITECTUREbehavOFSHFRTISSIGNALREG8:STD_LOGIC_VECTOR(7DOWNTO0);BEGIN
PROCESS(CLK,LOAD)BEGINIFCLK'EVENTANDCLK='1'THENIFLOAD='1'THENREG8<=DIN;--装载新数据
ELSEREG8(6DOWNTO0)<=REG8(7DOWNTO1);ENDIF;ENDIF;ENDPROCESS;QB<=REG8(0);DOUT<=REG8;ENDbehav;【例5-8】5.2VHDL设计实例(1)单个LOOP语句,其语法格式如下:[LOOP标号:]LOOP
顺序语句ENDLOOP[LOOP标号];(2)FOR_LOOP语句,语法格式如下:[LOOP标号:]FOR循环变量,IN循环次数范围LOOP
顺序语句
ENDLOOP[LOOP标号];用法示例如下:...
L2:LOOPa:=a+1;EXITL2WHENa>10;--当a大于10时跳出循环
ENDLOOPL2;...5.2.3位矢中‘1’码个数统计电路设计5.2VHDL设计实例5.2.4三态门设计【例5-12】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='1'THENdataout<=datain;ELSEdataout<="ZZZZZZZZ";ENDIF;ENDPROCESS;ENDbhv;图5-88位3态控制门电路5.2.5双向端口设计【例5-13】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;5.2.5双向端口设计图5-9例5-13的综合结果5.2.5双向端口设计图5-10例5-13的仿真波形图5.2.5双向端口设计【例5-14】(以上部分同上例)process(control,q,in1)beginif(control='0')thenx<=q;q<="ZZZZZZZZ";elseq<=in1;x<="ZZZZZZZZ";endif;endprocess;endbody_tri;图5-12例5-14的仿真波形图5.2.5双向端口设计图5-11例5-14的综合结果5.2.6三态总线电路设计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)BEGINIFenable="00"THENoutput<=input3;ELSEoutput<=(OTHERS=>'Z');ENDIF;IFenable="01"THENoutput<=input2;ELSEoutput<=(OTHERS=>'Z');ENDIF;IFenable="10"THENoutput<=input1;ELSEoutput<=(OTHERS=>'Z');ENDIF;IFenable="11"THENoutput<=input0;ELSEoutput<=(OTHERS=>'Z');ENDIF;ENDPROCESS;ENDmultiple_drivers;【例5-15】5.2.6三态总线电路设计图5-13例5-15错误的综合结果5.2.6三态总线电路设计libraryieee;useieee.std_logic_1164.all;entitytriisport(ctl:instd_logic_vector(1downto0);datain1,datain2,datain3,datain4:instd_logic_vector(7downto0);q:outstd_logic_vector(7downto0));endtri;architecturebody_trioftriisbeginq<=datain1whenctl="00"else(others=>'Z');q<=datain2whenctl="01"else(others=>'Z');q<=datain3whenctl="10"else(others=>'Z');q<=datain4whenctl="11"else(others=>'Z');endbody_tri;【例5-16】5.2.6三态总线电路设计图5-14例5-16正确的综合结果5.2.7双边沿触发时序电路设计讨论不存在对时钟的双边沿都响应的基本时序元件5.3顺序语句归纳5.3.1进程语句格式PROCESS语句结构的一般表达格式如下
[进程标号:]PROCESS[(敏感信号参数表)][IS][进程说明部分]
BEGIN
顺序描述语句
ENDPROCESS[进程标号];5.3.2PROCESS组成PROCESS语句结构进程说明顺序描述语句敏感信号参数表信号赋值语句变量赋值语句进程启动语句子程序调用语句顺序描述语句进程跳出语句5.3.3进程要点1.PROCESS为一无限循环语句2.PROCESS中的顺序语句具有明显的顺序/并行运行双重性3.进程语句本身是并行语句4.信号是多个进程间的通信线5.一个进程中只允许描述对应于一个时钟信号的同步时序
逻辑
【例5-17】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;5.4并行赋值语句讨论任何一条信号的并行赋值语句都是一个缩略的进程语句【例5-18】SIGNALselect:INTEGERRANGE15DOWNTO0;…Select<=0WHENs0=‘0’ANDs1=‘0’ELSE 1WHENs0=‘1’ANDs1=‘0’ELSE 2WHENs0=‘0’ANDs1=‘1’ELSE 3; X<=aWHENselect=0ELSE bWHENselect=1ELSE cWHENselect=2ELSE d;注意:敏感信号的有效区域5.5IF语句概述(1)IF条件句Then
顺序语句
ENDIF;(2)IF条件句Then
顺序语句
ELSE
顺序语句
ENDIF;(3)IF条件句ThenIF条件句Then...ENDIFENDIF(4)IF条件句Then
顺序语句
ELSIF
条件句Then顺序语句
...
ELSE
顺序语句
ENDIF5.5顺序条件语句IF语句【例5-19】
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;5.5顺序条件语句IF语句【例5-20】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";ELSE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国农业大学康绍忠院士团队“区域遥感+水资源”方向全球招聘博士后考试备考题库及答案解析
- 江苏省苏南五市联考2026年初三3月联合调研考试英语试题含解析
- 2026届安徽省淮南市潘集区重点名校下学期初三英语试题毕业班调研考试试卷含解析
- 吉林省长春市汽开区达标名校2026年初三下-第八次质量检测试题英语试题试卷含解析
- 四川省成都市青羊区2026年初三第二学期期末试卷英语试题模拟试题含解析
- 宁夏固原市泾源县市级名校2026届初三下学期第一次月考(英语试题-理)试卷含解析
- 福建省闽侯县重点中学2026届初三英语试题下学期第二次月考试题含解析
- 产品安全检验承诺书8篇
- 项目管理团队建设沟通协调预案
- 信息技术应用与规范指南
- 教育评价与考试改革的实践与成果培训课件
- 如何提高数学课堂的教学效率
- S快递公司服务质量问题及研究对策 工商管理专业
- 水影响评价报告编制收费标准
- 湖南2023年长沙银行社会招聘考试参考题库含答案详解
- 用户需求(URS)管理制度
- 各洋行中英对照
- GB/T 41956-2022碳纤维丝束起毛量的测定
- LY/T 1370-2002原条造材
- 绘画心理分析与治疗教材课件
- 轻钢别墅-建筑流程课件
评论
0/150
提交评论