第三讲 VHDL基本结构与语法

合集下载

VHDL语法结构、数据类型与基本命令语句.

VHDL语法结构、数据类型与基本命令语句.

A(3) A(2) A(1)
B(0) B(1) B(2)
A(0)
B(3)

序列信号的分解与合并
VHDL的语法是可接收分解与合并,其中”&”表合并动作
Architecture a of Test is Signal A : Std_logic_vector(3 downto 0); Signal B : Std_logic_vector(0 to 3); Signal C : Std_logic_vector(0 to 1); Signal D : Std_logic_vector(1 downto 0);
Nand 与非门
Xnor 或非门

/=
<
<=
小于等于
>
>=
大于等于
说明
等于
不等于
小于
大于
注:VHDL的赋值符号不是“=”(在C语言中使用),而逻辑关系等 于运算则使用“=”(C语言中使用“==”)。

列举数据类型
使用这种数据类型是希望用这样的类型定义,将所有的元素 表列出来。 定义:Type 列举名称 is (元素1,元素2…….); 主要是提高程序的可读性。

实数(Real)
定义:Type Real is range -1.7E38 to 1.7E38 无法综合
数据对象定义:常数、信号、变量

常数(Constant)
将数据对象定义为常数,是希望该常数所代表的数据部分不 会改变。 定义:Constant 常数名称:数据类型:=设置值 命名说明:1、第一个字母是英文字母 2、最后一个字符不可以为底线符号。 3、常数名称不可以与语法保留字相同。

VHDL语言的基本结构

