VHDL程序结构介绍
vhdl程序的基本结构vhdl程序一般由5个部分组成

块语句
块标号:BLOCK[保护表达式] [类属子句;] [端口子句;] [块说明部分;] BEGIN
<块语句部分;>
; END BLOCK 块标号
类属子句用于参数的定义;端口子句用于信号的定义; 块说明部分对该块要用到的信号、常数、元件和子程序 等进行说明;块语句部分对该块的功能进行描述,块语 句部分的语句是并行执行的,和书写顺序无关。
缺省说明: library std; use std.standard.all;
常用库及其程序包
IEEE: IEEE认可的标准库 std_logic_1164:定义了 std_logic, std_logic_vector, std_ulogic, std_ulogic_vector 等数据类型
VHDL 程序的基本结构
设计实体
实体说明
构造体
设计实体的组成
实体说明
Entity <实体名> is
[类属说明;] [端口说明;]
[实体说明部分;] [实体语句部分;] End [entity]<实体名>;
最简单的例: entity nothing is end nothing;
实体说明--类属说明
类属为设计实体和外部环境通讯的静态通信提供通道。可以定
实体说明--实体语句部分
是设计实体接口的共同部分。只能由并行断 言语句、并行过程调用语句、被动进程语 句组成,且不能在语句中给信号赋值。
设计实体
实体说明
构造体
设计实体的组成
构造体
architecture <构造体名> of <实体名> is
[构造体说明语句;]
Begin
<功能描述语句;>
《VHDL程序基本结构》课件

VHDL程序基本结构示意图
VHDL程序基本结构
这是一张示意图,展示了VHDL程序的基本结构和各个部分之间的关系。
VHDL程序编写实例
这里将展示一个简单的VHDL程序编写实例,以帮助理解VHDL程序的应用和编 写方法。
总结
通过本课程,我们了解了VHDL程序的基本结构和编写方法,以及各个部分的功能和关系。希望这些知识对你 的学习和工作有所帮助。
VHDL程序的基本组成
VHDL程序由实体说明部分、 架构说明部分、信号声明与 处理部分和过程描述部分组 成。
VHDL程序的编写流程
编写VHDL程序的流程包括定 义实体、编写架构、声明信 号和编写过程。
实体说明部分
ห้องสมุดไป่ตู้
1 实体声明
实体声明定义了模块的输入输出接口,包括 输入输出端口和内部信号。
2 输入端口声明
输入端口声明用于定义模块的输入信号和其 属性,如信号类型和位宽。
3 输出端口声明
输出端口声明用于定义模块的输出信号和其 属性,如信号类型和位宽。
4 端口映射
端口映射将模块的输入输出端口与上层设计 连接起来,以实现功能。
架构说明部分
1
架构声明
架构声明定义了模块的行为逻辑和组成元素,包括信号和过程。
2
参考文献
1. VHDL程序设计教程 2. VHDL语言基础与应用 3. VHDL编程入门
信号赋值语句
信号赋值语句用于给信号赋予特 定的值,以实现逻辑功能。
信号处理语句
信号处理语句用于处理信号的逻 辑运算和状态转换,以实现电路 功能。
过程描述部分
过程声明
过程声明用于定义过程的名称 和输入输出参数。
过程体
VHDL语言的基本结构

