资源描述:
《VHDL程序的基本结构》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、可编程逻辑器件应用主讲人:刘文怡第五讲VHDL程序的基本结构VHDL语言设计的基本单元及其构成结构体的子结构描述包集合、库及配置要求:掌握硬件描述语言的基本框架结构;了解硬件描述语言的库、程序包和配置;前节内容回顾EDA,CPLD,FPGA,HDL,VHDLVHDL,VERILOG,AHDLFPGA芯片公司Altera,Xilinx,Microsemi(Actel),latticeFPGA,CPLD,单片机,DSP,ARM如果把这个电路做成一个元件别人使用的时候,只需知道两件事:一是封装!二是功能!漂亮的程序(回顾)Fengzhuang_kaishiport(IN1:in;
2、IN2:in;IN3:in;IN4:in;OUT4:out)Fengzhuang_jieshuGongneng_kaishisignalT1,T2;OUT4<=T1orT2;T2<=IN3andIN4;T1<=IN1andIN2;Gongneng_jieshu1、为了用起来像个函数的样子,不妨加个port关键词,把输入输出引脚象参数一样排列起来。2、很好地表达了4个输入引脚,1个输出引脚。3、提供给别人调用。1、内部功能实现的细节2、T1、T2似乎有点奇怪,哪来的?3、那我们也规定先定义,后使用!LibraryIEEE;UseIEEE.STD_LOGIC_1164.ALL;
3、ENTITYmuxISPORT(d0,d1,sel:inbit;q:outbit);ENDmux;Architecturedataflowofmuxissignaltmp1,tmp2,tmp3:bit;Begintmp1<=d0andsel;tmp2<=d1and(notsel);tmp3<=tmp1ortmp2;q<=tmp3;Enddataflow;d0d1selq&&≥1qd0d1selVHDL语言如何做的?一个完整的VHDL语言程序通常包含5个部分:库(Library)包集合(Package)实体(Entity)结构体(Architecture)配置(Configu
4、ration)必备部分VHDL程序的基本构成实体:描述所设计系统的外部接口信号,是可见的;结构体:描述系统内部的结构和行为,是不可见的;配置:选取所需单元组成系统设计的不同版本;包集合:存放各种设计模块都能共享的数据类型、常数、子程序和函数等;库:存放已经编译的实体、结构体、包集合和配置。VHDL程序的基本单元解释实体声明实体声明语法:ENTITY实体名IS[类属参数说明];[端口说明];END实体名;举例:ENTITYmuxISPORT(d0,d1,sel:INBIT;q:OUTBIT);ENDmux;d0d1selq实体的声明实体名必须与文件名相同,否则编译时会出错。实
5、体用于定义电路的输入输出引脚,但并不描述电路的具体结构和实现的功能。大小写不敏感。实体声明注意事项实体的类属参数说明(了解)类属参数说明是实体说明中的可选项,必须放在端口说明之前,用于指定参数,如端口大小、总线宽度、时间等;其一般书写格式为:GENERIC(常数名:数据类型[:=设定值],…]);举例:GENERIC(m:TIME:=1ns);这个参数说明是指在VHDL程序中,结构体内的参数m的值为1ns。实体的端口说明端口说明是对基本设计实体(单元)与外部接口的描述,也可以说是对外部引脚信号的名称,数据类型和输入、输出方向的描述;其一般书写格式为:PORT(端口名,…端口
6、名n:方向数据类型名;端口名,…端口名m:方向数据类型名);举例:PORT(d0,d1,sel:INBIT;q:OUTBIT;bus:OUTBIT_VECTOR(7DOWNTO0));…方向定义含义IN输入OUT输出(结构体内部不能再使用)INOUT双向BUFFER输出(结构体内部可再使用)(1)端口名:赋予每个外部引脚名称,通常用一个或几个英文字母,或者用英文字母加数字命名之,例如:d0,d1,sel。(2)端口方向:用来定义外部引脚的信号方向。请注意OUT与BUFFER的区别ENTITYtestISPORT(a:INSTD_LOGIC;b1,c1:OUTSTD_LOGI
7、C;b2:BUFFERSTD_LOGIC;c2:OUTSTD_LOGIC);ENDtest;ARCHITECTUREaoftestISBEGINb1<=not(a);c1<=b1;--Errorb2<=not(a);c2<=b2;ENDa;端口数据类型标准类型:BIT和BIT_VECTOR扩展类型:STD_LOGIC和STD_LOGIC_VECTOR单点多点(总线)扩展类型需要库和程序包的支持,并且需要在程序中指明使用时需要加入以下两个语句:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.AL