VHDL语言的基本结构
1 实体说明 1)实体语句结构 ENTITY 实体名 IS [GENERIC(类属表);] [PORT(端口表);] END ENTITY 实体名 2)类属参数说明 GENERIC([常数名:数据类型[:设定值] {;常数名:数据类型[:设定值]};
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语言的基本语法

B:二进制基数符号,表示二进制数位0或1。 二进制基数符号,表示二进制数位0 O:八进制基数符号。 八进制基数符号。 X:十六进制基数符号(0~F) 。 十六进制基数符号(0~ (0 例如: 1_1101_1110 1_1101_1110” 例如:B“1_1101_1110 --二进制数数组,位矢数组长度是9 --二进制数数组,位矢数组长度是9 二进制数数组 AD0 X“AD0” AD --十六进制数数组,位矢数组长度是12 --十六进制数数组,位矢数组长度是12 十六进制数数组
4、下标名及下标段名 下标名用于指示数组型变量或信号的某一 下标名用于指示数组型变量或信号的某一 元素, 元素,如:a(2) , b(n) 下标段名则用于指示数组型变量或信号的 下标段名则用于指示数组型变量或信号的 某一段元素,其语句格式如下: 某一段元素,其语句格式如下:
数组类型信号名或变量名(表达式 表达式2]); 数组类型信号名或变量名 表达式1 [TO/DOWNTO 表达式 ; 表达式
信号的使用和定义范围是实体、结构体和程序包 信号的使用和定义范围是实体、结构体和程序包.
在程序中: 在程序中 (1) 信号值的代入采用“<=”代入符,而且信号 信号值的代入采用“ ”代入符, 代入时可以附加延时。 代入时可以附加延时。 (2) 变量赋值时用“:=”,不可附加延时。 变量赋值时用“ ” 不可附加延时。 (3) 信号的初始赋值符号仍是“:=”。 信号的初始赋值符号仍是“ ” 例: X<=Y AFTER 10 ns; ; --X,Y都是信号,且Y的值经过 都是信号, 的值经过10ns延 , 都是信号 的值经过 延 时以后才被代入X。 时以后才被代入 。
(1) 赋值语句右方的表达式必须是一个与目标变量有相同 数据类型的数值。 数据类型的数值。 (2) 变量不能用于硬件连线和存储元件。 变量不能用于硬件连线和存储元件。 (3) 变量的适用范围仅限于定义了变量的进程或子程序中。 变量的适用范围仅限于定义了变量的进程或子程序中。 (4) 若将变量用于进程之外,必须将该值赋给一个相同的 若将变量用于进程之外, 类型的信号,即进程之间传递数据靠的是信号。 类型的信号,即进程之间传递数据靠的是信号。

VHDL语言教程

VHDL语言教程

VHDL语言教程VHDL是一种硬件描述语言,用于描述数字电路和系统,并进行硬件的设计和仿真。

它被广泛应用于数字电路设计、嵌入式系统开发和可编程逻辑控制器等领域。

本教程将介绍VHDL语言的基本概念和语法,帮助您了解和学习这门强大的硬件描述语言。

一、VHDL概述VHDL是Very High Speed Integrated Circuit Hardware Description Language的缩写,意为高速集成电路硬件描述语言。

它是一种硬件描述语言,用于描述数字电路和系统。

与传统的电路设计方法相比,使用VHDL可以更加方便、高效地进行电路设计和测试。

1.VHDL的起源和发展VHDL最早由美国国防部为了解决数字电路设计复杂、效率低下的问题而研发。

后来,VHDL成为了一种IEEE标准(IEEE1076)并被广泛应用于数字电路设计和仿真。

2.VHDL的优点VHDL具有以下几个优点:-高级抽象:VHDL提供了一种高级描述电路的方法,使得设计者能够更加方便地表达复杂的电路结构和行为。

-可重用性:VHDL支持模块化设计,使得设计者可以将电路的不同部分进行抽象和封装,提高了电路的可重用性。

-高效仿真:VHDL可以进行高效的电路仿真和测试,有助于验证电路设计的正确性和可靠性。

-灵活性:VHDL可以应用于各种不同类型和规模的电路设计,从小规模的数字逻辑电路到大规模的系统级设计。

二、VHDL语法和基本概念1.VHDL的结构VHDL程序由程序单元(unit)组成,程序单元是VHDL描述的最小单元。

程序单元包括实体(entity)、结构(architecture)、过程(process)和包(package)等。

2. 实体(entity)实体是VHDL描述电路模块的一个部分,包括输入输出端口、信号声明和实体标识符等。

3. 结构(architecture)结构描述了实体的具体电路结构和行为,包括组件声明、信号赋值和行为描述等。

简述VHDL的基本结构及每部分的基本功能

简述VHDL的基本结构及每部分的基本功能

简述VHDL的基本结构及每部分的基本功能1.1.简述VHDL的基本结构及每部分的基本功能。

(1)库库是经编译后的数据集合,库中存放的是各种程序包、实体定义、结构体描述等。

设计人员在用VHDL语言设计系统时,库中内容有的可作为标准,有的可作为资源被引用。

库的作用就在于使设计者可以共享已经编译过的设计文件及有用数据。

(2)程序包程序包是VHDL程序的公共存储区,在程序包内说明的数据对实体是透明的。

程序包由程序包说明和程序包体组成。

(3)实体实体可以表示小到一个与门,也可以大到一个数字系统,这个系统可以像微处理器一样的复杂。

在实体的说明部分主要完成设计对象的输入输出端口名称、传输方向、数据类型的定义,即端口的定义。

(4)结构体结构体是设计实体的具体描述,如果把设计实体抽象为一个功能方块图,结构体则描述这个功能方块图内部的具体逻辑实现细节。

一个设计实体的内部实现细节通过结构体的具体描述表现出来。

(5)配置配置是用于描述设计不同层次之间的关系和实体与结构体之间的连接关系。

在实体与结构体之间的连接关系配置说明中,设计者可以利用配置语句为实体提供不同的结构体与之相匹配。

在仿真设计中,可以利用不同配置方式选择不同结构体,分别对不同结构体进行仿真测试。

2.简述VHDL语言实体申明中:IN、OUT、BUFFER和INOUT等端口模式各自的特点。

IN:输入型,只读模式。

OUT:输出型,只写。

BUFFER:缓冲型,带有读功能的输出模式,即输出并向内部反馈,out 相似,但可读。

INOUT:输入输出型,可读可写,可以通过该端口读入或写出信息。

3.在VHDL语言中,标识符必须遵循一些规则,有哪些规则?(1)标示符的第一个字母必须是英文字母。

(2)标示符的最后一个字母不能使下划线字符。

(3)标示符不允许连续出现两个下划线字符。

(4)标示符不区分字母的大小写。

(5)VHDL的保留字不能用于作为标示符使用。

4.VHDL的数据对象有哪几种,它们之间有什么不同?答:VHDL的数据对象包括信号、常量、变量和文件4类。

三、VHDL语言基础

三、VHDL语言基础

第三章VHDL语言基础本章介绍VHDL语言的基础知识,具体内容包括:1、概述2、VHDL程序的基本结构库、程序包、实体说明、结构体、配置3、VHDL的语言要素语法规则、数据对象、数据类型、运算操作符4、VHDL的描述语句并行语句、顺序语句、子程序、属性语句5、VHDL的描述方式行为描述方式、寄存器传输级描述方式、结构描述方式第一节概述HDL(Hardware Description Language):硬件描述语言,描述数字电路和系统的语言。

具体来说,用于描述数字系统的结构、行为、功能和接口。

在EDA设计中,设计者利用硬件描述语言,可以描述自己的设计思想,完成设计输入的步骤。

设计输入共有三种方法——原理图、文本、波形输入,其中,文本输入方式就是用硬件描述语言跟计算机交流,让计算机读懂设计者的设计。

VHDL的全称是V ery-High-Speed Integrated Circuit Hardware Description Language,译作甚高速集成电路硬件描述语言,是当前广泛使用的HDL语言之一,并被IEEE和美国国防部采用为标准的HDL语言。

1、发展历程:美国国防部1982年开发VHDL语言,在1987年被IEEE采用为标准硬件描述语言。

在实际使用过程中,发现1987年版本的缺陷,并于1993年对87版进行了修订。

因此,现在有两个版本的VHDL语言。

1)1987年的IEEE 1076(VHDL87)2)1993年进行了修正(VHDL93)VHDL语言目前已成为,开发设计可编程逻辑器件的重要工具。

2、优点:VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。

归纳起来,VHDL 语言主要具有以下优点:功能强大,设计方式多样VHDL具有功能强大的语言结构, 可用简洁明确的代码来描述十分复杂的硬件电路。

VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。

VHDL 基本结构

VHDL 基本结构

库library: 存放已经编译好的实体、构造体、包集合和配置
U t Eq jIX d U t Eq jIX d
3.1 VHDL语言设计的基本单元及其构成
VHDL语言设计的基本单元就是一个设计实体。
初级设计单元
ENTITY ent1 IS }... BEGIN }... END ENTITY ent1; CONFIGURATION cfg1 OF ent1 IS }... END CONFIGURATION cfg1;
VHDL语言基本单元组成:实体说明+构造体说明 例如:二选一电路设计单元的VHDL描述:
LOGO
ENTITY mux IS generic(m:time:=1ns); PORT(d0,d1,sel:in bit; q:out bit); END mux;
d0 d1
q
sel
Architecture dataflow of mux is Begin process(d0,d1,sel) begin tmp1:=d0 and sel; tmp2:=d1 and (not sel); tmp3:=tmp1 or tmp2; q<=tmp3 after m; end process; End dataflow;
LOGO
构造体是用于描述设计实体的内部结构(元件及内部的 连接关系)以及实体端口间的逻辑关系(实体的行为)。
注意:构造体一定要跟在实体说明的后面。 构造体的描述方法:行为级描述、RTL(数据流)级 描述、结构描述(逻辑元件连接)
构造体
LOGO
1个实体可对应若干个结构体,每个结构分别代 表该实体功能的不同实现方案或不同描述方式。 同一时刻,只有一个结构体起作用,可以通过 配置来决定使用哪一个结构体进行仿真或综合。 同一结构体不能为不同的实体所拥有

