ImageVerifierCode 换一换
格式:DOCX , 页数:52 ,大小:34.92KB ,
资源ID:6239892      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6239892.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第四章 VHDL硬件描述语言.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第四章 VHDL硬件描述语言.docx

1、第四章 VHDL硬件描述语言理学院教案课程名称电子设计自动化授课教师孙小艳课程属性必修课() 专业选修课( ) 校定公共选修课( )课程学分3.5课程教材EDA技术实用教程潘松 主编课程学时64学时授课班级2013级电子信息科学与技术学生人数38授课题目第四章 VHDL 硬件描述语言授课学时6教学目的、要求(教学目标):通过本部分的学习,掌握VHDL硬件描述语言,并能进行简单的设计。教学重点:掌握VHDL硬件描述语言,并能进行简单的设计。教学难点:VHDL硬件描述语言进行简单的设计授课方式、方法和手段:实施多媒体教学与传统的板书相结合的教学方式;教学与课外阅读相结合,要求学生自行寻找或给学生提

2、供足够的阅读文献。教学方法以讲授法和讨论法为主,对于原理知识以讲授法为主,同时采用专题讨论、课堂作业等方法。作业及课外训练:参考资料:1 EDA技术实用教程 潘松主编本章小结:通过本部分的学习,使学生掌握VHDL硬件描述语言进行简单的设计。共分为七节进行讲述:第一节 VHDL基本结构、第二节 数据对象、类型及运算符、第三节 顺序语句、第四节 并行语句、第五节 子程序、第六节 程序包与设计库、第七节 元件配置。理学院教案教学内容教学过程设计 HDL最早是Iverson公司于1962年提出,到上世纪80年代被各个ASIC芯片厂商广泛采用。1982年各ASIC芯片厂商相继开发出自己的HDL。如Sil

3、var-lisco公司的HHDL、Zycad公司的ISP、Gateway Design Automation(现改为Cadence Design System)公司的Verilog等等。另外,还有许多一些高等院校及科研机构也开发了许多版本的HDL,有名的有美国国防部开发的VHDL(VHSIC HDL)、日本电子工业振兴协会的UDL/I等。 硬件描述语言(Hardware Description Language,HDL)为了标准化HDL,1987年底,IEEE确认美国国防部开发的VHDL为标准硬件描述语言(IEEE-1076)。之后,各EDA公司研制的硬件电路设计工具逐渐向VHDL靠拢。199

4、3年,IEEE对VHDL进行了修订,公布了新版本的VHDL(即IEEE-107-1993)。现在VHDL和Verilog作为IEEE的两个标准。VHDL语言是美国国防部在20世纪80年代初为实现其高速集成电路计划(Very High Speed Integrated Circuit,VHSIC)而提出的硬件描述语言(Hardware Description Language,HDL),称为VHDL。VHDL的主要优点是:1.覆盖面广,描述能力强,是一个多层次的硬件描述语言。2.VHDL有良好的可读性,即可以被计算机接受,也容易被理解。3.生命期长。VHDL的硬件描述与工艺技术无关,不会因工艺变

5、化而使描述过时。与工艺技术有关的参数可通过VHDL提供的属性加以描述,工艺改变时,只需修改相应程序中的属性参数即可。4.支持大规模设计的分解和已有设计的再利用,一个大规模设计不可能一个人独立完成,它将由多人,多项目组来共同完成。VHDL为设计的分解和设计的再利用提供了有力的支持。5.VHDL已成为IEEE承认的一个工业标准,事实上已成为通用硬件描述语言。目前,大多数的EDA工具几乎在不同程度上都支持VHDL,这样给VHDL的进一步推广和应用创造了良好的环境。6.VHDL可以支持自上而下(Top Down)和基于库(Library-Based)的设计方法,而且还支持同步电路、异步电路、FPGA等

