EDA技术与数字系统设计.ppt_第1页
EDA技术与数字系统设计.ppt_第2页
EDA技术与数字系统设计.ppt_第3页
EDA技术与数字系统设计.ppt_第4页
EDA技术与数字系统设计.ppt_第5页
已阅读5页,还剩240页未读 继续免费阅读

下载本文档

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

文档简介

1,第4章 VHDL硬件描述语言,4.1 概述 4.2 VHDL语言设计实体的基本结构 4.3 VHDL语言结构体的描述方式 4.4 VHDL语言的库、程序包及配置 4.5 VHDL语言的语言要素 4.6 VHDL语言的描述语句,2,4.1 概 述,VHDL语言是一种在EDA设计中广泛流行的硬件描述语言,主要用于描述数字系统的结构、行为、功能和接口。 除了含有许多具有硬件特征的语句外,VHDL语言的句法、语言形式和描述风格十分类似于一般的计算机高级语言,是目前硬件描述语言中应用最为广泛的一种。,第4章 VHDL硬件描述语言,3,4.1.1 VHDL语言简介,VHDL语言全称是“超高速集成电路硬件描述语言”,它诞生于1982年,由美国国防部于20世纪七、八十年代组织研制开发,其目的首先是用这种语言描述复杂电路,其次是希望这种语言能够成为一种标准语言。,第4章 VHDL硬件描述语言,1987年底,VHDL语言被电气和电子工程师协会IEEE和美国国防部确认为标准硬件描述语言,版本为IEEE-1076(简称87版)。此后在电子产业界被广泛地接受,并逐步取代了原有的非标准硬件描述语言(如CUPL、ABEL等)。,4,4.1.1 VHDL语言简介,1993年,IEEE对VHDL进行了修订,增加了一些功能,并从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了VHDL新的版本,编号为IEEE Std1076-1993(简称93版)。,第4章 VHDL硬件描述语言,1995年中国国家技术监督局组织编写并出版了CAD通用技术规范,推荐VHDL语言作为我国电子自动化硬件描述语言的国家标准。1996年,IEEE1076.3成为VHDL综合标准。,5,4.1.1 VHDL语言简介,目前,VHDL已经成为一个数字电路和硬件系统描述、综合、优化和布线的IEEE工业标准,已得到众多EDA公司的支持,越来越多的硬件电路设计工具向VHDL标准靠拢,支持VHDL语言。在电子工程领域中,无论ASIC设计人员,还是系统设计人员,都需要学习VHDL语言来提高自己的工作效率。有专家认为,在未来的IT行业中,VHDL语言和Verilog HDL语言将承担几乎全部的数字系统设计任务。,第4章 VHDL硬件描述语言,6,4.1.2 VHDL语言特点,VHDL语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特点,支持从系统级到逻辑门级电路所有层次的设计,适合于复杂逻辑电路和系统的设计。,第4章 VHDL硬件描述语言,作为高级硬件描述语言,VHDL有如下特点:, 支持从系统级到逻辑门级电路的描述; 具有很强的硬件描述能力; 设计技术齐全、方法灵活、支持广泛; 对设计描述具有相对的独立性; 具有很强的移植能力; 易于共享和复用; 具有丰富的仿真语句和库函数;,7,4.1.2 VHDL语言特点,第4章 VHDL硬件描述语言,作为高级硬件描述语言,VHDL有如下特点:, 设计结构清晰、易读易懂; 易实现系统的更新和升级; 数据类型丰富、安全性好。,8,4.2 VHDL语言设计实体的基本结构,用VHDL语言设计的电路无论规模大小,都要使用一个完整的VHDL程序结构,这个完整的程序结构称为设计实体或实体。 设计实体是指能被VHDL语言综合器所接受,并能作为独立的设计单元,以元件的形式存在的VHDL语言程序。 所谓的元件,既可以被高层次的系统调用,成为系统的一部分,也可以作为一个电路的功能模块,独立存在和运行。,第4章 VHDL硬件描述语言,9,4.2.1 VHDL语言设计实体的组成,VHDL语言的设计实体都由实体说明(Entity)和结构体(Architecture)两个最基本的部分组成。 实体说明部分用来描述该模块或系统的接口信息,包括端口的数目、方向和类型,其作用相当于传统设计方法中所使用的元件符号。 结构体部分则描述该模块的内部电路,对应于原理图、逻辑方程和模块的输入/输出特性。 一个设计实体可以包含一个或多个结构体,用于描述其的逻辑结构和逻辑功能。,第4章 VHDL硬件描述语言,10,1. VHDL设计实体的结构,第4章 VHDL硬件描述语言,一个完整的VHDL设计实体(设计文件),通常包括: 实体说明(Entity) 结构体(Architecture) 配置(Configuration) 库(Library)和程序包(Package),11,1. VHDL设计实体的结构,第4章 VHDL硬件描述语言,库、程序包,配置,设计实体,实体说明,结构体,进程 或其他并行结构,基本结构:,12,2. 设计实体举例,【例4.2.1】试用VHDL语言设计一个四选一数据选择器。,第4章 VHDL硬件描述语言,数据输入: D3 D2 D1 D0,数据输出: Y,选择控制: S1 S0,13,第4章 VHDL硬件描述语言,VHDL程序如下:,LIBRARY IEEE; -IEEE库 USE IEEE.STD_LOGIC_1164.ALL; -程序包 USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY mux41 IS -定义实体名 PORT ( S1, S0: IN STD_LOGIC; -定义输入信号 D3, D2, D1, D0: IN STD_LOGIC; Y: OUT STD_LOGIC -定义输出信号 ); END mux41; ARCHITECTURE behaveior OF mux41 IS -定义结构体名 BEGIN -逻辑功能描述 Y=D0 WHEN S1=0 AND S0=0 ELSE D1 WHEN S1=0 AND S0=1 ELSE D2 WHEN S1=1 AND S0=0 ELSE D3; END behaveior;,库,程序包,实体说明,结构体,14,2. 设计实体举例,库:是用来存放已设计好的程序包、数据集合体、元件的仓库,供用户进行VHDL设计时调用。,第4章 VHDL硬件描述语言,程序包:用VHDL语言编写的共享文件,定义了将要使用的常数、数据类型、子程序和设计好的电路单元等。,实体说明:定义电路单元的输入、输出引脚信号。以标识符ENTITY开始,以END结束。,结构体:用来描述电路内部结构和逻辑功能。并以标识符ARCHITECTURE开头,以END结尾。,15,4.2.2 VHDL语言的实体说明,实体说明是VHDL程序设计中最基本的组成部分,主要用来描述设计实体的外部接口信号,定义设计单元的输入、输出端口,是设计实体对外的一个通信界面,但它不描述设计的具体功能。,第4章 VHDL硬件描述语言,实体说明语句的格式如下:,ENTITY 实体名 IS GENERIC(类属表); PORT(端口表); END ENTITY 实体名;,实体说明语句 类属说明语句 端口说明语句 结束语句,规则: 实体声明语句必须以“ENTITY 实体名 IS”开始,以“END ENTITY 实体名;”结束;, 实体名是设计者给设计实体的命名; 方括号内的语言描述可任选。,16,1.实体说明语句ENTITY,该语句是实体说明的引导语句,用来指明实体说明部分的开始,并定义实体名。,第4章 VHDL硬件描述语言,关键字: ENTITY 格 式: ENTITY 实体名 IS,在设计编程时,实体名必须与设计文件名相同,否则无法编译。,17,2. 类属说明语句GENERIC,该语句用来确定设计实体中定义的局部常数,将外部环境的信息参数传递到设计实体,并用类属表的形式指明器件的一些特征。,第4章 VHDL硬件描述语言,关键字:GENERIC 格 式:GENERIC (常数名, 常数名: 数据类型: 设定值 ; 常数名, 常数名: 数据类型: 设定值),常数名:是由设计者定义的类属常数名; 数据类型:常取INTEGER或TIME的类型; 设定值:为常数名所代表的数值。,18,2. 类属说明语句GENERIC,例如:,第4章 VHDL硬件描述语言,类属表对数据总线的类型和宽度做了定义,类属参数datawith的数据类型为整数,数据宽度为8位。,ENTITY body IS GENERIC(datawidth: INTEGER :=8); ,类属说明必须位于端口说明之前,用于指定设计实体和外部环境通信的参数,并以关键字GENERIC引导一个类属参数表,在表中提供时间参数、总线宽度等信息。,19,3. 端口说明语句PORT,该语句是设计实体与外界接口的描述,用来指明实体的输入、输出信号及其模式,包括端口的名称、数据的类型和数据的传递方向(端口模式)。,第4章 VHDL硬件描述语言,关键字:PORT 格 式:PORE (端口名,端口名: 端口模式 数据类型 ;端口名,端口名: 端口模式 数据类型),端口名:是赋予每个外部引脚的名称,通常用一个或几个英文字母,或者用英文字母加数字命名。 端口模式:即端口方向,用来定义外部引脚的信号方向,共有五种模式。 数据类型:用来指定每个端口信号的取值类型,共有10种。,20,3. 端口说明语句PORT,端口模式说明:,第4章 VHDL硬件描述语言,21,3. 端口说明语句PORT,端口模式的符号 :,第4章 VHDL硬件描述语言,IN端口模式 :,OUT端口模式:,INOUT端口模式:,BUFFER端口模式:,22,3. 端口说明语句PORT,【例4.2.2】 编写2输入与非门的实体说明。,第4章 VHDL硬件描述语言,设与非门的输入为A和B,输出为Y。,ENTITY nand2 IS GENERIC ( risew: TIME :=1ns; fallw: TIME :=1ns ); PORT ( A: IN STD_LOGIC; B: IN STD_LOGIC; Y: OUT STD_LOGIC ); END nand2;,-定义risew为上升沿 -定义fallw为下降沿 -定义A、B和Y为逻辑位,23,4.2.3 VHDL语言的结构体,结构体是设计实体的核心,它具体指明了设计实体的行为、元件及内部连接关系。,第4章 VHDL硬件描述语言,结构体所承担的任务 :, 定义结构体内部所使用的各项元素; 通过VHDL提供的语句来描述设计实体所要求的具体行为和功能; 描述各元件之间的连接。,24,4.2.3 VHDL语言的结构体,结构体内部构造的描述层次和描述内容:,第4章 VHDL硬件描述语言,结 构 体,结 构 体 说 明,结 构 体 功 能 描 述,常数说明,数据类型说明,信号说明,例化元件说明,子程序说明,块语句,进程语句,信号赋值语句,子程序调用语句,元件例化语句,25,4.2.3 VHDL语言的结构体,第4章 VHDL硬件描述语言,结构体由两个基本部分组成: 结构体说明,用来对数据类型、常数、信号、子程序和元件等进行说明。 结构体功能描述,用来描述设计实体的逻辑行为,可以用不同的描述风格来表达设计实体的逻辑功能。,26,第4章 VHDL硬件描述语言,结构体的格式:,1. 结构体的基本格式,ARCHITECTURE 结构体名 OF 实体名 IS 结构体说明语句; BEGIN 功能描述语句; END ARCHITECTURE 结构体名;,27,第4章 VHDL硬件描述语言,结构体引导语句用来引导结构体的开始,并定义结构体的名称。,2. 结构体引导语句,关键字: ARCHITECTURE 格 式: ARCHITECTURE 结构体名 OF 实体名 IS,结构体名是给予结构体的名称,是该结构体唯一的名字,用来表明该结构体所隶属于哪个实体。,28,第4章 VHDL硬件描述语言,用于定义结构体中所用的数据对象和子程序,并对所引用的元件加以说明,如:,3. 结构体说明语句, 信号(SIGNAL) 类型(TYPE) 常数(CONSTANT) 元件(COMPONENT) 函数(FUNCTION) 过程(PROCEDURE),29,第4章 VHDL硬件描述语言,4. 功能描述语句,用于描述实体的逻辑功能。,功能描述语句结构可以含有五种不同类型。,30,第4章 VHDL硬件描述语言,4. 功能描述语句, 块语句(BLOCK) 块语句结构是由若干个并行执行语句构成的组合体,其功能是将结构体中的并行语句包装在一起,组成一个或多个模块(即子模块)。, 进程语句(PROCESS) 定义顺序语句模块,其内部为顺序语句,将从外部获得的信号值,或内部的运算数据向其他信号进行赋值。, 信号赋值语句(SIGNAL) 用来将设计实体内的处理结果向所定义的信号或界面端口进行赋值。,31,第4章 VHDL硬件描述语言,4. 功能描述语句, 子程序调用语句 由过程(PROCEDURE)和函数(FUNCTION)组成,其内部是顺序语句。用来调用过程和函数,并将结果赋值给信号。, 元件例化语句(COMPONENT) 元件例化语句用来调用另一个设计实体所描述的电路。调用时,元件例化语句对其他的设计实体做元件调用说明,并将元件的端口与其他元件、信号或高层设计实体的界面端口进行连接。,32,第4章 VHDL硬件描述语言,【例4.2.3】编写一个四位二进制加法计数器的结构体。,计数器共有三个输入和五个输出。 输入:时钟输入端CLK、使能控制端EN和异步清零端Rd。 输出:四位状态输出Q3Q0和进位输出CO。,设计程序的结构体如下:,ARCHITECTURE behavior OF counter16 IS BEGIN CO=1 WHEN (Q=“1111”AND EN=1AND Rd=1) ELSE 0; - 条件赋值语句 PROCESS (CLK,Rd) - 进程语句 BEGIN IF (Rd=0) THEN Q=“0000”; - IF语句 ELSIF (CLK EVENT AND CLK=1) THEN - CLK上升沿计数 IF (EN=1) THEN Q=Q+1; END IF; END IF; END PROCESS; END behavior;,33,4.3 VHDL语言结构体的描述方式,VHDL语言的结构体可以用不同的语句类型和描述方式来表达电路所期望的逻辑行为,而对于相同的逻辑行为,可以有不同的语句表达方式。,第4章 VHDL硬件描述语言,在VHDL语言中,这些描述方式或建模方式称为VHDL语言的描述风格。,常用的描述方式主要有: 行为描述 数据流描述 结构描述 混合描述,34,行为描述依据设计实体的功能或算法对结构体进行描述,不需要给出实现这些行为的硬件结构,只强调电路的行为和功能。 在结构体中,行为描述主要用函数、过程和进程语句,以功能或算法的形式来描述数据的转换和传送。,第4章 VHDL硬件描述语言,4.3.1 结构体的行为描述,35,【例4.3.1】试用行为描述完成二选一数据选择器的设计。,第4章 VHDL硬件描述语言,设数据输入为d0和d1、选择输入为s,输出为y。,程序清单: ENTITY mux21 IS PORT ( d1, d0: IN STD_LOGIC; s: IN STD_LOGIC; y: OUT STD_LOGIC ); END mux21; ARCHITECTURE behavior OF mux21 IS BEGIN y = d1 WHEN s =1 ELSE d0; END behavior;,36,行为描述类似于高级编程语言,主要是对设计实体的功能或数学模型进行描述,其抽象程度远高于数据流描述和结构描述,其特点如下:,第4章 VHDL硬件描述语言, 行为描述具有很高的抽象程度,远高于数据流描述和结构描述; 行为描述只需描述清楚输入与输出的行为,而与它们的结构无关; 描述程序大多采用算术运算、关系运算、惯性延时、传输延时等语句; 结构体中的过程语句属于典型的行为描述。,37,即逻辑描述,它利用VHDL语言中的赋值符和逻辑运算符进行描述,既包含逻辑单元的结构信息,又隐含地表示某种行为。,第4章 VHDL硬件描述语言,4.3.2 结构体的数据流描述,例如: y = a NOR b; z = NOT( a XOR b );,/ y等于a与b的或非运算 / z等于a与b的同或运算,这种方式主要采用非结构化的并行语句描述。,38,【例4.3.2】将例4.3.1中的数据选择器采用数据流描述。,第4章 VHDL硬件描述语言,逻辑表达式:,程序清单: ENTITY mux21 IS PORT (d1, d0: IN STD_LOGIC; s: IN STD_LOGIC; y: OUT STD_LOGIC ); END mux21; ARCHITECTURE dataflow OF mux21 IS SIGNAL tmp1, tmp2, tmp3: STD_LOGIC; BEGIN tmp1 = d1 AND s; tmp2 = d0 AND ( NOT s ); tmp3 = tmp1 OR tmp2; y = tmp3; END dataflow;,39,结构描述是从设计实体的内部结构对结构体进行描述的,并给出该实体所包含的模块或元件的相互连接关系。 这种方式主要采用元件例化(COMPONENT)的形式对设计实体进行描述。可以用不同类型的结构来实现多层次的工程设计,从简单的门电路到复杂的元件来描述整个系统,元件之间的连接通过定义的端口界面来实现。,第4章 VHDL硬件描述语言,4.3.3 结构体的结构描述,40,结构描述建模的步骤如下:,第4章 VHDL硬件描述语言,4.3.3 结构体的结构描述, 元件说明:描述局部接口。 元件例化:相对于其他元件放置元件。 元件配置:指定元件所有的设计实体。,结构描述用于层次化设计,高层次的设计模块调用低层次的设计模块,或直接用门电路来构成一个复杂的逻辑电路。,41,【例4.3.3】将例4.3.1中的数据选择器采用结构描述。,第4章 VHDL硬件描述语言,程序清单: ENTITY mux21 IS PORT (d1,d0: IN STD_LOGIC; s: IN STD_LOGIC; y: OUT STD_LOGIC ); END mux21; ARCHITECTURE structure OF mux21 IS COMPONENT and2 PORT (a, b: IN STD_LOGIC; c: OUT STD_LOGIC ); END COMPONENT; COMPONENT or2 PORT (a, b: IN STD_LOGIC; c: OUT STD_LOGIC ); END COMPONENT;,42,【例4.3.3】将例4.3.1中的数据选择器采用结构描述。,第4章 VHDL硬件描述语言,程序清单:,COMPONENT not1 PORT (a: IN STD_LOGIC; c: OUT STD_LOGIC ); END COMPONENT; SIGNAL aa, ab, ns: STD_LOGIC; BEGIN U1: not1 PORT MAP ( s, ns ); U2: and2 PORT MAP ( d1, s, aa ); U3: and2 PORT MAP ( ns, d0, ab ); U4: or2 PORT MAP ( aa, ab, y ); END structure;,43,混合描述就是在结构体中同时使用多种不同的描述方式,它可以使描述简单灵活。 例如,在同一结构体中,分别使用元件例化语句和并行语句,就可以构成由两种描述方式的混合描述。,第4章 VHDL硬件描述语言,4.3.4 结构体的混合描述,44,【例4.3.4】用混合描述完成半加器的设计。,第4章 VHDL硬件描述语言,表达式:sn = anbn cn = anbn,数据流描述 结构描述,程序清单: ENTITY half_adder IS PORT (an,bn: IN STD_LOGIC; sn,cn: OUT STD_LOGIC); END half_adder; ARCHITECTURE mix_ha OF half_adder IS COMPONENT and2 PORT (a,b: IN STD_LOGIC; c: OUT STD_LOGIC); END COMPONENT; BEGIN sn = an XOR bn; U1: and2 PORT MAP (an,bn,cn); END mix_ha;,45,第4章 VHDL硬件描述语言,4.4 VHDL语言的库、程序包及配置,在VHDL设计实体中,除了实体说明和结构体外,还有库、程序包和配置三个各自独立的组成部分。 依据VHDL语言的规则,VHDL程序所使用的文字、数据对象、数据类型都需要预先定义。 将预先定义好的数据类型、元件调用声明及一些常用子程序收集在一起,形成程序包,供VHDL设计实体共享和调用。若干个程序包则形成库。,46,库(Library)是用于存放预先设计好的程序包和数据的集合体。,第4章 VHDL硬件描述语言,4.4.1 VHDL库,1. 常用的库,VHDL语言中常用的五种库:, IEEE库 STD库 WORK库 VITAL库 用户自定义库, VHDL语言设计中最常见的库。, VHDL语言的标准库。, 用户的VHDL语言工作库。, VHDL语言的时序仿真库。,用户自定义的资源库。,47,第4章 VHDL硬件描述语言,48,第4章 VHDL硬件描述语言,2. 资源库和设计库,VHDL语言所使用的库可以分成两类:,资源库 设计库,用于存放常规元件、标准模块、预定义数据类型等,如:IEEE库。,是一种符合VHDL标准的预定义库。 如:STD库定义了一些基本的数据类型、子类型和函数等;WORK库存放用户设计和定义的设计单元及程序包等。,49,第4章 VHDL硬件描述语言,3. 库的使用,关键字: LIBRARY 格 式: LIBRARY 库名称,库说明语句:,说 明:用来指明所使用的库,库名称为一系列由逗号分隔的库名。 库说明语句总是位于设计实体的最前面,通常与USE语句一起使用。,50,第4章 VHDL硬件描述语言,3. 库的使用,格式1: USE 库名.程序包名.项目名;,USE语句用来指明库中的程序包,有两种格式:,作用:为本设计实体开放指定库中的特定程序包内所选定的项目。,例如:,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.STD_ULOGIC; USE IEEE.STD_LOGIC_1164.RISING_EDGE;,51,第4章 VHDL硬件描述语言,3. 库的使用,格式2: USE 库名.程序包名.ALL;,作用:为本设计实体开放指定库中的特定程序包内所有的内容。,例如:,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;,52,在VHDL语言中,用户可以将已定义的常数、信号、函数、数据类型、元件和子程序等收集在一起形成一个程序包,以便更多的设计实体利用和共享。,第4章 VHDL硬件描述语言,4.4.2 VHDL程序包,定义程序包的一般语句格式:,PACKAGE 程序包 IS 程序包首说明 END 程序包名; PACKAGE BODY 程序包 IS 程序包体说明 END 程序包名;,程序包首,程序包体,53,程序包首收集了VHDL设计所需的公共信息,用来定义数据类型、元件和子程序等。,第4章 VHDL硬件描述语言,1. 程序包首,一般格式:,PACKAGE 程序包 IS TYPE语句; SUBTYPE语句; CONSTANT语句; SIGNAL语句; COMPONENT语句; FUNCTION语句; SUBPROGRAM语句; END 程序包名;, 用来定义数据类型 用来定义子类型 用来定义常数 用来定义信号 用来定义元件 用来定义函数 用来定义子程序,54,第4章 VHDL硬件描述语言,【例4.4.1】定义程序包。,PACKAGE my_pkg IS TYPE byte IS RANGE 0 TO 255; SUBTYPE nibyte IS byte RANGE 0 TO 15; CONSTANT byte_ff: bcd:=255; SIGNAL addend: nibabc; COMPONENT byte_adder PORT (a, b: IN byte; c: OUT byte; overflow: OUT BOOLEAN ); END COMPONENT; FUNCTION my_fun(a:IN byte) RETURN byte; END my_pkg;,程序清单:,- 程序包首,程序包名为my_pkg,- 定义数据类型,byte的范围0255,- 定义子类型nibyte,- 定义常数byte_ff,- 定义信号addend,- 定义元件byte_adder,- 定义函数my_fun,55,用来描述已在程序包首中定义过的元件和子程序的内容。,第4章 VHDL硬件描述语言,2. 程序包体,一般格式:,PACKAGE BODY 程序包 IS 程序包体说明 END 程序包名;,程序包体说明可以是USE语句、子程序定义、子程序体、数据类型说明、子类型说明和常数说明等。,56,常用的预定义的程序包有:,第4章 VHDL硬件描述语言,3. VHDL常用的程序包, STD_LOGIC_1164 STD_LOGIC_ARITH STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED STANDARD和TEXTIO,57,配置是将特定的结构体与一个确定的实体相关联,为大型系统的设计提供管理和工程组织。 配置是设计实体VHDL语言描述的组成部分之一,但不是必不可少的。常用来描述层与层之间、实体与结构体之间的连接关系。,第4章 VHDL硬件描述语言,4.4.3 配置,配置可分为三种类型:, 默认配置 元件配置 结构体配置,58,默认配置是一种最为简单的配置,当设计实体中不含有任何其他元件和块语句时,可以使用默认配置。,第4章 VHDL硬件描述语言,1. 默认配置,基本格式:,CONFIGURATION 配置名 OF 实体名 IS FOR 选配结构体名; END FOR; END 配置名;,59,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY COUNTER IS PORT (CLK,CLR: IN STD_LOGIC; Q: OUT INTEGER); END COUNTER;,第4章 VHDL硬件描述语言,【例4.4.2】设计两个计数位宽分别为4位和8位的计数器。,设两个计数器具有相同的功能和外部结构,只是计数位宽不同。用一个计数器实体来实现两个不同结构体的配置。,程序清单:,计数器的实体,60,第4章 VHDL硬件描述语言,【例4.4.2】设计两个计数位宽分别为4位和8位的计数器。,程序清单:,ARCHITECTURE COUNT4 OF COUNTER IS BEGIN PROCESS (CLK) VARIABLE QQ: INTEGER:= 0; BEGIN IF CLR=0 THEN QQ:= 0; ELSIF (CLK EVENT AND CLK=1) THEN IF QQ=15 THEN QQ:= 0; ELSE QQ:= QQ+1; END IF; END IF; Q = QQ; END PROCESS; END COUNT4;,计数器COUNT4的结构体,61,第4章 VHDL硬件描述语言,【例4.4.2】设计两个计数位宽分别为4位和8位的计数器。,程序清单:,ARCHITECTURE COUNT8 OF COUNTER IS BEGIN PROCESS (CLK) VARIABLE QQ: INTEGER:= 0; BEGIN IF CLR=0 THEN QQ:= 0; ELSIF (CLK EVENT AND CLK=1) THEN IF QQ=255 THEN QQ:= 0; ELSE QQ:= QQ+1; END IF; END IF; Q = QQ; END PROCESS; END COUNT8;,计数器COUNT8的结构体,62,第4章 VHDL硬件描述语言,【例4.4.2】设计两个计数位宽分别为4位和8位的计数器。,程序清单:,CONFIGURATION COUNT_4 OF COUNTER IS FOR COUNT4 END FOR; END COUNT_4; CONFIGURATION COUNT_8 OF COUNTER IS FOR COUNT8 END FOR; END COUNT_8;,计数器的配置,63,当结构体中含有多个引用元件时,可以采用元件配置,以指明引用元件的具体位置。,第4章 VHDL硬件描述语言,2. 元件配置,格式:,CONFIGURATION 配置名 OF 实体名 IS FOR 选配结构体名 FOR 元件例化标号: 元件名 USE CONFIGURATION 库名.元件配置名; 或 USE ENTITY 库名.实体名(结构体名); END FOR; END FOR; END 配置名;,64,CONFIGURATION mux_ cfg OF mux21 IS FOR structure FOR U2,U3: and2 USE CONFIGURATION WORK.and2_cfg; END FOR; FOR U4: or2 USE CONFIGURATION WORK.or2_cfg; END FOR; END FOR; END mux_ cfg;,第4章 VHDL硬件描述语言,【例4.4.3】给例4.3.3中的二选一数据选择器进行元件配置。,程序清单:,65,结构体配置与元件配置具有相同的特征,都是对结构体中所引用的元件进行配置,但它们所处的位置和书写格式有很大的不同。 结构体配置通常直接放在结构体说明语句的位置,而元件配置则是与元件所在的结构体分开的。,第4章 VHDL硬件描述语言,3. 结构体配置,格式:,FOR 元件例化标号:元件名 USE ENTITY 库名.实体名(结构体名); 或 FOR 元件例化标号:元件名 USE CONFIGURATION 库名.元件配置名;,66,第4章 VHDL硬件描述语言,3. 结构体配置,例如,对例4.3.3中的元件可采用结构体配置。,FOR U2,U3: and2 USE CONFIGURATION WORK.and2_cfg; FOR U4: or2 USE CONFIGURATION WORK.or2_cfg;,67,第4章 VHDL硬件描述语言,4.5 VHDL语言的语言要素,语言要素是组成编程语句的基本单元,主要有: 数据对象(Object) 数据类型(Type) 操作数(Operands) 运算操作符(Operator),68,任何一种程序设计语言都有自己的一套书写符号和语法规则,这些符号和语法规则构成了程序设计语言的文字规则。,第4章 VHDL硬件描述语言,4.5.1 VHDL语言的文字规则,1.数字型文字,数字型文字有多种表达方式,包括: 整数型文字 实数型文字 数制基数型文字 物理量型文字,69,第4章 VHDL硬件描述语言,1.数字型文字,(1)整数型文字,整数型文字都是十进制数,由数字和下划线组成。 例如: 0,6,876,516E2,23_456_789 156E2 = 15600 23_456_789 = 23 456 789,70,第4章 VHDL硬件描述语言,1.数字型文字,(2)实数型文字,也是十进制数,但必须带小数点,由数字、小数点和下划线组成。 例如: 98.76,12_345_678.986_54,3.055.66E-2,0.0 12_345_678.986_54 = 12 345 678.986 54 55.66E-2 = 0.5566。,71,第4章 VHDL硬件描述语言,1.数字型文字,(3)数值基数型文字,用数制基数表示的文字。,格式: 数制 # 数值 # E 数值,由五部分组成: 用十进制数表明数制的基数; 数制隔离符号“#”; 用数值表达的文字; 指数隔离符号“#”; 用十进制表示的指数部分。,72,第4章 VHDL硬件描述语言,1.数字型文字,(3)数值基数型文字,用数制基数表示的文字。,例如: 10#234# 2#1101_1110# 8#374# 16#E#E1 16#F.01#E+2,-十进制数表示,等于234 -二进制数表示, 等于222 -八进制表示,等于252 -十六进制数表示,等于224 -十六进制数表示,等于3841.00,73,第4章 VHDL硬件描述语言,1.数字型文字,物理量型文字用来表示时间、长度等物理量。,例如: 50s 100m 1k 100mA,-表示50秒(时间) -表示100米(长度) -表示1千欧姆(电阻) -表示100毫安培(电流),(4)物理量型文字,74,第4章 VHDL硬件描述语言,2.字符串型文字,字符是用单引号括起来的ASCII字符,可以是数字,也可以是字母或符号。 例如:0,2,A,a,&等。,字符串是一维的字符数组,用双引号括起来。分为文字字符串和数值字符串。,(1)文字字符串 用双引号括起来的一维字符文字。 例如:“ABC”,“ERROR ”,“A#B”,75,第4章 VHDL硬件描述语言,(2)数值字符串,数值字符串也称为矢量,是预定义的数据类型BIT的一位数组。,格式: 数制基数符号“数值字符串”,数制基数符号: B二进制基数符号; O八进制基数符号; X16进制基数符号。,例如: B“111010110”;位矢量数组,长度为9 O“12” ;等效B“001010”,长度为6 X“BC6”;等效B“101111000110”,长度为12,76,第4章 VHDL硬件描述语言,3. 标识符,标识符是设计人员为书写程序所规定的一些词,用来给常数、变量、信号、端口、子程序、实体和结构体等定义的名称。,VHDL语言的标准版本分为VHDL87版和VHDL93版。 VHDL87版的标识符称为短标识符或标识符。 VHDL93版的标识符是基于VHDL87标准扩展后形成的,故称作扩展标识符。,77,第4章 VHDL硬件描述语言,3. 标识符,短标识符为VHDL87版规定的标识符,但VHDL93版同样支持短标识符。,(1)短标识符,规则:, 以字母开头, 后跟若干字母、数字或下划线构成; 标识符不能以下划线结尾; 标识符中的下划线不能连续使用; 标识符中的字母不分大小写; VHDL的保留字不能用作标识符。,例如:h_adder, mux21, example 为合法标识符 2adder, _mux21, ful_adder, adder_ 为非法标识符,78,第4章 VHDL硬件描述语言,3. 标识符,满足VHDL93版标准的标识符。,(2)扩展标识符,规则:, 扩展标识符用反斜杠“”定界,如:A BOY.; 扩展标识符允许以数字开头,如:74LS193; 扩展标识符允许使用空格符、图形符号及两个以上的下划线,如:SIG_ _&N; 扩展标识符仍区分大小写字母,如:END不同于end; 扩展标识符允许使用保留字,如:END; 扩展标识符与同名的短标识符不同,如:CAD不同于CAD。,79,第4章 VHDL硬件描述语言,3. 标识符,(3)下标名,用于指示数组型变量或信号的某一元素。,格式: 标识符(表达式),注意:表达式的数值必须在数组元素下标号范围以内,并且必须是可计算的。 例如:a(2),b(n),80,第4章 VHDL硬件描述语言,3. 标识符,(4)段名,多个下标名的组合,用于指示数组型变量或信号的某一段元素。,格式: 标识符(表达式 方向 表达式),标识符:数组类型信号或变量 方向:TO数组下标序号由低到高 DOWNTO数组下标序号由高到低,例如:D(7 DOWNTO 0);表示数据总线D7D0 D(0 TO 7 ); 表示数据总线D0D7 D(4 TO 6); 表示数据总线D4D6,81,第4章 VHDL硬件描述语言,3. 标识符,(5)保留字,保留字又称关键字,是具有特殊含义的标识符,只能作为固定的用途,不能直接作为标识符(扩展标识符除外)。,82,第4章 VHDL硬件描述语言,3. 标识符,(5)保留字,83,第4章 VHDL硬件描述语言,4. 注释,VHDL语言与其他程序设计语言一样,为了便于理解和阅读,常在编写的程序中加上注释。 VHDL语言的注释符用双减号“-”表示。 注释语句以注释符引导,到行尾结束。 注释可以加在程序语句结束符“;”之后,也可以加在空行处。,84,VHDL语言除了具有一定的语法规则外,还定义了可以接受不同数据类型赋值的数据对象。,第4章 VHDL硬件描述语言,4.5.2 VHDL语言的数据对象, 常量(CONSTANT) 变量(VARIABLE) 信号(SIGNAL) 文件(FILE),数据对象主要有四种类型:,85,常量为全局量,是指在设计描述过程中保持某一规定类型特定值不变的量。,第4章 VHDL硬件描述语言,1. 常量(CONSTANT),定义格式:,规则: 常量的定义应在程序开始前进行; 常量一旦被赋值就不能再改变; 常量所赋的值应和定义的数据类型一致; 定义在程序包中的常量,可在调用此程序包的所有设计实体中使用; 定义在设计实体内的常量,仅在该实体内使用; 定义在某结构体中的常量,只能在该结构体使用; 定义在结构体中某单元的常量,只能用于该单元。,CONSTANT 常量名:数据类型:=表达式;,86,第4章 VHDL硬件描述语言,1. 常量(CONSTANT),例如: CONSTANT width: INTEGER:=16; CONSTANT delay: TIME:=20ns; CONSTANT fbus: BIT_VECTOR:=“11010111”; CONSTANT Vcc: REAL:=5.0;,-width是整数类型常量,值为16 -delay是时间型常量,值为20ns,-fbus是位矢量型常数 其值为11010111,-Vcc是实数型常量,其值为5.0,87,变量为局部量,常用来存储中间数据,以便实现程序的算法。它只能在进程语句、函数语句和过程语句的结构中使用。 变量的赋值是一种理想化的数据传输,即赋值是立即生效的,不存在任何延时的行为。,第4章 VHDL硬件描述语言,2.变量(VARIABLE),定义格式:,VARIABLE 变量名1 , 变量名2, : 数据类型 := 初始值 ;,例如:VARIABLE b: INTEGER; VARIABLE a: INTEGER:=2 ;,- 定义b为整数型变量,- 定义a为整数型变量, 初值为2,88,第4章 VHDL硬件描述语言,2.变量(VARIABLE),变量的使用规则: 变量不能用于硬件连线和存储元件; 变量赋值和初始化赋值都用“:=”表示; 变量的初值不是预设的,某一时刻只能有一个值; 变量不能用于在进程间传递数据; 仿真时,变量用于建模; 综合时,变量充当数据的暂存。,89,第4章 VHDL硬件描述语言,2.变量(VARIABLE),变量数值的改变是通过变量赋值来实现。 变量赋值语句的格式:,目标变量名:=表达式;,例如:VARIABLE x,y:REAL; VARIABLE a,b:BIT VECTOR(7 DOWNTO 0 ); x:=100.0; y:=1.5+x; a:=“1011101” a(4 TO 7):=(1,0,1,0); b(0 TO 5):= a(2 TO 7);,90,信号是描述硬件系统的基本数据对象,它是电子电路内部硬件连接的抽象,可以作为设计实体中并行语句模块间的信息交流通道。 信号是一个全局量,只有定义后才能使用,通常用于在结构体、程序包和实体说明中。,第4章 VHDL硬件描述语言,3.信号(SIGNAL),信号定义格式:,SIGNAL 信号名:数据类型:=初值;,例如:SIGNAL S0: STD LOGIC:=0; SIGNAL FA,FB: BIT; SIGNAL D: STD LOOGIC VECTOR(0 TO 15);,- 定义一个标准逻辑位信号S0,初值为0,- 定义两个BIT位信号FA和FB,-定义标准逻辑16位矢量信号D,91,第4章 VHDL硬件描述语言,3.信号(SIGNAL),信号赋值语句: 目标信号名=表达式;,例如: x=9; y=x; z=x AFTER 5ns;,92,第4章 VHDL硬件描述语言,3.信号(SIGNAL),信号与变量的区别: 使用场合不同 变量在进程、函数和过程中说明; 信号在结构体中说明。 赋值符号不同 变量用“:=”号赋值, 其值被立即使用(无时间延时); 信号用“=”赋值,其值可以附加延时。,93,VHDL是一种强类型语言,编程时非常注重数据类型的匹配问题,要求设计实体中的数据对象必须具有确定的数据类型,并且相同数据类型的量才能进行相互传递或赋值。,第4章 VHDL硬件描述语言,4.5.3 VHDL语言的数据类型, 标量型(Scalar Type) 复合型(Composite Type) 存取型(Access Type) 文件型(Files Type),1. 数据类型的分类,VHDL语言与其他硬件描述语言相比有较多的数据类型,因此它能够创建高层次的系统和算法模型。,根据数据用途的不同,VHDL中的数据类型可分为四大类:,94,第4章 VHDL硬件描述语言, 标量型,1. 数据类

温馨提示

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

评论

0/150

提交评论