一个vhdl设计由若干个vhdl文件构成,每个文件主要包含

上传人:第*** 文档编号:119413557 上传时间:2020-01-15 格式:PPT 页数:216 大小:673KB
返回 下载 相关 举报
一个vhdl设计由若干个vhdl文件构成,每个文件主要包含_第1页
第1页 / 共216页
一个vhdl设计由若干个vhdl文件构成,每个文件主要包含_第2页
第2页 / 共216页
一个vhdl设计由若干个vhdl文件构成,每个文件主要包含_第3页
第3页 / 共216页
一个vhdl设计由若干个vhdl文件构成,每个文件主要包含_第4页
第4页 / 共216页
一个vhdl设计由若干个vhdl文件构成,每个文件主要包含_第5页
第5页 / 共216页
点击查看更多>>
资源描述

《一个vhdl设计由若干个vhdl文件构成,每个文件主要包含》由会员分享,可在线阅读,更多相关《一个vhdl设计由若干个vhdl文件构成,每个文件主要包含(216页珍藏版)》请在金锄头文库上搜索。

1、一个VHDL设计由若干个VHDL文件构成,每个文件主要包含五个部分的一个或全部:在max+plus中后缀为(VHD).,1.程序包 ( Package ) 2.实体 (Entity) 3.结构体 (Architecture) 4.配置(configuration) 5.库(library),第2章 VHDL语言程序的基本结构,其中14为可分别编译 的源设计单元。,库用来存放已编译过 的实体、构造体、包 和配置。,2.1 VHDL语言设计的基本单元,基本单元:基本设计实体,可很简单,如门, 也可很复杂,如包含CPU的系统。,设计一个数字系统,首先要解决两个问题: 1) 输入、输出是什么; 2)内

2、部完成什么功能。,对于1,由实体(Entity)说明来描述; 对于2,由构造体(Architecture)来描述。,2.1.1 实体说明,实体中定义电路单元和使用环境的接口,实体名必须与电路名相同。,实体的格式,ENTITY 实体名 IS 类属参数说明; 端口说明; END 实体名;,1)VHDL语言书写不分大 小写;(个别例外) 2) 中内容有时可不要; 3)END后的实体名可省。,1.类属参数说明,1)类属参数说明(generic)用来为设计引入信息,如时间;,2)类属参数说明(generic)必须放在端口之前;,3)类属参数说明(generic)常用来设计通用元件。,2.端口说明,格式:

3、 Port(端口名,端口名:方向 数据类型名; 端口名,端口名:方向 数据类型名);,1)端口名 电路外部引脚的名称,通常用英文字母加数字命名,如d0,A1, En,clk,LD.,2) 端口方向(模式) 端口方向定义外部引脚信息的方向,共有五种: in, out, inout, buffer, linkage 常用前4种 Linkage: 不指定方向,任何方向均可连接,只在文挡中使用。,IN 信号进入实体但并不输出; OUT 信号离开实体但并不输入;并且不能在有内部反 馈情况下使用; INOUT 信号是双向的(既可以进入实体,也可以离开实 体); BUFFER 信号输出到实体外部,同时也可在

4、实体内部反馈; BUFFER (缓冲)是INOUT(双向)的子集,但不是由外部 驱动。,端口模式可用下图说明:(黑框代表一个设计或模块),3)数据类型,VHDL中有10种数据类型,但逻辑设计只用两种,另在库中还定 义了多种数据类型: Bit 2. bit_vector Bit :位逻辑数据类型,取值为0或1; bit_vector:位矢量,取值为一组二进制位。,Port(do,d1,sel: IN Bit; q: out Bit; bus:out bit_vector(7 downto 0);,Library ieee; 在编译时在指定的库、 Use ieee.std_logic_1164.a

5、ll 包中寻找这种数据类型 Entity mu is Port(do,d1,sel: IN std_logic; q: out std_logic; bus:out std_logic_vector(7 downto 0); End mu;,2.1.2 构造体,构造体(Architecture)定义实体的实现,即电路的具体描述.,构造体的一般格式如下:,Architecture of is,begin 以下开始构造体,用于描述设计的功能,-concurrent signal assignments 并行语句信号赋值,-processes 进程(顺序语句描述设计),-component inst

6、antiations 元件例化,end;,1.构造体名称的命名:一般以描述方法命名,描述方法一般有: 行为特性:behavioral 简写为beh 结构: structural 简写为 str 数据流: dataflow,如: Architecture beh Of mux is,2. 定义语句:位于architecture和begin之间,用于对构造体内部使用的信号、变量、数据类型和函数定义。,Architecture beh Of mux is signal n1:bit; begin ,1)信号为内部使用,不须加方向 2)信号应有名和数据类型,3.并行处理语句:位于begin和end 之

