vhdl语言应用基础1(基本结构、数据类型).ppt

上传人:小飞机 文档编号:5452212 上传时间:2023-07-08 格式:PPT 页数:86 大小:1.01MB
返回 下载 相关 举报
vhdl语言应用基础1(基本结构、数据类型).ppt_第1页
第1页 / 共86页
vhdl语言应用基础1(基本结构、数据类型).ppt_第2页
第2页 / 共86页
vhdl语言应用基础1(基本结构、数据类型).ppt_第3页
第3页 / 共86页
vhdl语言应用基础1(基本结构、数据类型).ppt_第4页
第4页 / 共86页
vhdl语言应用基础1(基本结构、数据类型).ppt_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《vhdl语言应用基础1(基本结构、数据类型).ppt》由会员分享,可在线阅读,更多相关《vhdl语言应用基础1(基本结构、数据类型).ppt(86页珍藏版)》请在三一办公上搜索。

1、第二章VHDL语言应用基础,参考书目及网络资源,VHDL硬件描述语言与数字逻辑电路设计,侯伯亨,西安电子科技大学出版社。VHDL与数字电路设计卢毅 科学出版社Verilog HDL 硬件描述语言清华大学出版社CPLD技术及应用宋万杰等 西安电子科技大学出版社可编程逻辑系统的VHDL设计技术Kevin Skahill 东南大学出版社 ALTERA可编程器件及其应用刘宝琴 清华大学出版社Xinlinx数字系统现场集成技术朱明程东南大学出版社,http:/http:/(学术科学/电路设计与调试版)dickhouhttp:/http:/,PART 1HDL,VHDL具有强大的行为描述能力,丰富的仿真语

2、句和库函数,对设计的描述也具有相对独立性 Verilog 最大特点就是易学易用,语法比较自由ABEL一种早期的硬件描述语言支持逻辑电路的多种表达形式,其中包括逻辑方程,真值表和状态图。AHDL(Altera HDL)是ALTERA公司发明的HDL,特点是非常易学易用,学过高级语言的人可以在很短的时间(如几周)内掌握AHDL。它的缺点是移植性不好,通常只用于ALTERA自己的开发系统。,VHDL,VHDL语言最初于1981年由美国国防部为解决所有电子产品存档而提出的一种统一标准语言,1983年至1985年,由IBM、TI等公司对VHDL进行细致开发,1987年成为IEEE 107687标准。19

3、93年,修订版IEEE 107693出台。随后,IEEE分别提出IEEE 1076.3(可综合标准)和IEEE 1076.4(标准),以解决可综合VHDL描述在不同EDA厂商之间的移植问题,以及ASIC/FPGA的门级库描述问题。,VERILOG,VERILOG语言最早由GATEWAY设计自动化公司于1981年提出,并提供相应的VERILOG仿真器。1985年,仿真器增强版VERILOG-XL推出。CADENCE公司于1989年收购GATEWAY公司,并于1990年把VERILOG语言推向市场,而保留了VERILOG-XL的所有权。1995年,VERILOG成为IEEE 1364标准。,就标准

4、而言,两种语言并无优劣、先后可言。至于设计者采用哪种语言,与设计者的习惯、喜好以及目前EDA、FPGA行业的支持有关。由于VHDL在系统设计方面的语法支持,各FPGA厂商对VHDL语言的支持明显多于Verilog,这可从各厂商所提供的设计开发包中得到明证。而Verilog由于在门级描述上的优势,从而被众多的IC设计人员所采用。,VHDL&VERILOG,常见的HDL工具,FPGA Express:VHDL/VerilogHDL综合软件,简单易用,但有人反映其对VerilogHDL的支持不够强,Synopsys公司出品。,FPGA CompilerII VHDL/VerilogHDL综合软件,S

5、ynopsys公司出品,Quartus:Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。,常见的HDL工具,Synplify:VHDL/VerilogHDL综合软件。Synplicity公司出品。,Active HDL VHDL/VerilogHDL仿真软件,简单易用。Aldec公司出品,Modelsim:VHDL/VerilogHDL仿真软件,功能比ActiveHDL强大,使用比ActiveHDL复杂。Mentor公司出品。,

6、常见的HDL工具,NC-Verilog/NC-VHDL:Cadence公司出品,很好的Verilog/VHDL仿真工具,其中NC-Verilog 的前身是著名的Verilog仿真软件:Verilog-XL,StateCAD 状态机设计软件,通过画框图可自动生成状态机的VHDL,VerilogHDL,或AHDL源代码文件。对熟练掌握HDL的人,实用价值不高,X-HDL:可实现VHDL和Verilog语言的相互自动转化,常见的HDL工具,Visial VHDL/Visal Verilog:可视化的HDL/Verilog编辑工具,功能类似于Renoir,Renoir 通过画框图来完成PLD/FPGA

