vhdl语言程序基本结构

上传人:第*** 文档编号:51923002 上传时间:2018-08-17 格式:PPT 页数:51 大小:301.50KB
返回 下载 相关 举报
vhdl语言程序基本结构_第1页
第1页 / 共51页
vhdl语言程序基本结构_第2页
第2页 / 共51页
vhdl语言程序基本结构_第3页
第3页 / 共51页
vhdl语言程序基本结构_第4页
第4页 / 共51页
vhdl语言程序基本结构_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《vhdl语言程序基本结构》由会员分享,可在线阅读,更多相关《vhdl语言程序基本结构(51页珍藏版)》请在金锄头文库上搜索。

1、第第4 4章章 VHDL语言程序基本结构什么是VHDL?Very high speed integrated Hardware Description Language (VHDL) y是IEEE、工业标准硬件描述语言 y用语言的方式而非图形等方式描述硬件电路 x容易修改 x容易保存 y特别适合于设计的电路有: x复杂组合逻辑电路,如: 译码器、编码器、加减法器、多路选择器、地址译码器. x状态机 x等等VHDL的功能和标准VHDL 描述y输入端口 y输出端口 y电路的行为和功能VHDL有过两个标准: yIEEE Std 1076-1987 (called VHDL 1987) yIEEE S

2、td 1076-1993 (called VHDL 1993)一般来说,一个完整的VHDL程序通常包括5个部分:实体说明 (Entity Declaration);(基本组成部分)结构体Architecture Body);(基本组成部分)库(Library);程序包(Package);配置(ConFiguration)。VHDL程序组成库(library) use声明实体(entity)结构体 (architecture) beginendData Flow 描述Behavior 描述Structure 描述配置(Configuration)(package)程序包声明所用定义、程序所在的库

3、程序包所用的自定义还是 额外定义、程序、元件电路框图的I/O接口描述或设计硬件电路的区域选择采用的结构体和实体VHDL的基本结构数据流描述行为描述结构描述不 可 视 部 分可视部分 和端口4.2.1 VHDL的程序结构-* -NOT Gate Simulation -Filename:NOTGATE -* Library IEEE; Use IEEE. std_logic_1164. all;Entity notgate isport(A:in STD_LOGIC;F:out STD_LOGIC;); End notgate ; Architecture notgate _arch of no

4、tgate is BeginFEND BLOCK 块标号 ;4.2.2 进程语句格式PROCESS语句结构的一般表达格式如下:进程标号: PROCESS ( 敏感信号参数表 ) IS进程说明部分BEGIN顺序描述语句END PROCESS 进程标号;4.2 结构体的子结构描述D触发器的VHDL描述【例】 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 ISPORT (CLK : IN STD_LOGIC ;D : IN STD_LOGIC ;Q : OUT STD_LOGIC );END DFF1;ARCHITECTURE bh

5、v OF DFF1 ISSIGNAL Q1 : STD_LOGIC ; -类似于在芯片内部定义一个数据的暂存节点BEGINPROCESS (CLK)BEGINIF CLKEVENT AND CLK = 1 THEN Q1 ;USE ALL ; 4.2 结构体的子结构描述三种类型数据对象:信号 signal变量 variable常数 constantVHDL数据对象(Data Objects)常量(Constant)固定值,不能在程序中被改变增强程序的可读性,便于修改程序可在Package、Entity、Architecture、Process、 Function、Procedure中进行定义,

6、其有效范围也相应 限定书写格式:Constant 常量名,常量名:数据类型:=表达式 ;例:Constant data_bus_width: integer := 8;VHDL数据对象(Data Objects)信号(Signals)代表连线,Port也是一种信号没有方向性,可给它赋值,也可当作输入在Package、Entity、Architecture中定义设定的初始值在综合时没有用,只是在仿真时在开 始设定一个起始值。用 (参数表) is 过程说明;beginend procedure ;参数表: (数据对象参数名,参数名:模式数据类型;数据对象参数名,参数名:模式数据类型;)4.2 结构

7、体的子结构描述1、过程书写结构 过程说明: 主要包括变量说明、常量说明和类型说明,用来对过 程中要用到的变量、常数和类型进行说明,并且这些 说明只在该过程内有效。过程语句: 是由顺序语句组成的,过程的调用实际上就是启动了对 过程中的顺序语句的执行。4.2 结构体的子结构描述2、过程设计实例Procedure example( signal d : in std_logic;signal clk : in std_logic;signal reset : in std_logic;signal q,qb : out std_logic ) is Beginif (reset=0) thenq(参

8、数表)return is函数说明;BeginReturn (表达式);End function ;4.2 结构体的子结构描述4、函数设计实例Function max (constant a: std_logic_vector;b: std_logic_vector) return std_logic_vector isvariable tmp : std_logic_vector (arange);Beginif (ab) thentmp:=a;elsetmp:=b;end if;return (tmp); End max;library ieee;use ieee.std_logic_116