6、的设计。其范围之广是其它HDL所不能比拟的。 第一节 VHDL基本结构以3-8译码器为例引入:library ieee;use ieee.std_logic_1164.all;entity dec isport (signal sel : in std_logic_vector (2downto 0);signal en : in std_logic;signal y : out std_logic_vector (7 downto 0);end dec;1.参数部分库、程序包、配臵2.接口部分-实体说明architecture behavior of dec isbeginprocess(s

7、el,en)beginyy(0)y(1)y(2)y(3)y(4)y(5)y(6)y(7)NULL;end case;end if;end process;end behavior;3.描述部分结构体VHDL语言把任意复杂的一个系统看成为一个模块。一个模块可主要分为三个组成部分:1.参数部分库、程序包、配臵2.接口部分实体说明3.描述部分结构体一个VHDL程序的前面部分总是有语句:有关库、程序包、配臵的作用及使用方法在后面讲述。LIBRARY ieee; 使用IEEE标准库USE ieee.std_logic_1164.all; 打开一个程序包(程序包名为ieee.std_logic_1164.

8、all)有些程序还需要加以下语句:USE ieee.std_logic_arith.all;USE ieee.std_logic_unsigned.all;数字系统中的基本单元,在VHDL中称作设计实体(design entity)。一个基本设计单元,简单的可以是一个门,复杂一点的可以是一个微处理器、一块印刷电路板上所有电路或者是整个数字系统。设计实体由两部分组成:实体说明和结构体。实体说明规定了设计单元的输入输出接口信号或引脚。结构体定义了设计单元的具体构造和操作(行为)。一. 实体说明基本格式:ENTITY 实体名 IS GENERIC (类属表); PORT (端口表);END ENTI

9、TY 实体名; 1.类属参数说明类属参数说明必须放在端口说明之前,用于为设计实体和其外部环境通信的静态信息提供通道,可以定义端口的大小、实体中子元件的数目、实体的定时特性等。例: GENERIC (m: Time:=1 ns);该语句指定了结构体内的m为Time类型,其值为ns。若随后的结构体内有语句:q= tmp after m;则表示tmp送入q有一个延迟时间1ns。2.端口说明端口说明用于为设计实体和其外部环境的动态通信提供通道。也可以说是对外部引脚信号的名称、数据类型、输入输出方向的描述。一般书写格式为:1)端口名PORT (端口名,端口名:方向 数据类型名);端口名,端口名:方向 数

10、据类型名);端口名是赋予每个外部引脚的名称,通常用一个或几个英文字母,或者用英文字母加数字命名。端口方向用来定义外部引脚的信号方向是输入还是输出。2)端口方向不指定方向,无论哪一个方向都可连接 LINKAGE输出(结构体内部能使用) BUFFER双向 INOUT输出(结构体内部不能再使用) OUT输入 IN注意:OUT和BUFFER都可以定义输出端口,但它们之间是有区别的。 3)数据类型在VHDL语言中有10种数据类型,但是在逻辑电路设计中只用到两种:BIT和BIT_VECTOR。BIT数据类型是位逻辑数据类型,其取值只能是两个逻辑值(1和0)中的一个。BIT_VECTOR数据类型是位数组逻辑

