VHDL程序结构介绍_第1页
VHDL程序结构介绍_第2页
VHDL程序结构介绍_第3页
VHDL程序结构介绍_第4页
VHDL程序结构介绍_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

目录123VHDL设计概念VHDL简介VHDL程序结构VHDL简介

VHDL全名Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,超高速集成电路硬件描述语言,VHDL语言是一种用于电路设计的高级语言。最初是源于美国国防部1980年开始启动的超高速集成电路计划,在这一计划执行过程中,专家们认识到需要有一种标准的语言来描述集成电路的结构和功能,由此,美国国防部便开发出VHDL设计语言供美军用来提高设计的可靠性和缩减开发周期的设计语言。VHDL设计概念

采用VHDL进行设计的方法为高层设计,即“概念驱动模式”设计。设计人员无需通过门级原理图描述,而是针对设计目标进行功能描述。VHDL并不十分关心一个具体逻辑是靠何种方式实现的,而是把开发者的精力集中到逻辑所实现的功能上。由于高层设计只定义系统的行为特性,因此可以不涉及工艺。采用VHDL进行设计的具体过程为:1、以VHDL语言描述设计概念;2、用VHDL仿真与调试工具分析此概念的“行为”,检查是否满足初始要求。这一过程与普通的编程语言,如C语言的编译、运行、调试是类似的。3、VHDL设计—>VHDL综合工具。利用集成电路厂商或EDA厂家提供的被充分验证过的工艺库,以面积、功耗、速度等为目标进行优化,将电路映射成网表,得到门级电路后,还要进行仿真来验证门电路的行为和时序特性。4、物理设计。得到可供生产的文件,进行延时、故障、热分析等,保证系统的稳定工作,满足设计指标。VHDL程序结构实体和结构体是VHDL设计文件的两个基本组成部分实体说明描述设计实体(黑盒)的外部接口信号(即输入/输出信号);结构体说明用于描述设计实体(黑盒)的内部电路。包集合存放各设计模块能共享的数据类型、常数、子程序等;库用于存放已编译的实体、结构体、包集合和配置。配置用于从库中选取所需元件安装到设计单元的实体中。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux21IS

PORT(a,b:INSTD_LOGIC; s:INSTD_LOGIC; y:OUTSTD_LOGIC);ENDmux21;ARCHITECTUREbehaviorOFmux21IS

BEGIN

PROCESS(a,b,s) BEGIN IFs='0'THENy<=a;ELSEy<=b; ENDIF;

ENDPROCESS;ENDone;程序包实体说明结构体实体说明的一般格式为:

ENTITY

实体名

IS

[GENERIC类属参数说明]; [PORT端口说明];

END;ayand2b

实体中的每一个I/O信号被称为端口,其功能对应于电路图符号的一个引脚。端口说明则是对一个实体的一组端口的定义,即对基本设计实体与外部接口的描述。端口是设计实体和外部环境动态通信的通道。实体类似一个“黑盒”,实体描述了“黑盒”的输入输出口。

ENTITY、IS、GENERIC、PORT、END是VHDL的关键字(保留字)。

实体名、端口名(端口说明)等均应为符合VHDL命名规则的标识符。实体说明类属信息1、作用

为设计实体和其外部环境通信的静态信息提供通道,可以定义端口的大小、实体中元件的数目以及实体的定时特性等。2、一般格式

GENERIC([CONSTANT]名字表:[IN]子类型标识[:=静态表达式],…]);端口说明端口说明的一般格式为:

PORT(端口名{,端口名}:端口模式数据类型;端口名{,端口名}:端口模式数据类型);

例如:PORT(

a,b :INSTD_LOGIC;

y

:OUTSTD_LOGIC);端口名端口模式数据类型端口模式

用来说明数据传输通过该端口的方向。IN:

数据只能从端口流入实体OUT:

数据只能从端口流出实体INOUT:

数据从端口流入或流出实体BUFFER:

数据从端口流出实体,同时可被内部反馈。

构造体内部也要使用输出信号时,只能定义成“buffer”。端口数据类型常用的有布尔型(boolean)、位型(bit)、位矢量型(bit-vector)、整数型(integer)、非标准逻辑和标准逻辑类型(Std_ulogic和Std_logic)。1)boolean:布尔型,可取值“TRUE(真)”或“FALSE(假)”。2)bit:为位逻辑数据类型,信号取值是逻辑值“1”和“0”。3)bit_vector:取值是一组二进制位的值。

如:8位数据总线数端口Port(d0,d1,sel:inbit;

q:outbit;

bus:outbit_vector(7downto0));4)Integer:整数,用作循环技术或常数,通常不用于I/O信号。5)Std_ulogic和Std_logic:非标准逻辑和标准逻辑类型,由IEEE:Std_logic_1164支持,程序包中定义了有关的数据类型,访问该程序包中的项目需要使用LIBRARY子句和USE子句。LibraryIEEE;UseIEEE.STD_Logic_1164.all;EntitymuisPort(d0,d1,sel:inSTD_Logic;

q:outSTD_Logic;

bus:outSTD_Logic_vector(7downto0));ENDmu;练习编写包含以下内容的实体代码:端口D为12位输入总线;端口OE和CLK都是1位输入;端口AD为7位双向总线;端口A为7位输出总线;端口INT是1位输出;端口AS是一位输出同时被用作内部反馈。d[11..0]clkoead[7..0]a[7..0]intas

