EDA技术及应用 VHDL设计初步_第1页
EDA技术及应用 VHDL设计初步_第2页
EDA技术及应用 VHDL设计初步_第3页
EDA技术及应用 VHDL设计初步_第4页
EDA技术及应用 VHDL设计初步_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

会计学1EDA技术及应用VHDL设计初步教学目的

通过简单、完整而典型的VHDL设计示例,初步了解用VHDL表达和设计电路的方法。

第1页/共57页4.1多路选择器的VHDL描述2选1多路选择器的示意图和真值表absyax0axb1babys01当s=0时,y=a当s=1时,y=b第2页/共57页4.1多路选择器的VHDL描述2.2选1多路选择器实现-原理图形输入法001y=a0a110y=bb0第3页/共57页4.1多路选择器的VHDL描述2.2选1多路选择器实现-VHDL文本输入法1实体结构体实体名称端口名称流动方向数据类型结构体名功能描述第4页/共57页4.1多路选择器的VHDL描述2.2选1多路选择器实现-VHDL文本输入法2实体结构体第5页/共57页4.1多路选择器的VHDL描述2.2选1多路选择器实现-VHDL文本输入法3实体结构体第6页/共57页4.1多路选择器的VHDL描述3.相关语句结构和语法-实体表达结构ENTITY、IS、PORT、END都是描述实体的关键词,不分大写小写,但是为了便于阅读,一般在设计中将关键词使用大写,自定义使用小写。第7页/共57页4.1多路选择器的VHDL描述3.相关语句结构和语法-实体名称实体名表达的是该设计电路的器件名,通常根据相应电路的功能来确定。不能用数字或中文、不能与工具库中已定义的元件名、不能数字开头。第8页/共57页4.1多路选择器的VHDL描述3.相关语句结构和语法-实体名称举例mux4174LS04and2adder4bnot4输入与门第9页/共57页4.1多路选择器的VHDL描述3.相关语句结构和语法-端口语句和名称端口以PORT();来引导端口模式有:IN、OUT、INOUT、BUFFER数据类型有:BOOLEAN、BIT、INTEGER、CHAR型等第10页/共57页4.1多路选择器的VHDL描述3.相关语句结构和语法-结构体表达结构ARCHITECTURE、OF、IS、BEGIN、END都是描述结构体的关键词。功能描述语句:并行语句,顺序语句

并行语句:WHEN_ELSE,逻辑操作赋值顺序语句:IF_THEN_ELSE功能描述语句第11页/共57页4.1多路选择器的VHDL描述3.相关语句结构和语法-文件名称使用VHDL语句编写:后缀是.vhd使用VerilogHDL语句编写:后缀是.v使用原理图输入设计:后缀是.gdf文件名称建议和实体名称相同第12页/共57页4.1多路选择器的VHDL描述4.思考y=ab+c_思考1:画出真值表abcyxx110x001b0b_第13页/共57页4.1多路选择器的VHDL描述4.思考y=ab+c_思考2:使用原理图方式实现上式功能第14页/共57页4.1多路选择器的VHDL描述4.思考y=ab+c_思考3:使用VHDL实现上式功能第15页/共57页4.1多路选择器的VHDL描述5.赋值符号Y<=(aAND(NOTs))or(bANDs)赋值符号第16页/共57页4.1多路选择器的VHDL描述6.各种表达式的比较---布尔逻辑表达式y<=(aAND(NOTs))OR(bANDs)第17页/共57页4.1多路选择器的VHDL描述6.各种表达式的比较---条件赋值表达式y<=aWHENs1=‘0’ELSE b;赋值目标<=表达式WHEN

赋值条件ELSE

表达式WHEN

赋值条件ELSE

表达式WHEN

赋值条件ELSE

表达式;第18页/共57页4.1多路选择器的VHDL描述7.各种表达式的比较---IF_THEN_ELSE表达IF(s=‘0’)THENy<=a;ELSEy<=b;ENDIF;IF

条件表达式THEN

赋值语句;ELSIF

条件表达式THEN

赋值语句;ELSIF

条件表达式THEN

赋值语句;ELSE

条件表达式;ENDIF;第19页/共57页4.1多路选择器的VHDL描述8.小结 4.1节中主要通过多路选择器的实现过程,学习了VHDL描述的基本语言结构,以及组合逻辑电路的功能描述方法布尔逻辑表达式WHEN_ELSE条件表达式IF_THEN_ELSE表达式第20页/共57页4.2寄存器描述及其VHDL语言1.教学目的

通过D触发器的VHDL实现过程,学习时序电路的VHDL描述方法。第21页/共57页4.2寄存器描述及其VHDL语言2.D触发器的功能描述当CP=0时,触发器不工作,处于维持状态。

当CP=1时,它的功能如下:

当D=0时,次态=0,