11、数据类型,其取值是一组二进制位的值。例: PORT (d0,d1,sel: IN BIT;q: OUT BIT;bus: OUT BIT_VECTOR(0 TO 7);其中的bus就是一个输出型的8位端口(总线)。二、结构体基本格式:ARCHITECTURE 结构体名 OF 实体名IS 说明语句 BEGIN并行语句;END ARCHITECTURE 结构体名1.结构体名称的命名结构体名称是对本结构体的命名,它是该结构体的唯一名称。OF后面紧跟的实体名表明了该结构体所对应的是哪一个实体。用IS来结束结构体的命名。结构体的名称可以自由命名。但在大多数时候,通常把结构体的名称命名为behaviora

12、l(行为)、dataflow(数据流)或者structural(结构)。表示结构体的3种描述方式。2.说明语句定义语句位于ARCHITECTURE和BEGIN之间,用于对结构体内部所使用的信号、常数、数据类型和函数进行定义。3.并行语句并行语句处于语句BEGIN和END之间,具体描述了本结构体的行为(功能)及其连接关系(内部结构)。并行语句的描述方式有4种:1)算法描述。2)数据流描述。3)结构描述。4)混合描述。1)算法描述(也有称为行为描述方式)算法描述属行为描述。是描述方式中较容易接受的。完全把硬件的设计软件化了。行为描述表示输入与输出间转换的行为。无需包含任何结构信息。2)数据流描述(

13、也有称为寄存器传输描述方式)数据流描述表示行为,也隐含表示结构。它反映从输入数据到输出数据之间所发生的逻辑变换。3)结构描述结构描述给出实体内部结构,即所包含的模块或元件及其互连关系以及与实体外部引线的对应关系。4)混合描述在一个结构体中,行为描述与结构描述可以混合使用。即元件例化语句可与其他并行语句共处于同一个结构体内。 第二节 数据对象、类型及运算符一、对象类别与定义在VHDL语言中,有四类对象:1)CONSTANT(常量),可用于定义延迟、功耗、电源(即5V)、地(0V)等参数。只能进行一次赋值。2)VARIABLE(变量),常用于高层次抽象的算法描述中。可多次赋值。3)SIGNAL(信

14、号),对应某一条硬件连线,可多次赋值。4)FILE(文件),相当于文件指针,用于对文件的读写操作。(很少用到)1.常量(CONSTANT)常量是一个固定值。所谓常量说明就是对某一常量名赋予一个固定值。通常赋值在程序开始前进行,该值的数据类型则在说明语句中指明。一般格式如下:CONSTANT 常量名:数据类型:=表达式;例:CONSTANT Vcc: Real: =5.0;CONSTANT fbus: Bit_vector:=“0101”;CONSTANT delay: Time:=5 ns;2.变量(VARIABLE)变量只能在进程语句、函数语句和过程语句结构中使用,它是一个局部量。在仿真过程

15、中,变量的赋值是立即生效。一般格式如下:VARIABLE 变量名:数据类型:约束条件:=初始值;例:VARIABLE x,y: Integer;VARIABLE count: Integer RANGE 0 to 255:=10;VARIABLE i: Integer:=13;3.信号(SIGNAL)信号是电子电路内部硬件连接的抽象。它除了没有数据流动方向说明以外,其他性质几乎和前面所述的端口概念一样。信号通常在构造体、包集合和实体中说明。一般格式如下:SIGNAL 信号名:数据类型:约束条件:=初始值;例:SIGNAL sys_clk: Bit:=0;SIGNAL clock: Bit ;S

16、IGNAL U377Q: Std_logic_vector(7 downto 0);4.关于信号和变量值代入的区别信号和变量值的代入不仅形式不同,而且其操作过程也不同。在变量的赋值语句中,该语句一旦被执行,其值立即被赋予变量。在执行下一条语句时,该变量的值就为上一句新赋的值。变量的赋值符为:=。信号代入语句采用=代入符,该语句即使被执行也不会使信号立即发生代入。下一条语句执行时,仍使用原来的信号值。由于信号代入语句是同时进行处理的,因此,实际代入过程和代入语句的处理是分开进行的。二、数据类型在VHDL语言中,一个对象只能具有一个数据类型,施加于该对象的操作必须与该类型相匹配。VHDL提供多种标

17、准的数据类型。在此基础上,用户还可以自定义数据类型。1.标准的数据类型有十种标准的数据类型,分别是整数、实数、位、位矢量、布尔量、字符、字符串、时间、错误等级、大于等于零的整数或正整数。1)整数(Integer)整数与数学中的整数含义相同。VHDL中,整数的表示范围是-2 147 483 6472 147 483 647,即从-(231-1)到(231-1)。VHDL是一个强类型语言,要求在赋值语句中的数据类型必须匹配。2)实数(Real)在进行算法研究或者实验时,作为对硬件方案的抽象手段,常用实数四则运算。实数的定义值范围是-1.0E+38 +1.0E+38。实数有正负数,书写时一定要有小数

