您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > EDA 第4章 VHDL设计初步
EDA技术实用教程第4章VHDL设计初步4.1多路选择器的VHDL描述KX康芯科技4.1.12选1多路选择器的VHDL描述图4-1mux21a实体4.1多路选择器的VHDL描述KX康芯科技4.1.12选1多路选择器的VHDL描述图4-2mux21a结构体4.1多路选择器的VHDL描述KX康芯科技4.1.12选1多路选择器的VHDL描述【例4-1】ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINy=aWHENs='0'ELSEb;ENDARCHITECTUREone;4.1多路选择器的VHDL描述KX康芯科技4.1.12选1多路选择器的VHDL描述【例4-2】ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISSIGNALd,e:BIT;BEGINd=aAND(NOTS);e=bANDs;y=dORe;ENDARCHITECTUREone;4.1多路选择器的VHDL描述KX康芯科技4.1.12选1多路选择器的VHDL描述【例4-3】ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIFs='0'THENy=a;ELSEy=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;4.1多路选择器的VHDL描述KX康芯科技4.1.12选1多路选择器的VHDL描述图4-3mux21a功能时序波形4.1多路选择器的VHDL描述KX康芯科技4.1.2相关语句结构和语法说明【例4-4】ENTITYe_nameISPORT(p_name:port_mdata_type;...p_namei:port_midata_type);ENDENTITYe_name;1.实体表达2.实体名3.端口语句和端口信号名4.1多路选择器的VHDL描述KX康芯科技4.1.2相关语句结构和语法说明4.端口模式IN输入端口,定义的通道为单向只读模式OUT输出端口,定义的通道为单向输出模式INOUT定义的通道确定为输入输出双向端口BUFFER缓冲端口,其功能与INOUT类似4.1多路选择器的VHDL描述KX康芯科技4.1.2相关语句结构和语法说明5.数据类型6.结构体表达【例4-5】ARCHITECTUREarch_nameOFe_nameIS[说明语句]BEGIN(功能描述语句)ENDARCHITECTUREarch_name;4.1多路选择器的VHDL描述KX康芯科技4.1.2相关语句结构和语法说明7.赋值符号和数据比较符号赋值符“=”表式中的等号“=”没有赋值的含义,只是一种数据比较符号。IFaTHEN...--注意,a的数据类型必须是booleanIF(s1='0')AND(s2='1')OR(cb+1)THEN..4.1多路选择器的VHDL描述KX康芯科技4.1.2相关语句结构和语法说明8.逻辑操作符AND、OR、NOT9.条件语句IF_THEN_ELSEIF语句必须以语句“ENDIF;”结束4.1多路选择器的VHDL描述KX康芯科技4.1.2相关语句结构和语法说明10.WHEN_ELSE条件信号赋值语句赋值目标=表达式WHEN赋值条件ELSE表达式WHEN赋值条件ELSE...表达式;z=aWHENp1='1'ELSEbWHENp2='1'ELSEc;4.1多路选择器的VHDL描述KX康芯科技4.1.2相关语句结构和语法说明11.进程语句和顺序语句在一个结构体中可以包含任意个进程语句结构,所有的进程语句都是并行语句,而由任一进程PROCESS引导的语句(包含在其中的语句)结构属于顺序语句。12.文件取名和存盘4.2寄存器描述及其VHDL语言现象4.2.1D触发器的VHDL描述KX康芯科技【例4-6】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF1ISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF1ISSIGNALQ1:STD_LOGIC;--类似于在芯片内部定义一个数据的暂存节点BEGINPROCESS(CLK,Q1)BEGINIFCLK'EVENTANDCLK='1'THENQ1=D;ENDIF;ENDPROCESS;Q=Q1;--将内部的暂存数据向端口输出(双横线--是注释符号)ENDbhv;图4-4D触发器图4-4D触发器KX康芯科技4.2寄存器描述及其VHDL语言现象4.2.2VHDL描述的语言现象说明图4-4D触发器1.标准逻辑位数据类型STD_LOGICBIT数据类型定义:TYPEBITIS('0','1');--只有两种取值STD_LOGIC数据类型定义:TYPESTD_LOGICIS('U','X','0','1','Z','W','L','H','-');KX康芯科技4.2寄存器描述及其VHDL语言现象4.2.2VHDL描述的语言现象说明图4-4D触发器2.设计库和标准程序包LIBRARYWORK;LIBRARYSTD;USESTD.STANDARD.ALL;使用库和程序包的一般定义表式是:LIBRARY设计库名;USE设计库名.程序包名.ALL;KX康芯科技4.2寄存器描述及其VHDL语言现象4.2.2VHDL描述的语言现象说明图4-4D触发器3.信号定义和数据对象“CLK'EVENTANDCLK='1'”“SIGNALQ1:STD_LOGIC;”4.上升沿检测表式和信号属性函数EVENT信号名'EVENTKX康芯科技5.不完整条件语句与时序电路【例4-7】ENTITYCOMP_BADISPORT(a1,b1:INBIT;q1:OUTBIT);END;ARCHITECTUREoneOFCOMP_BADISBEGINPROCESS(a1,b1)BEGINIFa1b1THENq1='1';ELSIFa1b1THENq1='0';--未提及当a1=b1时,q1作何操作ENDIF;ENDPROCESS;END;KX康芯科技5.不完整条件语句与时序电路4.2.2VHDL描述的语言现象说明4.2寄存器描述及其VHDL语言现象图4-5例4-7的电路图(Synplify综合)KX康芯科技5.不完整条件语句与时序电路4.2.2VHDL描述的语言现象说明4.2寄存器描述及其VHDL语言现象图4-6例4-8的电路图(Synplify综合)【例4-8】...IFa1b1THENq1='1';ELSEq1='0';ENDIF;...KX康芯科技4.2.3实现时序电路的VHDL不同表述4.2寄存器描述及其VHDL语言现象【例4-9】...PROCESS(CLK)BEGINIFCLK'EVENTAND(CLK='1')AND(CLK'LAST_VALUE='0')THENQ=D;--确保CLK的变化是一次上升沿的跳变ENDIF;ENDPROCESS;KX康芯科技4.2.3实现时序电路的VHDL不同表述4.2寄存器描述及其VHDL语言现象【例4-10】...PROCESS(CLK)BEGINIFCLK='1'ANDCLK'LAST_VALUE='0'--同例3-9THENQ=D;ENDIF;ENDPROCESS;KX康芯科技【例4-11】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISSIGNALQ1:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFrising_edge(CLK)--必须打开STD_LOGIC_1164程序包THENQ1=D;ENDIF;ENDPROCESS;Q=Q1;--在此,赋值语句可以放在进程外,作为并行赋值语句END;KX康芯科技4.2.3实现时序电路的VHDL不同表述4.2寄存器描述及其VHDL语言现象【例4-12】...PROCESSBEGINwaituntilCLK='1';--利用wait语句Q=D;ENDPROCESS;KX康芯科技4.2.3实现时序电路的VHDL不同表述【例4-13】...PROCESS(CLK)BEGINIFCLK='1'THENQ=D;--利用进程的启动特性产生对CLK的边沿检测ENDIF;ENDPROCESS;图4-7例4-13的时序波形KX康芯科技4.2.3实现时序电路的VHDL不同表述【例4-14】...PROCESS(CLK,D)BEGINIFCLK='1'--电平触发型寄存器THENQ=D;ENDIF;ENDPROCESS;图4-8例4-14的时序波形KX康芯科技4.2.4异步时序电路设计【例4-15】...ARCHITECTUREbhvOFMULTI_DFFISSIGNALQ1,Q2:STD_LOGIC;BEGINPRO1:PROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ1=NOT(Q2ORA);ENDIF;ENDPROCESS;PRO2:PROCESS(Q1)BEGINIFQ1'EVENTANDQ1='1'THENQ2=D;ENDIF;ENDPROCESS;QQ=Q2;...KX康芯科技图4-9例4-15综合后的电路(Synplify综合)4.2.4异步时序电路设计4.2寄存器描述及其VHDL语言现象KX康芯科技图4-10半加器h_adder电路图及其真值表4.3.1半加器描述4.31位二进制全加器的VHDL描述I113coasob1001010110001100cosobanotxnor2and2KX康芯科技图4-11全加器f_adder电路图及其实体模块4.3.1半加器描述4.31位二进制全加器的VHDL描述I113aincoutcoutainbinsumcinbinsumcinf_adderor2afedu3u2u1baccosoBcosoBh_adderAh_adderAKX康芯科技4.3.1半加器描述4.31位二进制全加器的VHDL描述【例4-16】LIBRARYIEEE;--半加器描述(1):布尔方程描述方法USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_adderISPORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYh_adder;ARCHITECTUREfh1OFh_adderisBEGINso=NOT(aXOR(NOTb));co=aANDb;ENDARCHITECTUREfh1;KX康芯科技【例4-17】LIBRARYIEEE;--半加器描述(2):真值表描述方法USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_adderISPORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYh_adder;ARCHITECTUREfh1OFh_adderisSIGNALabc:STD_LOGIC_VECTOR(1DOWNTO0);--定义标准逻辑位矢量数据类型BEGINabc=a&b;--a相并b,即a与b并置操作PROCESS(abc)BEGINCASEabcIS--类似于真值表的CASE语句WHEN00=so='0';co='0';WHEN01=so='1';co='0';WHEN10=so='1';co='0
本文标题:EDA 第4章 VHDL设计初步
链接地址:https://www.777doc.com/doc-5397557 .html