9、4.all;entity example is port ( inp: in std_logic_vector(0 to 2);oup: out std_logic_vector(0 to 2);end entity example;architecture ex of example isfunction sam (x,y,z: in std_logic)return std_logic is beginreturn (x and y)or z;end function sam;begin process(inp)beginoup(0)=sam(inp(0),inp(1),inp(2 );o

10、up(1)=sam(inp(1),inp(2),inp(0 );oup(2)=sam(inp(2),inp(0),inp(1 );end process ;end architecture ex;4.2 结构体的子结构描述4、函数设计实例VHDL语言在进行任何操作的过程中,对数据的类型都有严格的要求,但是 ,对名称的要求并不严格,同一名称可以定义成使用不同类型数据参数的子 程序或类型。这样就可以对VHDL的子程序进行重载。4.3 子程序的重载所谓重载就是允许设计人员编写更加可读的VHDL源代码,在多个子程序 或类型有同一名称时,该名称被重载。这样在应用到具体设计中时,VHDL编译器就将会选择相

11、适应的一个目标。 重载可以使设计人员避免为了重复操作而书写多个不同名字的子程序,使 VHDL源代码易于维护,易于使用。子程序重载就是允许设计人员编写相同名字的两个或两个以上的子程序, 并且允许这些子程序的参数使用不同的数据类型。子程序重载分为函数的重载和过程的重载。4.3 子程序的重载4.3.1 过程的重载 子程序重载的过程重载类似于函数的重载。在调用过程中使用哪 一个子程序由下列条件决定的:1、子程序调用过程中的参数的数目;2、子程序调用过程中参数的数据类型;3、子程序调用过程中使用的带名字的参数关联时参数的名字;4、子程序为函数时返回值的类型。4.3 子程序的重载4.3.2 函数的重载 设

12、计人员在定义函数时,可以使用相同的函数名定义多个函 数,但是在调用时具体使用哪一个函数是由以下条件决定的:1、子程序调用函数时参数的数目;2、子程序调用函数时参数的数据类型;3、子程序调用函数时使用的带名字的参数关联时参数的名字;4、子程序调用函数时返回值的类型。例子:(求最大值)4.4 结构体的三种描述方式1、行为描述(behavioral)2、数据流描述(dataflow)3、结构化描述(structural)Architecture behavioral of eqcomp4 is begin comp: process (a,b)begin if a = b thenequal = 1

13、; elseequal = 0; end if;end process comp; end behavioral ;高层次的功能描述,不必考虑 在电路中到底是怎样实现的。4.4.1 结构体行为描述方式 4.4 结构体的三种描述方式Architecture dataflow1 of eqcomp4 is beginequal = 1 when a=b else 0; end dataflow1;Architecture dataflow2 of eqcomp4 is begin equal = not(a(0) xor b(0)and not(a(1) xor b(1)and not(a(2)

14、xor b(2)and not(a(3) xor b(3); end dataflow2;当a和b的宽度发生变化时 ,需要修改设计,当宽度 过大时,设计非常繁琐4.4.2 结构体数据流描述方式 描述输入信号经过怎样的变换得到输出信号4.4 结构体的三种描述方式architecture struct of eqcomp4 is beginU0:xnor2 port map(a(0),b(0),x(0); U1:xnor2 port map(a(1),b(1),x(1);U2:xnor2 port map(a(2),b(2),x(2);U3:xnor2 port map(a(3),b(3),x(3

15、);U4:and4 port map(x(0),x(1),x(2),x(3),equal); end struct;类似于电路的网络表,将各个 器件通过语言的形式进行连接 ,与电路有一一对应的关系。一般用于大规模电路的层次化 设计时。4.4.3 结构体结构描述方式 4.4 结构体的三种描述方式描述方式优优 点缺 点适用场场合结结构化描述连连接关系清晰 电电路模块块化清晰电电路不易理解 繁琐琐、复杂杂电电路层层次化设计设计数据流描述布尔函数定义义明白不易描述复杂电杂电 路 修改不易小门门数设计设计行为为描述电电路特性清楚明了进进行综综合效率相对较对较 低大型复杂杂的电电路 模块设计块设计三种描述方式比较 4.4 结构体的三种描述方式

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

当前位置:首页 > 办公文档 > 其它办公文档

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