版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2章,VHDL程序结构与数据对象,Very high speed integrated Hardware Description Language (VHDL) 是IEEE、工业标准硬件描述语言 用语言的方式而非图形等方式描述硬件电路 容易修改 容易保存 特别适合于设计的电路有: 复杂组合逻辑电路,如: 译码器、编码器、加减法器、多路选择器、地址译码器. 状态机 等等.,什么是VHDL?,VHDL的功能和标准,VHDL 描述 输入端口 输出端口 电路的行为和功能 VHDL有过两个标准: IEEE Std 1076-1987 (called VHDL 1987) IEEE Std 1076-1
2、993 (called VHDL 1993),2.1 VHDL程序结构,2.1 VHDL程序结构,对数据类型、常数、信号、子程序和元件等元素的说明。不是必须的。,std_logic 、 std_logic_vector 、 std_ulogic 、std_ulogic_vector,6,库 用于存放已编译的实体、结构体、包集合和配置,包集合存放各设计模块能共享的数据类型、常数、子程序等,2.1 VHDL程序结构,实体部分描述设计系统的外部接口信号(即输入/输出信号),结构体用于描述 系统的内部电路,配置用于从库中选取所需元件安装到设计单元的实体中,对于VHDL的编译器和综合器来说,程序文字的大
3、小写不加区分。 为了使程序结构清晰,易于阅读和调试,书写和输入程序时,使用层次缩进格式,同一层次的语句对齐,底层次的语句较高层次的语句缩进两个字符。 程序中的注释使用双横线“-”。在VHDL程序的任何一行中,双横线“-”后的文字都不参加编译和综合。,相关约定,2.1 VHDL程序结构,2.1 VHDL程序结构,2.2 VHDL程序基本构建,2.2.1 实体和端口模式,实体中的每一个I/O信号被称为端口,其功能对应于电路图符号的一个引脚。端口说明则是对一个实体的一组端口的定义,即对基本设计实体与外部接口的描述。端口是设计实体和外部环境动态通信的通道。,类属参数说明是可选部分。如果需要,可使用以“
4、GENERIC”语句来指定该设计单元的类属参数(如延时、功耗等)。 实体名、端口名等均应为符合VHDL命名规则的标识符。,实体声明格式 注意事项,2.2 VHDL程序基本构建,2.2 VHDL程序基本构建,端口模式,端口模式 用来说明数据传输通过该端口的方向。端口模式有以下几类: IN(输入):仅允许数据流进入端口。主要用于时钟输入、控制输入、单向数据输入。 OUT(输出):仅允许数据流由实体内部流出端口。该模式通常用于终端计数一类的输出,不能用于反馈。 BUFFER(缓冲):该模式允许数据流出该实体和作为内部反馈时用,但不允许作为双向端口使用。 INOUT(双向):可以允许数据流入或流出该实
5、体。该模式也允许用于内部反馈。 如果端口模式没有指定,则该端口处于缺省模式为:IN。,2.2 VHDL程序基本构建,INOUT和BUFFER的区别:,BUFFER回读的信号不是由外部输入的,而是由内部产生向外输出的;而INOUT读取的信号是外部的。,2.2 VHDL程序基本构建,2.2.2 结构体,实体名必须是所在设计实体的名字,结构体名由设计者定义,但当一个实体具有多个结构体时,结构体的取名不可重复。,结构体中的说明语句是对结构体的功能描述语句中将要用到的信号(SIGNAL)、数据类型(TYPE)、常数(CONSTANT)、元件(COMPONENT)、函数(FUNCTION)和过程(PROC
6、EDURE)等加以说明的语句。内部信号无须注明方向。,对数据类型、常数、信号、子程序和元件等元素的说明,不是必须的。,以各种不同的描述风格描述实体逻辑行为的语句。,结构描述: 是表示元件之间的互联, 高层次的设计实体可以调用低层次设计实体。最接近实际的硬件电路结构。 使用元件说明语句和元件例化语句,2.2 VHDL程序基本构建,VHDL 构造体描述的描述方式,行为级描述: 只表示输入和输出间转换的行为,它不包含任何结构的信息(硬件特性、连线方式、逻辑行为方式)。,2.2 VHDL程序基本构建,例1 二选一数据选择器,ENTITY mux IS PORT(d0,d1:IN BIT; sel:IN
7、 BIT; q:OUT BIT); END mux;,ARCHITECTURE behave OF mux IS BEGIN PROCESS(d0,d1,sel) BEGIN IF sel=0 THEN q=d0; ELSE q=d1; END IF; END PROCESS; END behave;,RTL级描述(数据流描述方式): 以规定设计中的各种寄存器形式为特征,然后在寄存器之间插入组合逻辑。 数据流描述方式能比较直观地表达底层逻辑行为。,2.2 VHDL程序基本构建,ENTITY mux IS PORT( d0,d1:IN BIT; sel:IN BIT; q:OUT BIT ) ;
8、 END mux;,ARCHITECTURE behave OF mux IS SIGNAL tmp1,tmp2,tmp3,nsel: BIT; BEGIN cale: PROCESS(d0,d1,sel) BEGIN Nsel=NOT sel; tmp1= d0 AND sel; tmp2= d1 AND nsel; tmp3= tmp1 OR tmp2; q= tmp3; END PROCESS; END behave;,例1 二选一数据选择器,三种描述方式比较,VHDL 构造体描述的三种方式,2.2 VHDL程序基本构建,2.2.3 库和库的种类,在利用VHDL进行工程设计中,为了提高设
9、计效率以及使设计遵循某些统一的语言标准或数据格式,有必要将一些有用的信息汇集在一个或几个库中以供调用。这些信息可以是预先定义好的数据类型、子程序等设计单元的集合体(程序包),或预先设计好的各种设计实体(元件库程序包)。因此,可以把库看成是一种用来存储预先完成的程序包和数据集合体的仓库。 库(LIBRARY)的语句格式如下: LIBRARY 库名; 这一语句即相当于为其后的设计实体打开了以此库名命名的库,以便设计实体可以利用其中的程序包。如语句“LIBRARY IEEE;”表示打开IEEE库。,2.2 VHDL程序基本构建,2.2.3 库和库的种类,IEEE库,STD库,WORK库,VITAL库
10、,std_logic_1164(最常用,IEEE标准程序包) std_logic_arith std_logic_signed (非IEEE标准程序包) std_logic_unsigned,2.2 VHDL程序基本构建,2.2.3 库和库的种类,IEEE库 IEEE库是VHDL设计中最为常见的库,它包含有IEEE标准的程序包和其他一些支持工业标准的程序包。IEEE库中的标准程序包主要包括STD_LOGIC_1164,NUMERIC_BIT和NUMERIC_STD等程序包。其中的STD_LOGIC_1164是最重要的最常用的程序包,大部分基于数字系统设计的程序包都是以此程序包中设定的标准为基础
11、的。,此外,还有一些程序包虽非IEEE标准,但由于其已成事实上的工业标准,也都并入了IEEE库。这些程序包中,最常用的是Synopsys 公司的STD_LOGIC_ARITH、STD_LOGIC_SIGNED和STD_LOGIC_UNSIGNED程序包。 目前流行于我国的大多数EDA工具都支持Synopsys公司程序包。一般基于大规模可编程逻辑器件的数字系统设计,IEEE库中的4个程序包STD_LOGIC_1164、STD_LOGIC_ARITH、STD_LOGIC_SIGNED和STD_LOGIC_UNSIGNED已经足够使用。 另外,在IEEE库中符合IEEE标准的程序包并非符合VHDL语
12、言标准,如STD_LOGIC_1164程序包。因此在使用VHDL设计实体的前面必须以显式表达出来。,2.2 VHDL程序基本构建,2.2.3 库和库的种类,STD库 VHDL语言标准定义了两个标准程序包,即STANDARD和TEXTIO程序包,它们都被收入在STD库中。只要在VHDL应用环境中,可随时调用这两个程序包中的所有内容,即在编译和综合过程中,VHDL的每一项设计都自动地将其包含进去了。由于STD库符合VHDL语言标准,在应用中不必如IEEE库那样以显式表达出来。 WORK库 WORK库是用户的VHDL设计的现行工作库,用于存放用户设计和定义的一些设计单元和程序包。因此自动满足VHDL
13、语言标准,在实际调用中,不必以显式预先说明。,2.2 VHDL程序基本构建,2.2.3 库和库的种类,VITAL库 使用VITAL库,可以提高VHDL门级时序模拟的精度,因而只在VHDL仿真器中使用。库中包含时序程序包VITAL_TIMING和VITAL_ PRIMITIVES。VITAL程序包已经成为IEEE标准,在当前的VHDL仿真器的库中,VITAL库中的程序包都已经并到IEEE库中。 实际上,由于各FPGA/CPLD生产厂商的适配工具(如ispEXPERT Compiler)都能为各自的芯片生成带时序信息的VHDL门级网表,用VHDL仿真器仿真该网表可以得到非常精确的时序仿真结果。因此
14、,基于实用的观点,在FPGA/CPLD设计开发过程中,一般并不需要VITAL库中的程序包。,除了以上提到的库外,EDA工具开发商为了便于FPGA/CPLD开发设计上的方便,都有自己的扩展库和相应的程序包,如DATAIO公司的GENERICS库、DATAIO库等,以及上面提到的Synopsys 公司的一些库。 在VHDL设计中,有的EDA工具将一些程序包和设计单元放在一个目录下,而将此目录名,如“WORK”,作为库名,如Synplicity公司的Synplify。有的EDA工具是通过配置语句结构来指定库和库中的程序包,这时的配置即成为一个设计实体中最顶层的设计单元。 此外,用户还可以自己定义一些
15、库,将自己的设计内容或通过交流获得的程序包设计实体并入这些库中。,2.2 VHDL程序基本构建,2.2.3 库和库的种类,2.2 VHDL程序基本构建,2.2.4 库和程序包的调用方法,VHDL要求每项含有多个设计实体的更大的系统中,每一个设计实体都必须有自己完整的库说明语句和use语句。使用库和程序包常用的定义表达式。,向本设计实体开放指定库中的特定程序包所选定的项目; 向本设计实体开放指定库中的特定程序包内所有的内容;,2.2 VHDL程序基本构建,2.2.5 配置,在大而复杂的VHDL工程设计中,配置语句可以用来为较大的系统设计提供管理和工程组织,可以为设计实体指定或配置一个结构体, 配置也是VHDL设计实体中的一个基本单元,在综合或仿真中可以利用配置语句为整个设计提供许多有用的信息(但配置语句configuration主要用在仿真中,),2.3 VHDL文字规则,2.3.1 数字,2.3 VHDL文字规则,2.3.2 字符串,2.3.3 关键词,2.3 VHDL文字规则,2.3.4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《立定跳远》的教学反思
- 《快乐英语》第三册教案
- 体育场馆电缆网络顶管施工协议
- 城市绿化钻孔桩施工合同
- 环保产业园项目招投标资料
- 建筑工人休息室空调节能办法
- 公共交通枢纽防火门招投标资料
- 物业公司医疗保健人员合同模板
- 招投标合同变更法律风险
- 研发项目招投标实施细则
- 初中劳技园艺教案
- 金宝高效能矿物质在猪上的应用
- 新苏科版八年级上册初中数学全册教案
- 联想云教室lenovo eclass用户手册
- 机械伤害应急预案演练记录
- 仿古木作工程施工组织设计方案
- 钢铁及合金牌号统一数字代号体系(GB/T17616-2013)
- 《好听的声音》PPT课件
- 拼音拼读练习过关训练(无汉字)
- 电厂氨区液氨储罐置换方案
- 地理说课ppt课件
评论
0/150
提交评论