您好,欢迎访问三七文档
EDA技术实用教程第4章KX康芯科技【例4-1】ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINy=aWHENs='0'ELSEb;ENDARCHITECTUREone;实体结构体4.1多路选择器VHDL描述图4-1mux21a实体图4-2mux21a结构体4.1.12选1多路选择器的VHDL描述KX康芯科技【例4-2】ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISSIGNALd,e:BIT;BEGINd=aAND(NOTS);e=bANDs;y=dORe;ENDARCHITECTUREone;【例4-3】...ARCHITECTUREoneOFmux21aISBEGINy=(aAND(NOTs))OR(bANDs);ENDARCHITECTUREone;KX康芯科技4.1.12选1多路选择器的VHDL描述【例4-4】ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIFs='0'THENy=a;ELSEy=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;KX康芯科技4.1.12选1多路选择器的VHDL描述图4-3mux21a功能时序波形KX康芯科技4.1.2VHDL相关语法说明1.实体实体语句结构实体说明单元的一般语句结构:ENTITY实体名IS[GENERIC(类属表);][PORT(端口表);]ENDENTITY实体名;KX康芯科技GENERIC类属说明语句类属说明的一般书写格式如下:GENERIC([常数名:数据类型[:=设定值]{;常数名:数据类型[:=设定值]});类属说明是实体说明中的可选项,放在端口说明之前例:GENERIC(m:TIME:=3ns)KX康芯科技例LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYandnISGENERIC(n:INTEGER);--定义类属参量及其数据类型PORT(a:INSTD_LOGIC_VECTOR(n-1DOWNTO0);--用类属参量限制矢量长度c:OUTSTD_LOGIC);END;KX康芯科技PORT(端口)说明PORT(端口名:端口模式数据类型;{端口名:端口模式数据类型});其中的端口名是设计者为实体的每一个对外通道所取的名字,端口模式是指这些通道上的数据流动方式。数据类型是指端口上流动的数据的表达格式或取值类型,VHDL要求只有相同数据类型的端口信号和操作数才能相互作用。PORT说明语句是对一个设计实体界面的说明及对设计实体与外部电路的接口通道的说明,其中包括对每一接口的输入输出模式和数据类型的定义。其格式如下:KX康芯科技端口模式INOUTINOUTBUFFER数据类型VHDL语言的IEEE1076/93标准规定,EDA综合工具提供的数据类型为布尔型(Boolean)、位型(Bit)、位矢量型(Bit-Vector)和整数型(Interger)。KX康芯科技结构体的一般语言格式:ARCHITECTURE结构体名OF实体名IS[说明语句]BEGIN[功能描述语句]ENDARCHITECTURE结构体名;结构体具体指明了设计实体的行为,定义了设计实体的功能,规定了设计实体的数据流程,指派了实体中内部元件的连接关系2结构体KX康芯科技o说明语句对结构内部使用的数据类型、常数、信号、子程序和元件等元素进行定义。说明语句不是必需的•功能描述语句用于描述实体逻辑功能和电路结构。•功能描述语句可以是并行语句,也可以是顺序语句或是它们的混合。结构体的组成部分KX康芯科技用VHDL语言描述结构体功能有3种方法行为描述法:采用进程语句,顺序描述设计实体的行为数据流描述法:采用进程语句顺序描述数据流在控制流作用下被加工、处理、存储的全过程结构描述法:采用并行处理语句描述设计实体内的结构组织和元件互连关系KX康芯科技功能描述语句结构进程语句信号赋值语句子程序调用语句元件例化语句KX康芯科技3操作符表4-1VHDL操作符列表=等于任何数据类型/=不等于任何数据类型小于枚举与整数类型,及对应的一维数组大于枚举与整数类型,及对应的一维数组=小于等于枚举与整数类型,及对应的一维数组关系操作符=大于等于枚举与整数类型,及对应的一维数组AND与BIT,BOOLEAN,STD_LOGICOR或BIT,BOOLEAN,STD_LOGICNAND与非BIT,BOOLEAN,STD_LOGICNOR或非BIT,BOOLEAN,STD_LOGICXOR异或BIT,BOOLEAN,STD_LOGICXNOR异或非BIT,BOOLEAN,STD_LOGIC逻辑操作符NOT非BIT,BOOLEAN,STD_LOGIC+正整数符号操作符-负整数类型操作符功能操作数数据类型KX康芯科技运算符优先级NOT,ABS,**最高优先级*,/,MOD,REM+(正号),-(负号)+,-,&SLL,SLA,SRL,SRA,ROL,ROR=,/=,,=,,=AND,OR,NAND,NOR,XOR,XNOR最低优先级表4-2VHDL操作符优先级操作符KX康芯科技【例】SIGNALa,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,因而不能相互作用,表达错误。逻辑操作符KX康芯科技关系操作符【例】ENTITYrelational_ops_1ISPORT(a,b:INBIT_VECTOR(0TO3);m:OUTBOOLEAN);ENDrelational_ops_1;ARCHITECTUREexampleOFrelational_ops_1ISBEGINm=(a=b);ENDexample;【例】ENTITYrelational_ops_2ISPORT(a,b:ININTEGERRANGE0TO3;m:OUTBOOLEAN);ENDrelational_ops_2;ARCHITECTUREexampleOFrelational_ops_2ISBEGINm=(a=b);ENDexample;六种关系运算操作符:“=”(等于)、“/=”(不等于)、“”(大于)、“”(小于)、“=”(大于等于)“=”(小于等于)KX康芯科技4.IF_THEN条件语句顺序执行语句,只能用在进程中,有三种表现形式:IF条件THEN顺序语句ENDIF;IF条件THEN顺序语句1ELSE顺序语句2ENDIF;IF条件1THEN顺序语句1ELSIF条件2顺序语句2ELSE条件n顺序语句nENDIF;KX康芯科技例:Libraryieee;useieee.std_logic_1164.all;EntityencoderisPort(d:instd_logic_vector(3downto0);q:outstd_logic_vector(1downto0));endencoder;architectureexample_ifofencoderisbeginprocess(d)beginif(d(0)=‘0’)thenq=“11”;elsif(d(1)=‘0’)thenq=“10”;elsif(d(2)=‘0’)thenq=“01”;elseq=“00”;endif;endprocess;Endexample_if;d3d2d1d0q2q1Xxx011Xx0110X01101011100优先级编码器真值表KX康芯科技5.WHEN_ELSE条件信号赋值语句赋值目标=表达式1WHEN赋值条件1ELSE表达式2WHEN赋值条件2ELSE...表达式n;注意:1、条件信号语句不能进行嵌套2、条件信号语句是并发语句,进程内外都可以使用KX康芯科技例:用条件信号赋值语句设计四选一电路模块Libraryieee;Useieee.std_logic_1164.all;Entitumux4isPort(d0,d1,d2,d3,a,b:instd_logic;q:outstd_logic);Endmux4;Architecturearchofmux4issignalsel:std_logic_vector(1downto0);Beginsel=b&a;q=d0whensel=“00”elsed1whensel=“01”elsed2whensel=“10”elsed3whensel=“11”else‘z’;Endarch;KX康芯科技6.PROCESS进程语句和顺序语句Process语句在VHDL程序中,是描述硬件并行工作行为的最常用,最基本的语句进程语句格式PROCESS语句结构的一般表达格式如下[进程标号:]PROCESS[(敏感信号参数表)][IS][进程说明部分]BEGIN顺序描述语句ENDPROCESS[进程标号];KX康芯科技PROCESS组成PROCESS语句结构进程说明顺序描述语句敏感信号参数表信号赋值语句变量赋值语句进程启动语句子程序调用语句顺序描述语句进程跳出语句KX康芯科技进程要点1)PROCESS为一无限循环语句2)PROCESS中的顺序语句具有明显的顺序/并行运行双重性3)进程必须由敏感信号的变化来启动4)进程语句本身是并行语句5)信号是多个进程间的通信线6)一个进程中只允许描述对应于一个时钟信号的同步时序逻辑KX康芯科技【例】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;KX康芯科技7.文件取名和存盘1)取名最好与文件实体名相同;2)文件后缀名必须是.vhd3)VHDL设计文件必须存于指定为工程的目录中,此目录将被设定为work库,work库的路径即为此目录的路径KX康芯科技4.2寄存器描述及其VHDL语言现象4.2.1D触发器的VHDL描述【例4-9】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF1ISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOF
本文标题:VHDL设计初步1
链接地址:https://www.777doc.com/doc-3613723 .html