HDL基本语法及其应用(精)

HDL基本语法及其应用(精)

2.VHDL语言的程序结构
Hale Waihona Puke 实体的图形表达电路原理图表述
2.VHDL语言的程序结构
2.VHDL语言的程序结构
2.VHDL语言的程序结构
• 电路最基本的VHDL描述由两部分组成: (1)以关键词ENTITY引导,END ENTITY mux21a结尾的语句部分,称为实体。VHDL 的实体描述了电路器件的外部情况以及各 信号端口的基本性质,如信号流动的方向、 流动在其上的信号结构方式和数据类型等。
2.VHDL语言的程序结构
例: ENTITY exam IS GENERIC(width: INTEGER:=42); PORT(M :IN STD_LOGIC_VECTOR(width-1 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));
2.VHDL语言的程序结构
2.VHDL语言的程序结构
•语句结构和语法说明 1. 实体表达 VHDL完整的、可综合的程序结构必 须能完整地表达一片专用集成电路ASIC器 件的端口结构和电路功能,即必须包含实 体和结构体两个最基本的语言结构。
2.VHDL语言的程序结构
• 实体描述的是电路器件的端口构成和信号 属性,其最简表达式如下所示。
第三讲 HDL基本语法及其应用
1.VHDL概述 2.VHDL语言的程序结构 3.VHDL的常用语句 4.VHDL语言的数据类型及运算操作符
1. VHDL概述
• 目前,电路系统的设计正处于 EDA( 电子设 计自动化 ) 时代。借助 EDA 技术,系统设计 者只需要提供欲实现系统行为与功能的正 确描述即可。至于将这些系统描述转化为 实际的硬件结构,以及转化时对硬件规模、 性能进行优化等工作,几乎都可以交给EDA 工具软件来完成。使用EDA技术大大缩短了 系统设计的周期,减少了设计成本。