7、间,描述构造体的行为和电路 连接关系。 所谓并行,指多个语句不以书写顺序执行。,一数据选择器的构造体:,architecture arch of mux4 is begin y=(a0 and not (s(0) or (a1 and s(0) and not (s(1) or (a2 and not s(0) or (a3 and s(0) and s(1); end archmux;,2.2 VHDL 语言构造体的子结构,一个构造体可以用几个子结构来构成,即一个系统可以用几个比较独立的模快来构成。,BLOCK语句结构 PROCESS语句结构 SUBPROGRAMS语句结构,2.2.1 BL

8、OCK语句结构描述,1.BLOCK语句的结构 格式: 块结构名; block begin end block 块结构名;,Entity mux is Port(d0,d1,sel: IN Bit; q: out Bit); End mux;,Architecture connect Of mux is Signal tmp1,tmp2,tmp3 : Bit; Begin cale: block Begin tmp1=d0 AND sel; tmp2=d1 AND (NOT sel); tmp3= tmp1 OR tmp2; q=tmp3 ; End block cale; END CONNEC

9、T;,一个二选一数据选择器的描述,2.块(block)和子原理图的关系:一个block相当于总图中的一个 子图,分块设计有利于编辑查错。,3.块(block)中语句的并发性:block中的语句为并发的。,4.卫式block(Guarded block):指满足条件时,块语句执行,不满足 时不执行。,例: begin G1: block(clk=1) begin q=guarded d after 5ns; qb=guarded not(d) after 7ns; end block G1;,1)卫式块不能综合; 2)after语句不能综合; 3)当满足clk=1时执行。,2.2.2进程(pro

10、cess)语句结构描述,1.process语言结构 进程名:process(信号1,信号2,) Begin End process;,Architecture connect Of mux is Signal tmp: Bit; Begin cale: Process(d0,d1,sel) Variable tmp1,tmp2,tmp3:Bit; Begin tmp1:=d0 AND sel; tmp2:=d1 AND (NOT sel); tmp3:= tmp1 OR tmp2; tmp=tmp3; q=tmp AFTER m; END PROCESS; END CONNECT;,例如:,变

11、量只在进程中定义和使用。,2. process中语句的顺序性:process中的语句按顺序执行。,process语句的启动:process( )括号内的量称为敏感量, 敏感量发生变化,启动进程。,Process的同步描述:当一个构造体内含有多个process时,进 程之间为并行的,进程之间能通信。,2.2.3 子程序(subprogram)语句结构描述,子程序有两类:1)过程(procedure) 2) 函数(function),1.过程语句格式,Procedure 过程名(参数1,参数2,)is 定义语句;(变量等定义) Begin 顺序处理语句; (过程语句) End 过程名;,过程中的参

12、数可以是输入,也可以是输出。,见教材例2-7 z: 输入,位矢量 x_flag:输出 ,布尔量 q:输入输出,整数 该过程实现将二进制数转换为整型数,x_flag为出错标志 在过程中,如不作说明,则认为in为常量,out和inout为变量。,如在过程调用后要将属性为in和inout的参数传递给信号,则要事先在过程中说明。(见例2-8),2)过程语句中的顺序性 过程语句按顺序执行 调用:将初始值传递给过程的输入参数 执行语句 将输出值拷贝到out和inout所定义的变量和信号 中去,Architecture rtl of ex is procedure cale (a,b : in intege

13、r; avg,max: out integer) is 默认为变量 begin avg:=(a+b)/2 if ab then max:=a; else max:=b; end if; end cale;,如定义过程:,调用 过程 Begin cale (d1,d2,q1,q2); -错误,并行语句。 Process(d3,d4) Variable a,b: integer; Begin cale(d3,d4,a,b);-正确 ,2.函数语句,1)格式: function 函数名 (参数1,2) return 数据类型名 is 定义语句 begin 顺序语句 返回变量名 end 函数名;,子程

14、序可定义在进程、包和构造体中。例2-9为定义在包中的例子。定义了一 个max 函数。,2)函数调用及结果返回 函数调用和一般高级语言相同; 函数调用既可在并行语句中,也可在顺序语句中; 函数和过程通常不必指定参数的矢量长度; 例2-9是将max 函数放在了名为bpac的包中,而bpac 包应放在库中。 例2-10第1行应写为 library ieee; library newlib; 由例2-10可知,bpac包存放在newlib库中。,2.3 包集合、库及配置,包集合、库及配置是三个可独立编译的源设计单元。,2.3.1库(Library),库专门存放预先编译好的程序包、实体、构造体和配置等,

15、这样它们就可以在其它设计中被调用。库的功能类似一个子目录或文件夹。使用库时,要进行库说明。,LIBRARY ieee; library newlib;,1.库的种类,有5种: ieee; std; 面向ASIC的库; work;用户定义库。,其中:ieee库为ieee正式认可的库,使用库中包时要说明; std库为VHDL的标准库,使用该库中数据可不必说明;但 使用库中TEXTIO包须说明。,面向ASIC库: 由工具商提供的库,在MAX-PLUS中,有ALTERA公司自己定义的库,名为ALTERA.里面 存放两个程序包。 1) maxplus2; 2) megacore.,WORK 库:现行作业

16、库,使用不必说明。,用户定义库:由用户自己定义,使用需要说明。使用工作 界面窗口中的options 选项,在user libraries 选项中选择你所要存放库的路径。,2.库的使用,1)库的说明 如: library ieee; use ieee.std_logic_1164.all;,2) 库说明的作用范围 作用范围为它下面的一个设计(包括实体、构造体和配置等)。 当有两个实体时,应有两个库使用说明。(如例2-11),2.3.2 包集合 包集合中存放信号定义、常量、数据类型、元件语句、函数、过程等,它可以编译,使用时用use语句。,如: use ieee.std_logic_1164.all;,包结构: package 包集合名 is 说明语句; end 包集合名; Package body 包集合名 i

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

当前位置:首页 > 建筑/环境 > 施工组织

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