当D=1时,次态=1。第22页/共57页4.2寄存器描述及其VHDL语言3.VHDL实现LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdff1IS PORT( clk:INSTD_LOGIC; d:INSTD_LOGIC; q:OUTSTD_LOGIC );ENDdff1;ARCHITECTUREbhvOFdff1IS SIGNAL q1:STD_LOGIC;BEGINPROCESS(clk,q1)BEGIN IFCLK'EVENTANDCLK='1' THENq1<=d; ENDIF;ENDPROCESS;q<=q1;ENDbhv;引用库数据类型内部节点时钟条件第23页/共57页4.2寄存器描述及其VHDL语言4.VHDL实现---引用库LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;LIBRARY设计库名称;USE 设计库.程序包名.ALL;数据类型、函数等放在设计库中和程序包中。因为使用了STD_LOGIC的数据类型,而该数据类型放置在设计库IEEE的STD_LOGIC_1164程序包中,所以在使用前需要先申明。第24页/共57页4.2寄存器描述及其VHDL语言4.VHDL实现---数据类型PORT(clk:INSTD_LOGIC; d:INSTD_LOGIC; q:OUTSTD_LOGIC);BIT的定义:TYPEBITIS(‘0’,‘1’);STD_LOGIC的定义:TYPESTD_LOGICIS(‘U’,’X’,’0’,’1’,’Z’,’W’,’L’,’H’,’-’)第25页/共57页4.2寄存器描述及其VHDL语言4.VHDL实现---信号定义(内部节点)SIGNAL q1:STD_LOGIC;不必定义端口模式(如IN、OUT)目的是为了设计更大的时序电路qq1X1PORT(clk:INSTD_LOGIC; d:INSTD_LOGIC; q:OUTSTD_LOGIC); q<=q1;第26页/共57页4.2寄存器描述及其VHDL语言4.VHDL实现---时钟表达式IFclk'EVENTANDclk='1‘检测时钟信号的上升沿表示clk信号有变化,并且变化后为1第27页/共57页4.2寄存器描述及其VHDL语言4.VHDL实现---存储功能的产生不完整的条件语句实现存储功能元件如果是完整的条件语句,则只能构成逻辑电路IFclk'EVENTANDclk='1' THENq1<=d;ENDIF;第28页/共57页4.2寄存器描述及其VHDL语言5.实现时序电路的不同描述IF(clk‘EVENT)AND(clk='1‘)AND (clk’LAST_VALUE=‘0’)IF(clk='1‘)AND(clk’LAST_VALUE=‘0’)IFrising_edge(clk)--STD_LOGIC_1164定义Waituntilclk=‘1’;第29页/共57页4.2寄存器描述及其VHDL语言6.同步时序电路和异步时序电路移位寄存器二进制计数器只需一个时钟进程需两个时钟进程第30页/共57页4.2寄存器描述及其VHDL语言6.同步时序电路和异步时序电路PROCESS(clk)BEGIN **********ENDPROCESS;PROCESS(q)BEGIN **********ENDPROCESS;第31页/共57页4.31位二进制全加器的VHDL描述1.半加器功能描述全加器可由两个半加器和一个或门构成半加器是最简单的加法器,把2个1位二进制数相加,不考虑低位的进位,产生一个2位和,和的低位叫半加和,高位叫半加进位半加器由一个与门,一个或门和一个异或门构成第32页/共57页4.31位二进制全加器的VHDL描述2.半加器真值表及电路图abcoso0000010110011110co=aANDbso=aXORb第33页/共57页4.31位二进制全加器的VHDL描述3.半加器VHDL描述方法--布尔表达式LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_adderISPORT(a,b:INSTD_LOGIC; co,so:OUTSTD_LOGIC );ENDh_adder;ARCHITECTUREaOFh_adderISBEGIN co<=aANDb; so<=aXORb;ENDa;第34页/共57页4.31位二进制全加器的VHDL描述3.半加器VHDL描述方法--真值表表达方式abcoso0000010110011110第35页/共57页4.31位二进制全加器的VHDL描述4.全加器图形输入法考虑低位进位的情况下,2个输入和第36页/共57页4.31位二进制全加器的VHDL描述5.全加器VHDL描述——或门通过顶层调用底层元件,实现全加器,下面使用VHDL描述实现或门逻辑。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYor2a ISPORT(a,b:INSTD_LOGIC; c:OUTSTD_LOGIC );ENDor2a ;ARCHITECTUREaOFor2a ISBEGIN c<=aorb;ENDa;第37页/共57页4.31位二进制全加器的VHDL描述5.全加器VHDL描述——顶层设计通过顶层调用底层元件,实现全加器def第38页/共57页4.31位二进制全加器的VHDL描述6.新学内容总结a.标准逻辑矢量数据类型b.并置操作符c.CASE语句d.顶层描述及例化语句第39页/共57页4.31位二进制全加器的VHDL描述6.新学内容总结--标准逻辑矢量数据类型STD_LOGIC_VECTOR标准一维数组,数组中每一位的数据类型都是STD_LOGICSTD_LOGIC标准位类型定义方法:

A:OUTSTD_LOGIC_VECTOR(7DOWNTO0) B:OUTSTD_LOGIC_VECTOR(1TO5)赋值方法:

