在系统可编程技术与应用(语言概述基本结构语言元素)课件_第1页
在系统可编程技术与应用(语言概述基本结构语言元素)课件_第2页
在系统可编程技术与应用(语言概述基本结构语言元素)课件_第3页
在系统可编程技术与应用(语言概述基本结构语言元素)课件_第4页
在系统可编程技术与应用(语言概述基本结构语言元素)课件_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章VHDL语言n4.1 VHDL语言概述n4.2 VHDL基本结构n4.3 VHDL语言元素n4.4 VHDL的描述风格n4.5 VHDL的主要描述语句n4.6 设计举例1在系统可编程技术与应用(语言概述基本结构语言元素)4.1 VHDL语言概述VHDL :Very High Speed Integrated Circuit Hardware Description Language超高速集成电路硬件描述语言2在系统可编程技术与应用(语言概述基本结构语言元素)1. 硬件描述语言的诞生与发展n人们为了把复杂的电子电路用文字文件方式描述并保存下来,方便他人了解电路内容,就诞生了最初的硬件描述语

2、言。n到了90年代后期,由于硬件描述语言的完善,尤其是相应的编译,测试,合成,布线等电子设计自动化(EDA)工具软件的发展与完善,硬件描述语言(HDL)终于进入了成熟实用阶段。n这无疑是(数字)电路设计史上最具革命性的飞跃。自此,人们实现了用简明易懂的高级编程语言设计复杂硬件电路的梦想。只要具备一定的硬件专门知识,就能随心所欲地设计出功能十分强大的专用智能电路,实现了“以软代硬”。n当前国内外主流硬件描述语言有VHDL和Verilog HDL。3在系统可编程技术与应用(语言概述基本结构语言元素)VHDLn1980年:美国国防部制定VHSIC(Very High Speed Integrated

3、 Circuit)计划。n1983年:IBM、TI和Intermetrics联合开发语言和仿真工具(VHDL)主要考虑自顶向下的设计和工艺进步引起的系统升级。n1985年完成第一版。n1987年:美国国防部要求所有数字电路用VHDL描述,并决定F-22战斗机项目采用VHDL,发布IEEE标准IEEE1076-1987。n1993年增修为IEEE1164标准并使用至今。n1996年又加入电路合成标准程序和规格,成为IEEE1076.3标准。美国国防部规定其为官方ASIC设计语言。n1995年,中国国家技术监督局出版的CAD通用技术规范中,推荐VHDL为我国硬件描述语言的国家标准。4在系统可编程技

4、术与应用(语言概述基本结构语言元素)Verilog HDLn以C语言为基础,由GDA(Gateway Design Automation)公司的Phil Moorby创建于1983年。n1989年CADENCE公司收购了GDA公司,拥有了Verilog HDL的独家专利。n于1990年正式发表了Verilog HDL,并成立OVI(Open Verilog International)组织推进其发展。n1995年CADENCE公司放弃了Verilog HDL专利,使之成为IEEE标准(IEEE1364)。 5在系统可编程技术与应用(语言概述基本结构语言元素)2. VHDL与Verilog HD

5、L的比较n不存在优劣之分。n相同电路用这两种硬件描述语言分别编码,长度也大体相同。n现在常用的各种仿真/综合工具均为二者通用。n在日本,VHDL用户略多于Verilog HDL,例如:NEC,日立,福田电子,丸文等公司通常习惯使用VHDL;而松下,CASIO等公司习惯使用Verilog HDL。n和习惯有关,一个公司通常习惯于使用其中一种。6在系统可编程技术与应用(语言概述基本结构语言元素)nVHDL“告诉我你想要电路做什么,我给你提供能实现这个功能的硬件电路”。nVerilog HDL和VHDL类似。nABEL、AHDL“告诉我你想要什么样的电路,我给你提供这样的电路”。7在系统可编程技术与

6、应用(语言概述基本结构语言元素)国内硬件描述语言书籍的常见问题n往往片面夸大某一种硬件描述语言的长处。n书中的例子尽管都声称通过了仿真合成验证,但仍常见一些语法错误,编译时会出现“错误”或“警告”。请大家不要过分相信教科书上的语法。n脱离实际应用,仅仅介绍最基本的概念和语法规定,虽有较复杂的例子但却少有解释,难于理解。对实际应用中至关重要的编码技巧和避免出错的注意事项,却往往只字不提。因此,新手入门往往要走很长的弯路。 8在系统可编程技术与应用(语言概述基本结构语言元素)硬件描述语言的近期发展n目前及今后若干年内,VHDL和Verilog HDL仍将是硬件描述语言主角。因为它们已经经过无数应用

