版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
要点回顾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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业销售订单评审及执行流程模板
- 我的宠物狗写物记11篇
- 2025 高中信息技术人工智能初步人工智能在动漫设计的应用课件
- 物流配送优化策略实施模板
- 森林保护行动承诺书7篇
- 供应链稳定保证承诺函(5篇)
- 成长的路上我与书同行议论文(6篇)
- 2025 网络基础之网络服务器的操作系统安装课件
- 2025 网络基础之网络虚拟化的原理与应用课件
- 历史加快改革开放和社会主义现代化建设步伐 课件 2025-2026学年统编版八年级历史下册
- 自闭症专业毕业论文
- 小儿颈外静脉采血课件
- 2025四川绵阳涪城区下半年考核招聘医疗卫生专业技术人员24人考试笔试模拟试题及答案解析
- 2026年江苏卫生健康职业学院单招职业适应性测试题库附答案
- 社群运营培训课件
- 茶厂茶叶留样管理细则
- 驾考宝典2025全部试题(附答案)
- 2025广东省建筑安全员-C证考试(专职安全员)题库附答案
- 审核岗位笔试题目及答案
- 图书出版流程图解
- 供应链管理流程及风险控制
评论
0/150
提交评论