第三章VHDL语言基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第三章VHDL语言基础本章目录VHDL概述VHDL程序的基本结构VHDL程序的主要构件VHDL数据类型及运算符VHDL数据对象VHDL基本语句测试基准VHDL程序的其他组件结构体的描述方法VHDL概述VHDL概述什么是VHDLVHDL—Very-High-SpeedIntegratedcircuitHardwareDescriptionLanguageVHDL的起源及发展80年代初,由美国国防部在实施超高速集成电路(VHSIC)项目时开发的1987年,IEEE协会批准为IEEE工业标准,称为IEEE1076-19871993年,被更新为93标准,IEEE1076.931996年,IEEE1076.3称为综合标准VHDL概述VHDL的用途主要用于描述字系统的结构、行为、功能和接口使用VHDL的目的把电子电路的设计意义以文字或文件的形式保存起来,以便其它人能方便地了解电路的设计意义VHDL与verilogHDL的比较相同点:都是主要的硬件描述语言都能以文本形式抽象表示电路的行为和结构都可以从系统行为级,寄存器传输级和门级描进行电路描述不同点语法差异,verilog是类C语言,简单易用,而VHDL语句较为晦涩,使用难度大VHDL侧重于系统描述,更适合系统级设计Verilog侧重于电路级描述,更适合电路设计VHDL特点系统硬件描述能力强与器件无关,与工艺无关IEEE工业标准方法灵活,技术齐全可读性好VHDL具有硬件特征,而且是并行执行方式。VHDL概述举例:二路选择器描述的变化二路选择器模块:sel=0时,q=d0;sel=1时,q=d1。传统的描述方式:用与门、非门、或门等具体底层器件来组成,使用图形输入法。缺点:硬件电路设计复杂,需要先写出逻辑表达式或真值表,并进行化简。VHDL概述举例:二路选择器描述的变化VHDL描述方式:使用文本输入的方法。设计电路优点:可读性好,设计简单,具体电路由软件优化。LIBRARYIEEE;USEIEEE.std_logic_1164.all;ENTITYMUX2ISPORT(d0,d1:INstd_logic;sel:INstd_logic;q:OUTstd_logic);ENDENTITY;ARCHITECTUREbehavOFMUX2ISBEGINPROCESS(d0,d1,sel)BEGINIFsel=‘0’THENq=d0;ELSIFsel=‘1’THENq=d1;ELSEq=‘Z’;ENDIF;ENDPROCESS;ENDbehav;VHDL程序的基本结构VHDL程序的基本结构一个完整的VHDL程序包括库的调用,程序包的调用,实体说明和结构体4个部分。另外还可包括配置部分库的调用程序包的调用实体描述结构体描述用于说明设计系统的外部接口信息,具有唯一性相当于操作系统中的目录描述实体的行为、功能或电路结构类似于高级语言的include语句VHDL的基本结构配置描述层间或实体与结构体的关系Example库的调用程序包的调用实体描述结构体描述VHDL的基本结构LIBRARYIEEE;USEIEEE.std_logic_1164.all;ENTITYMUX2ISPORT(d0,d1:INstd_logic;sel:INstd_logic;q:OUTstd_logic);ENDENTITY;ARCHITECTUREbehavOFMUX2ISBEGINPROCESS(d0,d1,sel)BEGINIFsel=‘0’THENq=d0;ELSIFsel=‘1’THENq=d1;ELSEq=‘Z’;ENDIF;ENDPROCESS;ENDbehav;二路选择器的VHDLVHDL的主要构件VHDL程序的主要构件VHDL程序的基本构件包括库、包,配置,实体,结构体、块、子程序(函数和过程)主要构件库、程序包、实体、结构体,配置VHDL的主要构件1.库库(Library)是编译后数据的集合,是存放预先完成的程序包和数据集合体的仓库。LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;USEIEEE.std_logic_unsigned.ALL;Example:常用的库:STD库(默认库)IEEE库,WORK库(默认库),面向ASIC的库,用户自定义库使用格式:LIBRARY库名VHDL的主要构件:库STD库(默认库)库中的程序包为:standardSTD库符合VHDL语言标准,是默认库,在应用中不必像IEEE库那样显式使用STD库内定义了最基本的数据类型:Bit、bit_wector、Boolean、Integer、Real、Time并支持这些数据类型的所有运算符函数IEEE库IEEE库是VHDL设计中最常见的库,由于该库中的程序包并非符合VHDL语言标准,因此在使用时必须显示表达IEEE库内定义了四个常用的程序包:std_logic_1164(std_logictypes&relatedfunctionsStd_logic_arith(arithmeticfunctions)Std_logic_signed(signedarithmeticfunctions)Std_logic_unsigned(unsignedarithmeticfunctions)VHDL的主要构件:库LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;USEIEEE.std_logic_unsigned.ALL;Example:IEEE库四个常用的程序包:std_logic_1164包含了一些标准逻辑电平所需数据类型和函数的定义。常用的两个数据类型:STD_LOGIC和STD_LOGIC_VECTORStd_logic_arith扩展了三个数据类型UNSIGNED,SIGNED和SMALL_INT,并为其定义了相关的算术运算符和转换函数Std_logic_signed和Std_logic_unsigned重载了可用于INTEGER型和STD_LOGIC及STD_LOGIC_VECTOR型混合运算的运算符,并定义了不同数据类型间的转换函数VHDL的主要构件:库WORK库(默认库)WORK是用户现行设计的工作库,用于存放用户设计和定义的一些设计单元和程序包。该库满足VHDL语言标准,在实际调用中不需要显示调用VHDL的主要构件:库包集合包集合说明就像C语言中的include语句一样,用来单纯地罗列VHDL语言中所要用到的信号定义、常数定义、数据类型、元件语句、函数定义和过程定义等VHDL的主要构件:包Example:USEIEEE.STD_LOGIC_1164.ALL该语句表示在程序中要使用名为STD_LOGIC_1164的包集合中的所有定义或说明项VHDL的主要构件:包在VHDL中,同样的语句,使用不同的库或不同的包,所生成的电路,可能会逻辑相同,电路不同LIBRARYSTD;USESTD.STD_LOGIC.ALL;USESTD.STD_ttl.ALL;ENTITYnand2IS...ENDnand2;LIBRARYSTD;USESTD.STD_LOGIC.ALL;USESTD.STD_ttloc.ALL;ENTITYnand2IS...ENDnand2;生成一般的与非门生成集电极开路的与非门VHDL的主要构件:实体实体(ENTITY)包括实体名,类属参数说明,端口说明三部分,由保留字“ENTITY”引导ENTITY实体名IS[类属参数说明];[端口说明];END[ENTITY][实体名];使用格式:注意:实体名不能以数字开头,不能与保留字相同实体名应尽可能表达功能上含义实体结束以“ENDENTITY”或“END实体名”结束VHDL的主要构件:实体ENTITY实体名IS[类属参数说明];[端口说明];END[ENTITY][实体名];类属参数说明常用于说明静态信息,如器件延迟由保留字GENERIC引导。格式如下:GENERIC(常数名:数据类型:=设定值);例如:GENERIC(m:time:=1ns);端口说明(重点讲解双向口)端口说明是一个设计实体界面的描述,提供外部接口信息。由保留字PORT引导格式如下:PORT(端口名:端口方向数据类型)例如:PORT(d0:INstd_logic;);VHDL的主要构件:实体Example:写出如下器件的实体描述ENTITYmy_designISPORT(d:INstd_logic_vector(15DOWNTO0);clk,reset,oe:INstd_logic;q:OUTstd_logic_vector(15DOWNTO0);ad:INOUTstd_logic_vector(15DOWNTO0);int:BUFFERstd_logic;as:OUTstd_logic);ENDmy_design;给几个练习VHDL的主要构件:结构体注意:结构体名应有明确的意义定义语句只对本结构体有效结构体里面的语句是并行的结构体(ARCHITECTURE)是设计实体的具体描述,指明设计实体的具体行为、所用元件及连接关系。由定义说明和具体功能描述两部分组成。使用格式:ARCHITECTURE结构体名OF实体名IS[定义语句]信号(signal);常数(constant);数据类型(type);函数(function);元件(component)等;BEGIN[并行处理语句];END结构体名;VHDL的主要构件:结构体Example:半加器半加器电路是指对两个输入数据位进行加法,输出一个结果和进位。VHDL的主要构件:结构体Example:半加器半加器电路是指对两个输入数据位进行加法,输出一个结果和进位。LibraryIEEE;Useieee.std_logic_1164.all;Entityhalf_adderisport(X,Y:inbit;sum,carry:outbit);endhalf_adder;Architecturedataflowofhalf_adderisbegin--并行处理语句sum=XxorYafter10ns;carry=XandYafter10ns;Enddataflow;实现程序VHDL的主要构件:结构体Example:半加器半加器电路是指对两个输入数据位进行加法,输出一个结果和进位。注意:仿真结果某一时刻的输出并非我们期待中的结果,这是因为我们使用的是时序仿真,考虑了器件的延时,后面的章节将会介绍功能仿真和时序仿真仿真结果VHDL的主要构件:结构体行为描述:描述输入与输出之间的转换行为,不包含内部的电路元件、电路的结构信息,一般将结构体命名为“behav”数据流描述既表示行为,又隐含着结构;体现数据的流动路径和方向,一般将结构体命名为“dataflow”结构描述法描述电路元件与它们之间的连接关系,一般将结构体命名为“stru数据类型结构体的描述方法VHDL的主要构件:结构体结构体的描述方法——全加器的行为描述architecturebehavofFAisbeginprocess(x,y,ci)variablen:integer;constantsum_vector:std_logic_vector(0to3):=“0101”;constantcarry_vector:std_logic_vector(0to3):=“0011”;beginn:=0;ifx=’1’thenn:=n+1;endif;ify=‘1’thenn:=n+1;endif;ifci=’1’thenn:=n+1;endif;s=sum_vector(n);co=carry_vector(n);endprocess;endbehav;libraryieee;useieee.std_logic_1164.all;entityFAisport(x,y,ci:instd_logic;s,co:outstd_logic

1 / 99
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功