7、的系统设计,可自动生成部分VHDL/VerilogHDL源代码文件,亦可由VHDL/VerilogHDL源代码生成原理框图。Renoir(输入),Leonardo.Spectrum(综合)和Modelsim(仿真)构成了Mentor公司引以为豪的VHDL/VerilogHDL完整开发系统:FPGA Advantage,PART 2The Basic Structure of VHDL,HDL=hardware description languageTextual HDLs replaced graphical HDLs in the 1980ies(better description of

8、 complex behavior).1981年美国国防部赞助了一个硬件描述语言的工作组,1983年形成了一个VHSIC(Very High Speed Integrated Circuits)硬件描述语言标准(VHDL:VHSIC Hardware Description Language),1984:first version of the language defined,based on ADA(which in turn is based on PASCAL)1987:revised version became IEEE standard 10761993:revised IEEE

9、 standardVHDL有过两个标准:IEEE Std 1076-1987(called VHDL 1987)IEEE Std 1076-1993(called VHDL 1993)more recently:VHDL-AMS:includes analog modeling,由于VHDL的开发环境的主体是仿真模拟器(simulator),VHDL的模拟与一般语言的模拟有以下不同:,模拟时间需要强调的是,这一概念是模拟所对应硬件的运行时间。它用时间步长规定了相对时间、绝对时间等序列。程序按模拟时间运行,相互间的延迟也按模拟时间计算。并发性并发性是模拟时间应用中的重要概念。例如,有几个加法器,

10、他们随着模拟时间的增长并行工作。其中的每个加法器都是在输入到来后就工作。这与硬件电路实际工作情况是一致的。,一个完整的VHDL语言程序通常包含实体(Entity)、构造体(Architecture)、配置(Configuration)、包集合(Package)和库(Library)5个部分。,实体用于描述所设计的系统的外部接口信号;构造体用于描述系统内部的结构和行为;包集合存放各设计模块都能共享的数据类型、常数和子程序等;配置用于从库中选取所需单元来组成系统设计的不同版本;库存放已经编译的实体、构造体、包集合和配置。,2.1 VHDL语言设计的基本单元及其构成,A circuit or sub

11、circuit described with VHDL code is called a design entity。The general structure of an entity has two main parts:the entity declaration,which specifies the input and output signals for the entity,and the architecture,which gives the circuit details.,VHDL for a 2-to-1 multiplexer,由上面的例子可以看出,实体说明是二选一器

12、件外部引脚的定义;而构造体则描述了二选一器件的逻辑电路和逻辑关系。,一、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.PACKAGE定义区,3.ENTITY定义区,4.ARCHITECTURE

13、定义区,定义元件库,5.CONFIGURATION定义区,定义使用哪些自定义元件库,定义电路实体的外观:I/O接口的规格,描述电路内部的逻辑功能,决定哪一个architecture被使用,1.VHDL基本结构图,2.ENTITY DECLARATION,功能:描述设计模块的输入/输出信号或引脚,并给出设计模块与外界的接口。实体类似一个“黑盒”,实体描述了“黑盒”的输入输出口。格式:ENTITY实体名ISGENERIC(类属表);PORT(端口表);END ENTITY 实体名,实际上,对VHDL而言,大写小写都一视同仁,不加区分。只是为了阅读方便,我们常常做一些区分。,(1)The name

14、of the entity,实体名实际上是器件名,最好根据相应的电路功能确定。如4位2进制计数器用counter4b;8位加法器用add8b;3/8译码器用ym_38。,实体名必须与文件名相同,否则无法编译。,实体名不能用工具库中定义好的元件名。,实体名不能用中文,也不能用数字开头。,实体名必须以字母开头,不能以下划线结尾。,(2)GENERIC,类属表:用以将信息参数传递到实体。类属表的一般格式为:GENERIC(常数名:数据类型:=设定值)GENERIC(awidth:INTEGER:=3;timex:time);其中:常数名由设计者确定;数据类型通常取INTEGER或time等;在表中提

