当前位置:
文档之家› EDA技术与VHDL设计(西电版)第7章 程序包和子程序
EDA技术与VHDL设计(西电版)第7章 程序包和子程序
7
第7章 程序包和子程序
【例7-3】
L1 -------------------------------------------------------------------------------------------------------------------------
7-4是将与门作为元件在程序包中声明的示例,例7-5则使用 该程序包中的与门元件实现一个三输入逻辑与的电路。如果 将程序包保存于当前工程同一文件夹内编译,相当于放入工 作库WORK中,则通过使用语句“USE work.my_component.all;”就可打开该程序包中的所有内容(由 于WORK库是默认打开的,所以不需要“LIBRARY work;” 语句)。图7-2是综合后的RTL电路结构,图7-3是仿真结果。
PACKAGE 程序包名 IS
--程序包首
声明部分;
END PACKAGE 程序包名;
[PACKAGE BODY 程序包名 IS --程序包体
函数和过程的描述;
END PACKAGE BODY 程序包名;]
2
第7章 程序包和子程序 程序包一般由程序包首和程序包体构成,二者的程序包
名必须一致。在程序包首部分进行常量、数据类型、函数、 过程以及元件的声明。程序包体并不是必须的,只有当子程 序在程序包首中被声明了,才需要在程序包体中进行描述。 包含了程序包的常用VHDL代码结构可扩展为图7-1所示结 构。
L12
FUNCTION positive_edge(SIGNAL s: STD_LOGIC) RETURN BOOLEAN IS
L13
--函数的描述部分
L14
BEGIN
L15
RETUREN(s' EVENT AND s=' 1');
L16
END positive_edge;
L17 END my_package;
L2 LIBRARY ieee;
L3 USE ieee.std_logic_1164.all;
L4 -------------------------------------------------------------------------------------------------------------------------
例7-1例举了一个简单的程序包,仅包含数据类型和常 量的声明,因此并不需要程序包体。
3
第7章 程序包和子程序
主代码 库和程序包的 声明
实体的描述
结构体的描述
库 程序包 数据类型
常量
元件
子
函数
程
序
过程
图7-1 VHDL代码结构示意图
4
第7章 程序包和子程序
【例7-1】
L1 -------------------------------------------------------------------------------------------------------------------------
L5 PACKAGE my_package IS
--程序包首,程序包名是 my_package
L6
TYPE state IS ( st1, st2, st3, st4);
--数据类型 state
L7
CONSTANT a : STD_LOGIC_VECTOR( 7 DOWNTO 0) := "11111111"; --常数 a
L5 PACKAGE my_package IS
--程序包首,程序包名为 my_package
L6
TYPE color IS(red,green,blue); --枚举类型 color
L7
CONSTANT x: STD_LOGIC:= ' 0'; --常量 x
L8
FUNCTION positive_edge(SIGNAL s: STD_LOGIC) RETURN BOOLEAN;
第7章 程序包和子程序
第7章 程序包和子程序
7.1 程序包 7.2 子程序
1
第7章 程序包和子程序
7.1 程 序 包
经常需要使用的一些设计代码可以以元件、函数或过程
的形式出现,然后再放置于程序包中,编译到库中,这是代
码重用的重要手段。程序包中可以包含数据类型、常量、元
件、函数和过程等。程序包的语句结构如下:
--程序包体结束
L18 -------------------------------------------------------------------------------------------------------------------------
6
第7章 程序包和子程序 例7-3例举了一个利用VHDL语言描述的2输入与门,例
例7-2例举了一个包含函数声明的程序包,所以需要程 序包体。
【例7-2】
L1 -----ቤተ መጻሕፍቲ ባይዱ-------------------------------------------------------------------------------------------------------------------
L9 END my_package;
--程序包首结束
--声明函数
L10 ------------------------------------------------------------------------------------------------------------------------L11 PACKAGE BODY my_package IS --程序包体
L2 LIBRARY ieee;
L3 USE ieee.std_logic_1164.all;
L4 -------------------------------------------------------------------------------------------------------------------------
L8 END my_package;
L9 -------------------------------------------------------------------------------------------------------------------------
5
第7章 程序包和子程序