VHDL程序结构介绍

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

•结构体一般格式为:
•ARCHITECTURE 结构体名 OF 实体名 IS
• 定义语句: 内部信号,常数,数据类型,函数定义
• BEGIN

[并行处理语句];

[进程语句];


•END 结构体名;
➢ ARCHITECTURE、OF、IS、BEGIN、END是VHDL的关键字(保留字)。
➢ 结构体名称由设计者自由命名,是结构体的唯一名称,该结构体名可反 映结构体的特色。
•端口数据类型
• 常用的有布尔型(boolean)、位型(bit)、位矢量型( bit-vector)、整数型(integer)、非标准逻辑和标准逻辑类型( Std_ulogic和Std_logic)。
•1)boolean:布尔型,可取值“TRUE(真)”或“FALSE(假)”。
•2)bit:为位逻辑数据类型,信号取值是逻辑值“1”和“0”

•3)bit_vector:取值是一组二进制位的值。 •如:8位数据总线数端口
•Port(d0, d1, sel : in bit;

q : out bit;

bus : out bit_vector(7 downto 0));
•4)Integer:整数,用作循环技术或常数,通常不用于I/O信号

Leabharlann Baidu
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 是一位输出同时被用作内部反馈。

•5)Std_ulogic和Std_logic:非标准逻辑和标准逻辑类型,由
IEEE:Std_logic_1164支持,程序包中定义了有关的数据类型,访问
该程序包中的项目需要使用LIBRARY子句和USE子句。
•Library IEEE;
•Use IEEE.STD_Logic_1164.all;
•Entity mu is
•设计库的使用
• 首先在设计的开头说明要引用的库,然后使用use子句指
明要使用库中的哪一个设计单元,其书写格式为:

Library 库名;

Use 库名. 程序包名. all;
• 其中:程序包名就是实际设计要使用的库中的设计单元
;all表示使用程序包中的所有项目。
•常用设计库
•1、STD库 •2、WORK库 • WORK库是VHDL语言工作库,用户在项目设计中设计成功、 正在验证、和未仿真的中间件都放在WORK库中。 • 以上两个库对当前设计是永远可见的,不需在程序开头对 它们进行说明。即下面的LIBRARY子句隐含存在于任何设计单 元之前。 • library std; • library work; •3、资源库 • 除STD和WORK库以外所有的库均为资源库。这些资源库的 使用必须用LIBRARY显式的说明出来。如常用的资源库IEEE库 (Std_logic_1164)和VITAL库。
• oe , clk: in: std_logic;
• ad: inout std_logic_vector(7 downto 0);
• a: out std_logic_vector(7 downto 0); •my_design
• int: out std_logic;
• as: buffer std_logic); •End my_design;
• 以上命名举例说明,几个结构体都属于设计实体mux,结构体名由设 计者自行定义,OF后面的实体名指明了该结构体所对应的是哪个实体。由 于一个设计有行为描述、数据流描述和结构描述3种方式,一般建议用 behave, dataflow, structure为结构体命名。 • 用于对结构体内部将要使用的信号、常数、数据类型、元件、函数和 过程加以说明。最常见的是对内部流动的信号的定义。但不能定义变量。

y : OUT STD_LOGIC);
•端口名
•端口模式
•数据类型
•端口模式
➢ 用来说明数据传输通过该端口的方向。
IN:
数据只能从端口流入实体
OUT:
数据只能从端口流出实体
INOUT:
数据从端口流入或流出实体
BUFFER:
数据从端口流出实体,同时可被内部反馈。
➢ 构造体内部也要使用输出信号时,只能定义成“buffer”。

描述该设计单元的功能,即该硬件做什么,
主要使用函数、过程和进程语句,以算法形式描述
数据的变换和传送。即只描述所希望电路的功能或
者电路行为(输入输出间转换的行为),而没有指
明或涉及实现这些行为的硬件结构。
•ARCHITECTURE behavior OF mux21
IS
• BEGIN

PROCESS(a,b,s)
•程序 包
• 在VHDL中,设计的实体和结构体中定义的数据类型、常量、 子程序说明和元件说明等只能在该设计实体中使用,而对其他设 计实体是不可见的。 • 程序包说明用来单纯地罗列VHDL中所要用到的信号定义、常 量定义、数据类型、子程序说明和元件说明等,是一个可编译的 设计单元。 • 要使用程序包中的某些说明和定义,要用use语句说明。各 种VHDL编译系统都含有多个标准程序包,如Std_Logic_1164和 Standard程序包。用户也可以自行设计程序包。
•常用程序包
•1、standard
• 预先在std库中编译,主要定义了布尔类型、bit类型、
character类型、出错级别、实数类型、整数类型、时间类型
、延迟长度子类型、自然数子类型、正整数子类型、string
•d[11..0] •clk •oe
•ad[7..0] • a[7..0] • int • as
•结构 体
• 结构体是用来描述一个设计的具体结构,建立一个设计中输入和输出之间的关系, 即描述实体的功能,对黑盒子的内部进行具体描述。
• VHDL允许采用三种描述格式来进行具体的设计构造,行为描述、数据流描述和结 构描述。具体描述时,可以是以上三种中的一种或几种的任意组合。一个设计实体可以 有多个结构体。
•a
•b
•and2
•y
➢ ENTITY、IS、GENERIC、PORT、END是VHDL的关键字(保留字)。
➢ 实体名、端口名(端口说明)等均应为符合VHDL命名规则的标识符。
1、作用
•类属信 息
为设计实体和其外部环境通信的静态信息提供通道,可
以定义端口的大小、实体中元件的数目以及实体的定时特性等
• 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);
•配置 用于从库中选取所需元件安 装到设计单元的实体中。
•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 );
。 2、一般格式
GENERIC([CONSTANT] 名字表:[IN] 子类型标识 [:= 静态表达式],…] );
•端口说明
•端口说明的一般格式为:

