第3章硬件描述语言VHDL基础

上传人:我*** 文档编号:137908238 上传时间:2020-07-12 格式:PPT 页数:126 大小:280KB
返回 下载 相关 举报
第3章硬件描述语言VHDL基础_第1页
第1页 / 共126页
第3章硬件描述语言VHDL基础_第2页
第2页 / 共126页
第3章硬件描述语言VHDL基础_第3页
第3页 / 共126页
第3章硬件描述语言VHDL基础_第4页
第4页 / 共126页
第3章硬件描述语言VHDL基础_第5页
第5页 / 共126页
点击查看更多>>
资源描述

《第3章硬件描述语言VHDL基础》由会员分享,可在线阅读,更多相关《第3章硬件描述语言VHDL基础(126页珍藏版)》请在金锄头文库上搜索。

1、第3章 硬件描述语言VHDL基础,硬件描述语言概述 VHDL语言程序结构 VHDL常用语句 VHDL语法基础,3.1硬件描述语言概述,VHDL硬件描述语言的英文全名是Very High Speed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言,以下简称为VHDL语言。使用VHDL语言可以实现数字电子系统的行为级描述,RTL(寄存器传输级)描述以及结构级描述。目前在国内外应用的硬件描述语言有许多种,其中应用最广泛的有VHDL语言和Verilog-HDL语言。,3.1硬件描述语言概述,运用VHDL语言设计系统一般采用

2、自顶向下分层设计的方法,首先从系统级功能设计开始,对系统高层模块进行行为描述和功能仿真。系统的功能验证完成后,将抽象的高层设计自顶向下逐级细化,直到与所用可编程逻辑器件相对应的逻辑描述。,3.2 VHDL语言程序结构,VHDL语言程序可由实体(Entity)说明、结构体(Architecture)、程序包(Package)、库(Library)、配置(Configuration)5个部分组成。其中库、实体说明、结构体是一个VHDL语言程序的基本组成部分。,VHDL语言把这个设计单元作为一个设计实体处理,一个设计实体只能唯一地对应一个设定单元。一个设计实体由实体说明和结构体组成。一个实体说明可以

3、对应多个结构体。,【例3-1】二选一MUX的VHDL描述。 -2 to 1 mux VHDL LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux IS PORT(d0,d1,sel:IN STD_LOGIC; f:OUT STD_LOGIC); END mux; ARCHITECTURE structure OF mux IS SIGNAL temp:STD_LOGIC; BEGIN,库说明,实体说明,端口说明,结构体,信号定义,P0:PROCESS(d0,d1,sel) VARIABLE templ,temp2,temp3:STD_LO

4、GIC; BEGIN templ:=d0 AND(NOT sel); temp2:=d1 AND sel; temp3:=templ OR temp2; temp=temp3; f=temp; END PROCESS P0; END structure;,进程,变量定义,3.2.1 实体说明,实体说明的书写格式如下所示: ENTITY IS GENERIC (类属说明); PORT (端口说明); 实体语句部分; END ENTITY ; 其中“”中的部分是必选项,“ ”中的部分是可选项。,3.2.1 实体说明,例如,4位加法器作为一个设计实体的实体说明如下: ENTITY adder_rip

5、ple IS GENERIC (m: TIME:=5 ns); PORT(a,b: IN STD_LOGIC_VECTOR(3 DOWNTO 0); q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); Cout: OUT STD_ LOGIC); END adder_ripple;,3.2.1 实体说明,1.类属说明语句(GENERIC) 类属说明语句必须放在端口说明语句之前,用以设定实体或元件的内部电路结构和规模,其书写格式如下: GENERIC (常数名:数据类型:=设定值; 常数名:数据类型:=设定值); 例如:GENERIC (m:TIME:=5 ns);指定了结

6、构体内m的值为5ns。,3.2.1 实体说明,2.端口说明(PORT) 端口对应于电路图中元件符号的外部引脚。端口说明语句是对基本设计实体(单元)与外部接口的描述,也可以说是对外部引脚信号的名称、数据类型和输入输出方向的描述。端口说明语句的一般格式如下: PORT (端口名,端口名:模式 数据类型名; 端口名,端口名:模式 数据类型名);,3.2.1 实体说明,注意: (1)端口名是赋给每个外部引脚的名称,通常用一个或几个英文字母,或者用英文字母加数字命名。各端口名在实体中必须是唯一的,不能重复。 (2)模式用来说明信号的方向,详细的端口方向说明见下表。需要指出的是,BUFFER是INOUT的

7、子集;做输入时,信号不是由外部驱动,而是从输出反馈得到。,3.2.1 实体说明,(3)数据类型名则是端口信号的取值类型,有: BIT:位类型,取值0、1,由STANDARD程序包定义; BIT_VECTOR:位向量类型,是BIT的组合; STD_LOGIC:工业标准的逻辑类型,取值0、1、X、Z等,由 STD_LOGIC_1164程序包定义; INTEGER:整数类型,可用作循环指针或常数,通常不用作I/O信号; BOOLEAN :布尔类型,取值FALSE、TRUE STD_LOGIC_VECTOR :工业标准的逻辑向量类型,是STD_LOGIC的组合;,3.2.2 结构体,结构体(Archi

8、tecture) 是对实体功能的具体描述。结构体主要是描述实体的硬件结构、元件之间的互连关系、实体所完成的逻辑功能以及数据的传输变换等方面的内容。 结构体对其实体的输入/输出关系描述有三种方式:行为描述方式(behavioral)、数据流描述方式(dataflow)和结构描述方式(structure)。最常用的是结构描述方式。,一个结构体的书写格式如下: ARCHITECTURE OF IS 定义语句; BEGIN END ;,3.2.2 结构体,一个实体中可以具有一个结构体,也可以具有几个结构体。一个实体内部若有几个结构体,则结构体名不能重复。 结构体中的定义语句位于ARCHITECTURE