15、供时间参数、总线宽度等信息。,端口表:指明实体的输入、输出信号极其模式。端口表的一般格式为:PORT(端口名:端口模式数据类型)端口模式:共四种:IN(输入)、OUT(输出)、INOUT(双向端口)、BUFFER(输出并向内部反馈),(3)PORT,数据类型:VHDL作为一种强类型语言,必须对数据对象(常量、变量、信号)规定取值范围,即对传输或存储数据的类型作明确的界定。,EXAMPLE,ENTITY black_box IS Generic(constant width:integer:=7;);PORT(clk,rst:INstd_logic;d:IN std_logic_vector(w

16、idth DOWNTO 0);q:OUTstd_logic_vector(width DOWNTO 0);co:OUT std_logic);END black_box;,Exercise 1,编写包含以下内容的实体代码端口 D 为12位输入总线 端口 OE 和 CLK 都是1位输入端口 AD 为 12位双向总线端口 A为12位输出总线端口 INT 是1位输出端口 AS 是一位输出同时被用作内部反馈,answer,LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY my_design IS PORT(d:IN std_logic_vector(11

17、DOWNTO 0);oe,clk:IN std_logic;ad:INOUT std_logic_vector(11 DOWNTO 0);a:OUT std_logic_vector(11 DOWNTO 0);int:OUT std_logic;as:BUFFER std_logic);END my_design;,Exercise 2,1、编写包含全加器的实体代码。2、编写4选1数据选择器的实体代码。,3.ACHITECTURE,结构体:通过若干并行语句来描述设计实体的逻辑功能(行为描述)或内部电路结构(结构描述),从而建立设计实体输出与输入之间的关系。一个设计实体可以有多个结构体。格式:A

18、RCHITECTURE 结构体名 OF 实体名 IS 说明语句;BEGIN 并行语句;END ARCHITECTURE 结构体名;,VHDL结构体术语,说明语句:用于定义结构体中所用的数据对象和子程序,并对所引用的元件加以说明,但不能定义变量。并行语句 并行语句有五种类型,可以把它们看成结构体的五种子结构。这五种语句结构本身是并行语句,但内部可能含有并行运行的逻辑描述语句或顺序运行的逻辑描述语句,如进程内部包含的即为顺序语句。五种语句结构分别为块语句、进程语句、信号赋值语句、子程序调用语句和元件例化语句。,结构体结构图,The relationship between the entity a

19、nd architecture,Structure描述 描述该设计单元的硬件结构,即该硬件是如何构成的,类似于数字电路中的逻辑图描述.Date Flow描述 它是类似于寄存器传输级的方式描述数据的传输和变换,以规定设计中的各种寄存器形式为特征,然后在寄存器之间插入组合逻辑。与数字电路中的真值表描述相似。Behavior Process描述 只描述所希望电路的功能或者电路行为(输入输出间转换的行为),而没有指明或涉及实现这些行为的硬件结构。与数字电路中的逻辑表达式描述相似。,Three kinds of description for the architecture,architecture

20、one of mux21 is single d,e:bit;begin d=a and(not)s;e=b and s;y=d or e;end one;,Structure Description,architecture one of mux21 isbegin y=(a and(not s)or(b and s);end one;,Behavior Process Description,architecture one of mux21 isbegin y=a when s=0 else b;end one;,Date Flow Description,结构体行为描述举例,2 X 8

21、 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译码器的设计实例,从整体结构上初步认识VHDL的基本结构和语句特点。2、38译码器的电路图如图所示,有4个输入端(A0、A1、A2、EN),8个输出端(Y0Y7)3、步骤:定义元件库、实体、

22、结构体、编译、仿真。,返 回,A0,A1,A2,EN,Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,3-8译码器,PART 3 Basic Data Type in VHDL Code,一、Data Objects(是数据类型的载体)Information is represented in VHDL code as data objects.Three kinds of data objects are provided:,Constant(常量)Variable(变量)Signal(信号)对象的说明格式为:对象类别 标识符表:类型标识:=初值,例:,数据对象名,数据对象类型,数据对象值的

23、类型,(1)常量声明,常量是全局量,在结构描述、程序包说明、实体说明、过程说明、函数调用说明和进程说明中使用。例:constant WIDTH:INTEGER:=8;constant delay:TIME:=25ns;,(2)变量声明,定义了给定类型的变量名称。例:variable A,B:BIT;variable INIT:NEW_BIT,变量赋值,整体赋值:temp:=“10101010”;temp:=x”AA”;逐位赋值:temp(7):=1;多位赋值temp(7 downto 4):=“1010”;,(3)信号声明,信号可以将结构体中分离的并行语句连接起来,并且通过端口其他模块与该设计

24、内的连接起来。信号为器件内部节点信号,数据的进出不像端口信号那样受限制,不必定义其端口模式。定义信号的目的是为了在设计电路时使用该信号。用“=”来给信号赋值 例:signal A,B:BIT;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

25、ISPORT(a,b,c,d:IN Std_Logic;g:OUT Std_Logic);END simp;ARCHITECTURE logic OF simp ISSIGNAL e,f:Std_Logic;BEGINe=a or b;f=not(c or d);g=e and f;END logic;,信号和变量的作用范围,信号和变量的区别,信号、变量、常数对比,1、定义,Signal A:std_logic;,Variable A:std_logic_vector(7 downto 0);,Constant A:integer:=6;,2、赋值及赋值时刻,A=“1010”;(延时),A:=

26、“1010”;(立刻),3、定义区域,信号:实体、结构体、程序包,变量:进程、子程序,常数:实体、结构体、程序包、块、进程、子程序,4、适用范围,信号:实体、结构体、程序包,变量:定义了变量的进程、子程序的顺序语句中,常数:视其定义的位置而定,若常数定义在实体中,适用范围是实体所对应的有结构体。若常数定义在结构体中,适用范围就是本结构体。,现在来看一下例中两个进程描述的语句。首先,由于信号A发生变化使进程语句开始执行。这样一来,仿真器对进程中的各语句自上至下的进行处理。,尽管D中先代入A值,后代入C值,在时间上有一个延时,但是在代入时由于不进行处理,因此仿真时认为是时间0值延时。因此D的最终值

27、应为C。,结果:,这里D是变量。在执行“D:=A;”语句以后,A的值就被赋给D,所以X为B+A.此后又执行“D:=C;”,从而使Y为B+C。,所以,从这两个例题可以看出,信号量的值将进程语句最后所代入的值作为最终代入值。而变量的值一经赋值就变成新的值。这就是变量赋值和信号代入在操作上的区别。,执行结果为:,x=c xor b,y=c xor b,执行结果为:,x=c xor a,y=c xor b,二、Data Type,1.标准定义的数据类型 不必用USE说明而直接使用。1)Boolean(布尔量):取值为FALSE和TRUE。2)Character(字符):使用时用单引号括起来,如:A。注