PORT(端口名{,端口名}:端口模式 数据类型

• );
端口名{,端口名}:端口模式 数据类型
•例如:PORT ( a,b: IN STD_LOGIC;
•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;
•程序包
•实体说 明
•结构体
•实体说
•VHDL程序结构
•实体和结构体 是VHDL设计文件的两个基 本组成部分
•实体说明 描述设计实体(黑盒)的外 部接口信号(即输入/输出信号);
•结构体说明 用于描述设计实体( 黑盒)的内部电路。 •包集合 存放各设计模块能共享的数 据类型、常数、子程序等;
•库 用于存放已编译的实体、结构体、 包集合和配置。

BEGIN

IF s = '0' THEN y<=a;

ELSE

y<=b;

END IF;

END PROCESS;
•END one;
•2、结构描述

描述该设计单元的硬件结构,即该硬件是如
何构成的。主要使用配置指定语句及元件例化语句
描述元件的类型及元件的互联关系。
•3、数据流描述

也称为寄存器传输描述形式。是对信
VHDL程序结构介绍
•VHDL简介
• VHDL全名Very-High-Speed Integrated Circuit Hardware Description Language,超高速集成电路硬件描述 语言,VHDL语言是一种用于电路设计的高级语言。最初是源于 美国国防部1980年开始启动的超高速集成电路计划,在这一计 划执行过程中,专家们认识到需要有一种标准的语言来描述集 成电路的结构和功能,由此,美国国防部便开发出VHDL设计语 言供美军用来提高设计的可靠性和缩减开发周期的设计语言。

•实体说明的一般格式为:


ENTITY 实体名 IS

[GENERIC类属参数说明];

[PORT端口说明];

END;
• 实体中的每一个I/O信号被称为端口,其 功能对应于电路图符号的一个引脚。端口说明 则是对一个实体的一组端口的定义,即对基本 设计实体与外部接口的描述。端口是设计实体 和外部环境动态通信的通道。实体类似一个“ 黑盒”,实体描述了“黑盒”的输入输出口。
号到信号的数据流的路径形式进行描述,因
此要求设计者不但要对设计实体的功能实现
有一定的了解,而且还需要对内部的逻辑电
路结构有清楚的认识。
•设计 库
•设计库(Library) • 1、设计库是经编译后的数据的集合,存放包集合 定义、实体定义、结构体定义和配置定义。 • 2、VHDL中,设计库的说明总放在设计单元的最前 面。 • 3、设计库中的各个设计单元可以用作进行其他设 计的资源,一个设计可以使用多个库中的设计单元。
• 实体说明中定义的信号是外部信号,而结构体定义的信号为该结构体 的内部信号,它只能用于这个结构体中。
• 结构体中的信号定义和端口说明一样,应有信号名称和数据类型定义 。因为它是内部连接用的信号,因此不需要方向说明。
•结构体的三种描述形式:
•1、行为描述 •2、结构描述 •3、数据流描述
•1、行为描述
•VHDL设计概念
• 采用VHDL进行设计的方法为高层设计,即“概念驱动模式”设计。设计 人员无需通过门级原理图描述,而是针对设计目标进行功能描述。VHDL并不 十分关心一个具体逻辑是靠何种方式实现的,而是把开发者的精力集中到逻 辑所实现的功能上。由于高层设计只定义系统的行为特性,因此可以不涉及 工艺。 • 采用VHDL进行设计的具体过程为: • 1、以VHDL语言描述设计概念; • 2、用VHDL仿真与调试工具分析此概念的“行为”,检查是否满足初始 要求。这一过程与普通的编程语言,如C语言的编译、运行、调试是类似的 。 • 3、VHDL设计—>VHDL综合工具。利用集成电路厂商或EDA厂家提供的被 充分验证过的工艺库,以面积、功耗、速度等为目标进行优化,将电路映射 成网表,得到门级电路后,还要进行仿真来验证门电路的行为和时序特性。 • 4、物理设计。得到可供生产的文件,进行延时、故障、热分析等,保
•例如:

architecture behavior of mux is ——用结构体行为命名

architecture dataflow of mux is ——用结构体的数据流命名

architecture structural of mux is ——用结构体组织结构命名

architecture latch of mux is ——用结构体的功能命名
相关文档
最新文档