my_design练习答案Libraryieee;Useieee.std_logic_1164.ALL;Entitymy_designisPORT(d:instd_logic_vector(11downto0);oe,clk:in:std_logic;ad:inoutstd_logic_vector(7downto0);a:outstd_logic_vector(7downto0);int:outstd_logic;as:bufferstd_logic);Endmy_design;

d[11..0]clkoead[7..0]a[7..0]intasmy_design结构体结构体是用来描述一个设计的具体结构,建立一个设计中输入和输出之间的关系,即描述实体的功能,对黑盒子的内部进行具体描述。VHDL允许采用三种描述格式来进行具体的设计构造,行为描述、数据流描述和结构描述。具体描述时,可以是以上三种中的一种或几种的任意组合。一个设计实体可以有多个结构体。结构体一般格式为:ARCHITECTURE

结构体名OF

实体名IS定义语句:内部信号,常数,数据类型,函数定义

BEGIN[并行处理语句];[进程语句];…END

结构体名;

ARCHITECTURE、OF、IS、BEGIN、END是VHDL的关键字(保留字)。

结构体名称由设计者自由命名,是结构体的唯一名称,该结构体名可反映结构体的特色。

例如: architecturebehaviorofmuxis——用结构体行为命名 architecturedataflowofmuxis——用结构体的数据流命名 architecturestructuralofmuxis——用结构体组织结构命名 architecturelatchofmuxis——用结构体的功能命名以上命名举例说明,几个结构体都属于设计实体mux,结构体名由设计者自行定义,OF后面的实体名指明了该结构体所对应的是哪个实体。由于一个设计有行为描述、数据流描述和结构描述3种方式,一般建议用behave,dataflow,structure为结构体命名。

用于对结构体内部将要使用的信号、常数、数据类型、元件、函数和过程加以说明。最常见的是对内部流动的信号的定义。但不能定义变量。

实体说明中定义的信号是外部信号,而结构体定义的信号为该结构体的内部信号,它只能用于这个结构体中。

结构体中的信号定义和端口说明一样,应有信号名称和数据类型定义。因为它是内部连接用的信号,因此不需要方向说明。结构体的三种描述形式:1、行为描述2、结构描述3、数据流描述1、行为描述

描述该设计单元的功能,即该硬件做什么,主要使用函数、过程和进程语句,以算法形式描述数据的变换和传送。即只描述所希望电路的功能或者电路行为(输入输出间转换的行为),而没有指明或涉及实现这些行为的硬件结构。

ARCHITECTUREbehaviorOFmux21IS

BEGIN

PROCESS(a,b,s) BEGIN IFs='0'THENy<=a;ELSEy<=b; ENDIF;

ENDPROCESS;ENDone;2、结构描述

描述该设计单元的硬件结构,即该硬件是如何构成的。主要使用配置指定语句及元件例化语句描述元件的类型及元件的互联关系。

3、数据流描述

也称为寄存器传输描述形式。是对信号到信号的数据流的路径形式进行描述,因此要求设计者不但要对设计实体的功能实现有一定的了解,而且还需要对内部的逻辑电路结构有清楚的认识。设计库设计库(Library)1、设计库是经编译后的数据的集合,存放包集合定义、实体定义、结构体定义和配置定义。2、VHDL中,设计库的说明总放在设计单元的最前面。3、设计库中的各个设计单元可以用作进行其他设计的资源,一个设计可以使用多个库中的设计单元。设计库的使用

首先在设计的开头说明要引用的库,然后使用use子句指明要使用库中的哪一个设计单元,其书写格式为:

Library库名;Use库名.程序包名.all;

其中:程序包名就是实际设计要使用的库中的设计单元;all表示使用程序包中的所有项目。常用设计库1、STD库2、WORK库WORK库是VHDL语言工作库,用户在项目设计中设计成功、正在验证、和未仿真的中间件都放在WORK库中。以上两个库对当前设计是永远可见的,不需在程序开头对它们进行说明。即下面的LIBRARY子句隐含存在于任何设计单元之前。librarystd;librarywork;3、资源库除STD和WORK库以外所有的库均为资源库。这些资源库的使用必须用LIBRARY显式的说明出来。如常用的资源库IEEE库(Std_logic_1164)和VITAL库。程序包

在VHDL中,设计的实体和结构体中定义的数据类型、常量、子程序说明和元件说明等只能在该设计实体中使用,而对其他设计实体是不可见的。程序包说明用来单纯地罗列VHDL中所要用到的信号定义、常量定义、数据类型、子程序说明和元件说明等,是一个可编译的设计单元。

要使用程序包中的某些说明和定义,要用use语句说明。各种VHDL编译系统都含有多个标准程序包,如Std_Logic_1

温馨提示

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

评论

0/150

提交评论