EDAVHDL第三章VHDL基本结构

EDAVHDL第三章VHDL基本结构

EDAVHDL第三章VHDL基本结构VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述和设计数字电路。

本章将介绍VHDL的基本结构,包括实体、体系结构和实例化。

一、实体(Entity)实体是VHDL设计的最基本单位,用于描述模块的输入输出信号以及模块的功能。

实体由实体头、实体规范和实体体构成。

实体头定义了实体的名称,如下所示:```entity module_name is```其中,module_name为实体的名称。

实体规范定义了实体的输入输出接口以及信号的类型和方向,如下所示:```portsignal_name : signal_type;...```其中,signal_name为信号的名称,signal_type为信号的类型,如std_logic、std_logic_vector等。

实体体定义了实体的功能实现,如下所示:```begin...end entity_name;```其中,entity_name为实体的名称。

二、体系结构(Architecture)体系结构用于具体描述实体的功能实现,一个实体可以对应多个体系结构。

体系结构由体系结构头、信号声明和过程声明组成。

体系结构头定义了体系结构的名称以及对应的实体名称,如下所示:```architecture arch_name of entity_name is```其中,arch_name为体系结构的名称,entity_name为对应的实体名称。

信号声明用于声明体系结构内部使用的信号,如下所示:```signal signal_name : signal_type;```其中,signal_name为信号的名称,signal_type为信号的类型。

过程声明用于定义体系结构的功能实现,如下所示:```beginprocess (sensitivity_list)begin...end process;end arch_name;```其中,sensitivity_list为灵敏列表,指定了过程中响应信号的变化和时钟信号等。

第3章VHDL语法基础

第3章VHDL语法基础

--设初始值
FOR I IN 1 DOWNTO 0 LOOP
IF (A(I)=‘1’ AND B(I)=‘0’) THEN
A_LESS _B<=FALSE;
EXIT;
ELSIF (A(I)=‘0’ AND B(I)=‘1’) THEN
A_LESS _B<=TRUE;
--A<B
EXIT;
ELSE NULL;
PROCESS(A) IS
BEGIN TMP <=‘0’;
FOR N IN 0 TO 7 LOOP
TMP <=TMP XOR A(N);
END LOOP; Y<= TMP;
结果:
END PROCESS;
Y=‘0’— A含偶数个‘1’,
END ARCHITECTURE ART;
Y=‘1’— A含奇数个‘1’。
BEGIN
PROCESS(A,B,C) IS
VARIABLE N: BOOLEAN;
BEGIN
C
IF A THEN N:=B;
ELSE N:=C; END IF; OUTPUT <=N; END PROCESS;
A
OUTPUT
B
对应的硬件电路
END ARCHITECTURE ART;
例3: 由两个2选1多路选择器构成的电路逻辑描述如图所示, 其中,当P1和P2为高电平时下端的通道接通。
A
S2 S1
D C
Z B A
ARCHITECTURE ART OF MUX41 IS
SIGNA S :STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
S<=S1 & S2;

