欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > PPT文档下载
 

EDA技术实用教程-VHDL版第3章VHDL设计初步.ppt

  • 资源ID:11495835       资源大小:360KB        全文页数:72页
  • 资源格式: PPT        下载积分:14.9积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要14.9积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

EDA技术实用教程-VHDL版第3章VHDL设计初步.ppt

第3章VHDL设计初步,3.1组合逻辑电路的VHDL描述,3.1.12选1多路选择器的VHDL描述,图3-1mux21a实体,3.1组合逻辑电路的VHDL描述,3.1.12选1多路选择器的VHDL描述,图3-2mux21a结构体,3.1组合逻辑电路的VHDL描述,【例】二选一选择器描述方法1ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISSIGNALd,e:BIT;-说明语句BEGINd<=aAND(NOTS);e<=bANDs;y<=dORe;ENDARCHITECTUREone;,3.1.12选1多路选择器的VHDL描述,3.1组合逻辑电路的VHDL描述,此电路的VHDL描述由两大部分组成:(1)以关键词ENTITY引导,ENDENTITYmux2la结尾的语句部分,称为实体。实体描述了电路器件的外部情况及各信号端口的基本性质。(2)以关键词ARCHITECTURE引导,ENDARCHITECTUREone结尾的语句部分,称为结构体。结构体负责描述电路器件的内部逻辑功能或电路结构。,3.1组合逻辑电路的VHDL描述,3.1.2相关语句结构和语法说明,ENTITYe_nameISPORT(p_name:port_mdata_type;.p_namei:port_midata_type);ENDENTITYe_name;红色为描述实体的关键词,不分大小写。,1.实体表达,2.实体名e_name,由设计者自定的标识符。由字母、数字、下划线构成。不能以数字起头,不能用中文,不能与关键词或EDA工具库的元件名相同。如:72lk,OR2均为非法实体名。,3.端口语句和端口信号名PORT();描述电路的端口及其端口信号。如PORT(a,b:INBIT;s:INBIT;y:OUTBIT);,3.1组合逻辑电路的VHDL描述,端口信号名,端口模式,端口信号的数据类型,3.1.2相关语句结构和语法说明,3.1组合逻辑电路的VHDL描述,3.1.2相关语句结构和语法说明,4.端口模式,IN:输入端口,定义的通道为单向只读模式,OUT:输出端口,定义的通道为单向输出模式,INOUT:定义的通道确定为输入输出双向端口,BUFFER:缓冲端口,其功能与INOUT类似,3.1组合逻辑电路的VHDL描述,3.1.2相关语句结构和语法说明,5.数据类型INTEGER类型(整数类型)BOOLEAN类型(布尔类型)取值范围为true,falseSTD_LOGIC类型(标准逻辑位类型)取值范围有:U,X,0,1,Z,W,L,H,-BIT类型(位类型)取值范围是逻辑位1,0,3.1组合逻辑电路的VHDL描述,3.1.2相关语句结构和语法说明,6.结构体表达,ARCHITECTUREarch_nameOFe_nameIS说明语句BEGIN(功能描述语句)ENDARCHITECTUREarch_name;红色为描述结构体的关键词,不分大小写。说明语句并非必须,而功能描述语句必须存在。,结构体名,实体名,7.逻辑操作符,AND、OR、NOT、NAND(与非)、NOR(或非)、XOR(异或)、XNOR(同或)逻辑操作符的操作数是BIT、BOOLEAN、STD_LOGIC。,3.1组合逻辑电路的VHDL描述,3.1.2相关语句结构和语法说明,3.1组合逻辑电路的VHDL描述,3.1.2相关语句结构和语法说明,8.赋值符号和数据比较符号,赋值符“<=”如表达式y<=a表示输入端口a的数据向输出端口y传输。注:赋值符“<=”两边的信号的数据类型必须一致。,数据比较符号“=”其输出结果的数据类型是BOOLEAN类型。,如表达式IFs=0THEN.,3.1组合逻辑电路的VHDL描述,【例】二选一选择器描述方法2ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINy<=aWHENs=0ELSEb;ENDARCHITECTUREone;,3.1组合逻辑电路的VHDL描述,3.1.2相关语句结构和语法说明,9.WHEN_ELSE条件信号赋值语句(属于并行语句),赋值目标<=表达式WHEN赋值条件ELSE表达式WHEN赋值条件ELSE.表达式;,z<=aWHENp1=1ELSEbWHENp2=1ELSEc;,3.1组合逻辑电路的VHDL描述,【例3-3】二选一选择器描述方法3ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIFs=0THENy<=a;ELSEy<=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;,3.1.2相关语句结构和语法说明,进程的敏感信号表,3.1组合逻辑电路的VHDL描述,3.1.2相关语句结构和语法说明,10.条件语句(属于顺序语句),IF_THEN_ELSE,IF语句必须以语句“ENDIF;”结束,如IFs=0THENy<=a;ELSEy<=b;ENDIF;,ENDIF;,3.1组合逻辑电路的VHDL描述,3.1.2相关语句结构和语法说明,11.进程语句和顺序语句,顺序语句“IF_THEN_ELSEENDIF;”是放在由“PROCESSENDPROCESS”引导的语句中的。由PROCESS引导的语句称为进程语句。在VHDL中,所有合法的顺利描述语句都必须放在进程语句中。PROCESS旁的()称为进程的敏感信号表,要求将进程中的所有输入信号都放在敏感信号表中。当信号表中的某一敏感信号从原来的“1”变成“0”,或者从原来的“0”变成“1”时,将启动此进程语句,即将其中的语句全部执行一遍。,12.文件取名和存盘,12.文件取名和存盘,3.1组合逻辑电路的VHDL描述,用Quartusii提供的VHDL文本编辑器编辑VHDL代码文件,在保存文件时,文件名为“*.vhd”。建议程序的文件名尽可能与该程序的实体名一致。推荐使用小写。,3.1.2相关语句结构和语法说明,3.1组合逻辑电路的VHDL描述,mux21a功能时序波形图,3.1组合逻辑电路的VHDL描述,【例3-18】或门逻辑描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYor2aISPORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDENTITYor2a;ARCHITECTUREoneOFor2aISBEGINc<=aORb;ENDARCHITECTUREone;,半加器h_adder电路图及其真值表,3.3.1半加器描述,3.3.1半加器描述,3.31位二进制全加器的VHDL描述,【例3-16】LIBRARYIEEE;-半加器描述(1):布尔方程描述方法USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_adderISPORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYh_adder;ARCHITECTUREfh1OFh_adderisBEGINso<=aXORb;co;.;;When=>.;;.WHENOTHERS=>ENDCASE;,3.1组合逻辑电路的VHDL描述,2.标准逻辑矢量数据类型,STD_LOGIC_VECTOR与STD_LOGIC都被定义在STD_LOGIC_1164的程序包中。STD_LOGIC_VECTOR定义为标准一维数组,数组中的每个元素都是标准逻辑位STD_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),3.1组合逻辑电路的VHDL描述,3.并置操作符,SIGNALa:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALd:STD_LOGIC_VECTOR(1DOWNTO0);.aain,b=>bin,co=>d,so=>e);-例化语句u2:h_adderPORTMAP(a=>e,b=>cin,co=>f,so=>sum);cout连接端口名);其中,例化名相当于当前系统(电路板)中的一个插座名。元件名相当于准备在此插座上插入的已定义的元件,即为待调用的元件的名字。PORTMAP为关键词。端口名为待调用的元件本身的端口名。连接端口名为顶层文件中准备与调用元件的端口相连的通信线(端口)名。,3.2基本时序电路的VHDL描述,3.2.1D触发器的VHDL描述,KX康芯科技,【例3-8】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF1ISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF1ISSIGNALQ1:STD_LOGIC;-类似于在芯片内部定义一个数据的暂存节点BEGINPROCESS(CLK,Q1)BEGINIFCLKEVENTANDCLK=1THENQ1<=D;ENDIF;ENDPROCESS;Q<=Q1;-将内部的暂存数据向端口输出(双横线-是注释符号)ENDbhv;,图4-4D触发器,D触发器实体,D触发器仿真波形,边沿触发D触发器:当时钟信号的上升沿到来时,Q=D。否则,Q保持原值不变。,3.2基本时序电路的VHDL描述,3.2.2VHDL描述的语言现象说明,图4-4D触发器,1.标准逻辑位数据类型STD_LOGIC,BIT数据类型定义:TYPEBITIS(0,1);-只有两种取值,STD_LOGIC数据类型定义:TYPESTD_LOGICIS(U,X,0,1,Z,W,L,H,-);,STD_LOGIC类型比BIT类型包含的内容多,且包含了BIT类型。以下是程序包中对两种数据类型的定义。,3.2基本时序电路的VHDL描述,3.2.2VHDL描述的语言现象说明,图4-4D触发器,2.设计库和标准程序包,VHDL综合器附带了设计库和程序包,用来存放数据类型的说明,以及函数的。如:BIT数据类型的定义是包含在VHDL标准程序包STANDARD中的,而该程序包是包含在VHDL的标准库STD中的。为了使用BIT数据类型,则应该在程序之前增加说明语句。,3.2基本时序电路的VHDL描述,例3-1LIBRARYWORK;-表示打开用户工程文件所在的目录,该目录为默认工作库WORKLIBRARYSTD;-表示打开STD库USESTD.STANDARD.ALL;-表示允许使用STD库中的STANDARD程序包中的所有内容(.all)ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINyb1,输出为1,否则输出为0。ENTITYCOMP_BADISPORT(a1,b1:INBIT;q1:OUTBIT);END;ARCHITECTUREoneOFCOMP_BADISBEGINPROCESS(a1,b1)BEGINIFa1>b1THENq1<=1;ELSIFa1<b1THENq1b1THENq1<=1;ELSEq1<=0;ENDIF;.,3.2.3实现时序电路的VHDL不同表述,【例3-11】(方法2).PROCESS(CLK)BEGINIFCLKEVENTAND(CLK=1)AND(CLKLAST_VALUE=0)THENQ<=D;-确保CLK的变化是一次上升沿的跳变ENDIF;ENDPROCESS;,3.2.3实现时序电路的VHDL不同表述,【例3-12】(方法3).PROCESS(CLK)BEGINIFCLK=1ANDCLKLAST_VALUE=0THENQ<=D;ENDIF;ENDPROCESS;,【例3-13】(方法4)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISSIGNALQ1:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFrising_edge(CLK)-上升沿检测函数,是IEEE库中的STD_LOGIC_1164程序包中的预定义函数THENQ1<=D;ENDIF;ENDPROCESS;Q<=Q1;END;,3.2.3实现时序电路的VHDL不同表述,【例3-14】(方法5).PROCESSBEGINwaituntilCLK=1;-利用waitunitl语句,Q<=D;如果当前CLK不为1,等待并保持Q原值不变,直到CLK为1时才对Q进行赋值操作。ENDPROCESS;,3.2.3实现时序电路的VHDL不同表述,【例3-15】(方法6).PROCESS(CLK)BEGINIFCLK=1THENQ<=D;-利用进程的启动特性产生对CLK的边沿检测ENDIF;ENDPROCESS;,图3-76种描述方法的电路仿真时序波形,3.2.3实现时序电路的VHDL不同表述,【例3-16】电平触发型D寄存器,即CLK处于高电平时,输出Q随D的变化而变化,CLK处于低电平时,Q保持不变。.PROCESS(CLK,D)BEGINIFCLK=1THENQ<=D;ENDIF;ENDPROCESS;注:将D放在进程的敏感信号表中,D的任何变化都会启动进程,进而判断IF语句,条件成立(即CLK=1),则对Q不断进行更新。条件不成立时,即使D有变化,都不执行Q<=D。,3.2.4异步时序电路设计,【例3-17】用两个进程描述一个异步时序电路。.ARCHITECTUREbhvOFMULTI_DFFISSIGNALQ1,Q2:STD_LOGIC;BEGINPRO1:PROCESS(CLK)BEGINIFCLKEVENTANDCLK=1THENQ1<=NOT(Q2ORA);ENDIF;ENDPROCESS;PRO2:PROCESS(Q1)BEGINIFQ1EVENTANDQ1=1THENQ2<=D;ENDIF;ENDPROCESS;QQ<=Q2;.,图3-9例3-15综合后的电路(Synplify综合),3.2.4异步时序电路设计,3.3计数器设计,【例3-18】方法1ENTITYCNT4ISPORT(CLK:INBIT;Q:BUFFERINTEGERRANGE15DOWNTO0);END;ARCHITECTUREbhvOFCNT4ISBEGINPROCESS(CLK)BEGINIFCLKEVENTANDCLK=1THENQ<=Q+1;ENDIF;ENDPROCESS;ENDbhv;,3.3.14位二进制加法计数器设计,表式Q<=Q+1的右项与左项并非处于相同的时刻内,对于时序电路,除了传输延时外,前者的结果出现于当前时钟周期;后者,即左项要获得当前的Q+1,需等待下一个时钟周期。,3.3.2整数类型,Q:BUFFERINTEGERRANGE15DOWNTO0;设置Q的端口模式为BUFFER,数据类型为INTEGER,取值范围为15到0。注:VHDL规定算术运算的操作数为INTEGER需要用RANGE语句对所定义的数限定范围。此题综合器对Q综合成四条信号线:Q3,Q2,Q1,Q0。,3.3.2整数类型,1十进制整数0十进制整数35十进制整数10E3十进制整数,等于十进制整数100016#D9#十六进制整数,等于十六进制整数D9H8#720#八进制整数,等于八进制整数720O2#11010010#二进制整数,等于二进制整数11010010B,整数常量的书写方式示例,3.3.2整数类型整数类型有以下子类型:NATURAL(自然数类型)取值范围为0和所有正整数。POSITIVE(正整数类型)取值范围为所有正整数。注:数据类型BIT,BIT_VECTOR,INTEGER,NATURAL,POSITIVE都被定义在VHDL的标准库(STD库)中的标准程序包STANDARD中的。是默认打开的,说明语句可以省略。,KX康芯科技,3.3.3计数器设计的其他表述方法,【例3-19】方法2LIBRARYIEEE;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;Q<=Q1;ENDbhv;,上例中,Q的端口模式为OUT,没有输入特性,因此不能使用Q<=Q+1的语句。解决方法:定义一个内部信号Q1,内部信号没有端口模式,即Q1的数据流动方向不受限制,可执行Q1<=Q1+1的操作。新的问题:Q10);-计数器异步复位ELSIFCLKEVENTANDCLK=1THEN-检测时钟上升沿IFEN=1THEN-检测是否允许计数(同步使能)IFCQI0);-大于9,计数值清零ENDIF;ENDIF;ENDIF;IFCQI=“1001”THENCOUT<=1;-计数大于9,输出进位信号ELSECOUT<=0;ENDIF;CQ<=CQI;-将计数值向端口输出ENDPROCESS;ENDbehav;,相关语法说明:,1.变量,VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);定义标识符CQI为变量,其数据类型为含有4个元素的标准逻辑矢量。变量的功能主要用于数据的暂存。变量的赋值符号是:=信号的赋值符号是<=如:VARIABLEa:BIT;SIGNALb:BIT;a:=1;bX),例如:SIGNALd:STD_LOGIC_VECTOR(4DOWNTO0);VARIABLEa:STD_LOGIC_VECTOR(15DOWNTO0);.如:d0);a:=(OTHERS=>0);等价于da(5),OTHERS=>a(1);等价于d0)产生。,由IFEN=1THEN产生。,由IFCQI=9THENCOUT<=1;ELSECOUT<=0;产生。,十进制加法计数器的工作时序,习题,3-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);END;,习题,3-2.图所示的是4选1多路选择器,试分别用IF_THEN语句和CASE语句的表达方式写出此电路的VHDL程序。选择控制的信号s1和s0的数据类型为STD_LOGIC_VECTOR;当s1=0,s0=0;s1=0,s0=1;s1=1,s0=0和s1=1,s0=1分别执行y<=a、y<=b、y<=c、y<=d。,4选1多路选择器,习题,3-3.图所示的是双2选1多路选择器构成的电路MUXK,对于其中MUX21A,当s=0和1时,分别有y<=a和y<=b。试在一个结构体中用两个进程来表达此电路,每个进程中用CASE语句描述一个2选1多路选择器MUX21A。,双2选1多路选择器,习题,3-4.下图是一个含有上升沿触发的D触发器的时序电路,试写出此电路的VHDL设计文件。,习题,3-5.给出1位全减器的VHDL描述。要求:(1)首先设计1位半减器,然后用例化语句将它们连接起来,图4-20中h_suber是半减器,diff是输出差,s_out是借位输出,sub_in是借位输入。(2)以1位全减器为基本硬件,构成串行借位的8位减法器,要求用例化语句来完成此项设计(减法运算是xy-sun_in=diffr)。,1位全减器,习题,3-6.根据下图,写出顶层文件MX3256.VHD的VHDL设计文件。,3-7.设计含有异步清零和计数使能的16位二进制加减可控计数器。,

注意事项

本文(EDA技术实用教程-VHDL版第3章VHDL设计初步.ppt)为本站会员(tia****nde)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!