新的硬件描述语言VHDL编程基础.ppt
《新的硬件描述语言VHDL编程基础.ppt》由会员分享,可在线阅读,更多相关《新的硬件描述语言VHDL编程基础.ppt(130页珍藏版)》请在三一办公上搜索。
1、第四章 硬件描述语言VHDL编程基础,本章首先介绍了VHDL的基本结构,使读者初步掌握VHDL的基础知识。最后通过大量的实例使读者进一步掌握使用VHDL的设计方法。,本章主要内容,第一节 概述,第二节 VHDL程序结构,第三节 VHDL的基本数据类型,第四节 VHDL的基本描述语句,第五节 子程序,第一节 概述,VHDL(Very high speed intergated circuit Hardware Description Language):非常高速集成电路的硬件描述语言。20世纪80年代诞生于美国国防部的一项研究计划,目的是使电路的设计能够以文字的方式保存下来。被列为IEEE107
2、6标准,也成为工业界的标准。,1.VHDL简介,2Verilog HDL语言简介,Verilog HDL它是在C语言的基础上发展起来的,由GDA(Gateway Design Automation)公司创造的,1989年cadence公司收购了GDA公司,使得Verilog HDL成为了该公司的独家专利。1990年Cadence公司公开发表了Verilog HDL,并成立LVI组织以促进Verilog HDL成为IEEE标准,即IEEE Standard 1364-1995。Verilog HDL的最大特点就是易学易用,如果有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握,Veril
3、og HDL语言的系统抽象能力稍逊于VHDL,而对门级开关电路的描述能力则优于VHDL。,二、VHDL的优点,1.支持层次化设计 2.具有多层次描述系统硬件功能的能力 3.具有丰富的仿真语句和库函数 4.VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。,VHDL的优点,5.对设计的描述具有相对独立性,与硬件的结构无关 6.可以利用EDA工具进行逻辑综合和优化,并自动将VHDL描述转化为门级网表。7.具有可移植性,可以在不同的设计环境和系统平台中使用。8.具有良好的可读性。,三、VHDL与高级语言的区别,1.某些并行语句可以自动的重复执行,不需要用循环
4、指令来保证。2.VHDL中的许多语句不是按排列顺序执行的,而是可以同时执行的(VHDL的并行性)。,返 回,第二节 VHDL程序结构,一、VHDL的基本结构,ENTITY nand_2 IS-定义一个实体PORT(a,b:IN STD_LOGIC;-描述输入输出 y:OUT STD_LOGIC);-信号END nand_2;,LIBRARY IEEE;-IEEE库说明USE IEEE.STD_Logic_1164.ALL;-自定义元件库,ARCHITECTURE rtl OF nand_2 ISBEGIN-结构体说明y=NOT(a AND b);END rtl;,1.USE定义区,2.PACK
5、AGE定义区,3.ENTITY定义区,4.ARCHITECTURE定义区,定义元件库,5.CONFIGURATION定义区,定义使用那些自定义元件库,定义电路实体的外观:I/O接口的规格,描述电路内部的逻辑功能,决定那一个architecture被使用,1.VHDL基本结构图,2.实体说明,功能:描述设计模块的输入/输出信号或引脚,并给出设计模块与外界的接口。实体类似一个“黑盒”,实体描述了“黑盒”的输入输出口。格式:ENTITY实体名ISGENERIC(类属表);PORT(端口表);END ENTITY 实体名,实 体 名,实体名实际上是器件名,最好根据相应的电路功能确定。如4位2进制计数器
6、用counter4b;8位加法器用add8b;3/8译码器用ym_38。,实体名必须与文件名相同,否则无法编译。,实体名不能用工具库中定义好的元件名。,实体名不能用中文,也不能用数字开头。,类 属 表,类属表:用以将信息参数传递到实体。类属表的一般格式为:GENERIC(常数名:数据类型:=设定值)GENERIC(awidth:INTEGER:=3;timex:time);其中:常数名由设计者确定;数据类型通常取INTEGER或time等;在表中提供时间参数、总线宽度等信息。,端口表:指明实体的输入、输出信号极其模式。端口表的一般格式为:PORT(端口名:端口模式数据类型)端口模式:共四种:I
7、N(输入)、OUT(输出)、INOUT(双向端口)、BUFFER(输出并向内部反馈),端 口 表,数据类型:VHDL作为一种强类型语言,必须对数据对象(常量、变量、信号)规定取值范围,即对传输或存储数据的类型作明确的界定。,实 体 举 例,ENTITY black_box IS Generic(constant width:integer:=7;);PORT(clk,rst:INstd_logic;d:IN std_logic_vector(width DOWNTO 0);q:OUTstd_logic_vector(width DOWNTO 0);co:OUT std_logic);END b
8、lack_box;,练 习 一,编写包含以下内容的实体代码端口 D 为12位输入总线 端口 OE 和 CLK 都是1位输入端口 AD 为 12位双向总线端口 A为12位输出总线端口 INT 是1位输出端口 AS 是一位输出同时被用作内部反馈,练习一答案,LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY my_design IS PORT(d:IN std_logic_vector(11 DOWNTO 0);oe,clk:IN std_logic;ad:INOUT std_logic_vector(11 DOWNTO 0);a:OUT std_log
9、ic_vector(11 DOWNTO 0);int:OUT std_logic;as:BUFFER std_logic);END my_design;,练 习,1、编写包含全加器的实体代码。2、编写4选1数据选择器的实体代码。,3.结构体,结构体:通过若干并行语句来描述设计实体的逻辑功能(行为描述)或内部电路结构(结构描述),从而建立设计实体输出与输入之间的关系。一个设计实体可以有多个结构体。格式:ARCHITECTURE 结构体名 OF 实体名 IS 说明语句;BEGIN 并行语句;END ARCHITECTURE 结构体名;,VHDL结构体术语,说明语句:用于定义结构体中所用的数据对象和
10、子程序,并对所引用的元件加以说明,但不能定义变量。并行语句 并行语句有五种类型,可以把它们看成结构体的五种子结构。这五种语句结构本身是并行语句,但内部可能含有并行运行的逻辑描述语句或顺序运行的逻辑描述语句,如进程内部包含的即为顺序语句。五种语句结构分别为块语句、进程语句、信号赋值语句、子程序调用语句和元件例化语句。,结构体结构图,实体和结构体之间的关系,Structure描述 描述该设计单元的硬件结构,即该硬件是如何构成的,类似于数字电路中的逻辑图描述.Date Flow描述 它是类似于寄存器传输级的方式描述数据的传输和变换,以规定设计中的各种寄存器形式为特征,然后在寄存器之间插入组合逻辑。与
11、数字电路中的真值表描述相似。Behavior Process描述 只描述所希望电路的功能或者电路行为(输入输出间转换的行为),而没有指明或涉及实现这些行为的硬件结构。与数字电路中的逻辑表达式描述相似。,结构体的三种描述形式,architecture one of mux21 is signal d,e:bit;begin d=a and(not)s;e=b and s;y=d or e;end one;,Structure描述,architecture one of mux21 isbegin y=(a and(not s)or(b and s);end one;,Date Flow描述,Be
12、havior Process描述,architecture one of mux21 isbegin y=a when s=0 else b;end one;,结构体行为描述举例,2 X 8 Input AND gate:ENTITY black_box IS PORT(a,b:INstd_logic_vector(7 DOWNTO 0);y:OUTstd_logic_vector(7 DOWNTO 0);END black_box;ARCHITECTURE example OF black_box ISBEGIN y=a AND b;END example;,操作案例,1、操作题目:通过38
13、译码器的设计实例,从整体结构上初步认识VHDL的基本结构和语句特点。2、38译码器的电路图如图所示,有4个输入端(A0、A1、A2、EN),8个输出端(Y0Y7)3、步骤:定义元件库、实体、结构体、编译、仿真。,返 回,第三节 VHDL的基本数据类型,一、数据对象,是数据类型的载体,共有三种形式的对象:Constant(常量)Variable(变量)Signal(信号)对象的说明格式为:对象类别 标识符表:类型标识:=初值,(1)常量声明,常量是全局量,在结构描述、程序包说明、实体说明、过程说明、函数调用说明和进程说明中使用。例:constant WIDTH:INTEGER:=8;consta
14、nt X:NEW_BIT:=X;,(2)变量声明,定义了给定类型的变量名称。例:variable A,B:BIT;variable INIT:NEW_BIT,变量赋值,整体赋值:temp:=“10101010”;temp:=x”AA”;逐位赋值:temp(7):=1;多位赋值temp(7 downto 4):=“1010”;,(3)信号声明,信号可以将结构体中分离的并行语句连接起来,并且通过端口其他模块与该设计内的连接起来。信号为器件内部节点信号,数据的进出不像端口信号那样受限制,不必定义其端口模式。定义信号的目的是为了在设计电路时使用该信号。用“=”来给信号赋值 例:signal A,B:B
15、IT;signal INIT:INTEGE:=-1,信号赋值,SIGNAL temp:Std_Logic_Vector(7 downto 0);整体赋值:temp=“10101010”;temp=x”AA”;逐位赋值:temp(7)=1;多位赋值:temp(7 downto 4)=“1010”;,信号举例,LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY simp ISPORT(a,b,c,d:IN Std_Logic;g:OUT Std_Logic);END simp;ARCHITECTURE logic OF simp ISSIGNAL e,f
16、:Std_Logic;BEGINe=a or b;f=not(c or d);g=e and f;END logic;,信号和变量的作用范围,信号和变量的区别,二、数据类型,1.标准定义的数据类型 不必用USE说明而直接使用。1)Boolean(布尔量):取值为FALSE和TRUE。2)Character(字符):使用时用单引号括起来,如:A。3)String(字符串):使用时用双引号括起来,如:111000101。4)Integer(整数):范围在-(231-1)(231-1)5)Real(实数):范围在-1.0E+38+1.0E+38,6)Bit(位):取值为0或1.7)Time(时间):
17、取值范围与整数一致,一般用于仿真。8)Bit_vector(位矢量):基于BIT数据类型的数组。使用时必需注明宽度。9)Natural(自然数)和Positive(正整数):是整数的一个子类型。10)Severity level(错误等级):用来设计系统的工作状态。有四种状态值:NOTE(注意)、WARNING(警告)、ERROR(错误)、FAILURE(失败)。,2.用户自定义的数据类型,1)Enumerated Types(枚举类型)格式如下:TYPE 数据类型名 IS(枚举文字,枚举文字);例如:TYPE color IS(red,green,yellow,blue);TYPE leve
18、l IS(0,1,Z);2)Integer Types(整数类型)和 Real Types(实数类型)格式为:TYPE 数据类型名 IS RANGE 约束范围;例如:TYPE int IS RANGE-10 TO 10;3)Array Types(数组类型)格式如下:TYPE 数据类型名 IS ARRAY(索引范围)OF类型名称;例如:TYPE a IS ARRAY(integer0 TO 9)OF std_logic,3.IEEE预定义标准逻辑位与矢量,在IEEE的程序包中std_logic_1164中定义了两个重要的数据类型。1)std_logic:工业标准的逻辑类型。取值为0(强0)、1
19、(强1)、Z(高阻态)、X(强未知的)。2)std_logic_vector:工业标准的逻辑类型。std_logic的组合。注意:使用这两种数据时,程序中必须声明:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL,Std_Logic数据类型,IEEE std_logic_ 1164中定义的一种数据类型,它包含9种取值分别为:U未初始化用于仿真 X强未知用于仿真 0强0用于综合与仿真 1强1用于综合与仿真 Z高阻用于综合与仿真 W弱未知用于仿真 L弱0用于综合与仿真 H弱1用于综合与仿真 _忽略用于综合与仿真,三、标识符,标识符是VHDL语言最基本的要素之一,是使
20、用VHDL语言的基础。标识符是描述VHDL语言中端口、信号、常数、变量以及函数等名称的字符串。VHDL标识符书写规则如下:1)使用的字符由26个英文字母、数字09以及下划线组成;2)标识符必须以英文字母开始,不区分大小写;3)不能以下划线结尾;4)标识符中不能有空格;5)标识符不能与VHDL的关键字重名。,四、运算符,(1)算术运算符,+加*乘方 减 MOD 求模*乘 REM 求余/除 ABS 求绝对值,(2)关系运算符,=等于/=不等于 小于=小于或等于 大于=大于或等于其中=符号也用于信号的赋值操作,(3)逻辑运算符,AND 逻辑与 SLL 逻辑左移OR 逻辑SRL 逻辑右移NAND 逻辑
21、与非 SLA 算术左移NOR 逻辑或非 SRA 算术右移XOR 逻辑异或 ROR 逻辑循环右移NOT 逻辑非 ROL 逻辑循环左移,五、VHDL属性,VHDL属性(Attribute)是指实体、结构体、类型及信号的一些表现特征。一般需要了解VHDL中的数值类属性、函数类属性以及范围类属性。其引用的一般形式均为:对象属性。,1数值类属性,数值类属性可用于返回数组、块或一般数据的有关属性。如左边界(left)、右边界(right)、下边界(low)、上边界(high)和数组长度(length)。例如:sdown:IN std_logic_vector(8 DOWNTO 0);这个信号的各属性值如下
22、:sdownleft=8;sdownright=0;sdownlow=0;sdownhigh=8;sdownlength=9;,2函数类属性,函数类属性用来返回有关信号行为功能的信息。如信号属性函数:event,它的值为布尔型,如果刚好有事件发生在该属性所附着的信号上(即信号有变化),则其取值为True,否则为False。利用此属性可决定时钟边沿是否有效,即时钟是否发生。例如:时钟边沿表示SIGNAL clk:IN std_logic则:clkevent AND clk=1,表示时钟的上升沿。clkevent AND clk=0,表示时钟的下降沿。,3范围类属性,范围(RANGE)类属性,用来
23、生成一个限制性数据对象的范围。例如:数据总线的范围SIGNAL data_bus:std_logic_wector(15 DOWNTO 0);Data_busRANGE=15 DOWNTO 0;注意:MAX+PLUS不支持该属性。,练 习,1、编写包含全加器的结构体代码。2、编写3输入与非门的结构体代码。,ARCHITECTURE example1 OF Full_adder ISBEGIN sum=a XOR b XOR c;c=(a AND b)OR(b AND c)OR(a AND c);END example1;,ARCHITECTURE example2 OF and3 ISBEGI
24、N y=a AND b AND c;END example2;,练 习 答 案,返 回,第四节 VHDL的基本描述语句,一、顺序语句,1.IF语句,顺序语句用于进程过程或函数之中,为算法描述提供了IF 语句、CASE语句、LOOP语句。,可以用于实现两种或两种以上的条件分支判断。格式为:IF 布尔表达式1 THEN 顺序语句1 ELSIF 布尔表达式2 THEN 顺序语句2 END IF,1)IF 布尔表达式1 THEN顺序语句1END IF,常用格式,2)IF 布尔表达式1 THEN顺序语句1ELSE顺序语句2END IF,3)IF 布尔表达式1 THEN顺序语句1ELSIF 布尔表达式2
25、THEN顺序语句2 END IF,4)IF 布尔表达式1 THENIF 布尔表达式2 THEN顺序语句 END IFEND IF,【例4-3】IF语句描述的判断程序(2选1),IFs=0THENy=a0;ELSIFs=1THENy=a1;ENDIF,练 习,用IF语句实现4选1,IF s=00 THEN y=a;ELSIF s=01THEN y=b;ELSIF s=10THEN y=c;ELSE y=d;END IF;,操作案例,1、操作题目:通过四选一数据选择器设计实例,讲解顺序语句的语句特点。2、四选一数据选择器的电路图:如图4-3,有7个输入端(A0、A1、D0、D1、D2、D3、S),
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件 描述 语言 VHDL 编程 基础
链接地址:https://www.31ppt.com/p-5573716.html