硬件描述语言(VHDL)

硬件描述语言(VHDL)
FOR 元件标号:元件名 USE ENTITY 库名.实体名[(结构名)];

(1)体内配置指定

(2)体外配置说明
由于体外配置语句是一个独立的编译单位, 故需给它指定一个单位名—配置名。实体 名和结构体名为需对例元做配置的实体及 相应的结构体。

(3)直接例化

二. VHDL语言的数据对象,数据类型
TYPE week IS(sum,mon,tue,wed,thu,fri,sat);
2.整数,实数(Integer,Real)类型 格式:TYPE 数据类型名 IS 数据类型定义约束范围
TYPE twos IS INTEGER RANGE –32768 TO 32767; TYPE voltage IS REAL RANGE 0.0 TO 10.0;



结构体的子结构描述:
BLOCK,PROCESS,SUBPROGRAM三种语句结构
1. BLOCK语句结构描述
格式: 块结构名: BLOCK BEGIN ….
END BLOCK 块结构名;
在对程序进行仿真时,BLOCK语句中所描述的各个语 句是可以并发执行的,它与书写顺序无关。 卫式BLOCK语句的格式::BLOCK [卫式布尔表达式]; 当卫式布尔表达式为真时,BLOCK语句执行。
为了能重复使用这些函数和过程,这些程 序通常组织在包集合库中。 (1)多个过程和函数汇集在一起就构成一个 包集合(Package)。 (2)n个包集合汇集在一起就形成一个库 (Library)。


(三) 包集合,库及配置
1.库(Library):它是一个经过编译后的数据的集合, 存放包集合EE库,STD库,ASIC矢量库, WORK库,用户定义库。

VHDL语言程序的基本结构

