EDA技术与VHDL设计(西电版)第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章 程序包和子程序
EDA技术与VHDL设计(西电版)第7章 程序包和子程序_OK
L6
TYPE state IS ( st1, st2, st3, st4);
--数据类型 state
L7
CONSTANT a : STD_LOGIC_VECTOR( 7 DOWNTO 0) := "11111111"; --常数 a
L8 END my_package;
L9 -------------------------------------------------------------------------------------------------------------------------
例7-3例举了一个利用VHDL语言描述的2输入与门,例 7-4是将与门作为元件在程序包中声明的示例,例7-5则使用 该程序包中的与门元件实现一个三输入逻辑与的电路。如果 将程序包保存于当前工程同一文件夹内编译,相当于放入工 作库WORK中,则通过使用语句“USE work.my_component.all;”就可打开该程序包中的所有内容(由 于WORK库是默认打开的,所以不需要“LIBRARY work;” 语句)。图7-2是综合后的RTL电路结构,图7-3是仿真结果。
2021/7/24
7
7
第7章 程序包和子程序
【例7-3】
L1 -------------------------------------------------------------------------------------------------------------------------
L5 PACKAGE my_component IS --程序包首,程序包名 my_component
L6
COMPONENT my_and IS --声明元件 my_and
EDA技术与VHDL语言课程设计
EDA技术与VHDL语言课程设计课程设计EDA技术与VHDL语言课程设计报告班级: 电信11-2班姓名: 董元伟学号: 1106110205指导教师: 李铁成绩:电子与信息工程学院信息与通信工程系- 2 - 课程设计;数字密码锁目录摘要 ..................................................................... .......................................... - 3 - 一、设计目的 ..................................................................... ............................ - 4 - 二、设计内容和要求 ..................................................................... .................. - 4 -1、用户开锁 ..................................................................... ......................... - 5 -2、管理员解除警报 ..................................................................... .............. - 5 -3、管理员修改密码 ..................................................................... .............. - 5 -4、定时返回 ..................................................................... ......................... - 6 - 三、设计思路和系统结构...................................................................... ............ - 6 -1、设计模块 ..................................................................... ......................... - 6 -2、系统结构和数字密码锁原理图 .............................................................. - 7 -3、设计思路 ..................................................................... ......................... - 8 - 四、实验设计程序如 ..................................................................... ................... - 9 - 五、创建测试平台仿真结果 ..................................................................... ....... - 21 - 参考文献 ..................................................................... ................................... - 24 -- 2 -- 3 - 课程设计;数字密码锁摘要本文介绍一种利用 EDA 技术和 VHDL 语言,在 MAX+PLUS?环境下,设计了一种新型的智能密码锁。
EDA技术与VHDL程序设计基础教程
PCB系统
三、EDA技术的应用 PCB设计
PCB(Printed Circuit Board)印制电路板主要用作电子系统的载体,工程师 通常将集成电路元件焊接在PCB板上完成整个电子系统的搭建、控制、通信等 功能
点阵系 统的原 理图和 版图
点阵系 统的版 图
三、EDA技术的应用
ASIC设计
第2章
重点内容:
CPLD结构和工作原理 FPGA结构和工作原理 FPGA配置方式 CPLD/FPGA应用选型
一、可编程逻辑器件概述
可编程逻辑器件 PROM、PLA和PAL的原理和特性
PROM
基于二极管和三极管 的一次可编程PROM单 字线
元
二极管
上拉电阻
熔丝
数据比特线
(a)
字线 三极管
上拉电阻
FPGA/CPLD布线和适配 (Place & Route) 适配的自动优化 (Optimization)
编程下载 (Program & Download)
行为仿真 (Behaviour)
VHDL仿真器 (Simulator)
功能仿真 (Functional)
时序仿真 (Timing Analysis)
三、EDA技术的应用
EDA技术的应用范畴很广 主要有: 1、PCB印制电路板的设计 2、ASIC全定制数字电路
的设计 3、FPGA/CPLD等可编程器
件上的电子系统设计
波形输入 (Wave)
ASIC设计平台 硬件语言编译工具
逻辑综合工具 功能分析工具 布局布线工具 版图生成工具 形式验证工具
半导体IC产品
“与”阵列 “或”阵列
一、可编程逻辑器件概述
EDA技术与VHDL程序设计基础教程习题答案
EDA技术与VHDL程序设计基础教程习题答案第1章EDA习题答案1.8.1填空1.EDA的英文全称是Electronic Design Automation2.EDA技术经历了计算机辅助设计CAD阶段、计算机辅助工程设计CAE阶段、现代电子系统设计自动化EDA阶段三个发展阶段3. EDA技术的应用可概括为PCB设计、ASIC设计、CPLD/FPGA设计三个方向4.目前比较流行的主流厂家的EDA软件有Quartus II、ISE、ModelSim、ispLEVER5.常用的设计输入方式有原理图输入、文本输入、状态机输入6.常用的硬件描述语言有VHDL、Verilog7.逻辑综合后生成的网表文件为EDIF8.布局布线主要完成将综合器生成的网表文件转换成所需的下载文件9.时序仿真较功能仿真多考虑了器件的物理模型参数10.常用的第三方EDA工具软件有Synplify/Synplify Pro、Leonardo Spectrum1.8.2选择1.EDA技术发展历程的正确描述为(A)A CAD->CAE->EDAB EDA->CAD->CAEC EDA->CAE->CADD CAE->CAD->EDA2.Altera的第四代EDA集成开发环境为(C)A ModelsimB MUX+Plus IIC Quartus IID ISE3.下列EDA工具中,支持状态图输入方式的是(B)A Quartus IIB ISEC ispDesignEXPERTD Syplify Pro4.下列几种仿真中考虑了物理模型参数的仿真是(A)A 时序仿真B 功能仿真C 行为仿真D 逻辑仿真5.下列描述EDA工程设计流程正确的是(C)A输入->综合->布线->下载->仿真B布线->仿真->下载->输入->综合C输入->综合->布线->仿真->下载D输入->仿真->综合->布线->下载6.下列编程语言中不属于硬件描述语言的是(D)A VHDLB VerilogC ABELD PHP1.8.3问答1.结合本章学习的知识,简述什么是EDA技术?谈谈自己对EDA技术的认识?答:EDA(Electronic Design Automation)工程是现代电子信息工程领域中一门发展迅速的新技术。
第七讲VHDL子程序
1
第7讲 VHDL子程序 第7讲 VHDL子程序
函数(Function)
函数的语法格式: 函数首(一般放在程序包的说明部分): FUNCTION 函数名 (输入参数表) RETURN
数据类型 ;
函数体: FUNCTION 函数名 (输入参数表) RETURN 数据类型 IS [说明语句]; BEGIN 顺序处理语句; RETURN 返回变量名; END FUNCTION 函数名 ; 其中输入参数表中的每个参数均应表示为:参数名:数据类型;
EDA技术——VHDL子程序
9
第7讲 VHDL子程序 第7讲 VHDL子程序
子程序重载
子程序重载的语言特性使得能够声明多个名字相同但参数表不完全 相同的函数和过程。在具有不同数据类型操作数构成的同名函数中,以 运算符重载式函数最为常用,这种函数为不同数据类型间的运算带来极 大的方便。
EDA技术——VHDL子程序
第7讲 VHDL子程序
子程序和进程(Process)一样,采用顺序描述来定义算法。和进程不 同的是,子程序不可以直接从结构体的其他部分对信号进行读写操作, 所有的通信都必须通过子程序的接口完成。由于可以在结构体的不同部 分调用子程序完成重复的计算,因此子程序显得非常的实用。和元件例 化语句不同的是,当子程序被实体或者其他子程序调用的时候,并不会 产生新的设计层次,但是可以通过手工定义的方法增加设计层次。 子程序由过程(PROCEDURE)和函数(FUNCTION)组成。函 数只能用以计算数值,而不能用以改变与函数形参相关的对象的值。因 此,函数的参量只能是方式为IN的信号与常量;而过程的参量可以为 IN, OUT, INOUT方式(注意:不能为BUFFER方式)。过程没有返回值, 但是可以通过改变过程参数值的方法向过程的调用者传递信息。 函数和过程常见于面向逻辑综合的设计中,主要进行高层次的数值 运算或类型转换、运算符重载,也可用来元件例化。
EDA技术与VHDL_汇总
EDA技术与VHDL_汇总EDA(电子设计自动化)技术与VHDL(可编程硬件描述语言)是在电子设计领域中广泛应用的两种技术。
EDA技术是指利用计算机辅助设计软件来帮助工程师进行电子电路的设计和验证,提高设计效率和降低成本。
而VHDL是一种硬件描述语言,用于描述电子系统的行为和结构,是EDA技术的重要工具之一、本文将针对EDA技术和VHDL进行综述。
EDA技术是电子设计流程中的重要环节,包括电路设计、电路模拟、布局与布线、物理验证等多个方面。
其中,电路设计主要关注电路行为和结构的设计,通过EDA软件可以对电路进行逻辑综合、时序优化等操作,从而生成最终的电路结构。
电路模拟是对设计电路进行仿真和验证的过程,通过EDA软件可以模拟电路的工作状态,检查设计是否符合预期要求。
布局与布线是将逻辑电路转化为物理电路的过程,在电路板上布置元件并进行连线,以满足电路的功能和性能要求。
物理验证则是根据设计规则和约束对布局和布线结果进行验证,确保电路能够正常工作。
VHDL是一种硬件描述语言,用于描述电子系统的行为和结构。
VHDL提供了抽象层次,可以描述从逻辑门到整个系统的各个层次。
使用VHDL,设计者可以对系统进行模块化描述,将整个系统分解为多个模块并进行独立设计。
VHDL还提供了丰富的工具和语法,用于描述电路的结构、时序、数据流等信息。
通过VHDL描述的电路可以通过EDA软件进行综合、仿真、布局与布线等操作。
VHDL还具有良好的可移植性,设计者可以在不同EDA软件和不同平台上进行开发和验证。
EDA技术与VHDL的结合可以提高电子设计的效率和质量。
通过EDA软件,设计者可以利用图形界面进行电路设计,快速搭建和验证电路结构。
在设计过程中,VHDL可以使设计者在高层次上描述电路功能和结构,提高设计抽象和可重用性。
此外,通过EDA软件可以进行电路的仿真和验证,帮助设计者对电路进行性能、时序等方面的优化,减少设计错误的风险。
在布局与布线阶段,EDA软件可以自动完成复杂的布局与布线操作,优化电路的尺寸和信号传输路径,提高电路的可靠性和性能。
EDA技术与VHDL实用教程
EDA技术与VHDL实用教程
15
表0-1 EDA开发软件特性
厂商 EDA软件名称 软件适用器件系列 软件支持的描述方式
Altera
MAX+plusⅡ QuartusⅡ
MAX、FLEX等 MAX、FLEX、APEX等
逻辑图、波形图、 AHDL文本、VerilogHDL文本、VHDL文本 等
Xilinx
SX系列、MX系列 逻辑图、VHDL文本等
EDA技术与VHDL实用教计方法的缺点是: 1)复杂电路的设计、调试十分
困难。 2)如果某一过程存在错误,查 找和修改十分不便。 3)设计过程中产生大量文档, 不易管理。 4)对于集成电路设计而言,设 计实现过程与具体生产工艺直 接相关,因此可移植性差。 5)只有在设计出样机或生产出 芯片后才能进行实测。
EDA技术,电子设计师可以方便地实现IC 设计、电子电路设计和PCB设计等工作。
EDA技术与VHDL实用教程
3
广义的EDA技术,除了狭义的EDA技 术外,还包括计算机辅助分析CAA技术(如 PSPICE,EWB,MATLAB等),印刷电路 板计算机辅助设计PCB-CAD技术(如 PROTEL,ORCAD等)。
在广义的EDA技术中,CAA技术和 PCB-CAD技术不具备逻辑综合和逻辑适配 的功能,因此它并不能称为真正意义上的 EDA技术。
EDA技术与VHDL实用教程
4
狭义的EDA技术,就是以大规模可编 程逻辑器件为设计载体,以硬件描述语言 为系统逻辑描述的主要表达方式,以计算 机、大规模可编程逻辑器件的开发软件及 实验开发系统为设计开发工具的EDA技 术。
3、算法的实现
如:离散FFT变换、数字滤波器、浮点乘法器、高速宽位加法器、数字 振荡器、数字锁相环、调制解调器、图象DSP等电路的设计,时钟频 率一般在50MHz以上
EDA技术及应用-VHDL版(第三版)(潭会生)第7章详解
第7章 EDA技术实验
CLK CLR ENA
CNT10
CLK
U0
CLR
ENA
CQ[3..0] CO
DOUT[3..0] S0
CNT10
CLK
U1
CLR
ENA
CQ[3..0] CO
DOUT[7..4] S1
CNT10
CLK CLR ENA
U2 CQ[3..0] CO
DOUT[11..8] S2
CNT10 U3
第7章 EDA技术实验
ห้องสมุดไป่ตู้验证清零功能
验证使能有效
验证计数功能
预计可能结果
图7.2 CNT10仿真输入设置及可能结果估计图
第7章 EDA技术实验
4) 管脚锁定文件 根据图7.1所示的CNT9999电路原理图,本设计实体的 输入有时钟信号CLK、清零信号CLR和计数使能信号ENA, 输出为DOUT[15..0],据此可选择实验电路结构图NO.0,对 应实验模式0。 根据图7.5所示的实验电路结构图NO.0和图7.1确定引脚 的锁定。选用EPM7128S-PL84芯片,其引脚锁定过程如表 7.1所示,其中CLK接CLOCK2,CLR接键3,ENA接键4, 计数结果DOUT[3..0]、DOUT[7..4]、DOUT[11..8]、 DOUT[15..12]经外部译码器译码后,分别在数码管1、数码 管2、数码管3、数码管4上显示。
第7章 EDA技术实验
3.实验要求 (1) 画出系统的原理框图,说明系统中各主要组成部分 的功能。 (2) 编写各个VHDL源程序。 (3) 根据系统的功能,选好测试用例,画出测试输入信 号波形或编好测试程序。 (4) 根据选用的EDA实验开发装置编好用于硬件验证的 管脚锁定表格或文件。 (5) 记录系统仿真、逻辑综合及硬件验证结果。 (6) 记录实验过程中出现的问题及解决办法。
VHDL子程序
END;
--结束PACKAGE BODY语句
接下页
接上页
LIBRARY IEEE; -- 函数应用实例
USE IEEE.STD_LOGIC_1164.ALL;
USE WORK.packexp.ALL ;
ENTITY axamp IS
PORT(dat1,dat2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
FUNCTION max( a,b : IN STD_LOGIC_VECTOR) --定义函数体
RETURN STD_LOGIC_VECTOR IS
BEGIN
IF a > b THEN RETURN a;
ELSE
RETURN b;
END IF;
END FUNCTION max;
--结束FUNCTION语句
PROCEDURE 过程名(参数表) IS [说明部分]
BIGIN 顺序语句;
END PROCEDURE 过程名;
-- 过程体
PROCEDURE pro1 (VARIABLE a, b : INOUT REAL) ; PROCEDURE pro2 (CONSTANT a1 : IN INTEGER ;
return STD_LOGIC_VECTOR ;
function "+" (L : INTEGER; R : STD_LOGIC_VECTOR)
return STD_LOGIC_VECTOR ;
function "+" (L : STD_LOGIC_VECTOR ; R : STD_LOGIC )
begin
if L R then return L;
VHDL的子程序
BEGIN
IF (S'EVENT) AND (S = '1') AND
--
line 3
(S'LAST_VALUE = '0') THEN
-- line 4
RETURN TRUE; -- line 5
ELSE RETURN FALSE;
-- line 6 END IF;
END rising_edge; END dff;
u1 convert4val(clk)a,(3)
a(3)
convert4val(clr),
clk convert4value(q) => q(2));
clr U4 : dff PORT MAP(convert4val(a(3)), convert4val(clk), convert4val(clr), convert4value(q) => q(3)); END structure;
函数
USE WORK.std_logic_1164.ALL; PACKAGE num_types IS
TYPE log8 IS ARRAY (0 TO 7) OF std_logic; -- line 1 END num_types;
USE WORK.std_logic_1164.ALL; USE WORK.num_types.ALL; ENTITY convert IS
-- line 4
和返回值
RETURN INTEGER is
-- line 5
函数说明区它能说明变量、常量和类型,但不
VARIABLE result能:说I明N信TE号GER := 0;
-- line 6
BEGIN FOR
