您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 第四章 VHDL硬件描述语言
理学院教案课程名称电子设计自动化授课教师孙小艳课程属性必修课(∨)专业选修课()校定公共选修课()课程学分3.5课程教材《EDA技术实用教程》潘松主编课程学时64学时授课班级2013级电子信息科学与技术学生人数38授课题目第四章VHDL硬件描述语言授课学时6教学目的、要求(教学目标):通过本部分的学习,掌握VHDL硬件描述语言,并能进行简单的设计。教学重点:掌握VHDL硬件描述语言,并能进行简单的设计。教学难点:VHDL硬件描述语言进行简单的设计授课方式、方法和手段:实施多媒体教学与传统的板书相结合的教学方式;教学与课外阅读相结合,要求学生自行寻找或给学生提供足够的阅读文献。教学方法以讲授法和讨论法为主,对于原理知识以讲授法为主,同时采用专题讨论、课堂作业等方法。作业及课外训练:参考资料:[1]《EDA技术实用教程》潘松主编本章小结:通过本部分的学习,使学生掌握VHDL硬件描述语言进行简单的设计。共分为七节进行讲述:第一节VHDL基本结构、第二节数据对象、类型及运算符、第三节顺序语句、第四节并行语句、第五节子程序、第六节程序包与设计库、第七节元件配置。理学院教案教学内容教学过程设计HDL最早是Iverson公司于1962年提出,到上世纪80年代被各个ASIC芯片厂商广泛采用。1982年各ASIC芯片厂商相继开发出自己的HDL。如Silvar-lisco公司的HHDL、Zycad公司的ISP、GatewayDesignAutomation(现改为CadenceDesignSystem)公司的Verilog等等。另外,还有许多一些高等院校及科研机构也开发了许多版本的HDL,有名的有美国国防部开发的VHDL(VHSICHDL)、日本电子工业振兴协会的UDL/I等。硬件描述语言(HardwareDescriptionLanguage,HDL)为了标准化HDL,1987年底,IEEE确认美国国防部开发的VHDL为标准硬件描述语言(IEEE-1076)。之后,各EDA公司研制的硬件电路设计工具逐渐向VHDL靠拢。1993年,IEEE对VHDL进行了修订,公布了新版本的VHDL(即IEEE-107-1993)。现在VHDL和Verilog作为IEEE的两个标准。VHDL语言是美国国防部在20世纪80年代初为实现其高速集成电路计划(VeryHighSpeedIntegratedCircuit,VHSIC)而提出的硬件描述语言(HardwareDescriptionLanguage,HDL),称为VHDL。VHDL的主要优点是:1.覆盖面广,描述能力强,是一个多层次的硬件描述语言。2.VHDL有良好的可读性,即可以被计算机接受,也容易被理解。3.生命期长。VHDL的硬件描述与工艺技术无关,不会因工艺变化而使描述过时。与工艺技术有关的参数可通过VHDL提供的属性加以描述,工艺改变时,只需修改相应程序中的属性参数即可。4.支持大规模设计的分解和已有设计的再利用,一个大规模设计不可能一个人独立完成,它将由多人,多项目组来共同完成。VHDL为设计的分解和设计的再利用提供了有力的支持。5.VHDL已成为IEEE承认的一个工业标准,事实上已成为通用硬件描述语言。目前,大多数的EDA工具几乎在不同程度上都支持VHDL,这样给VHDL的进一步推广和应用创造了良好的环境。6.VHDL可以支持自上而下(TopDown)和基于库(Library-Based)的设计方法,而且还支持同步电路、异步电路、FPGA等的设计。其范围之广是其它HDL所不能比拟的。第一节VHDL基本结构以3-8译码器为例引入:libraryieee;useieee.std_logic_1164.all;entitydecisport(signalsel:instd_logic_vector(2downto0);signalen:instd_logic;signaly:outstd_logic_vector(7downto0));enddec;1.参数部分——库、程序包、配臵2.接口部分—-实体说明architecturebehaviorofdecisbeginprocess(sel,en)beginy=‖11111111‖;if(en=‘1‘)thencaseseliswhen―000‖=y(0)=‘0‘;when―001‖=y(1)=‘0‘;when―010‖=y(2)=‘0‘;when―011‖=y(3)=‘0‘;when―100‖=y(4)=‘0‘;when―101‖=y(5)=‘0‘;when―110‖=y(6)=‘0‘;when―111‖=y(7)=‘0‘;whenothers=NULL;endcase;endif;endprocess;endbehavior;3.描述部分—结构体VHDL语言把任意复杂的一个系统看成为一个模块。一个模块可主要分为三个组成部分:1.参数部分——库、程序包、配臵2.接口部分—实体说明3.描述部分—结构体一个VHDL程序的前面部分总是有语句:有关库、程序包、配臵的作用及使用方法在后面讲述。LIBRARYieee;——使用IEEE标准库USEieee.std_logic_1164.all;——打开一个程序包(程序包名为ieee.std_logic_1164.all)有些程序还需要加以下语句:USEieee.std_logic_arith.all;USEieee.std_logic_unsigned.all;数字系统中的基本单元,在VHDL中称作设计实体(designentity)。一个基本设计单元,简单的可以是一个门,复杂一点的可以是一个微处理器、一块印刷电路板上所有电路或者是整个数字系统。设计实体由两部分组成:实体说明和结构体。实体说明规定了设计单元的输入输出接口信号或引脚。结构体定义了设计单元的具体构造和操作(行为)。一.实体说明基本格式:ENTITY实体名IS[GENERIC(类属表);][PORT(端口表);]END[ENTITY][实体名];1.类属参数说明类属参数说明必须放在端口说明之前,用于为设计实体和其外部环境通信的静态信息提供通道,可以定义端口的大小、实体中子元件的数目、实体的定时特性等。例:GENERIC(m:Time:=1ns);该语句指定了结构体内的m为Time类型,其值为1ns。若随后的结构体内有语句:q=tmpafterm;则表示tmp送入q有一个延迟时间1ns。2.端口说明端口说明用于为设计实体和其外部环境的动态通信提供通道。也可以说是对外部引脚信号的名称、数据类型、输入输出方向的描述。一般书写格式为:1)端口名PORT(端口名{,端口名}:方向数据类型名);端口名{,端口名}:方向数据类型名);端口名是赋予每个外部引脚的名称,通常用一个或几个英文字母,或者用英文字母加数字命名。端口方向用来定义外部引脚的信号方向是输入还是输出。2)端口方向不指定方向,无论哪一个方向都可连接LINKAGE输出(结构体内部能使用)BUFFER双向INOUT输出(结构体内部不能再使用)OUT输入IN注意:OUT和BUFFER都可以定义输出端口,但它们之间是有区别的。3)数据类型在VHDL语言中有10种数据类型,但是在逻辑电路设计中只用到两种:BIT和BIT_VECTOR。BIT数据类型是位逻辑数据类型,其取值只能是两个逻辑值(‚1‛和‚0‛)中的一个。BIT_VECTOR数据类型是位数组逻辑数据类型,其取值是一组二进制位的值。例:PORT(d0,d1,sel:INBIT;q:OUTBIT;bus:OUTBIT_VECTOR(0TO7));其中的bus就是一个输出型的8位端口(总线)。二、结构体基本格式:ARCHITECTURE结构体名OF实体名IS[说明语句][BEGIN并行语句;]END[ARCHITECTURE][结构体名]1.结构体名称的命名结构体名称是对本结构体的命名,它是该结构体的唯一名称。OF后面紧跟的实体名表明了该结构体所对应的是哪一个实体。用IS来结束结构体的命名。结构体的名称可以自由命名。但在大多数时候,通常把结构体的名称命名为behavioral(行为)、dataflow(数据流)或者structural(结构)。表示结构体的3种描述方式。2.说明语句定义语句位于ARCHITECTURE和BEGIN之间,用于对结构体内部所使用的信号、常数、数据类型和函数进行定义。3.并行语句并行语句处于语句BEGIN和END之间,具体描述了本结构体的行为(功能)及其连接关系(内部结构)。并行语句的描述方式有4种:1)算法描述。2)数据流描述。3)结构描述。4)混合描述。1)算法描述(也有称为‘行为描述’方式)算法描述属行为描述。是描述方式中较容易接受的。完全把硬件的设计软件化了。行为描述表示输入与输出间转换的行为。无需包含任何结构信息。2)数据流描述(也有称为‘寄存器传输描述’方式)数据流描述表示行为,也隐含表示结构。它反映从输入数据到输出数据之间所发生的逻辑变换。3)结构描述结构描述给出实体内部结构,即所包含的模块或元件及其互连关系以及与实体外部引线的对应关系。4)混合描述在一个结构体中,行为描述与结构描述可以混合使用。即元件例化语句可与其他并行语句共处于同一个结构体内。第二节数据对象、类型及运算符一、对象类别与定义在VHDL语言中,有四类对象:1)CONSTANT(常量),可用于定义延迟、功耗、电源(即5V)、地(0V)等参数。只能进行一次赋值。2)VARIABLE(变量),常用于高层次抽象的算法描述中。可多次赋值。3)SIGNAL(信号),对应某一条硬件连线,可多次赋值。4)FILE(文件),相当于文件指针,用于对文件的读写操作。(很少用到)1.常量(CONSTANT)常量是一个固定值。所谓常量说明就是对某一常量名赋予一个固定值。通常赋值在程序开始前进行,该值的数据类型则在说明语句中指明。一般格式如下:CONSTANT常量名:数据类型:=表达式;例:CONSTANTVcc:Real:=5.0;CONSTANTfbus:Bit_vector:=“0101”;CONSTANTdelay:Time:=5ns;2.变量(VARIABLE)变量只能在进程语句、函数语句和过程语句结构中使用,它是一个局部量。在仿真过程中,变量的赋值是立即生效。一般格式如下:VARIABLE变量名:数据类型:[约束条件:=初始值];例:VARIABLEx,y:Integer;VARIABLEcount:IntegerRANGE0to255:=10;VARIABLEi:Integer:=13;3.信号(SIGNAL)信号是电子电路内部硬件连接的抽象。它除了没有数据流动方向说明以外,其他性质几乎和前面所述的‚端口概念一样。信号通常在构造体、包集合和实体中说明。一般格式如下:SIGNAL信号名:数据类型:[约束条件:=初始值];例:SIGNALsys_clk:Bit:=0;SIGNALclock:Bit;SIGNALU377Q:Std_logic_vector(7downto0);4.关于信号和变量值代入的区别信号和变量值的代入不仅形式不同,而且其操作过程也不同。在变量的赋值语句中,该语句一旦被执行,其值立即被赋予变量。在执行下一条语句时,该变量的值就为上一句新赋的值。变量的赋值符为:=。信号代入语句采用=代入符,该语句即使被执行也不会使信号立即发生代入。下一条语句执行时,仍使用原来的信号值。由于信号代入语句是同时进行处理的,因此,实际代入过程和代入语句的处理是分开进行的。二、数据类型在VHDL语言中,一个对象只能具有一个数据类型,施加于该对象的操作必须与该类型相匹配。VHDL提供多种标准的数据类型。在此基础上,用户还可以自定义数据类型。1.标准的数据类型有十种标准的数据类型,分别是整数、实数、位、位矢量、布尔量、字符、字符串、时间、错误等级、大于等于零的整数或正整数。1)整数(Integer)整数与数学中的整数含义相同。
本文标题:第四章 VHDL硬件描述语言
链接地址:https://www.777doc.com/doc-4024658 .html