您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第3讲_VHDL组合逻辑电路设计
EDA技术实用教程第三讲什么是VHDL?VeryhighspeedintegratedHardwareDescriptionLanguage(VHDL)是IEEE、工业标准硬件描述语言用语言的方式而非图形等方式描述硬件电路容易修改容易保存特别适合于设计的电路有:复杂组合逻辑电路,如:•译码器、编码器、加减法器、多路选择器、地址译码器…...状态机等等……..VHDL的功能和标准VHDL描述输入端口输出端口电路的行为和功能VHDL有过两个标准:IEEEStd1076-1987(calledVHDL1987)IEEEStd1076-1993(calledVHDL1993)3.1多路选择器的VHDL描述2选1多路选择器absymux21输入端输入端选择端输出端3.1多路选择器的VHDL描述2选1多路选择器的设计思路当s=0时,a输入端信号输出;当s=1时,b输入端信号输出。这是一个什么性质的问题呢?当S的取值是一个条件的时候,这就归结为条件选择的问题。2选1多路选择器的工作原理:在C语言中,if语句也是一个条件选择语句。【例3-1】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALLENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIFs='0'THENy=a;ELSEy=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;实体结构体3.1多路选择器及其VHDL描述图3-1mux21a实体图3-2mux21a结构体3.1.12选1多路选择器的VHDL描述3.1.12选1多路选择器的VHDL描述图3-3mux21a功能时序波形3.1.22选1多路选择器其它VHDL的描述【例3-2】ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISSIGNALd,e:BIT;BEGINd=aAND(NOTS);e=bANDs;y=dORe;ENDARCHITECTUREone;3.1.22选1多路选择器其它VHDL的描述【例3-3】...ARCHITECTUREoneOFmux21aISBEGINy=(aAND(NOTs))OR(bANDs);ENDARCHITECTUREone;y=(aAND(NOTs))OR(bANDs);3.1.22选1多路选择器其它VHDL的描述【例3-4】ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINy=aWHENs='0'ELSEb;ENDARCHITECTUREone;条件信号赋值语句1.4选1多路选择器及CASE语句表述方式3.1.34选1多路选择器及其VHDL描述SEL[1..0]DATA[3..0]OUTMUXabcdys0s1Mux0【例3-3】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMUX41AISPORT(a,b,c,d,s0,s1:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDENTITYMUX41A;ARCHITECTUREBHVOFMUX41AisSIGNALs:STD_LOGIC_VECTOR(1DOWNTO0);BEGINs=s1&s0;PROCESS(s)BEGINCASEsISWHEN00=y=a;WHEN01=y=b;WHEN10=y=c;WHEN11=y=d;WHENOTHERS=NULL;ENDCASE;ENDPROCESS;ENDARCHITECTUREBHV;2.CASE语句CASE语句的一般表式是:CASE表达式ISWhen选择值或标识符=顺序语句;...;顺序语句;When选择值或标识符=顺序语句;...;顺序语句;...Whenothers=顺序语句;ENDCASE;注意:CASE语句属于顺序语句,必须放在进程语句PROCESS中使用。Case语句多条件选择值的一般表达式:选择值[|选择值]1)单个普通数值:如6。2)数值选择范围:如(2TO4),表示取2、3或者4。3)并列数值:如3|5,表示取值为3或者5。4)混合方式:以上三种方式的混合。【例3】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYaluISPORT(a,b:INSTD_LOGIC_VECTOR(7DOWNTO0);opcode:INSTD_LOGIC_VECTOR(1DOWNTO0);result:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDalu;ARCHITECTUREbehaveOFaluISCONSTANTplus:STD_LOGIC_VECTOR(1DOWNTO0):=b00;CONSTANTminus:STD_LOGIC_VECTOR(1DOWNTO0):=b01;CONSTANTequal:STD_LOGIC_VECTOR(1DOWNTO0):=b10;CONSTANTnot_equal:STD_LOGIC_VECTOR(1DOWNTO0):=b11;BEGINPROCESS(opcode,a,b)BEGINCASEopcodeISWHENplus=result=a+b;--a、b相加WHENminus=result=a-b;--a、b相减WHENequal=--a、b相等接下页IF(a=b)THENresult=x01;ELSEresult=x00;ENDIF;WHENnot_equal=--a、b不相等IF(a/=b)THENresult=x01;ELSEresult=x00;ENDIF;ENDCASE;ENDPROCESS;ENDbehave;接上页3.1.4VHDL相关语句说明一、程序结构1.实体表达【例3-5】ENTITYe_nameISPORT(p_name:port_mdata_type;...p_namei:port_midata_type);ENDENTITYe_name;或:【例3-6】ENTITYe_nameISPORT(p_name:port_mdata_type;...p_namei:port_midata_type);ENDe_name;一、程序结构实体(ENTITY)ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;…实体实体名端口类型数据类型3.1.4VHDL相关语句说明2.实体名=文件(元件)名mux21a3.PORT语句和端口信号名4.端口模式INOUTINOUTBUFFERPORT(端口)说明语句PORT(端口名:端口模式数据类型;{端口名:端口模式数据类型});其中的端口名是设计者为实体的每一个对外通道所取的名字,端口模式是指这些通道上的数据流动方式。数据类型是指端口上流动的数据的表达格式或取值类型.VHDL要求只有相同数据类型的端口信号和操作数才能相互作用。由于PORT说明语句是对一个设计实体界面的说明及对设计实体与外部电路的接口通道的说明,其中包括对每一接口的输入输出模式和数据类型的定义。其格式如下:3.1.4VHDL相关语句说明5.数据类型—预定义数据类型(1)位(BIT)(必须加单引号:如‘0’或‘1’)(2)布尔量(boolean)(只有true与false两种状态)(3)位矢量(bit_vector)位矢量型(该端口可能是一组二进制位的值,递增或递减)signalA:bit_vector(0to3):=“0110”;signalB:bit_vector(3downto0):=“0110”;(4)字符(character)用单引号括起来的ASCII字符(’a’)(5)字符串(string)用双引号括起来的ASCII字符(”ab”)3.1.4VHDL相关语句说明5.数据类型—预定义数据类型(6)整数(integer)0,1,2……(7)实数(real)1.0,2.33……1.0十进制浮点数0.0十进制浮点数65971.333333十进制浮点数65_971.333_3333与上一行等价8#43.6#e+4八进制浮点数43.6E-4十进制浮点数3.1.4VHDL相关语句说明6.结构体表达【例5-7】ARCHITECTUREarch_nameOFe_nameIS(说明语句)BEGIN(功能描述语句)ENDARCHITECTUREarch_name;或:【例5-8】ARCHITECTUREarch_nameOFe_nameIS(说明语句)BEGIN(功能描述语句)ENDarch_name;结构体(ARCHITECTURE)…ARCHITECTUREoneOFmux21aISBEGINy=aWHENs='0'ELSEb;ENDARCHITECTUREone;结构体结构体名VHDL功能描述实体名3.1.4VHDL相关语句说明7.信号传输(赋值)符号和数据比较符号==,,信号赋值语句变量赋值语句赋值目标赋值符号赋值源:=数据比较符号(关系操作符)【例1】ENTITYrelational_ops_1ISPORT(a,b:INBIT_VECTOR(0TO3);m:OUTBOOLEAN);ENDrelational_ops_1;ARCHITECTUREexampleOFrelational_ops_1ISBEGINoutput=(a=b);ENDexample;【例2】ENTITYrelational_ops_2ISPORT(a,b:ININTEGERRANGE0TO3;m:OUTBOOLEAN);ENDrelational_ops_2;ARCHITECTUREexampleOFrelational_ops_2ISBEGINoutput=(a=b);ENDexample;六种关系运算操作符:“=”(等于)、“/=”(不等于)、“”(大于)、“”(小于)、“=”(大于等于)“=”(小于等于)3.1.4VHDL相关语句说明8.逻辑操作符AND、OR、NOT、NAND、NOR、XOR、XNORSIGNALa,b,c:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALd,e,f,g:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALh,I,j,k:STD_LOGIC;SIGNALl,m,n,o,p:BOOLEAN;...a=bANDc;--b、c相与后向a赋值,a、b、c的数据类型同属4位长的位矢量d=eORfORg;--两个操作符OR相同,不需括号h=(iNANDj)NANDk;--NAND不属上述三种算符中的一种,必须加括号l=(mXORn)AND(oXORp);--操作符不同,必须加括号h=iANDjANDk;--两个操作符都是AND,不必加括号h=iANDjORk;--两个操作符不同,未加括号,表达错误a=bANDe;--操作数b与e的位矢长度不一致,表达错误h=iORl;--i的数据类型是位STD_LOGIC,而l的数据类型是...--布尔量BOOLEAN,因而不能相互作用,表达错误。9顺序条件语句IF语句(1)IF条件句Then顺序语句ENDIF;(2)IF条件句Then顺序语句ELSE顺序语句ENDIF;(3)IF条件句ThenIF条件句Then...ENDIFENDIF(4)IF条件句Then顺序语句ELSIF条件句The
本文标题:第3讲_VHDL组合逻辑电路设计
链接地址:https://www.777doc.com/doc-3150955 .html