4
一、VHDL语言设计的基本单元及其构成
3)端口说明 PORT(端口名{,端口名}:方向 数据类型; 是对设计实体与外部接口 的描述,即对元件引脚、 ┇ 数据类型和I/O方向的描述 端口名{,端口名}:方向 数据类型); 1端口名
设计实体
进程 或其它并行结构 结构体 n (ARCHITECTURE 进程 或其它并行结构
配置(CONFIGURATION)
VHDL程序设计实体的一般结构
2
VHDL语言的基本结构
主要内容
一、 VHDL语言设计的基本单元及其构成 二、 VHDL语言构造体的子结构描述 三、 包集合、库及配置
3
一、VHDL语言设计的基本单元及其构成
VHDL语言
15
二、VHDL语言构造体的子结构描述
【例】4位二进制加法计数器构造体逻辑描述。
SIGNAL cnt4:INTEGER RANGE O TO 15; ... PROCESS(clk,clear,Stop) BEGIN IF clear='0' THEN cnt4<=0; ELSIF clk'EVENT AND clk='1' THEN IF stop='0' THEN cnt4<=cnt4+1; END IF; END IF; END PROCESS; --注意cnt4的数据类型
存盘文件 为 bpac.vhd
VHDL程序的基本结构

VHDL程序的基本结构(1)LIBRARY和PACHAGE的声明部分作⽤:库(Library)是⽤于存放预先编译好的程序(package),程序包中定义了数据集合体、逻辑操作和元件等。
主要是声明在设计或实体中将⽤到的常数,数据类型,元件及⼦系统等。
使⽤格式:LIBRARY 库名;USE 库名.程序包名.ALL;例如: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;(2)ENTITY定义作⽤:定义本设计的输⼊/出端⼝,即定义电路的外观,即I/O接⼝的类型和数量使⽤格式:格式:ENTITY 实体名 ISport( 端⼝名:端⼝模式数据类型;........端⼝名:端⼝模式数据类型;)END 实体名;例:ENTITY MUX41A ISPORT (A,B,C,D,s0,s1,s2,s3 :IN STD_LOGIC;Y : OUT STD_LOGIC);END ENTITY MUX41A;(3)ARCHITECTURE定义作⽤:定义实体的实现。
即电路的具体描述,说明电路执⾏什么动作或实现功能。
使⽤格式:ARCHITECTURE 结构体名 of 实体名 ISbegin描述语句;end 结构体名;例如:ARCHITECTURE BHV OF MUX41A ISSIGNAL S:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINS <= s3 & s2 & s1 & s0 ;Y<=A WHEN S="1110" ELSEB WHEN S="1101" ELSEC WHEN S="1011" ELSED WHEN S="0111" ELSE‘1’;END BHV;。
VHDL程序结构

过程(PROCEDURE)
过程语句的结构:
PROCEDURE 过程名(参数1;参数2;… )IS [定义语句];
BEGIN [顺序处理语句];
END 过程名;
过程语句的调用格式: 过程名(实际参数表);
例: 设计一个从两个整数中求取最大值的过程。
PROCEDURE max(a, b: IN INTEGER;
E
C
T
PROCESSn
进进程程和和进进程程 之之间间是的并数行据 的交换通过信 号完成
U
进程内部是
R E
顺序语句
2.5 子程序( SUBPROGRAM )
过程(PROCEDURE) VHDL的子程序有两种类型: 函数(FUNCTION)
子程序的特点:
➢ 子程序可以在结构体或程序包的任何位置被调用,而且可以 反复调用。
端口模式 端口数 据类型
端口模式
用来说明数据传输通过该端口
的方向。
Entity
IN: 数据只能从端口流入实体
OUT: 数据只能从端口流出实体
INOUT: 数据从端口流入或流出实体
BUFFER:
数据从端口流出实体,同时
可被内部反馈
IN OUT
INOUT
BUFFER
Out与Buffer的区别
• Entity test1 is port(a: in std_logic; b,c: out std_logic ); end test1;
黑盒
co:
OUT std_logic);
END端b口la模ck式_box; 端口数
据类型
rst d[7:0] clk
q[7:0] co
实体结束
第五讲 VHDL语言程序的基本结构

端口说明
端口说明是对基本设计实体(单元)与外部接口的描 述,也可以说是对外部引脚信号的名称,数据类型和 输入,输出方向的描述; 其一般书写格式为: PORT(端口名{,端口名}:方向 数据类型名; 端口名{,端口名}:方向 数据类型名); 举例: PORT(d0,d1,sel : IN BIT; q : OUT BIT; bus : OUT BIT_VECTOR(7 DOWNTO 0) );
敏感信号: 只要有一个发 生变化(如由 "0"变成"1" 或由"1"变为 "0")都将启 动PROCESS语 句.
PROCESS语句的特点
(1) 进程内部的所有语句都是顺序执行的. (2) 多进程之间,是并行执行的,并可访问构 造体或实体中所定义的信号. (3) 进程的启动是由进程标识符Process后的 敏感信号来触发,也可用WAIT语句等待一个 触发条件的成立. (4) 各进程之间的通信是由信号来传递的.
第2章 VHDL语言程序的基本结构 章 语言程序的基本结构
主要内容
VHDL语言设计的基本单元及其构成 : 语言
实体 + 构造体
VHDL语言构造体的子结构描述 : 语言
块,进程,子程序
包集合, 包集合,库及配置
一个完整的VHDL语言程序 通常包含5个部分:
必 备 部 分
库,包集合 实体(Entity)
构造体:描述系统内部的结构和行为;
包集合:存放各种设计模块都能共享的数据类型, 常数和子程序等; 库: 存放已经编译的实体,构造体,包集合和 配置.
前四种是可分别编译的源设计单元
2.1 VHDL语言设计的基本单元及其构成 语言 实体+构造体 构造体) (实体 构造体)
第2章 VHDL语言程序的基本结构