VHDL语言程序的基本结构
qout:OUT INTEGER RANGE 0 TO 7); END count3;
d0
&
≥1 q
d1
&
1 sel
图2-1 二选一选择器的电原理图
【例2-5】 图2-1的VHDL语言描述: ENTITY mux2 IS GENERIC(m: TIME:=1ns); PORT(d0,d1,sel: IN BIT;
bus: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END mu;
该例中BIT类型用STD_LOGIC替代,而bus则用 STD_LOGIC_VECTOR(7 DOWNTO 0)说明。这样做在语法上都是 对的,所不同的是BIT、BIT_VECTOR与STD_LOGIC、 STD_LOGIC_VECTOR尽管都同样描述位和位矢量,但是它们的数 据类型是不一样的,前者只有两种状态“1”和“0”;而后者却有9 种状态(这一点在后面详述)。BIT和BIT_VECTOR在VHDL语言的 标准库(STD库)中定义,使用该类型数据可以不作任何说明。 STD_LOGIC和STD_LOGIC_VECTOR在IEEE库的 1164 包集合中定 义。在该包集合中专门对STD_LOGIC和STD_LOGIC_VECTOR数 据类型的定义作了具体说明,其作用像C语言中的include文件一样。 正如例2-7 所示那样,如果在实体和构造体中要使用这种类型的数 据,就必须在实体描述前加两条语句:库说明语句和使用包集合的 说明语句。这样可以使VHDL语言的编译器在对实体编译时从指定 库的包集合中找到数据类型的定义。
表2-1 端口方向说明
方向定义
含义
IN 输入端口
输入
OUT 输出端口
输出(构造体内部不能再使用)

2.VHDL基本结构与语法new

2.VHDL基本结构与语法new


“tell me what hardware you want and I will give it to you”
VHDL的设计综合过程
1、设计要求的定义 2、用VHDL进行设计描述(系统描述与代码设计) 3、源代码模拟 4、设计综合、设计优化和布局布线 5、布局布线后的设计模块模拟(时序仿真) 6、器件编程
Progr.
Down Load
第四章
VHDL基本结构与语法
4.1 VHDL 程序基本结构



一个相对完整的VHDL设计由以下几个部分组成:
库(Library)用以存储预先设定的程序包和数据集合体 程序包(Package)声明在设计或实体中将用到的常数、数据类型、 元件和子程序等。 实体(Entity) 声明到其他实体或其他设计的接口,即定义设计的输 入/输出口。 结构体(Architecture)定义实体的实现,即电路的具体描述。 配置(Configuration)为实体选定某个特定的结构体
VHDL Synthesis vs. other HDLs Synthesis

VHDL: “tell me how your circuit should behave and I will give you hardware that does the job”
ABEL, PALASM, AHDL:
端口模式 (1)IN 信号进入实体(不能给输入端口赋值) (2)OUT 信号离开实体不能在内部反馈使用(不能读入输出端口的数据) (3)INOUT 信号是双向的(即可以进入实体,也可以离开实体) (4)BUFFER 信号输出到实体外部,但同时也在实体内部反馈。是INOUT的 子集,但不是由外部驱动

第3章 VHDL语言基础

第3章 VHDL语言基础
超高速集成电路硬件描述语言
Verilog:Cadence公司开发
ABEL(Advanced Boolean Hardware Description, 高级布尔方程语言) :Lattice公司 AHDL(Analog模拟硬件描述语言): Altera公司
第二节
VHDL的基本结构
通过与非门的逻辑描述,阐述VHDL的基本结构
第三节 VHDL结构体的子结构
4位计数器
module count4(out,reset,clk);
output[3:0] out;
input reset,clk; reg[3:0] out; always @(posedge clk) begin if(reset) out<=0; //同步复位 else end endmodule out<=out+1; //计数
Nand_2实体说明

结构体
BEGIN y <= NOT (a AND b);
END rtl;
1. 库说明
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
语法: library 库名
use 库名.程序包名.项目名:
库是用VHDL语言编写的源程序及其通过编译 的数据集合,它由各种程序包组成,程序包提供了 各种数据类型、函数的定义以及各种类型转换函数 及运算等,以供给设计者使用。
库序项库是用vhdl语言编写的源程序及其通过编译的数据集合它由各种程序包组成程序包提供了各种数据类型函数的定义以及各种类型转换函数及运算等以供给设计者使用
第三章 硬件描述语言HDL Hardware Description Language

第3部分VHDL基本知识-精品

第3部分VHDL基本知识-精品
17
数字逻辑
3.2 VHDL程序的基本结构
3.2.1 实体说明 实体说明部分的一般结构: ENTITY 实体名 IS [GENERIC (类属表);] [PORT (端口表);] END [ENTITY] 实体名;
18
数字逻辑
3.2 VHDL程序的基本结构
1. 实体名 实体说明部分以“ENTITY 实体名 IS”开始,以 “END [ENTITY] 实体名”结束。其中实体名由 设计者自定义,一般根据所设计实体的功能来取 名,“ENTITY”是VHDL语法规定中的保留关键 字。大多数EDA软件中的编译器和适配器是不区 分VHDL语言大小写的,但为了保持良好的设计 风格和便于阅读,通常将VHDL语言的标识符和 保留关键字以大写表示,设计者自定义符号小写 表示,如实体名、结构体名、变量名等。

端口名2 :通信模式 数据类型;
……
端口名n :通信模式 数据类型;
);
21
数字逻辑
3.2 VHDL程序的基本结构
通信模式说明数据、信号通过端口的流动方向,主要有4种: IN:定义端口为单向只读模式。数据或信号从外部流向实体内部,或
者从该端口读取外部数据。 OUT:定义端口为单向输出模式。数据或信号只能从该端口流出,或
较强的系统级和电路描述能力。 与具体器件无关,可移植性强。 基于库的设计方式,便于复用。 语法规范、易于共享。
6
数字逻辑
3.1 硬件描述语言VHDL介绍
3.1.3 VHDL语言设计开发流程
以CPLD/FPGA为硬件载体,采用VHDL语言的EDA软件进行数字系统设计 的的完整流程包括设计方案制定、设计输入、逻辑综合、布局布线、仿真测 试、编程下载等。其他硬件描述语言的设计过程也是类似。设计流程图如图 3-1所示。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.2 IEEE预定义标准逻辑位与矢量 1. 标准逻辑位STD_LOGIC数据类型
而bit型只有两 种值:‘0‟、 ‘1‟
共有9种取值,其中只有‘1’、‘0’、‘Z’、‘X’ 四种取值有实 际意义。可以精确地模拟一些未知的和具有高阻态的线路情况 。
2. 标准逻辑矢量(STD_LOGIC_VECTOR)数据类型
端口名
bit; bit; bit);
端口模式
数据类型
(2)ENTITY定义区
端口模式(MODE)有以下几种类型: IN ;OUT;INOUT ;BUFFER 端口模式用于定义端口上的数据的流动方向和方式。 端口模式可用下图说明:(黑框代表一个设计或模块)
如计数器 的设计
IN
OUT
BUFFER
INOUT
元件例化语句:对其他设计实体做元件调用说明, 并将此元件的端口与其他的元件、信号或更高层 次实体的界面端口进行连接。
例1 多路选择器VHDL描述
2选1多路选择器的VHDL描述
【例1】
数据类型“位”,只 能取二进制数0或1
ENTITY mux21a IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT ) ; END ENTITY mux21a ;
实体
没有分号;
图1 mux21a实体
ARCHITECTURE one OF mux21a IS BEGIN 结构体 y <= a WHEN s = '0' ELSE 图2 mux21a结构体 b ; END ARCHITECTURE one ;
关于例子的几点说明:
Bit取值范围是逻辑位‘0’和‘1’。必须用 单引号,否则VHDL综合器把0和1错误的 认为是整数数据类型integer。 VHDL要求赋值符“<=”两边的信号的数 据类型必须一致。 VHDL使用IEEE库中的use ieee.std_logic_unsigned.all程序包允许 不同数据类型之间进行操作。进行了所谓 的运算符重载。
四、 数据类型(书 4.2.3)
4.1 VHDL的预定义数据类型 1. 布尔(BOOLEAN)数据类型 2. 位(BIT)数据类型 3. 位矢量(BIT_VECTOR)数据类型
4. 字符(CHARACTER)数据类型
5. 整数(INTEGER)数据类型 6. 实数(REAL)数据类型
注意:以下数据类型 在VHDL自带的STD 库中定义,所以不需 要用USE函数调用
特别适合于设计的电路有:
复杂组合逻辑电路,如:
• 译码器、编码器、加减法器、多路选择器、地址译码器…...
状态机 等等……..
VHDL的功能和标准
VHDL 描述
输入端口 输出端口 电路的行为和功能
VHDL有过两个标准:
IEEE Std 1076-1987 (called VHDL 1987) IEEE Std 1076-1993 (called VHDL 1993)
数组下标名的取值范围
数组类型定义语句格式如下:属于复合类型 Type 数组名称 is Array(range <>) of 数据类型; 如:TYPE stb is ARRAY (7 downto 0) of STD_LOGIC;
调用IEEE库
【例】 调用STD_LOGIC_UNSIGNED程序包 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; 位矢量 ENTITY amp IS 标准逻辑位 PORT ( a1,a2 : IN BIT_VECTOR (3 DOWNTO 0); c1,c2,c3 : IN STD_LOGIC 整数 标准逻辑矢量 b1,b2,b3 : INTEGER RANGE 0 TO 15; d2,d3,d4 : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ); END amp;
第三讲 VHDL基本结构与语法
李 澎
Email:a2471131@
哈尔滨工业大学电子与信息技术研究院
原理图输入与 HDL文本输入设计的区别:
Graphic is what you draw is what you get
“ tell me what hardware you want and I will give it to you”
二、 结构体 (书4.1.2)
结构体的组成部分是: • 对数据类型、常数、信号、子程序和元件等元素的说明 部分。 • 描述实体逻辑行为的、以各种不同的描述风格表达的功 能描述语句。 • 以元件例化语句为特征的外部元件(设计实体)端口间 的连接。
ARCHITECTURE 结构体名 OF 实体名 非必需的 IS [说明语句] 2.1. 结构体的一般语言格式 必需的 BEGIN [功能描述语句] END ARCHITECTURE 结构体名;
序中必须声明库及程序包说明语句,即LIBRARY IEEE;USE STD_LOGIC_1164.ALL;这两句在程序中必不可少。
4.3 其他预定义标准数据类型 1. 无符号数据类型(UNSIGNED TYPE)
十进制的8可以作如下 表示: UNSIGNED'("1000") 两则无符号数据定义的示例: VARIABLE var : UNSIGNED(0 TO 10) ; SIGNAL sig : UNSIGNED(5 DOWNTO 0) ;
什么是VHDL?
Very high speed integrated circuit Hardware Description Language (VHDL)
是IEEE、工业标准硬件描述语言 用语言的方式而非图形等方式描述硬件电路
容易修改,移植 容易保存 描述能力强,不需知道硬件结构,避开具体器件结构
7. 字符串(STRING)数据类型 8. 时间(TIME)数据类型
BOOLEAN类型的数据取值分别是TRUE(真)和FALSE (假)。在VHDL综合器和仿真器中分别用‘0’和‘1’表达 TRUE和FALSE,布尔数据不是数值不能用于运算,只能用 于逻辑判断或者条件判断。 BIT取值只能是‘1’或‘0’。 BIT_VECTOR是基于BIT数据类型的数组,使用位矢量必须 注明位宽,即数组中的元素个数和排列。如:SIGNAL : BIT_VECTOR(7 downto 0) ; INTEGER整数类型,VHDL综合器要求必须使用range子句 为所定义的数限定范围。如range 15 downto 0,决定此信 号的二进制位数,VHDL综合器无法综合未限定范围的整数 类型的信号或变量。 STRING字符串类型,字符串数组,必须用双引号标明。
调用STD_LOGIC_1164程序包
五、 基本结构 (书 4.3)
5.1 顺序语句 (书 4.3.1)
特点:从仿真的角度来看是每一条语句的执 行按书写顺序进行。
VHDL主要有以下顺序语句:
赋值语句; 流程控制语句; 子程序调用语句; 空操作语句;
2. 有符号数据类型(SIGNED TYPE)
例如:
SIGNED'("0101") 代表 +5,5 SIGNED'("1011") 代表 –5
原码和补码 的关系
SIGNED 的最高位为符号位,其余位为数值位,数值位为 补码形式。如:符号数”1001”表示-7。
4.4 用户自定义的数据类型(书 p103) 枚举类型 枚举类型定义语句格式如下: TYPE 数据类型名 IS (枚举文字,枚举文字…) ; 数组类型
LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.STD_ULOGIC ; USE IEEE.STD_LOGIC_1164.RISING_EDGE ; USE IEEE.STD_LOGIC_1164.All ; 其中STD_LOGIC_1164是最重要和最常用的程序包。 注意:std库符合VHDL标准,故在应用中不必如ieee 库那样以显式表达,即下列语句是不必要的: LIBRARY std; USE std.standard.ALL;
2.2. 结构体说明语句 是对结构体的功能描述语句中将要用到的信号、数据类 型、常数、元件、函数和过程等加以说明。在一个结构体中 说明和定义的数据类型等只能用于本结构体当中。
进程语句
信号赋值语句
2.3. 功能描述语句结构
子程序调用语句
元件例化语句
结构体中包含的4类功能描述语句:
进程语句:定义顺序语句模块。 信号赋值语句:将设计实体内的处理结果向定义 的信号或界面端口进行赋值。 子程序调用语句:用以调用过程或函数,并将获 得的结果赋值于信号。
一 、实 体 (书4.1.1)
1.1 实体语句结构
实体说明单元的一般语句结构: ENTITY 实体名 IS [GENERIC ( 类属表 );] [PORT ( 端口表 );] END ENTITY 实体名; 通过传递参
1.2 GENERIC类属说明语句
数使设计具 有通用性
类属说明的一般书写格式如下: GENERIC([ 常数名 : 数据类型 [ := 设定值 ] { ;常数名 : 数据类型 [ : =设定值 ] } ) ;
例如:result:out std_logic_vector(7 downto 0);
例如:a : in std_logic;
是标准一维数组,每个元素的类型都是STD_LOGIC,使用 std_logic_vector可以表达电路中并列的多通道端口或节点, 或者总线bus。在使用std_logic_vector时,必须注明其数据 宽度。同位宽、同数据类型的矢量间才能进行赋值。 注意:在使用‚STD_LOGIC”和‚STD_LOGIC_VECTOR”时,在程
相关文档
最新文档