VHDL与数字电路设计PPT课件-第一章VHDL程序的基本结构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
寄存器传输(数据流)描述方式:
按照从信号到信号的寄存器传输路径行使进行描述的方式。优点 在于很容易进行逻辑综合,缺点是硬件水平要求较高。
结构描述方式:
在层次化结构设计中,高层次的设计模块调用低层次的设计模块, 或者直接用门电路设计单元来构成一个复杂的逻辑电路的描述方法。 采用结构描述方式时,如果想要引用库中不存在的模块或元件时,必 须先创建。
c
b : IN bit;
b
c : OUT bit);
END and2;
--实体定义
ARCHITECTURE Na OF and2 IS
BEGIN
c <= ‘0’ WHEN a=’0’ AND b = ‘0’ ELSE
’0’ WHEN a=’1’ AND b = ‘0’ ELSE
’0’ WHEN a=’0’ AND b = ‘1’ ELSE
‘1’;
END Na;
--结构体Na
ARCHITECTURE Nb OF and2 IS BEGIN
c <= a AND b; END Nb;
CONFIGURATION s1 OF and2 IS FOR Na END FOR;
END CONFIGURATION s1;
--结构体Nb --结构体配置结束
LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; USE IEEE.std_logic_arith.ALL; USE IEEE.std_logic_unsigned.ALL;
3、实体
作用:
ENTITY(实体)用于定义电路的外观,即I/O端口和数量。
定义格式:
VHDL的功能
描述输入/输出端口 描述电路的行为和功能
Input port IN
Functions Input
Output
Output port OUT
基本结构
并非所有VHDL程序都具备上述的语法结构。理论 上,只有ENTITY和ARCHITECTURE是程序必备的; 而在实际应用中,常常需要在定义ENTITY之前调 用库和库中的程序包(只是“调用”,不是“编 写”)。下图所示的VHDL程序结构是实际应用中 最基本、最常见的程序结构。
Error
END rtl;
ENTITY test2 IS PORT(a: IN std_logic; b: BUFFER std_logic; c: OUT std_logic);
END test2;
ARCHITECTURE rtl OF test2 IS BEGIN
b <= NOT(a); c <= b; END rtl;
DOWNTO 0); equal :OUT std_logic);
END eqcomp4;
ARCHITECTURE dataflow OF eqcomp4 IS BEGIN
equal <= ‘1’ WHEN a=b ELSE ‘0’; END dataflow;
VHDL 对大小写不敏感
文件名和实体 名一致
--行为描述方式
dataflow/rtl structural/structure bool latch
--数据流描述方式 --结构化描述方式 --用数学表达方式 --功能
2. 结构体声明语句:
对结构体内部所使用的信号、变量、常数、元件、子 程序声明等进行定义。和实体中端口说明一样,也应该 含有信号名称和数据类型的说明,但由于所定义的信号 是结构体内部使用的信号,因此不需要进行端口模式的 说明。定义格式如下:
OUT与BUFFER的区别
3.3 实体说明部分
实体说明部分应放在端口说明的下面,由实体声 明语句和实体语句两部分构成。
实体声明语句的功能是用来定义设计实体接口中的一 些公共信息,如数据类型的定义。
实体语句是每一个设计实体接口的公共部分。实体语 句只能由以下并行语句组成:并行断言语句、并行过 程调用语句和被动进程语句。这些实体语句部分必须 是被动语句,即在语句中不含有赋值语句。
如图代表的是一个芯片的内部俯视图,下面范例 介绍如何使用VHDL程序设计该芯片电路。
Pin48
Pin7
LIBRARY IEEE;
--USE定义区
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_arith.ALL;
USE IEEE.std_logic_unsigned.ALL;
每行;结尾 关键字END后跟 实体名 关键字BEGIN 关键字END后跟 构造体名
2、库和程序包
LIBRARY(库)是用于存放预先编译好的设计单元(实体 说明、结构体、配置说明、程序包说明和程序包体等)。
PACKAGE (程序包)中定义了基本的常数,数据类型,元 件及子程序等。
作用:
声明在实体和结构体定义中将用到的数据类型、元件 或子程序等。
每个实体说明可以对应多个结构体,每个结构体对应着设 计实体不同的结构和算法实现方案。一般来说,每个实体 对应的各个结构体的地位是同等的,都用来完整地实现结 构体的具体功能。
同一个结构体不能被不同的设计实体所共有。
1. 结构体命名:
遵循标识符的命名规则,一般建议按照一定的惯例进 行命名:
behavioral/behave
VHDL程序举例2—全加器
sa b c c oa ba cbc
LIBRARY IEEE; USE IEEE.std_logic_1164.all;
ENTITY fa IS PORT (a,b,ci: IN std_logic; s,co : OUT std_logic);
END fa;
ARCHITECTURE dat1 OF fa IS BEGIN
一个完整的ENTITY实例
ENTITY ram IS GENERIC(delay_time: time:=5ns); PORT(addr: IN std_logic_vector(15 DOWNTO 0); sel: IN std_logic; data: OUT std_logic_vector(31 DOWNTO 0)); TYPE instruction IS ARRAY(0 TO 7) OF natural; TYPE program IS ARRAY(natural RANGE<>) OF instruction;
5、配置
一个完整VHDL电路设计必须有一个实体和对应的结构体, 即实体和结构体对构成一个完整的VHDL设计(一个实体可 对应一个结构体或多个结构体,即一个实体可以有不同的 描述方式)。
作用:
当实体有多个结构体时,系统默认实体选用最后一个 结构体,利用配置语句可以任意选择采用哪一个结构体。
定义格式:
CONFIGURATION <配置名> OF <实体名> IS FOR <选配结构体名> END FOR;
END [配置名];
VHDL程序举例1
LIBRARY std; USE std.standard.ALL;
--库和程序包
输入与门
ENTITY and2 IS PORT(a : IN bit;
a
ENTITY ch1 IS
--ENTITY定义区
PORT(pin48: IN std_logic;
pin7 : OUT std_logic);
END ch1;
ARCHITECTURE rtl OF ch1 IS BEGIN
pin7<=pin48; END rtl;
--ARCHITECTURE定义区 --程序
ENTITY <实体名> IS [类属参数说明]; <端口说明>; [实体说明部分];
END [ENTITY] <实体名>;
3.1 类属参数说明
放在端口说明之前,用来为设计实体和其外部环境通信的 静态信息提供通道,可以用来定义端口宽度、实体中元件 的数目以及器件延迟时间等参数。
可以使VHDL更加具有通用性。在开始设计VHDL语言程序时, 难免会有一些参数的值不能确定(或待定),可以应用 GENERIC语句编制通用程序,仿真时只要将待定参数初始 化即可。
s<=a XOR b XOR ci; co<=(a AND b) OR (a AND ci) OR (b AND ci); END dat1;
为了使设计能够更直接地反映晶体管电路的构 成,应该将异或门用基本的与门和或门替代:
由于vhdl已是ieee规定的标准所以只要是cpldfpga等器件公司他们都会提供标准的ieee资源库而且由于这里面包含许许多多的定义和参数初学者一时之间也不容易全部了解所以可以全部写上以减轻负担如下所示
VHDL与数字电路设计
目录
一 基本结构 二 库和程序包 三 实体 四 结构体 五 配置
1、基本结构
用于实体内部的反馈。 LINKAGE(链接)模式:
ENTITY test1 IS PORT(a: IN std_logic; b, c: OUT std_logic);
END test1;
ARCHITECTURE rtl OF test1 IS
BEGIN
b <= NOT(a);
c <= b;
--
声明格式:
LIBRARY <库名>; USE <库名>.<程序包名>.ALL; USE <库名>.<程序包名>.<程序包中的项目>;
库和程序包
VHDL语言的库分为两类:
设计库:包括std和work库,设计库对当前项目是可见 默认的,无需用LIBRARY和USE语句声明。
资源库:包括IEEE库等,设计库是常规元件和标准模 块存放的库,使用哪个资源库需要预先声明。
定义格式:
PORT (端口名称: 端口模式 数据类型 [:=表达式];…);
例:
PORT( a: IN bit;
b:
IN bit;c:来自OUT bit);端口名
端口模式 数据类型
3.2 端口说明
端口说明必须包括端口名称、端口模式和数据类型的描述。 端口名称就是指定端口的标识符;端口模式用来说明数据、 信号通过该端口时的流动方向,即数据传输方向;数据类 型用来说明通过信号端口的数据或者信号的数据类型。
END ram;
4、结构体
作用:
实体的实现。即说明电路执行什么动作或实现功能。
定义格式:
ARCHITECTURE <结构体名> OF <实体名> IS [结构体声明语句]; BEGIN
<并行处理语句>; END [ARCHITECTURE] <结构体名>;
结构体
位于实体之后。实体和结构体的编译是有先后顺序的,只 有编译了实体说明以后,才能对结构体进行编译。如果实 体说明需要重新编译,那么相应的结构体也需要重新编译。
SIGNAL nesl: bit;
3. 并行描述语句:
结构体中主要包括进程语句、信号赋值语句、块语句、 子程序调用语句和元件例化语句等。
结构体的三种描述方式
行为描述方式:
对设计实体的数学模型的描述,是一种抽象描述(不针对器件, 不考虑实体的电路组织和门级实现),是整体设计功能的定义,高层 次描述。只需注意正确的实体行为,准确的数学模型和精确的输出结 果。
端口模式:
端口模式 IN OUT
INOUT BUFFER LINKAGE
含义 输入 输出 双向 缓冲 链接(不指定方向)
3.2 端口说明
IN(输入)模式:
OUT(输出)模式:
INOUT(双向)模式:
BUFFER(缓冲)模式: BUFFER模式和INOUT模式的区别就在于INOUT模式不能
USE定义区
ENTITY定义区
ARCHITECTURE定义区
eqcomp4.vhd
--eqcomp4 is a four bit equality comparator

LIBRARY IEEE;

USE IEEE.std_logic_1164.ALL;
实体 构造体
ENTITY eqcomp4 IS PORT(a, b:IN std_logic_vector(3
定义格式:
GENERIC(参数名称:数据类型[:=静态表达式];…);
例: GENERIC(delay_time:time:=5ns);
3.2 端口说明
端口说明是对设计实体与外部接口的描述,端口对应于电 路图上的一个引脚,一个端口就是一个数据对象。端口说 明部分用于为设计实体和其外部环境通信的动态信息提供 通道。
VHDL标准中提供了一些预定义的标准程序包,常 用的有:
Standard(std库) Textio(std库) Std_logic_1164(IEEE库) …
库和程序包
由于VHDL已是IEEE规定的标准,所以只要是CPLD、 FPGA等器件公司,他们都会提供标准的IEEE资源 库,而且由于这里面包含许许多多的定义和参数, 初学者一时之间也不容易全部了解,所以可以全 部写上以减轻负担,如下所示:
相关文档
最新文档