六、VHDL设计简述VHDL主要用于描述什么?VHDL将一个设计(元件、电路、系统)分为:外部(可视部分、端口)内部(不可视部分、内部功能、算法)外部与内部:器件或子系统ARCHITECTUREProcessProcessENTITYSequentialProcessCombinationalProcessportsportscomponentportsportsVHDL语言的一些基本特点:VHDL语言由保留关键字组成;一般,VHDL语言对字母大小写不敏感;例外:‘’、“”所括的字符、字符串;每条VHDL语句由一个分号(;)结束;VHDL语言对空格不敏感,增加可读性;在“--”之后的是VHDL的注释语句;VHDL有以下描述风格:行为描述;数据流(寄存器传输RTL)描述;结构化描述;【例5-1】ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINy=aWHENs='0'ELSEb;ENDARCHITECTUREone;实体结构体4.1多路选择器VHDL描述图5-1mux21a实体图5-2mux21a结构体4.1.12选1多路选择器的VHDL描述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-3】...ARCHITECTUREoneOFmux21aISBEGINy=(aAND(NOTs))OR(bANDs);ENDARCHITECTUREone;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;4.1.12选1多路选择器的VHDL描述图5-3mux21a功能时序波形4.1.2VHDL相关语句说明1.实体表达【例5-5】ENTITYe_nameISPORT(p_name:port_mdata_type;...p_namei:port_midata_type);ENDENTITYe_name;或:【例5-6】ENTITYe_nameISPORT(p_name:port_mdata_type;...p_namei:port_midata_type);ENDe_name;93标准87标准4.1.2VHDL相关语句说明2.实体名counter4b4位二进制计数器Adder8b8位二进制加法器注意:①必须用英文打头②字符可以为大小写的下划线,数字,字母③下划线前后必须有字母或数字④不能用定义好的元件名重名3.PORT语句和端口信号名(确认输入输出端口的数据和类型)4.端口模式INOUTINOUTBUFFER其中,端口模式:in:输入型,此端口为只读型。out:输出型,只能在实体内部对其赋值。inout:输入输出型,既可读也可赋值。buffer:缓冲型,与out相似,但可读。out和buffer的区别:5.数据类型指端口上流动的数据的表达格式。为预先定义好的数据类型。如:bit、bit_vector、integer、std_logic、std_logic_vector等。例:entitynand2isentitym81isport(port(a,b:inbit;a:inbit_vector(7downto0);z:outbitsel:inbit_vector(2downto0););b:outbit);endentitynand2;endentitym81;作用:定义系统(或模块)的行为、元件及内部的连接关系。两个组成部分:对数据类型、常数、信号、子程序、元件等元素的说明部分。以各种不同的描述风格描述的系统的逻辑功能实现部分。常用的描述风格有:行为描述、数据流描述、结构化描述。二、结构体结构体结构体说明结构体功能描述常数说明数据类型说明信号说明例化元件说明子程序说明块语句进程语句信号赋值语句子程序调用语句元件例化语句实体与结构体的关系:设计实体结构体1结构体2结构体3结构体n。。。4.1.2VHDL相关语句说明6.结构体表达【例5-7】ARCHITECTUREarch_nameOFe_nameIS(说明语句)BEGIN(功能描述语句)ENDARCHITECTUREarch_name;或:【例5-8】ARCHITECTUREarch_nameOFe_nameIS(说明语句)BEGIN(功能描述语句)ENDarch_name;architecture结构体名称of实体名称is[说明语句]内部信号、常数、数据类型、子程序(函数、过程)、元件等的说明;begin[并行处理(功能描述)语句];end[architecture]结构体名称;注:同一实体的结构体不能同名。定义语句中的常数、信号不能与实体中的端口同名。例:结构体中错误的信号声明4.1.2VHDL相关语句说明8.逻辑操作符AND、OR、NOT9.IF_THEN条件语句10.WHEN_ELSE条件信号赋值语句赋值目标=表达式WHEN赋值条件ELSE表达式WHEN赋值条件ELSE...表达式;11.PROCESS进程语句和顺序语句12.文件取名和存盘7.信号传输(赋值)符号和数据比较符号【例4-4】ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIFs='0'THENy=a;ELSEy=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;4.1.3VHDL设计的基本概念和语句小节数据类型信号赋值符条件比较符延时实体结构体端口定义端口模式逻辑操作符IF条件语句并行条件语句进程语句顺序语句并行语句文件取名文件存盘