第2章
VHDL语言程序的基本结构
1.设计思路
根据数字电子技术的知识,我们知道,74LS00是 一个四—2输入与非门,亦即该芯片由四个2输入与非门 组成,因此我们设计时可先设计一个2输入与非门(如 图2.1(a)所示),再由四个2输入与非门构成一个整体—— MY74LS00(如图2.1(b)所示)。
也就是说我们实际做的程序,并不象开始所 列的那样必须包含5部分,通常下面结构才是基 本的和必需的
Use定义区
Entity定义区
Architecture定义区
我们以一个实际的例子来看一下 VHDL语言基本语法结构 Use定义区应写成
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;
48
7
Entity定义区写成
ENTITY example IS PORT( Pin48 : IN STD_LOGIC; Pin7 : OUT STD_LOGIC ); END example;
Architecture 定义区写成
ARCHITECTURE BEHAV OF example IS BEGIN Pin7<=Pin48; END BEHAV;
--元件连接说明
第2章
VHDL语言程序的基本结构
BEGIN
U1:NAND2 PORT MAP(A=>A1,B=>B1,Y=>Y1); U2:NAND2 PORT MAP(A=>A2,B=>B2,Y=>Y2); U3:NAND2 PORT MAP(A3, B3, Y3); U4:NAND2 PORT MAP(A4, B4, Y4);
VHDL语言的程序结构与数据类型