A<=“01010101”; A(7DOWNTO4)<=“0101”;第40页/共57页4.31位二进制全加器的VHDL描述6.新学内容总结--并置操作符并置操作符&的作用: 将操作数或者数组合并成新的数组操作符 举例功能<=c<=aANDb赋值操作符=,>,<IF(s=‘0’)THEN比较操作符&abc<=a&b并置操作符使用方法: ‘0’&’1’&a&d(1)----定义信号注释操作符第41页/共57页4.31位二进制全加器的VHDL描述6.新学内容总结--CASE语句利用CASE语句可以直接表达电路的逻辑真值表,有效直观功能表达语句功能c<=aANDb布尔表达方式IF_THEN_ELSEIF条件语句WHEN_ELSEWHEN条件语句CASE语句CASE语句第42页/共57页4.31位二进制全加器的VHDL描述6.新学内容总结--顶层设计定义顶层设计端口申明调用元件,定义内部信号使用端口映射语句连接元件第43页/共57页4.31位二进制全加器的VHDL描述6.新学内容总结--COMPONENTCOMPONENTh_adder2PORT(a,b:INSTD_LOGIC; co,so:OUTSTD_LOGIC);ENDCOMPONENT;将现成的设计实体定义为一个元件,做出调用申明端口名表需要列出元件对外通信的各端口名,命名方式与实体中的PORT()一致(端口名可重新定义)。元件申明语句放置在ARCHITECTURE和BEGIN之间COMPONENT元件名PORT(

端口名表);ENDCOMPONENT;第44页/共57页4.31位二进制全加器的VHDL描述6.新学内容总结--PORTMAPu1:h_adder2PORTMAP(a=>ain,b=>bin,co=>d,so=>e);u2:h_adder2PORTMAP(a=>e,b=>cin,co=>f,so=>sum);u3:or2a PORTMAP(a=>d,b=>f,c=>cout);例化名相当于电子电路里的标号元件名即调用的元件实体的名称,相对于器件名称PORTMAP表示端口映射,端口到外部引脚或引线的连接关系两个例化元件之间不能直接连接

=>是连接符号例化名:元件名PORTMAP(端口名=>X,端口名=>Y,…)第45页/共57页4.31位二进制全加器的VHDL描述7.思考习题4-2

思考习题4-3

思考习题4-4第46页/共57页4.4计数器设计1.计数器的VHDL描述BUFFERINTEGERq<=q+1第47页/共57页4.4计数器设计1.计数器的VHDL描述——BUFFERBUFFERINOUTINOUT元件等效于在结构体BEGIN之前定义了一个信号,供反馈使用第48页/共57页4.4计数器设计1.计数器的VHDL描述——INTEGERINTEGERBITSTD_LOGICSTD_LOGIC_VECTORINTEGER类型可用32位有符号的二进制数表示,取值范围:-2147483647~+2147483647INTEGER必须有RANGE限定范围,否则无法综合VHDL规定加、减等算术符对应的操作数的数据类型只能是INTEGER型(除非重载算术操作符)NATURAL、POSITIVE是INTEGER的子类型在语句中INTEGER类型表达式不加‘’第49页/共57页4.4计数器设计1.计数器的VHDL描述——运算符重载第50页/共57页4.4作业1.端口模式有那些?各有什么区别?2.习题4-2第51页/共57页4.54位2进制计数器设计1.带进位计数器的VHDL描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcnt4ISPORT(clk:INSTD_LOGIC; q:BUFFERINTEGERRANGE15DOWNTO0; c:OUTSTD_LOGIC );ENDcnt4;ARCHITECTUREaOFcnt4ISBEGIN PROCESS(clk) BEGIN IF(clk'EVENTAND(clk='1'))THEN IF(q<15) THENq<=q+1;c<='0'; ELSE q<=0;c<='1'; ENDIF; ENDIF; ENDPROCESS;ENDa;第52页/共57页4.54位2进制计数器设计2.4位构成8位计数器的VHDL描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcnt2dISPORT(clk:INSTD_LOGIC; qH:BUFFERINTEGERRANGE9DOWNTO0; qL:BUFFERINTEGERRANGE9DOWNTO0; cout:OUTSTD_LOGIC );ENDcnt2d;ARCHITECTUREaOFcnt2dISCOMPONENTcnt4

PORT(clk:INSTD_LOGIC; q:BUFFERINTEGERRANGE9DOWNTO0; c:OUTSTD_LOGIC );ENDCOMPONENT;SIGNALs1:STD_LOGIC;BEGIN u1:cnt4PORTMAP(clk=>clk,q=>qL,c=>s1); u2:cnt4PORTMAP(clk=>s1,q=>qH,c=>cout);ENDa;第53页/共57页4.5作业设计一位十进制计数器,即计数范围0~9

要求:有进位输出2.使用第一题中的一位十进制计数器,设计3位十进制计数器,即计数范围000~999

要求:有进位输出 采用顶层设计的方法,调用习题1的设计。第54页/共57页4.5作业设计一位十进制计数器,即技术范围0~9

要求:有进位输出LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcnttenISPORT(clk:INSTD_LOGIC; q:BUFFERINTEGERRANGE9DOWNTO0; c:OUTSTD_

温馨提示

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

评论

0/150

提交评论