一个VHDL设计由若干个VHDL文件构成-每个文件主要包含上课讲义.ppt





《一个VHDL设计由若干个VHDL文件构成-每个文件主要包含上课讲义.ppt》由会员分享,可在线阅读,更多相关《一个VHDL设计由若干个VHDL文件构成-每个文件主要包含上课讲义.ppt(217页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一个一个VHDLVHDL设计由若干个设计由若干个VHDLVHDL文件构成文件构成-每个文每个文件主要包含件主要包含2.1 VHDL语言设计的基本单元语言设计的基本单元基本单元:基本设计实体,可很简单,如门,基本单元:基本设计实体,可很简单,如门,也可很复杂,如包含也可很复杂,如包含CPU的系统。的系统。设计一个数字系统,首先要解决两个问题:设计一个数字系统,首先要解决两个问题:1)输入、输出是什么;输入、输出是什么;2)内部完成什么功能。)内部完成什么功能。对于对于1,由实体,由实体(Entity)说明来描述;说明来描述;对于对于2,由构造体(,由构造体(Architecture)来描述。来描
2、述。Entity mux isGeneric(m:Time:=1ns);Port(do,d1,sel:IN Bit;q:out Bit);End mux;Architecture connect Of mux isSignal 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;实体说明部分实体说明
3、部分构造体说明部分构造体说明部分一个二选一数据选择一个二选一数据选择器的描述器的描述2.1.1 实体说明实体说明 实体中定义电路单元和使用环境的接口,实体名必须实体中定义电路单元和使用环境的接口,实体名必须与电路名相同。与电路名相同。实体的格式实体的格式ENTITY 实体名实体名 IS类属参数说明类属参数说明;端口说明端口说明;END 实体名;实体名;1)VHDL语言书写不分大语言书写不分大 小写;(个别例外)小写;(个别例外)2)中内容有时可不要;中内容有时可不要;3)END后的实体名可省。后的实体名可省。1.类属参数说明类属参数说明1)类属参数说明()类属参数说明(generic)用来为设
4、计引入信息,如时间;用来为设计引入信息,如时间;2)类属参数说明()类属参数说明(generic)必须放在端口之前;必须放在端口之前;3)类属参数说明()类属参数说明(generic)常用来设计通用元件。常用来设计通用元件。2.端口说明端口说明格式:格式:Port(端口名端口名,端口名,端口名:方向:方向 数据类型名;数据类型名;端口名端口名,端口名,端口名:方向:方向 数据类型名数据类型名);1)端口名端口名 电路外部引脚的名称,通常用英文字母加数字命名,如电路外部引脚的名称,通常用英文字母加数字命名,如d0,A1,En,clk,LD.2)端口方向(模式)端口方向(模式)端口方向定义外部引脚
5、信息的方向,共有五种:端口方向定义外部引脚信息的方向,共有五种:in,out,inout,buffer,linkage 常用前常用前4种种Linkage:不指定方向,任何方向均可连接不指定方向,任何方向均可连接,只在文挡中使用。只在文挡中使用。IN 信号进入实体但并不输出;信号进入实体但并不输出;OUT 信号离开实体但并不输入;并且不能在有内部反信号离开实体但并不输入;并且不能在有内部反 馈情况下使用;馈情况下使用;INOUT 信号是双向的(既可以进入实体,也可以离开实信号是双向的(既可以进入实体,也可以离开实 体);体);BUFFER 信号输出到实体外部,同时也可在实体内部反馈;信号输出到实
6、体外部,同时也可在实体内部反馈;BUFFER(缓冲)是(缓冲)是INOUT(双向)的子集,但不是由外部(双向)的子集,但不是由外部 驱动。驱动。端口模式可用下图说明端口模式可用下图说明:(黑框代表一个设计或模块)(黑框代表一个设计或模块)IN OUT BUFFER INOUT3)数据类型)数据类型VHDL中有中有10种数据类型,但逻辑设计只用两种种数据类型,但逻辑设计只用两种,另在库中还定另在库中还定义了多种数据类型:义了多种数据类型:1.Bit 2.bit_vector2.Bit:位逻辑数据类型,取值为位逻辑数据类型,取值为0或或1;3.bit_vector:位矢量,取值为一组二进制位。位矢
7、量,取值为一组二进制位。Port(do,d1,sel:IN Bit;q:out Bit;bus:out bit_vector(7 downto 0);Library ieee;在编译时在指定的库、在编译时在指定的库、Use ieee.std_logic_1164.all 包中寻找这种数据类型包中寻找这种数据类型Entity mu isPort(do,d1,sel:IN std_logic;q:out std_logic;bus:out std_logic_vector(7 downto 0);End mu;2.1.2 构造体构造体构造体构造体(Architecture)定义实体的实现,即电路的
8、具体描述定义实体的实现,即电路的具体描述.构造体的一般格式如下:构造体的一般格式如下:Architecture of is begin 以下开始构造体,用于描述设计的功能以下开始构造体,用于描述设计的功能-concurrent signal assignments 并行语句信号赋值并行语句信号赋值-processes 进程(顺序语句描述设计)进程(顺序语句描述设计)-component instantiations 元件例化元件例化end;-构造体声明区域构造体声明区域-声明构造体所用的内部信号及数据类型声明构造体所用的内部信号及数据类型-如果使用元件例化,则在此声明所用的元件如果使用元件例化
9、,则在此声明所用的元件定义语句定义语句1.构造体名称的命名:一般以描述方法命名,描述方法一般有:构造体名称的命名:一般以描述方法命名,描述方法一般有:行为特性:行为特性:behavioral 简写为简写为beh 结构结构:structural 简写为简写为 str 数据流数据流:dataflow如:如:Architecture beh Of mux is2.定义语句:位于定义语句:位于architecture和和begin之间,用于对构造体内部使之间,用于对构造体内部使用的信号、变量、数据类型和函数定义。用的信号、变量、数据类型和函数定义。Architecture beh Of mux is
10、signal n1:bit;begin 1)信号为内部使用,不须加方向信号为内部使用,不须加方向2)信号应有名和数据类型信号应有名和数据类型3.并行处理语句:位于并行处理语句:位于begin和和end 之间,描述构造体的行为和电路之间,描述构造体的行为和电路 连接关系。连接关系。所谓所谓并行并行,指多个语句不以书写顺序执行。,指多个语句不以书写顺序执行。一数据选择器的构造体:一数据选择器的构造体: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(
11、a3 and s(0)and s(1);end archmux;y=a0s1s0+a1s1s0+a2s1s0+a3s1s0 =(a0s0+a1s0)s1+(a2s0+a3s0)s1 2.2 VHDL 语言构造体的子结构语言构造体的子结构一个构造体可以用几个子结构来构成,即一个系统可以用几个比较一个构造体可以用几个子结构来构成,即一个系统可以用几个比较独立的模快来构成。独立的模快来构成。1.BLOCK语句结构语句结构2.PROCESS语句结构语句结构3.SUBPROGRAMS语句结构语句结构2.2.1 BLOCK语句结构描述语句结构描述1.BLOCK语句的结构语句的结构格式:格式:块结构名;块结
12、构名;block begin end block 块结构名;块结构名;Entity mux isPort(d0,d1,sel:IN Bit;q:out Bit);End mux;Architecture connect Of mux isSignal tmp1,tmp2,tmp3:Bit;Begin cale:blockBegin tmp1=d0 AND sel;tmp2=d1 AND(NOT sel);tmp3=tmp1 OR tmp2;q=tmp3;End block cale;END CONNECT;一个二选一数据选择一个二选一数据选择器的描述器的描述2.块(块(block)和子原理图的
13、关系:一个)和子原理图的关系:一个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)卫式块不能综合;卫式块不
14、能综合;2)after语句不能综合;语句不能综合;3)当满足)当满足clk=1时执行。时执行。d q qbclk2.2.2进程(进程(process)语句结构描述语句结构描述1.process语言结构语言结构进程名进程名:process(信号信号1,信号,信号2,)Begin End process;Architecture connect Of mux isSignal tmp:Bit;Begin cale:Process(d0,d1,sel)Variable tmp1,tmp2,tmp3:Bit;Begin tmp1:=d0 AND sel;tmp2:=d1 AND(NOT sel);tm
15、p3:=tmp1 OR tmp2;tmp=tmp3;qb 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 函数
16、名;函数名;子程序可定义在子程序可定义在进程进程、包包和和构造体构造体中。例中。例2-9为定义在为定义在包包中的例子。定义了一中的例子。定义了一 个个max 函数。函数。2)函数调用及结果返回)函数调用及结果返回 函数调用和一般高级语言相同;函数调用和一般高级语言相同;函数调用既可在并行语句中,也可在顺序语句中;函数调用既可在并行语句中,也可在顺序语句中;函数和过程通常不必指定参数的矢量长度;函数和过程通常不必指定参数的矢量长度;例例2-9是将是将max 函数放在了名为函数放在了名为bpac的包中,而的包中,而bpac 包应放在库中。包应放在库中。例例2-10第第1行应写为行应写为 libra
17、ry ieee;library newlib;由例由例2-10可知,可知,bpac包存放在包存放在newlib库中。库中。2.3 包集合、库及配置包集合、库及配置 包集合、库及配置是三个可独立编译的源设计单包集合、库及配置是三个可独立编译的源设计单元。元。2.3.1库库(Library)库专门存放预先编译好的程序包、实体、构造体和配库专门存放预先编译好的程序包、实体、构造体和配置等,这样它们就可以在其它设计中被调用。库的功能类置等,这样它们就可以在其它设计中被调用。库的功能类似一个子目录或文件夹。使用库时,要进行库说明。似一个子目录或文件夹。使用库时,要进行库说明。LIBRARY ieee;l
18、ibrary newlib;1.库的种类库的种类有有5种:种:ieee;std;面向面向ASIC的库;的库;work;用户定义库。用户定义库。其中:其中:ieee库库为为ieee正式认可的库,使用库中包时要说明;正式认可的库,使用库中包时要说明;std库库为为VHDL的标准库,使用该库中数据可不必说明;但的标准库,使用该库中数据可不必说明;但 使用库中使用库中TEXTIO包须说明。包须说明。库名库名程序包名程序包名包中预定义内容包中预定义内容stdstandardVHDL类型,如类型,如bit,bit_vectorieeestd_logic_1164定义定义std_logic,std_logi
19、c_vector等等ieeenumeric_std定义了一组基于定义了一组基于std_logic_1164中中定义的类型的算术运算符,如定义的类型的算术运算符,如“+”,“-”,SHL,SHR等等ieeestd_logic_arith定义有符号与无符号类型,及基于定义有符号与无符号类型,及基于这些类型上的算术运算。这些类型上的算术运算。ieeestd_logic_signed定义了基于定义了基于std_logic与与std_logic _ vector类型上的有符号的算术运算类型上的有符号的算术运算ieeestd_logic_unsigned定义了基于定义了基于std_logic与与std_l
20、ogic_ vector类型上的无符号的算术运算类型上的无符号的算术运算面向面向ASIC库库:由工具商提供的库,在由工具商提供的库,在MAX-PLUS中,有中,有ALTERA公司自己定义的库,名为公司自己定义的库,名为ALTERA.里面里面存放两个程序包。存放两个程序包。1)maxplus2;2)megacore.WORK 库库:现行作业库,使用不必说明。:现行作业库,使用不必说明。用户定义库用户定义库:由用户自己定义,使用需要说明。使用工作:由用户自己定义,使用需要说明。使用工作 界面窗口中的界面窗口中的options 选项,在选项,在user libraries 选项中选择你所要存放库的路
21、径。选项中选择你所要存放库的路径。2.库的使用库的使用1)库的说明)库的说明 如:如:library ieee;use ieee.std_logic_1164.all;2)库说明的作用范围库说明的作用范围 作用范围为它下面的一个设计(包括实体、构造体和配作用范围为它下面的一个设计(包括实体、构造体和配置等)。置等)。当有两个实体时,应有两个库使用说明。(如例当有两个实体时,应有两个库使用说明。(如例2-11)2.3.2 包集合包集合 包集合中存放信号定义、常量、数据类型、元包集合中存放信号定义、常量、数据类型、元件语句、函数、过程等,它可以编译,使用时用件语句、函数、过程等,它可以编译,使用时
22、用use语句。语句。如:如:use ieee.std_logic_1164.all;包结构:包结构:package 包集合名包集合名 is 说明语句说明语句;end 包集合名;包集合名;Package body 包集合名包集合名 is 说明语句说明语句;end 包集合名;包集合名;包的说明部分(包头)包的说明部分(包头)包体(可选)包体(可选)-包头说明包头说明PACKAGE Logic IS TYPE Three_level_logic IS(0,1,Z);CONSTANT Unknown_Value:Three_level_logic:=0;FUNCTION Invert(input:Th
23、ree_level_logic)RETURN Three_level_logic;END Logic;-包体说明包体说明PACKAGE BODY Logic IS -如下是函数的子程序体如下是函数的子程序体 FUNCTION Invert(input:Three_level_logic)RETURN Three_level_logic;BEGIN CASE input ISWHEN 0=RETURN 1;WHEN 1=RETURN 0;WHEN Z=RETURN Z;END CASE;END Invert;END Logic;关于包:关于包:1)一个元件、函数或过程如只在包体中定义,则只能在)
24、一个元件、函数或过程如只在包体中定义,则只能在 本包体中调用(例本包体中调用(例2-12),如要在其它设计中调用,如要在其它设计中调用,必须在包头中说明,必须在包头中说明,建议函数和过程在包中定义建议函数和过程在包中定义;2)包可以只有包头,无包体;(例)包可以只有包头,无包体;(例2-13)例例2-13 在包在包upac中,定义了中,定义了 k:常量;常量;instruction:枚举类型(一种数据类型)枚举类型(一种数据类型)cpu_bus:4位位矢量。位位矢量。2.3.3 配置配置 配置语句描述层与层之间,实体与结构体之间的配置语句描述层与层之间,实体与结构体之间的连接关系。连接关系。如
25、:一个电路,实体是一个(表示框图),但构造体可有如:一个电路,实体是一个(表示框图),但构造体可有多个(实现方法多种),可利用配置语句把不同的构造体多个(实现方法多种),可利用配置语句把不同的构造体连接起来,验证其性能。连接起来,验证其性能。格式:格式:Configuration 配置名配置名 of 实体名实体名 is 语句说明语句说明;(如;(如for 选配构造名选配构造名 end 选配构造名选配构造名;)end 配置名;配置名;关于配置:关于配置:配置只用于模拟仿真;配置只用于模拟仿真;综合工具忽略所有的配置,只对最后输入的结构体进行综合;综合工具忽略所有的配置,只对最后输入的结构体进行综
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一个 VHDL 设计 若干 文件 构成 每个 主要 包含 上课 讲义

限制150内