9、 和BEGIN之间,用于对结构体内部所使用的信号(SIGNAL)、常数(CONSTANT)、数据类型、元件(COMPONENT)和过程(PROCEDURE)等进行定义。,3.2.2 结构体,【例3-2】一个RS触发器的结构体的行为描述方式。 ARCHITECTURE rs_behav OF rsff IS BEGIN q=NOT(qb AND set); qb=NOT(q AND reset); END rs_behav;,是一个RS触发器的结构体的行为描述方式。,【例3-3】一个RS触发器的结构体的结构描述方式。 ARCHITECTURE rs_stru OF rsff IS COMPONE

10、NT nand2 PORT(a,b:IN BIT; c:OUT BIT); END COMPONENT; BEGIN u1:nand2 PORT MAP(a=set,b=qb,c=q); u2:nand2 PORT MAP(a=reset,b=q,c=qb); END rs_stru;,-是一个RS触发器的结构体的结构描述方式。,【例3-4】使用RTL描述方式的全加器VHDL程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY full_adder IS GENERIC (tpd:TIME:=5 ns); -tpd=5 ns PORT (a,

11、b,Cin:IN STD_LOGIC; S,Co:OUT STD_ LOGIC); END full_adder; ARCHITECTURE rtl OF full_adder IS SIGNAL h:STD_LOGIC; -内部信号定义 BEGIN h=a XOR b AFTER tpd; S=h XOR Cin AFTER tpd; Co=(a AND b)OR(h AND Cin) AFTER 2*tpd; END rtl;,3.2.2 结构体,在实际的硬件电路设计中,当电路的规模较大时,全部电路用一个模块来描述很不方便。一般情况下,是将整个电路分成若干相对独立的子模块来进行描述。VHD

12、L语言的功能描述语句结构可以是含有五种不同类型、并以并行方式工作的语句结构。 VHDL语言中常用的三种子结构描述语句为BLOCK语句结构、PROCESS语句结构和SUBPROGRAM语句结构。,1. 块(BLOCK)语句结构,BLOCK的应用类似于将一个电路原理图分为几个子模块进行绘制,而其中每个子模块都可以是一个具体的电路原理图。也就是说,按照模块方式对结构体进行划分并不会改变电路的逻辑功能。设计者可以合理地将一个模块划分为数个区域,在每个区域中都能定义或描述局部信号、数据类型和常量。,1. 块(BLOCK)语句结构,所有能在结构体的说明部分进行说明的对象都可以在BLOCK的说明部分进行说明

13、。 BLOCK语句的书写格式如下: 块标号: BLOCK卫式表达式 类属子句类属接口表; 端口子句端口接口表; 块说明部分; BEGIN END BLOCK块标号;,【例3-5】采用BLOCK语句来描述的计数器电路 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY counter2 IS PORT(clk:IN STD_LOGIC;q1,q0:OUT STD_LOGIC); END counter2; ARCHITECTURE arch_counter2 OF counter2

14、IS SIGNAL count:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN counter: BLOCK BEGIN PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN IF (count(0)=1 AND count(1)=1) THEN count=“00; ELSE count=count+1; END IF; END IF; q1=count(1); q0=count(0); END PROCESS;END BLOCK counter; END arch_counter2;,在对程序进行仿真时,BLOCK语句中所描述的

15、各条语句是并行执行的,执行顺序与书写顺序无关,【例3-6】含卫式表达式的VHDL程序。 ENTITY dlatch IS PORT (d,clk:IN BIT; q,qb:OUT BIT); END dlatch; ARCHITECTURE latch_guard OF dlatch IS BEGIN g1: BLOCK(clk=1) BEGIN q=GUARDED d AFTER 5ns; qbGUARDED NOT(d) AFTER 5ns; END BLOCK g1; END latch_guard;,当卫式表达式为真时,BLOCK语句被执行,否则将跳过BLOCK语句。在BLOCK块中的

16、信号传送语句前都要加一个前卫关键词GUARDED,以表明只有在条件满足时此语句才会执行。,2. 进程(PROCESS)语句结构,用PROCESS语句描述电路结构的书写格式为: 进程标号:PROCESS 敏感信号表 IS 进程语句说明部分; BEGIN END PROCESS进程标号;,2. 进程(PROCESS)语句结构,进程标号是进程的命名,是可选项。敏感信号表列出了进程语句敏感的所有信号,任意一个敏感信号改变,进程中由顺序语句定义的行为就会重新执行一遍。进程说明部分对该进程所需的局部数据环境进行定义。BEGIN和END PROCESS之间是描述进程行为的顺序执行语句。 进程行为的结果可以赋给信号,通过信号可被其他的PROCESS或BLOCK读取

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号