7、实例的验证,能够满足各类复杂的逻辑功能要求,各种配套工具软件也非常成熟完善。n至于Spec C, System C等新型硬件描述语言,将来成为主流还是被淘汰出局,则与语言本身以及各种配套工具软件是否功能更加强大,使用更加简便,更易于学习掌握,以及与人们已经习惯的语言及工具是否有相似性和延续性等因素有关。 9在系统可编程技术与应用(语言概述基本结构语言元素)硬件描述语言(VHDL)的突出优点n打破了IC设计者与使用者的界线,使原先的IC使用者在掌握了VHDL之后,都变成了IC设计者,都能够随心所欲地设计出具备多个CPU功能的复杂专用芯片。nVHDL及其配套工具软件简单易学,直观明了,便于迅速掌握

8、,也便于修改。n极大地缩短了专用芯片的开发周期,降低开发成本,加快了产品更新换代的速度,提高产品的市场竞争力。n大大缩小电路板面积和整机体积,提高产品可靠性,增强产品功能,实现技术保密。n可实现电路设计的模块化和积木式多级组合。各模块均可在今后被重复再利用(调用)。n完全实现拥有整机的自主知识产权,不再在关键芯片(专用芯片)的进口及价格方面受制于人。这一点对目前我国尤为重要。 10在系统可编程技术与应用(语言概述基本结构语言元素) VHDL程序设计约定n语句结构描述中方括号 内的内容为可选内容。n对于VHDL的编译器的综合器来说,程序文字的大小写是不加区分的。 建议:对于VHDL中使用的关键词

9、用大写,对于由用户自己定义的名称等用小写。n程序中的注释使用双横线-。 在VHDL程序中,双横线后的程序或文字都不参加编译和综合。n为了使同一个VHDL源程序文件能适应各个EDA开发软件上的使用要求,各个源程序文件的命名均与实体名一致。11在系统可编程技术与应用(语言概述基本结构语言元素)4.2 VHDL基本结构 n4.2.1 实体n4.2.2 结构体n4.2.3 块、子程序和进程 n4.2.4 库和程序包 n4.2.5 配置 12在系统可编程技术与应用(语言概述基本结构语言元素)实际器件外观13在系统可编程技术与应用(语言概述基本结构语言元素)库 程序包实体元件定义结构体逻辑功能描述2选1多

10、路选择器的VHDL描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21 ISPORT ( a, b : IN STD_LOGIC; s : IN STD_LOGIC; y : OUT STD_LOGIC);END ENTITY mux21;ARCHITECTURE behave OF mux21 ISBEGIN y = a WHEN s=0 ELSE b WHEN s=1;END ARCHITECTURE behave; 14在系统可编程技术与应用(语言概述基本结构语言元素)VHDL程序的基本结构实体(ENTITY)结构体(ARCHIT

11、ECTURE)配置(CONFIGURATION)库、程序包使用说明GENERIC类属说明PORT端口说明结构体说明结构体功能描述设计实体15在系统可编程技术与应用(语言概述基本结构语言元素)n设计实体是VHDL语言设计的基本单元,简单的可以是一个与门,复杂的可以是一个微处理器或一个数字系统,其结构基本是一致的。n设计实体通常包含实体(ENTITY)、结构体(ARCHITECTURE)、配置(CONFIGURATION)、包集合(PACKAGE)和库(LIBRARY)5个部分。n其中实体和结构体这两个基本结构是必需的,他们可以构成最简单的VHDL程序。n实体是对这个设计实体与外部电路进行接口的描

12、述,它规定了设计单元的输入输出接口信号或引脚,是设计实体对外的一个通信界面。n结构体用于描述此设计实体的逻辑结构和逻辑功能。16在系统可编程技术与应用(语言概述基本结构语言元素)4. 2. 1 实体实体n实体功能:对设计实体与外部电路进行接口描述。n实体语句结构: ENTITY 实体名 IS GENERIC(类属表); PORT(端口表); END ENTITY 实体名;ENTITY mux21 ISPORT ( a,b : IN STD_LOGIC; s : IN STD_LOGIC; y : OUT STD_LOGIC);END ENTITY mux21;实体名端口表2选1多路选择器17在