28、意:此时要分大小写,与a不一样。3)String(字符串):使用时用双引号括起来,如:111000101。4)Integer(整数):范围在-(231-1)(231-1)5)Real(实数):范围在-1.0E+38+1.0E+38,6)Bit(位):取值为0或1.7)Time(时间):取值范围与整数一致,一般用于仿真。整数与单位之间至少留一个空格:5 sec8)Bit_vector(位矢量):基于BIT数据类型的数组。使用时必需注明宽度。9)Natural(自然数)和Positive(正整数):是整数的一个子类型。10)Severity level(错误等级):用来设计系统的工作状态。有四种状

29、态值:NOTE(注意)、WARNING(警告)、ERROR(错误)、FAILURE(失败)。,由于VHDL 语言属于强类型语言,在仿真过程中,首先要检查赋值语句中的类型和区间,任何一个信号和变量的赋值均须落入给定的约束区间中,也就是说要落入有效数值的范围中。约束区间的说明通常跟在数据类型说明的后面。例如:INTEGER RANGE 100 DOWNTO 1 BIT_VECTOR(3 DOWNTO 0)REAL RANGE 2.0 TO 30.0这里,DOWNTO表示下降,TO 表示上升,2.用户自定义的数据类型,1)Enumeration Types(枚举类型)格式如下:TYPE 数据类型名

30、IS(枚举文字,枚举文字);例如:TYPE color IS(red,green,yellow,blue);TYPE level IS(0,1,Z);2)Integer Types(整数类型)和 Real Types(实数类型)格式为:TYPE 数据类型名 IS RANGE 约束范围;例如:TYPE int IS INTEGER RANGE-10 TO 10;3)Array Types(数组类型)格式如下:TYPE 数据类型名 IS ARRAY(索引范围)OF类型名称;例如:TYPE a IS ARRAY(integer0 TO 9)OF std_logic;,3.IEEE预定义标准逻辑位与矢

31、量,在IEEE的程序包std_logic_1164中定义了两个非常重要的数据类型。1)std_logic:工业标准的逻辑类型。取值为0(强0)、1(强1)、Z(高阻态)、X(强未知的)。2)std_logic_vector:工业标准的逻辑类型。std_logic的组合。注意:使用这两种数据时,程序中必须声明:LIBRARY IEEE;,Std_Logic Types,IEEE std_logic_ 1164中定义的一种数据类型,它包含9种取值分别为:U未初始化用于仿真 X强未知用于仿真 0强0用于综合与仿真 1强1用于综合与仿真 Z高阻用于综合与仿真 W弱未知用于仿真 L弱0用于综合与仿真 H