18、点。3)位(Bit)在数字系统中,信号值通常用一个位来表示。位值的表示方法是,用字符0或者1(将值放在单引号中)表示之。位与整数中的0和1不同,1和0仅仅表示一个位的两种取值。位数据可以用来描述系统中总线的值。4)位矢量(Bit_vector)位矢量是用双引号括起来的一组位数据。用位矢量数据表示总线状态最形象也最方便。 5)布尔量(Boolean)一个布尔量具有两种状态,“真”或者“假”。虽然布尔量也是二值枚举量,但它和位不同,没有数值的含义,也不能进行算术运算。它能进行关系运算。例如,它可以在IF语句中被测试,测试结果产生一个布尔量TRUE或FALSE。如果某个信号或者变量被定义为布尔量,那

19、么在仿真中将自动地对其赋值进行核查。一般这一类型的数据的初始值总为FALSE。6)字符(Character)字符也是一种数据类型,所定义的字符量通常用单引号括起来,如A。一般情况下VHDL对大小写不敏感,但是对字符量中的大、小写字符则认为是不一样的。例如,B不同于b。字符量中的字符可以是az中的任一个字母,09中的任一个数以及空白或者特殊字符,如$,%等等。包集合STANDARD中给出了预定义的128个ASCII码字符类型,不能打印的用标识符给出。字符1与整数1和实数1.0都是不同的。7)字符串(String)字符串是用双引号括起来的一个字符序列,它也称字符矢量或字符串数组。常用于程序的提示和

20、说明。8)时间(Time)时间是一个物理量数据。完整的时间量数据应包含整数和单位两部分,而且整数和单位之间至少应留一个空格的位臵。例55 sec,2 min等。在包集合STANDARD中给出了时间的预定义,其单位是fs,ps,ns,s,ms,sec,min,hr。(飞秒,皮秒,纳秒,微秒,毫秒,秒,分钟,小时)9)错误等级(Severity level)错误等级类型数据用来表征系统的状态,它共有4种:NOTE(注意),WARNING(警告),ERROR(出错),FAILURE(失败)。在系统仿真过程中可以用这4种状态来提示系统当前的工作情况。10)大于等于零的整数(Natural),正整数(P

21、ositive)这两类数据是整数的子类,Natural类数据只能取值0和0以上的正整数;而Positive则只能为正整数。以上这10种标准的数据类型,在编程中可直接引用。如果用户需使用这10种以外的数据类型,则必须进行自定义。由于VHDL语言属于强类型语言,在仿真过程中,首先要检查赋值语句中的类型和区间,任何一个信号和变量的赋值均须落入给定的约束区间中,也就是说要落入有效数值的范围中。约束区间的说明通常跟在数据类型说明的后面。2.用户定义的数据类型在VHDL语言中,使用户最感兴趣的一个特点是,可以由用户自己来定义数据类型。由用户定义的数据类型的定义书写格式为:TYPE 数据类型名 ,数据类型名

22、 数据类型定义可由用户定义的数据类型有:枚举(Enumerated)类型 .整数型(Integer)类型.实数(Real)类型 .浮点数(Floating)类型.数组(Array)类型 .存取(Access)类型.文件(File)类型 .记录(Recode)类型.时间(Time)类型四、运算符VHDL中提供功能强大的运算符,可分为4类:逻辑运算符、算术运算符、关系运算符、其它运算符。1.逻辑运算符在VHDL中逻辑运算符共有6种,它们分别为:NOT取反;AND与;OR或;NAND与非;NOR或非;XOR异或。这6种逻辑运算符可以对STD_LOGIC和BIT等的逻辑型数据、STD_LOGIC_VE