13、系统可编程技术与应用(语言概述基本结构语言元素)n实体应以语句“ENTITY 实体名 IS”开始。n语句“END ENTITY 实体名;”结束。 n在层次化系统设计中,实体说明是整个模块或整个系统的输入输出(I/O)接口。n在一个器件级的设计中,实体说明是一个芯片的输入输出(I/O)。18在系统可编程技术与应用(语言概述基本结构语言元素)1. 类属(GENERIC)说明语句n类属说明语句是实体中的可选项,放在端口说明之前。n类属说明的一般格式为: GENERIC(常数名:数据类型:=设定值; 常数名:数据类型:=设定值); 19在系统可编程技术与应用(语言概述基本结构语言元素)GENERIC

14、(trise,tfall:TIME:=1ns; Addrwidth:INTEGER:=16);PORT(a0, a1 : IN STD_LOGIC; Add_bus:OUT STD_LOGIC_VECTOR(addrwidth-1 DOWNTO 0); n这里类属参量中参数trise为上升沿宽度,tfall为下降沿宽度,用于仿真模块的设计。n定义地址总线的宽度为Addrwidth位,类属值Addrwidth的改变将使结构体中所有相关的总线定义同时改变,由此使整个设计实体的硬件结构发生变化。例:20在系统可编程技术与应用(语言概述基本结构语言元素)2. 端口(PORT)说明语句n由PORT引导的

15、端口说明语句是对一个设计实体界面的说明。n格式如下: PORT(端口名:端口模式 数据类型; 端口名:端口模式 数据类型);21在系统可编程技术与应用(语言概述基本结构语言元素)n端口名 端口名是设计者为实体的每一个对外通道所取的名字。通常为英文字母加数字,名字的定义有一定的惯例,如clk表示时钟,D开头的端口名表示数据,A开头的端口名表示地址。22在系统可编程技术与应用(语言概述基本结构语言元素)n端口模式 定义端口上数据的流动方向和方式。nIN: 单向只读模式,数据只能通过此端口被读入实体中。nOUT:单向输出模式,数据只能通过此端口从实体向外流出,或者说将实体中的数据向此端口赋值。nIN

16、OUT:输入输出双向端口。nBUFFER:功能与INOUT类似,区别在于允许内部回读输出的信号,即反馈。23在系统可编程技术与应用(语言概述基本结构语言元素)INOUTINOUTBUFFER端口模式24在系统可编程技术与应用(语言概述基本结构语言元素)OUT与BUFFER的区别LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY test2 IS port(a: in STD_LOGIC; b: buffer STD_LOGIC; c: out STD_LOGIC);END test2;ARCHITECTURE behave OF test2 ISBE

17、GIN b = not(a); c = b;END behave;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY test1 IS port(a: in STD_LOGIC; b,c: out STD_LOGIC);END test1;ARCHITECTURE behave OF test1 ISBEGIN b = not(a); c = b; -错误!错误!END behave;25在系统可编程技术与应用(语言概述基本结构语言元素)n在VHDL设计中,通常将输入信号端口指定为输入模式;n输出信号端口指定为输出模式;n而双向数据通信信号,如计算机

18、PCI总线的地址/数据复用总线,DMA控制器数据总线等纯双向的信号采用双向端口模式。n从端口的名称、模式就能一目了然地指导信号的用途、性质、来源和去向。 26在系统可编程技术与应用(语言概述基本结构语言元素)4.2.2 结构体n结构体描述设计实体的结构和行为,即描述一个实体的功能。n结构体对其基本设计单元的输入和输出关系可用以下三种方式进行描述,即行为描述(基本设计单元的数学模型描述)、寄存器传输描述(数据流描述)和结构描述(逻辑元件连接描述)。 n结构体是对实体功能的具体描述,因此它一定要跟在实体的后面。27在系统可编程技术与应用(语言概述基本结构语言元素)结构体一般由两大部分组成:n对数据

19、类型、常数、信号、子程序和元件等因素进行说明的部分;n描述实体的逻辑行为、以各种不同的描述风格表达的功能描述语句,包括各种顺序语句和并行语句。28在系统可编程技术与应用(语言概述基本结构语言元素)ARCHITECTURE 结构体名 OF 实体名 IS 定义语句 - -对结构体中用到的信号、元件、常数等加以说明的语句。BEGIN 功能描述语句 - -电路功能描述语句,可以是并行语句,顺序语句或混合。END 结构体名; 结构体的语句格式为:29在系统可编程技术与应用(语言概述基本结构语言元素)1. 结构体名n对结构体名由设计者自行定义,OF后面的实体名指明了该结构体所对应的是哪个实体。n有些设计实

20、体有多个结构体,这些结构体的结构体名不可相同,通常用dataflow(数据流)、behavior(行为)、structural(结构)命名。n这3个名称体现了3种不同结构体的描述方式,使得阅读VHDL语言程序时,能直接了解设计者采用的描述方式。 30在系统可编程技术与应用(语言概述基本结构语言元素)2. 结构体信号定义语句n结构体信号定义语句必须放在关键词ARCHITECTURE和BEGIN之间,用于对结构体内部将要使用的信号、常数、数据类型、元件、函数和过程加以说明。n需要注意的是实体说明中定义的信号是外部信号,而结构体定义的信号为该结构体的内部信号,它只能用于这个结构体中。n结构体中的信号

21、定义和端口说明一样,应有信号名称和数据类型定义。因为它是内部连接用的信号,因此不需要方向说明。 31在系统可编程技术与应用(语言概述基本结构语言元素)ARCHITECTURE rtl OF muj ISSIGNAL s1:BITSIGNAL s2,s3:STD_LOGIC_VECTOR (0 TO 3); BEGIN END rtl; 实体名实体名结构体名结构体名功能描述语句功能描述语句结构体信号定义语句结构体信号定义语句例:结构体的信号定义实例32在系统可编程技术与应用(语言概述基本结构语言元素)3. 结构体功能描述语句n结构体功能描述语句位于BEGIN和END之间,具体地描述了构造体的行为

22、及其连接关系。n结构体的功能描述语句可以含有5种不同类型的并行语句,如图所示。n每一语句结构内部可以使用并行语句,也可以是顺序语句。 33在系统可编程技术与应用(语言概述基本结构语言元素)结构体( ARCHITECTURE)说明语句功能描述语句块语句(BLOCK)进程语句(PROCESS)信号赋值语句子程序调用语句元件例化语句结构体构造图: 34在系统可编程技术与应用(语言概述基本结构语言元素)图中5种功能描述语句的基本组成和功能n块语句 是由一系列并行语句构成的组合体,它的功能是将结构体中的并行语句组成一个或多个子模块。n进程语句 定义顺序语句模块,用以将从外部获得的信号值或内部运算数据向其

23、他的信号进行赋值。n信号赋值语句 将设计实体内的处理结果向定义的信号或界面端口进行赋值。n子程序调用语句 可以调用进程或参数,并将获得的结果赋值于信号。n元件例化语句 对其他的设计实体做元件调用说明,并将此元件的端口与其他元件、信号或高层实体的界面端口进行连接。35在系统可编程技术与应用(语言概述基本结构语言元素)ENTTITY mux2 ISPORT (d0,d1:IN BIT; sel:IN BIT; s:OUT BIT);END mux2;ARCHITECTURE dataflow OF mux2 IS SIGNAL sig:BIT;BEGIN Sig = (d0 AND sel) OR

24、 (NOT sel AND d1); S=sig;END dataflow; 功能描述语句功能描述语句信号定义语句(信号定义语句(内部信号,无方向内部信号,无方向)例: 2选1数据选择器36在系统可编程技术与应用(语言概述基本结构语言元素)4. 2. 3 块、子程序和进程 1.块语句(BLOCK)在较大规模的电子系统设计中,传统的硬件电路设计通常包括一张系统总电路原理图和若干张子原理图。在VHDL程序设计中,结构体是由多个BLOCK块构成的,如果将结构体比做总电路原理图,那么,每个BLOCK块则相当于一张子原理图。 37在系统可编程技术与应用(语言概述基本结构语言元素)块标号:BLOCK 接口

25、说明 类属说明 BEGIN 并行块语句END BLOCK(块标号); BLOCK块语句的结构38在系统可编程技术与应用(语言概述基本结构语言元素)例:例: B1: BLOCK SIGNAL s1:BIT; BEGIN s1 = a AND b; B2: BLOCK SIGNAL s2:BIT; BEGIN s2= c AND d; B3: BLOCK BEGIN Z = s2; END BLOCK B3; END BLOCK B2; y= s1; END BLOCK B1; 39在系统可编程技术与应用(语言概述基本结构语言元素)2. 进程(PROCESS)nPROCESS结构是最能体现VHDL

26、语言特色的语句。n与BLOCK语句一样,利用PROCESS语句结构可以描述一个功能独立的电路。n与BLOCK语句不同之处是,在系统仿真时,PROCESS结构中的语句是按顺序逐条向下执行的,而不像BLOCK语句那样并发执行。n一个结构体中可以有多个并行运行的进程结构,每一个进程内部是由一系列顺序语句来构成的。40在系统可编程技术与应用(语言概述基本结构语言元素)进程标号 PROCESS (敏感信号表) IS进程说明语句BEGIN 顺序描述语句END PROCESS 进程标号; 注意:注意:在多个进程的结构体描述中,进程标号是区分各个进程的标志。但是进程标号并不是必需的。单进程以PROCESS开始

27、,以END PROCESS结束。 PROCESS语句的结构41在系统可编程技术与应用(语言概述基本结构语言元素)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY nor2_v2 IS PORT( a, b: IN STD_LOGIC; y: OUT STD_LOGIC);END nor2_v2;- y y y y y y =X; END CASE; END PROCESS;END behave; - X: 不定不定43在系统可编程技术与应用(语言概述基本结构语言元素)3.子程序(SUBPROGRAM)nVHDL程序与其他软件语言程序中应用子程序的目

28、的是相似的,即能够更有效地完成重复性的工作。n子程序模块是利用顺序语句定义和完成算法的,但子程序不能像进程那样可以从本结构体的其他块或进程结构中读取信号值或向信号赋值,只能通过子程序调用与子程序的界面端口进行通信。n子程序被调用时,首先要初始化,执行处理功能后,将处理结果传递给主程序。44在系统可编程技术与应用(语言概述基本结构语言元素)子程序有两种类型:n过程(PROCEDURE)n函数(FUNCTION)45在系统可编程技术与应用(语言概述基本结构语言元素)过程语句的书写格式为:PROCEDURE 过程名(参数表)IS 说明部分 BEGIN 过程语句部分END PROCEDURE 过程名;

29、 过程(PROCEDURE)46在系统可编程技术与应用(语言概述基本结构语言元素)PROCEDURE vector_to_int (a: IN STD_LOGIC_VECTOR; x_flag: OUT BOOLEAN; q: INOUT INTEGER) ISBEGIN q := 0; x_flag := FALSE; FOR i IN aRANGE LOOP q := q*2; -*: 乘, *:乘方 IF (a (i) =1) THEN q := q+1; -矢量转换成整数矢量转换成整数例:用过程语句设计的子程序47在系统可编程技术与应用(语言概述基本结构语言元素) ELSE (a (i

30、) /=1) THEN - /=:不等 x_flag := TRUE; END IF; END LOOP;END vector_to_int;这个过程名为vector_to_int实现将位矢量转换成整数的功能,在过程语句执行结束后,将输入值拷贝到调用者的OUT和INOUT所定义的变量中,完成子程序和主程序之间的数据传递。 48在系统可编程技术与应用(语言概述基本结构语言元素)函数的语言书写格式为: FUNCTION 函数名 (参数表) RETURN 数据类型 IS 说明部分; BEGIN 顺序语句; RETURN 返回变量名; END RETURN 函数名; 函数49在系统可编程技术与应用(语

31、言概述基本结构语言元素) 库和程序包用来描述和保留元件、类型说明函数、子程序等,以便在其它设计中可以随时引用这些信息,提高设计效率。 4.2.4 库和程序包库和程序包 50在系统可编程技术与应用(语言概述基本结构语言元素)库是经编译后的数据的集合,它存放包集合定义、实体定义、结构定义和配置定义。库语句的格式为: LIBRARY 库名; 1. 库(LIBRARY)51在系统可编程技术与应用(语言概述基本结构语言元素)USE语句指明库中的程序包。一旦说明了库和程序包,整个设计实体都可以进入访问或调用,但其作用范围仅限于所说明的设计实体。USE语句的使用将使所说明的程序包对本设计实体部分或全部开放。

32、 USE语句52在系统可编程技术与应用(语言概述基本结构语言元素)USE 库名.程序包名.项目名;USE 库名.程序包名.ALL; n第一种语句格式的作用是向本设计实体开放指定库中的特定程序包内的所选定的项目。n第二种语句格式的作用是向本设计实体开放指定库中的特定程序包内的所有内容。USE语句有以下两种常用的格式:53在系统可编程技术与应用(语言概述基本结构语言元素)例如: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_1164.STD_ULOGIC;n第一个USE语句表明打开IEEE库中的STD_LOGIC_116

33、4程序包,并使程序包中的所有公共资源对本语句后面的VHDL设计实体程序全部开放,关键词ALL代表程序包中的所有资源。n第二个USE语句开放了程序包STD_LOGIC_1164中的STD_ULOGIC数据类型。 nSTD_ULOGIC :可枚举数据类型。54在系统可编程技术与应用(语言概述基本结构语言元素)注意:库说明语句的作用范围从一个实体说明开始到它所属的结构体、配置为止,当一个源程序中出现两个以上实体时,两条作为使用库的说明语句应在每个设计实体说明语句前重复书写。 例:LIBRARY IEEE; -库使用说明USE IEEE.STD_LOGIC_1164.ALL;ENTITY and IS

34、 END and;ARCHITECTURE dataflow OF and IS END dataflow;55在系统可编程技术与应用(语言概述基本结构语言元素)CONFIGURATION c1 OF and IS - CONFIGURATION(配置) AND c1;LIBRARY IEEE; -库使用说明 USE IEEE.STD_LOGIC_1164.ALL;ENTITY or ISCONFIGURATION c2 OF and IS AND c2;56在系统可编程技术与应用(语言概述基本结构语言元素)2. 程序包n程序包主要用来存放各个设计都能共享的数据类型、子程序说明、属性说明和元件

35、说明等部分。n设计者使用时只要用USE子句进行说明即可。57在系统可编程技术与应用(语言概述基本结构语言元素)程序包由两部分组成:程序包首和程序包体程序包的一般书写格式如下:PACKAGE 程序包名 ISEND PACKAGE 程序包名; -程序包首PACKAGE BODY 程序包名 IS -程序包体END PACKAGE BODY 程序包名; 58在系统可编程技术与应用(语言概述基本结构语言元素)n程序包由程序包首和程序包体两部分组成。n程序包首定义了数据类型和函数的调用说明。n程序包体中才具体描述实现该函数功能的语句和数据的赋值。n这种分开描述的好处是,当函数的功能需要做某些调整或数据赋值

36、需要变化时,只要改变程序包体的相关语句就可以了,而无需改变程序包首的说明,这样就使得需要重新编译的单元数目尽可能的减少了。 59在系统可编程技术与应用(语言概述基本结构语言元素)4.2.5 配置 n用VHDL描述硬件电路时,常常采用结构描述方式和混合描述方式。n在这两种描述方式中,常常需要将其他设计实体作为元件进行引用,这时就需要将不同元件通过配置安装到不同的设计实体中。nVHDL提供了配置语句用于描述各种设计实体和元件之间连接关系以及设计实体和结构体之间的连接关系。60在系统可编程技术与应用(语言概述基本结构语言元素)1. 默认配置默认配置语句的基本格式为:CONFIGURATION 配置名

37、 OF 实体名 IS FOR 选配结构体名 END FOREND 配置名;61在系统可编程技术与应用(语言概述基本结构语言元素)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY example_v IS PORT (a : IN STD_LOGIC; b : IN STD_LOGIC; y : OUT STD_LOGIC);END example_v;ARCHITECTURE and2_arc OF example_v IS BEGIN y = a AND b; END and2_arc;例:与、或、与非、或非、异或,5个结构体共用一个实体。62在

38、系统可编程技术与应用(语言概述基本结构语言元素)ARCHITECTURE or2_arc OF example_v IS BEGIN y = a OR b;END or2_arc;ARCHITECTURE nand2_arc OF example_v IS BEGIN y = NOT(a AND b);END nand2_arc;ARCHITECTURE nor2_arc OF example_v IS BEGIN y = NOT(a OR b);END nor2_arc;63在系统可编程技术与应用(语言概述基本结构语言元素)ARCHITECTURE xor2_arc OF example_v

39、 ISBEGIN y = a XOR b;END xor2_arc;CONFIGURATION cfg1 OF example_v IS FOR and2_arc END FOR;END cfg1;CONFIGURATION cfg2 OF example_v IS FOR or2_arc END FOR;END cfg2;64在系统可编程技术与应用(语言概述基本结构语言元素)CONFIGURATION cfg3 OF example_v IS FOR nand2_arc END FOR;END cfg3;CONFIGURATION cfg4 OF example_v IS FOR nor2_

40、arc END FOR;END cfg4;CONFIGURATION cfg5 OF example_v IS FOR xor2_arc END FOR;END cfg5;65在系统可编程技术与应用(语言概述基本结构语言元素)n在上例( example_v)中,有5个不同的结构体,分别用来完成二输入的逻辑与、或、与非、或非和逻辑异或的运算操作。n在程序中使用了5个默认配置语句来指明设计实体example_v和哪个结构体一起组成一个完整的设计。n配置语句cfg1将与逻辑结构体配置给实体;ncfg2将或逻辑结构体配置给实体;ncfg3将与非逻辑结构体配置给实体;ncfg4将或非逻辑结构体配置给实体

41、;ncfg5将异或逻辑结构体配置给实体。n在进行模拟的时候,将根据所编译的是上面的哪个配置来决定要进行模拟的结构体,也就是说最后一个被编译的结构体(异或逻辑)将被模拟,下图就是异或逻辑的仿真波形。66在系统可编程技术与应用(语言概述基本结构语言元素) 异或门仿真波形67在系统可编程技术与应用(语言概述基本结构语言元素)2. 结构体的配置n结构体的配置主要是用来对结构体中引用的元件进行配置。n结构体的配置的书写格式: FOR : USE ENTITY .;68在系统可编程技术与应用(语言概述基本结构语言元素)4.3 VHDL语言元素n4.3.1 VHDL语言的数据对象n4.3.2 VHDL语言的

42、数据类型 n4.3.3 VHDL数据类型转换n4.3.4 VHDL运算符 n4.3.5 VHDL词法规则与标识符69在系统可编程技术与应用(语言概述基本结构语言元素)4.3.1 VHDL语言的数据对象数据对象有三种:n常量(CONSTANT)n变量(VARIABLE)n信号(SIGNAL)70在系统可编程技术与应用(语言概述基本结构语言元素)1. 常量(CONSTANT)n常量是指在设计实体中不会发生变化的值。n常量可以在很多部分进行说明。n常量的使用范围取决于它被定义的位置。n常量可以是任何的数据类型。n常数说明语句格式为: CONSTANT 常数名:数据类型 := 表达式; 71在系统可编

43、程技术与应用(语言概述基本结构语言元素)例如:CONSTANT Vcc : REAL := 5.0;CONSTANT Fbus : BIT_VECTOR := “1011”;CONSTANT Delay : TIME := 10ns; 注:常量是一个恒定不变的值,一旦做了数据类型和赋值定义,它在程序中就不能再改变。 72在系统可编程技术与应用(语言概述基本结构语言元素)2. 变量(VARIABLE)n变量是指在设计实体中会发生变化的值。n变量只能在进程和子程序中用,是一个局部量。n与信号不同,变量的赋值是理想化数据传输,其赋值是立即生效的,不存在任何的延时行为。n变量定义语句的格式为: VAR

44、IABLE 变量名 : 数据类型 : 约束条件 := 初始值;n例如: VARIABLE n: INTEGER RANGE 0 TO 15 := 2; VARIABLE a: INTEGER; 73在系统可编程技术与应用(语言概述基本结构语言元素)n变量赋值语句的格式为: 目标变量名 := 表达式;n赋值语句 “:=” 右边的表达式必须与目标变量具有相同的数据类型,这个表达式可以是一个运算表达式也可以是一个数值。n变量赋值语句左边的目标变量可以是单值变量,也可以是变量的集合。74在系统可编程技术与应用(语言概述基本结构语言元素)nVARIABLE x ,y: REAL;nVARIABLE a

45、,b: STD_LOGIC_VECTOR(7 DOWNTO 0);nx:=100.0; -实数赋值ny:=1.5+x;-运算表达式赋值na:=“10111011”;位矢量赋值na(0 TO 5):=b(2 TO 7);-段赋值 变量赋值时,新的变量值的获得是立即发生的。例如:75在系统可编程技术与应用(语言概述基本结构语言元素)3. 信号(SIGNAL)n信号是描述硬件系统的基本数据对象,它是电子电路内部硬件连接的抽象。n信号的定义和使用范围:实体、结构体和程序包。n在进程中不允许定义信号,只能将信号列入敏感表。n信号定义语句的格式为: SIGNAL 信号名:数据类型:约束条件 := 表达式;

46、 n例如: SIGNAL gnd :BIT := 0; SIGNAL data :STD_LOGIC_VECTOR (7 DOWNTO 0); 76在系统可编程技术与应用(语言概述基本结构语言元素)注意:变量和信号都必须先定义,后赋值。注意赋值符“=”和 “:”的差别。n信号信号赋值语句表达式为:目标信号名 =表达式;n符号 “=” 表示赋值操作,即将数据信息传入。n数据信息传入时可以设置延时过程,这与器件的实际传播延时十分接近。n信号定义时初始赋值符号“:”,即仿真的时间坐标是从赋初始值开始的。n信号赋值语句举例: x = y; a = 1; s1 = s2 AFTER 10 ns;77在系

47、统可编程技术与应用(语言概述基本结构语言元素)4. 信号与变量的区别n信号赋值有延时,而变量赋值没有。n进程对信号敏感,而对变量不敏感。n信号可以是多个进程的全局信号,而变量只在定义它们的顺序域可见(除共享变量)。n信号是硬件中连线的抽象描述,他们的功能是保存变化的数据值和连接子元件,信号在元件的端口连接元件。变量在硬件中没有类似的对应关系,他们用于硬件特性的高层次建模所需要的计算中。n信号使用赋值符号“=”,变量使用赋值符号“:=”。78在系统可编程技术与应用(语言概述基本结构语言元素)4.3.2 VHDL语言的数据类型n对VHDL的数据对象进行定义时,要指定其数据类型。 nVHDL有多种标

48、准的数据类型,并允许用户自定义数据类型。n在VHDL语言语义约束中,对类型的要求反映在赋值语句的目标与源的一致,表达式中操作的一致,子类型中约束与类型的一致等许多方面。nVHDL中预定义的数据类型,编程者可直接使用。79在系统可编程技术与应用(语言概述基本结构语言元素)VHDL中的数据类型可以分为四大类。n标量类型(Scalar Type): 包括实数类型、整数类型、枚举类型和物理类型。n复合类型(Composite Type): 包括数组型和记录型。n存取类型(Access Type)n文件类型()80在系统可编程技术与应用(语言概述基本结构语言元素)1. 整数(INTEGER)n整数与数学

49、中整数的定义相似,可以使用预定义运算操作符,如加“”、减“”、乘“”、除“”进行算术运算。n在VHDL语言中,整数的表示范围为21474836472147483647,即从 (2311)到(2311)。VHDL的预定义数据类型81在系统可编程技术与应用(语言概述基本结构语言元素)例如:82在系统可编程技术与应用(语言概述基本结构语言元素)2. 实数(REAL)n在进行算法研究或实验时,作为对硬件方案的抽象手段,常常采用实数四则运算。n实数的定义值范围为 1.0E+38+1.0E+38。n实数有正负数,书写时一定要有小数点。例如:1.0,+2.5,1.0E+38 。83在系统可编程技术与应用(语

50、言概述基本结构语言元素)3. 位(BIT)n取值只能是1或0(将值放在引号中)表示。n与整数中的1和0不同,1和0仅仅表示一个位的两种取值。n如: CONSTANT c: BIT:=1; VARIABLE q: BIT:=0; SIGNAL a, b: BIT;84在系统可编程技术与应用(语言概述基本结构语言元素)4. 位矢量(BIT_VECTOR)n位矢量是基于BIT数据类型的数组,它是使用双引号括起来的一组位数据。例如:“001100”,X“00bb”,在这里位矢量前面的X表示是十六进制。n用位矢量数据表示总线状态最形象也最方便,在VHDL程序中将会经常遇到。n使用位矢量时必须注明位宽,即数组中元素个数和排列。n例如: SIGNAL s1:BIT_VECTOR(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论