32、弱1用于综合与仿真 _忽略用于综合与仿真,练习:,1定义信号 A1,A2,A3,A4,A5,A6,A7,A8,其中每一位信号均为标准逻辑型,2.定义信号B,其数据类型为标准逻辑型。,3.定义信号C,数据类型为整数型。,4.给A、B赋值,其中A的值为11001101;B的值为0。,Library IEEE,Signal A:std_logic_vector(1 to 8),Signal B:std_logic,Signal C:integer,Library Std,A=“11001101”,B=0,三、Documentation in VHDL Code,标识符是VHDL语言的最基本的要素之一

33、,是使用VHDL语言的基础。标识符是描述VHDL语言中端口、信号、常数、变量以及函数等的名称的字符串。VHDL标识符书写规则如下:1)使用的字符由26个英文字母、数字09以及下划线组成;2)标识符必须以英文字母开始,不区分大小写;3)不能以下划线结尾;4)标识符中不能有空格;5)标识符不能与VHDL的关键字重名。,四、OPERATORS,(1)Arithmetic Operators,+加*乘方 减 MOD 求模*乘 REM 求余/除 ABS 求绝对值,(2)Relational Operators,=等于/=不等于 小于=小于或等于 大于=大于或等于其中=符号也用于信号的赋值操作,(3)Bo

34、olean Operators,AND 逻辑与 SLL 逻辑左移OR 逻辑SRL 逻辑右移NAND 逻辑与非 SLA 算术左移NOR 逻辑或非 SRA 算术右移XOR 逻辑异或 ROR 逻辑循环右移NOT 逻辑非 ROL 逻辑循环左移,PS:逻辑操作符的用法,1.操作数的数据类型必须符合操作符的要求,能进行逻辑运算的数据类型:bit、bit_vector、boolean,std_logic、std_logic_vector,例,Signal a,b,y:std_logic;,Signal c,d,z:integer;,y=a and b;,z=c and d;,2.表达式中有多个运算符时一般要

35、加括号,表达式中有多个运算符时一般要加括号,但and、or、xnor除外,例,Signal a,b,c,d:std_logic_vector(3 downto 0);,Signal e,f,g,h:std_logic_vector(1 downto 0);,d=a and b and c;,d=a or b or c;,d=a xnor b xnor c;,h=e nor f nor g;,h=(e nor f)nor g;,3.运算符两侧的操作数要对称,d=(e nor f)nor g;,Library IEEE,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY lit

36、i IS,PORT(a,b,c,d:IN STD_LOGIC;,e:out STD_LOGIC);,END liti;,ACHITECTURE AA1 OF liti IS,BEGIN,e=(a and b)or tmp;,Signal tmp:std_logic;,tmp=c xor d;,END AA1;,例:,Variable a1:std_logic_vector(3 to 0);,a1:=“1011”;,a1 SLL 1;,a1=0110,a1 SLL 2;,a1=1100,a1 ROL 1;,a1=0111,a1 SRA 1;,a1=1101,a1 SLA 2;,a1=1111,P

37、S:算术运算符,例1:,Variable a,b,c,d,e,f:integer range 0 to 255;a:=b+c;d:=e f;,例2:,Signal a:std_logic_vector(4 to 0);,Signal b:std_logic_vector(2 to 0);,Signal c:std_logic_vector(1 to 0);,a=b c,五、ATTRIBUTE,VHDL属性(Attribute)是指实体、结构体、类型及信号的一些表现特征。一般需要了解VHDL中的数值类属性、函数类属性以及范围类属性。其引用的一般形式均为:对象属性。,1数值类属性,数值类属性可用于

38、返回数组、块或一般数据的有关属性。如左边界(left)、右边界(right)、下限值(low)、上限值(high)和数组长度(length)。例如:TYPE number IS INTEGER RANGE 9 downto 0;这个整型数据的各属性值如下:numberleft=9;numberright=0;numberlow=0;numberhigh=9;,2函数类属性,函数类属性用来返回有关信号行为功能的信息。如信号属性函数:event,它的值为布尔型,如果刚好有事件发生在该属性所附着的信号上(即信号有变化),则其取值为True,否则为False。利用此属性可决定时钟边沿是否有效,即时钟是

39、否发生。例如:时钟边沿表示SIGNAL clk:IN std_logic则:clkevent AND clk=1,表示时钟的上升沿。clkevent AND clk=0,表示时钟的下降沿。,3范围类属性,范围(RANGE)类属性,用来生成一个限制性数据对象的范围。例如:数据总线的范围SIGNAL data_bus:std_logic_vector(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 ISBEGIN y=a AND b AND c;END example2;,练 习 答 案,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号