VHDL语言的程序结构与数据类型VHDL语言的程序结构与数据类型第2节 VHDL语言的程序结构与数据类型[学习要求] 掌握VHDL硬件描述语言的基本语法和源文件的结构,学会用VHDL硬件描述语言设计典型数字逻辑电路。
[重点与难点]重点:VHDL语言的程序结构;VHDL语言的数据类型及数据对象。
难点:VHDL的数据对象中的变量和信号的区别。
[理论内容]一、VHDL的程序结构图1 VHDL的程序结构图图1中是VHDL的全部结构,但实际上并不需要全部的结构,就像在许多设计项目中,大部分工程师只用到VHDL其中的30%的语法。
通常图2的结构才是基本和必需的。
USE定义区ENTITY定义区ARCHITECTURE定义区图2 VHDL程序的基本结构由于VHDL已是IEEE规定的标准,所以只是CPLD、FPGA等芯片公司,它们都会提供这个标准的定义库(Library IEEE),而且由于这里面写了许多的定义和参数,初学者一时之间也不容易全部了解,所以全部写上以减轻负担,后面的章节的程序默认也这么写。
程序如: USE IEEE.STD_LOGIC_1164.ALL; 代表本程序引用IEEE 标准定义库的STD_LOGIC_1164全部定义。
VHDL语言编写是属于自由格式,所以在一个完整命令叙述写完时,必须为它加上“;”,作为前后命令的分界,如上述的Use定义命令。
程序的注释采用“--”Entity部分是用来定义电路的输入和输出所用。
定义区的命令格式为:Architecture部分是描述这个电路的功能部分,其书写的语法因具体电路的功能而定,下一节将详细介绍。
_以下是一个简单的例子:library ieee; --采用ieee标准库use ieee.std_logic_1164.all; --使用其中的定义包,以后照着写即可use IEEE.STD_LOGIC_UNSIGNED.all; --同上use IEEE.STD_LOGIC_ARITH.all; --同上entity test is --定义实体名port( --以下是定义输入输出端口pin1 : in std_logic; --pin1为输入端口,数据类型为std_logic pin2 : in std_logic; --同上pin3 : out std_logic --pin3为输出端口,数据类型为std_logic ); --端口定义完成end test; --实体描述完成architecture behavior of test is --定义结构体begin --结构体开始pin3<=pin1 and pin2; --该语法表示将pin1和pin2相与送至pin3end behavior; --结构体描述完成其实VHDL语言在书写上和高级语言的描述十分相似(风格更似于Ada语言),与C语言的比较如图3所示,大家不要把它看得很神秘。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 以上命名举例说明,几个结构体都属于设计实体mux,结构体名由设 计者自行定义,OF后面的实体名指明了该结构体所对应的是哪个实体。由 于一个设计有行为描述、数据流描述和结构描述3种方式,一般建议用 behave, dataflow, structure为结构体命名。 • 用于对结构体内部将要使用的信号、常数、数据类型、元件、函数和 过程加以说明。最常见的是对内部流动的信号的定义。但不能定义变量。
号到信号的数据流的路径形式进行描述,因
此要求设计者不但要对设计实体的功能实现
有一定的了解,而且还需要对内部的逻辑电
路结构有清楚的认识。
•设计 库
•设计库(Library) • 1、设计库是经编译后的数据的集合,存放包集合 定义、实体定义、结构体定义和配置定义。 • 2、VHDL中,设计库的说明总放在设计单元的最前 面。 • 3、设计库中的各个设计单元可以用作进行其他设 计的资源,一个设计可以使用多个库中的设计单元。
•
y : OUT STD_LOGIC);
•端口名
•端口模式
•数据类型
•端口模式
➢ 用来说明数据传输通过该端口的方向。
IN:
数据只能从端口流入实体
OUT:
数据只能从端口流出实体
INOUT:
数据从端口流入或流出实体
BUFFER:
数据从端口流出实体,同时可被内部反馈。
➢ 构造体内部也要使用输出信号时,只能定义成“buffer”。
•结构体一般格式为:
•ARCHITECTURE 结构体名 OF 实体名 IS
• 定义语句: 内部信号,常数,数据类型,函数定义
• BEGIN
•
[并行处理语句];
•
[进程语句];
•
…
•END 结构体名;
➢ ARCHITECTURE、OF、IS、BEGIN、END是VHDL的关键字(保留字)。
➢ 结构体名称由设计者自由命名,是结构体的唯一名称,该结构体名可反 映结构体的特色。
•设计库的使用
• 首先在设计的开头说明要引用的库,然后使用use子句指ary 库名;
•
Use 库名. 程序包名. all;
• 其中:程序包名就是实际设计要使用的库中的设计单元
;all表示使用程序包中的所有项目。
•常用设计库
•1、STD库 •2、WORK库 • WORK库是VHDL语言工作库,用户在项目设计中设计成功、 正在验证、和未仿真的中间件都放在WORK库中。 • 以上两个库对当前设计是永远可见的,不需在程序开头对 它们进行说明。即下面的LIBRARY子句隐含存在于任何设计单 元之前。 • library std; • library work; •3、资源库 • 除STD和WORK库以外所有的库均为资源库。这些资源库的 使用必须用LIBRARY显式的说明出来。如常用的资源库IEEE库 (Std_logic_1164)和VITAL库。
•VHDL程序结构
•实体和结构体 是VHDL设计文件的两个基 本组成部分
•实体说明 描述设计实体(黑盒)的外 部接口信号(即输入/输出信号);
•结构体说明 用于描述设计实体( 黑盒)的内部电路。 •包集合 存放各设计模块能共享的数 据类型、常数、子程序等;
•库 用于存放已编译的实体、结构体、 包集合和配置。
•
BEGIN
•
IF s = '0' THEN y<=a;
•
ELSE
•
y<=b;
•
END IF;
•
END PROCESS;
•END one;
•2、结构描述
•
描述该设计单元的硬件结构,即该硬件是如
何构成的。主要使用配置指定语句及元件例化语句
描述元件的类型及元件的互联关系。
•3、数据流描述
•
也称为寄存器传输描述形式。是对信
•程序 包
• 在VHDL中,设计的实体和结构体中定义的数据类型、常量、 子程序说明和元件说明等只能在该设计实体中使用,而对其他设 计实体是不可见的。 • 程序包说明用来单纯地罗列VHDL中所要用到的信号定义、常 量定义、数据类型、子程序说明和元件说明等,是一个可编译的 设计单元。 • 要使用程序包中的某些说明和定义,要用use语句说明。各 种VHDL编译系统都含有多个标准程序包,如Std_Logic_1164和 Standard程序包。用户也可以自行设计程序包。
•配置 用于从库中选取所需元件安 装到设计单元的实体中。
•LIBRARY IEEE; •USE IEEE.STD_LOGIC_1164.ALL;
•ENTITY mux21 IS
• PORT( a , b:IN STD_LOGIC;
•
s:IN STD_LOGIC;
•
y:OUT STD_LOGIC );
•例如:
•
architecture behavior of mux is ——用结构体行为命名
•
architecture dataflow of mux is ——用结构体的数据流命名
•
architecture structural of mux is ——用结构体组织结构命名
•
architecture latch of mux is ——用结构体的功能命名
•a
•b
•and2
•y
➢ ENTITY、IS、GENERIC、PORT、END是VHDL的关键字(保留字)。
➢ 实体名、端口名(端口说明)等均应为符合VHDL命名规则的标识符。
1、作用
•类属信 息
为设计实体和其外部环境通信的静态信息提供通道,可
以定义端口的大小、实体中元件的数目以及实体的定时特性等
•END mux21;
•ARCHITECTURE behavior OF mux21
IS
• BEGIN
•
PROCESS(a,b,s)
•
BEGIN
•
IF s = '0' THEN y<=a;
•
ELSE
•
y<=b;
•
END IF;
•
END PROCESS;
•END one;
•程序包
•实体说 明
•结构体
•实体说
• my_design
•d[11..0] •clk •oe
•ad[7..0] • a[7..0] • int • as
•练习答 案
•Library ieee;
•Use ieee.std_logic_1164.ALL;
•Entity my_design is
•PORT ( d: in std_logic_vector(11 downto 0);
•VHDL设计概念
• 采用VHDL进行设计的方法为高层设计,即“概念驱动模式”设计。设计 人员无需通过门级原理图描述,而是针对设计目标进行功能描述。VHDL并不 十分关心一个具体逻辑是靠何种方式实现的,而是把开发者的精力集中到逻 辑所实现的功能上。由于高层设计只定义系统的行为特性,因此可以不涉及 工艺。 • 采用VHDL进行设计的具体过程为: • 1、以VHDL语言描述设计概念; • 2、用VHDL仿真与调试工具分析此概念的“行为”,检查是否满足初始 要求。这一过程与普通的编程语言,如C语言的编译、运行、调试是类似的 。 • 3、VHDL设计—>VHDL综合工具。利用集成电路厂商或EDA厂家提供的被 充分验证过的工艺库,以面积、功耗、速度等为目标进行优化,将电路映射 成网表,得到门级电路后,还要进行仿真来验证门电路的行为和时序特性。 • 4、物理设计。得到可供生产的文件,进行延时、故障、热分析等,保
•
Port(d0, d1, sel : in STD_Logic;
•
q : out STD_Logic;
•
bus : out STD_Logic_vector(7 downto 0));
•END mu;
•练 习 •编写包含以下内容的实体代码:
•端口 D 为12位输入总线; •端口 OE 和CLK 都是1位输入 ; •端口 AD 为7位双向总线; •端口 A为7位输出总线; •端口 INT 是1位输出 ; •端口 AS 是一位输出同时被用作内部反馈。
VHDL程序结构介绍
•VHDL简介
• VHDL全名Very-High-Speed Integrated Circuit Hardware Description Language,超高速集成电路硬件描述 语言,VHDL语言是一种用于电路设计的高级语言。最初是源于 美国国防部1980年开始启动的超高速集成电路计划,在这一计 划执行过程中,专家们认识到需要有一种标准的语言来描述集 成电路的结构和功能,由此,美国国防部便开发出VHDL设计语 言供美军用来提高设计的可靠性和缩减开发周期的设计语言。
。 2、一般格式
GENERIC([CONSTANT] 名字表:[IN] 子类型标识 [:= 静态表达式],…] );
•端口说明
•端口说明的一般格式为:
•
PORT(端口名{,端口名}:端口模式 数据类型
;
• );
端口名{,端口名}:端口模式 数据类型
•例如:PORT ( a,b: IN STD_LOGIC;
• 实体说明中定义的信号是外部信号,而结构体定义的信号为该结构体 的内部信号,它只能用于这个结构体中。
• 结构体中的信号定义和端口说明一样,应有信号名称和数据类型定义 。因为它是内部连接用的信号,因此不需要方向说明。
•结构体的三种描述形式:
•1、行为描述 •2、结构描述 •3、数据流描述
•1、行为描述
• oe , clk: in: std_logic;
• ad: inout std_logic_vector(7 downto 0);