23、CTOR逻辑型数组及布尔型数据进行逻辑运算。必须注意,运算符的左边和右边,以及代入的信号的数据类型必须是相同的。在VHDL中,当一个语句中存在两个以上的逻辑表达式时,左右没有优先级差别(不象C语言中运算有自左至右的优先级顺序的规定)。例如,在下例中,如去掉式中的括号,那么从语法上来说是错误的:X=(a AND b) OR (NOT c AND d);如果一个逻辑表达式中只有“AND”,”OR”, “XOR”运算符,那么改变运算顺序将不会导致逻辑的改变。此时,括号是可以省略的。例如: a=b AND c AND d AND e; a=b OR c OR d OR e; a=b XOR c XOR

24、 d XOR e; a=(b NAND c) NAND d) NAND e; (必须要括号) a=(b AND c) OR (a AND e); (必须要括号)2.算术运算符在VHDL中共有10种算术运算符,它们分别为: +加; - 减;*乘;/除;MOD求模; REM取余;+正(一元运算);- 负(一元运算); *指数;ABS取绝对值。加、减、乘、除运算符可用于整数、浮点数和物理类型。 指数运算的左边可以是整数或浮点数,但右边必须为整数,只有在左边为浮点数时,其右边才可以为负数。 取绝对值运算可以用于任何数值类型。 求模和取余运算只能用于整数类型。 一元运算的操作数移位运算符和循环移位运算符

25、为二元运算符,只能定义在一维数组上,其左运算数(左元)的元素类型必须为位型(Bit)或布尔型(Boolean),而右运算数(右元)必须为整数类型。若右运算数为0,则无任何动作。如“ S RRL 0”将不发生任何动作;若右运算数为负数,则移位次数为该数的绝对值,如“S SRL 6”与“S SRL 6”等价。为任何数值类型(整数、浮点数和物理类型)。3.关系运算符在VHDL中共有6种算术运算符,它们分别为: = 等于;/= 不等于; 大于;= 大于等于。其中等号“=”和不等号“/=”可以适合所有类型的数据。 其它关系运算符则可使用于整数、浮点数、位(STD_LOGIC)等枚举类型和位矢量(STD_

26、LOGIC_VECTOR)等数组类型。注意:在利用关系运算符对数据类型进行比较时,比较过程是从最左边的位开始,自左至右按位进行比较。在位长不同的情况下,只能按自左至右的比较结果作为关系运算的结果。4.合并运算符合并运算符“&”用于位的连接。例如,将4个位用合并运算符“&”连接起来就可以构成一个具有4位长度的位矢量。两个4位的位矢量用合并运算符“&”连接起来就可以构成8位长度的位矢量。 第三节 顺序语句 用VHDL语言进行设计时,按描述语句的执行顺序对其分类,可以将VHDL语句分为顺序执行语句和并行执行语句。VHDL的顺序语句有赋值语句、IF语句、CASE语句、LOOP语句、WAIT语句、断言语

27、句和过程调用语句。顺序语句是指完全按照程序中书写的顺序执行各语句,并且在结构层次中前面语句的执行结果会直接影响后面各语句的执行结果。 顺序语句只能出现在进程或子程序中,由它定义进程或子程序所执行的算法。一、变量与信号赋值语句在VHDL语言中,有两种赋值语句,一种称为变量赋值,另一种称为信号代入。1.变量赋值 格式为: 目的变量:=表达式; 将右边表达式值立即赋给左边的目的变量。 例: a:=2; b:=3.0; c:=d+e;2.信号代入 格式为: 目的信号量=表达式; 将右边表达式值经一定时间间隔(最小为)之后赋给左边的目的信号量。 例: a=b; 该语句表示将信号量b的当前值赋予目的信号量a. 注意:代入语句的符号“=”,和关系运算的小于等于符“顺序语句; END CASE; CASE语句中的条件表达式可以有4种不同的表示形式: WHEN 值=顺序语句; WHEN 值|值|值=顺序语句; WHEN 值 TO 值=顺序语句; WHEN OTHERS=顺序语句; 四、 LOOP语句 LOOP与其它高级语言中的循环

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1