硬件描述语言及器件2(侯伯亨版)_第1页
硬件描述语言及器件2(侯伯亨版)_第2页
硬件描述语言及器件2(侯伯亨版)_第3页
硬件描述语言及器件2(侯伯亨版)_第4页
硬件描述语言及器件2(侯伯亨版)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

适合班级:0906024109060242教学东区01107H,第二课VHDL语言程序基本结构,VHDL标识符(Identifiers),基本标识符由字母、数字和下划线组成第一个字符必须是字母最后一个字符不能是下划线不允许连续2个下划线保留字(关键字)不能用于标识符大小写是等效的,VHDL大小写不敏感,eqcomp4.vhd,包,实体,构造体,文件名和实体名一致,每行;结尾,关键字begin,关键字end后跟实体名,关键字end后跟构造体名,库,-eqcomp4isafourbitequalitycomparatorLibraryIEEE;useIEEE.std_logic_1164.all;entityeqcomp4isport(a,b:instd_logic_vector(3downto0);equal:outstd_logic);endeqcomp4;architecturedataflowofeqcomp4isbeginequal=1whena=belse0;Enddataflow;,VHDL语言的五个部分,实体(Entity):描述所设计的系统的外部接口信号;构造体或构造体(Architecture):描述系统内部的结构和行为;配置(Configuration):从库中选取所需单元组成系统设计的不同版本;包(Package):存放各设计模块都能共享的数据类型、常数和子程序;库(Library):存放已经编译的实体、构造体、包、配置。,VHDL程序的基本结构,实体:VHDL语言的硬件抽象。它表示具有明确的输入、输出的硬件设计的一部分。构造体:指定设计实体输入和输出之间的行为、逻辑关系或功能。,VHDL程序的基本结构,多次使用低层次实体,多个顶层结构体使用同一个实体,实体(Entity),描述此设计功能输入输出端口(Port)在层次化设计时,Port为模块之间的接口在芯片级,则代表具体芯片的管脚,a,b,s,co,Entityaddr1isport(a,b:inbit;s,co:outbit);endaddr1;,实体说明的语法示格式,entity实体名is【generic(类型说明)】-定义端口大小,IO引脚分配port(信号名:模式信号类型;信号名:模式信号类型;信号名:模式信号类型);end实体名;,实体端口的模式,输入(Input):clk、reset、en、addr等输出(Output):输出信号,不能内部引用双向(Inout):可代替所有其他模式,用于设计双向总线缓冲(Buffer):与Output类似,但允许该管脚名作为一些逻辑的输入信号不定(Linkage):不定方向,哪个方向都可连接,Out与Buffer的区别,Entitytest1isport(a:instd_logic;b,c:outstd_logic);endtest1;architectureaoftest1isbeginb=not(a);c=b;-Errorenda;,Entitytest2isport(a:instd_logic;b:bufferstd_logic;c:outstd_logic);endtest2;architectureaoftest2isbeginb=not(a);c=b;enda;,使用out还是使用buffer,out允许对应多个信号:addr:outstd_logic_vector(3downto0);,buffer只允许对应一个信号:addr(0):bufferstd_logic;addr(1):bufferstd_logic;addr(2):bufferstd_logic;addr(3):bufferstd_logic;,当一个构造体用buffer说明输出端口时,与其连接的另一个构造体端口也使用buffer;对于out,没有上述要求,信号数据类型,数据类型是内部的或用户定义的信号类型。常用数据类型:bit、bit_vector、boolean、integer、枚举型两类重要的数据类型(实际工程应用):std_logic、std_logic_vector。信号之间赋值,必须首先保证信号的数据类型相同。,例3-2不同的数据类型说明libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitymuisport(d0,d1,sel:instd_logic;q:outstd_logic;bus:outstd_logic_vector(7downto0);endmu;,例3-1较完整的端口说明port(d0,d1,sel:inbit;q:outbit;bus:outbit_vector(7downto0);,构造体(Architecture),描述实体的行为或结构构造体有三种描述方式行为描述(behavioral)数据流描述或寄存器传输描述(dataflow)结构化描述(structural),构造体行为描述,Architecturebehavioralofeqcomp4isbegincomp:process(a,b)beginifa=bthenequal=1;elseequal=0;endif;endprocesscomp;endbehavioral;,高层次的功能描述,不必考虑在电路中到底是怎样实现的。,构造体定义的语法格式,architecture构造体名of实体名is类型说明信号说明函数定义进程定义元件说明begin并行语句并行语句end构造体名;,并发语句同时执行,构造体命名,任意命名对应三种描述风格可将构造体命名为behavioral,dataflow,structural三种方式。直接命名为a,简单明了。,构造体描述语句,块语句(Block)进程语句(Process)信号赋值语句(=)子程序调用语句(Subprogram)元件例示语句(Component),Blcok语句的使用,在进行电路原理图设计时,往往将一个大规模电路分割成多张子原理图,进行输入和存档。在VHDL语言中同样可使用Block语句对应电原理图。,Block语句,Block语句结构块结构名Blockbegin并行语句并行语句EndBlock块结构名;,二选一电路Block语句示例,例3-4Entitymuxisport(d0,d1,sel:inbit;q:outbit);endmux;architectureconnectofmuxissignaltmp1,tmp2,tmp3:bit;begin,cale:blockbegintmp1=d0andsel;tmp2=d1and(notsel)tmp3=tmp1andtmp2;q=tmp3;endblockcale;endconnect;,卫式Block语句,Block语句并发执行,若想对其进行条件触发判断,则需使用卫式Block语句。例如:一个D触发器,具有一个数据输入端d,一个时钟输入端clk,一个输出端q和一个反向输出端qb。,例3-5Entitylatchisport(d,clk:inbit;q:outbit);endlatch;architecturelatch_guardoflatchisbeging1:block(clk=1)beginq=guardeddafter5ns;qb=guardednot(d)after7ns;endblockg1;endlatch_guard;,布尔表达式,前卫关键词,只有在布尔表达式为真时,语句才被执行,进程(process)语句,进程语句在VHDL程序中用来描述硬件的行为,进程中的语句按顺序执行。一个构造体中可以有多个进程语句,各个进程是并发执行的。进程语句是设计人员描述构造体时使用最为频繁的语句。它有如下特点:(1)它可以与其它进程并发执行,并可存取构造体或实体中所定义的信号;(2)进程结构中的所有语句都是按顺序执行的;(3)为了启动进程,在进程结构中必须包含一个显式的敏感信号量表或者包含一个wait语句;(4)进程之间的通信是通过信号量的传递来实现的。,进程(process)语句的语法格式,【进程名:】process(敏感信号1,敏感信号2)【说明区】begin顺序语句;顺序语句;endprocess【进程名】;,带清零端的D触发器的VHDL程序,敏感信号,顺序语句,进程中使用wait语句的VHDL程序,architectureaofwaityujuissignalq:std_logic_vector(3downto0);beginprocessbeginwaituntil(clkeventandclk=1);q=q+1;endprocess;y=q;enda;,无敏感信号,使用wait语句,定义q为信号,库和程序包,库是经编译后的数据集合,它存放实体说明、构造体、程序包和配置说明等。包括用于分析、仿真和综合的中间文件。程序包用来存放VHDL语言中所要用到的信号定义、常量定义、数据类型、元件语句等,它是一个可以编译的设计单元,也是库结构中的一个层次。,库和程序包语句格式,library库名;use库名.程序包名.all;-all指使用所有项目use库名.程序包名.项目名;-只使用库中的某个项目,libraryIEEE;-使用IEEE库useIEEE.std_logic_1164.all;-打开IEEE库中的程序包std_logic_1164.all的所有项目useIEEE.std_logic_1164.std_logic;-打开程序包std_logic_1164中的std_logic(标准逻辑)数据类型,库的类型,IEEE库std库work库ASIC库用户自定义的库,程序包,1.std_logic_1164程序包2.numeric_std程序包,库和程序包的常用写法,libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;,配置(configuration)语句,配置(configuration)语句描述层与层之间的连接关系以及实体与构造体之间的连接关系。在仿真时,可以利用配置来选择不同的构造体,进行对比验证以得到

温馨提示

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

评论

0/150

提交评论