MyVHDL 基础学习教程

合集下载

VHDL入门教程

VHDL入门教程

VHDL入门教程VHDL(Very High-speed Integrated Circuit HardwareDescription Language)是一种用于设计数字电路的硬件描述语言。

它是IEEE 1076标准中规定的一种语言,广泛应用于数字电路的设计、仿真和综合等领域。

本文将为大家介绍VHDL的基础知识和入门教程。

一、VHDL的基本概念1. 实体(Entity):VHDL代码的最高层次,用于定义模块的输入、输出和内部信号。

2. 架构(Architecture):定义了实体中的各个信号和组合逻辑的行为。

3. 信号(Signal):表示数据在电路中的传输和操作。

4. 进程(Process):定义了组合逻辑的行为,用于描述信号之间的关系。

5. 实体声明(Entity Declaration):用于描述模块的名称、输入、输出和内部信号。

6. 架构声明(Architecture Declaration):用于描述模块的内部逻辑。

二、VHDL的基本语法1.实体声明语法:```entity entity_name isport ( port_list );end entity_name;```其中,entity_name是实体的名称,port_list是实体的输入、输出和内部信号。

2.架构声明语法:```architecture architecture_name of entity_name issignal signal_list;beginprocess (sensitivity_list)begin--逻辑行为描述end process;end architecture_name;```其中,architecture_name是架构的名称,entity_name是实体的名称,signal_list是架构的内部信号,sensitivity_list是触发事件的信号列表。

三、VHDL的基本例子下面以一个简单的4位加法器为例介绍VHDL的编写和仿真流程。

第1章VHDL语言基础

第1章VHDL语言基础
(Bit)、位矢量型(Bit-vector)和整数型(Integer)等。 ➢ 在实用中,端口描述中的数据类型主要有两类:位(BIT)和
位矢量(BIT_VECTOR)。若端口定义为BIT,则其信号值 是一个1位的二进制数,取值只能是0或1;若端口定义为 BIT_VECTOR,则其信号值是一组二进制数。
➢ 在电路中,如果实体代表一个器件符号,则结构体描述了 这个符号的内部行为。当把这个符号例化成一个实际的器 件安装到电路上时,则需用配置语句为这个例化的器件指 定一个结构体(即指定一种实现方案),或由编译器自动选一 个结构体。
1. 结构体的一般语句格式 ARCHITECTURE 结构体名 OF 实体名 IS [说明语句;] BEGIN [功能描述语句;] END [ARCHITECTURE] [结构体名];
1.1 VHDL程序基本结构
一、VHDL程序设计约定 ➢ 语句结构描述中方括号“[ ]”内的内容为可选内容。 ➢ 对于VHDL的编译器和综合器来说,程序文字的大小写是不
加区分的。 ➢ 程序中的注释使用双横线“- -”。 ➢ 源程序命名与实体同名(MAX+plus Ⅱ要求)。
二、VHDL程序设计引例( 74LS00的设计 )
③ 信号赋值语句将设计实体内的处理结果向定义的信号或界面 端口进行赋值。
④ 子程序调用语句用于调用一个已设计好的子程序。
⑤ 元件例化语句对其他的设计实体作元件调用说明,并将此元 件的端口与其他的元件、信号或高层次实体的界面端口进行 连接。
A
A NAND2
Y
Y
B
B
(a)
A1
A NAND2
U1 Y
Y1
B1
B
A2
A NAND2

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入门教程VHDL(Very High-Speed Integrated Circuit HardwareDescription Language)是一种硬件描述语言,用于设计数字电路和系统。

它是由美国国防部在20世纪80年代早期开发的,并由IEEE 1076标准化。

VHDL可以用于描述电路结构、电路行为和模拟。

一、VHDL概述VHDL是一种硬件描述语言,它允许工程师以更高级的语言编写硬件描述。

它可以描述电路结构、电路行为和模拟。

VHDL可以应用于各种电子系统的设计,从简单的数字逻辑门到复杂的处理器。

二、VHDL基本结构VHDL的基本结构包括实体声明、体声明和结构化代码。

实体声明描述了电路的接口,包括输入和输出。

主体声明描述了电路的行为。

结构化代码定义了电路的结构。

三、VHDL数据类型VHDL提供了多种数据类型,包括标量类型(比如整数和实数)、数组类型和记录类型。

每种类型都有其特定的操作和范围。

四、VHDL信号VHDL中的信号用于在电路中传递信息。

信号可以在过程中赋值,并且具有各种延迟属性。

信号还可以连接到模块的输入和输出端口,以实现电路之间的通信。

五、VHDL实体和体VHDL设计包含实体和体。

实体描述了电路的接口和连接,而体描述了电路的行为。

实体和体之间使用端口来传递信息。

六、VHDL组件VHDL中的组件用于将电路模块化,以实现更高层次的设计和复用。

组件可以在实体中声明,并在体中实例化。

七、VHDL并发语句VHDL中的并发语句用于描述电路中多个同时运行的过程。

并发语句包括并行语句、过程、并行块和并行时钟。

八、VHDL测试VHDL测试包括自动测试和手动测试。

自动测试使用测试工具和仿真器来验证电路的正确性。

手动测试包括使用仿真器进行手工测试和调试。

九、VHDL实例以下是一个简单的VHDL实例,实现了一个4位二进制加法器:```vhdllibrary IEEE;use IEEE.STD_LOGIC_1164.all;entity binary_adder isporta : in std_logic_vector(3 downto 0);b : in std_logic_vector(3 downto 0);sum : out std_logic_vector(4 downto 0);carry : out std_logicend binary_adder;architecture behavior of binary_adder isbeginprocess(a, b)variable temp_sum : std_logic_vector(4 downto 0);variable temp_carry : std_logic;begintemp_sum := ("0000" & a) + ("0000" & b);temp_carry := '0' when temp_sum(4) = '0' else '1';sum <= temp_sum;carry <= temp_carry;end process;end behavior;```上述VHDL代码定义了一个名为`binary_adder`的实体,它有两个4位输入`a`和`b`,一个5位输出`sum`和一个单一位输出`carry`。

第4章VHDL语言基础

第4章VHDL语言基础
BEGIN 结构体描述部分;
END 结构体名;
4.1.3 结构体部分
结构体组成

构 体

明 结

体 结 构 体
功 能 描 述
常数说明 数据类型说明
信号说明 例化元件说明 子程序说明
块语句 进程语句 信号赋值语句 子程序调用语句 元件例化语句
结构体描述风格
行为描述 描述该设计单元的功能,主要使用函数、过程和进程语 句,以算法形式描述数据的变换和传送
例4-4
Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Use ieee.std_logic_arith.all;
行为描述
Entity eqcomp4 is Port (a,b: in std_logic_vector (3 downto 0); equals: out std_logic);
4.1.2 实体部分
实体(ENTITY)
实体是一个设计实体的表层设计单元,其功能是 对这个设计实体与外部电路进行接口描述。它规定了 设计单元的输入/输出接口信号或引脚,是设计实体 经封装后对外的一个通信界面。类似于原理图中的一 个部件符号。
4.1.2 实体部分
实体格式
ENTITY 实体名 IS
书写格式: GENERIC([常数名:数据类型[:设定值]
{;常数名:数据类型[:=设定值 ]}); 例4-1
GENERIC (cntwidth : integer:=4);
4.1.2 实体部分
PORT端口
用于定义模块所有的输入/输出信号,相当于定义一个 模块符号

第2章 VHDL语言基础

第2章 VHDL语言基础

End 实体名;
端口名
端口模式
数据类型
(2)ENTITY
端口模式(MODE)有以下几种类型: IN ;OUT;INOUT ;BUFFER 端口模式可用下图说明:(黑框代表一个设计或模块)
IN
OUT
BUFFER
INOUT
二输入与门电路设计范例
Library std; Use std.standard.all;
(4)CONFIGURATION定义区
定义格式: Configuration 配置名 of 实体名 is for 选用的结构体名 end for; end configuration 配置名 ;
二输入与门电路设计范例
a c
b电Leabharlann 真值表abc
0
0
0
1
0
0
0
1
0
1
1
1
二输入与门电路设计范例
Architecture Na of and2 is
‘1’; 符号<=为信号直接赋值符。
End Na;
--结构体Na
Architecture Nb of and2 is
Begin
c <= a and b;
--and 为逻辑与操作
End Nb; --结构体Nb
Library ieee; Use ieee.std_logic_1164.all;
Entity half_adder is Port( x,y : in std_logic;sum,carry : out hlf_adder); End half_adder;
(4)CONFIGURATION定义区
一个完整VHDL电路设计必须有一个实体 和对应的结构体,即实体和结构体对构成一个 完整的VHDL设计。

第3章 VHDL快速入门

第3章 VHDL快速入门

3.1 VHDL体系结构 体系结构
库的格式如下: LIBRARY 〈设计库名〉; USE 〈设计库名〉·〈程序包名〉 · ALL;---打开某库 USE语句的使用有两种常用格式: 1)Use库名·程序包名·项目名; 这种方式使用库中某个程序包中某个具体的项目。 2)Use库名.程序包名.ALL; 使用库中某个程序包中所有的项目
3.1 VHDL体系结构 体系结构
各种端口模式可用图3.3表示。
端口类型:定义端口的数据类型。 常用的有integer、std_logic和 std_logic_vector等。
3.1 VHDL体系结构 体系结构
3.1.4 结构体部分 所有能被仿真的实体都由结构体 (ARCHITECTURE)描述,即结构体描述实 体的结构或行为。—个实体可以有多个结构 体,每个结构体分别代表该实体功能的不同 实现方案。 结构体一般由图3.4所示各子部分构成。
3.2 数据选择器的 数据选择器的VHDL描述 描述
例3.2
2选1多路选择器的仿真波形
3.2 数据选择器的 数据选择器的VHDL描述 描述
3.2.2 2选1数据选择器的 选 数据选择器的 数据选择器的VHDL相关语法分析 相关语法分析 1.实体 实体 实体描述的是电路器件的端口构成和信号属性,它 的最简表达式如下: ENTITY 实体名 IS PORT (端口名:端口模式 数据类型; 端口名: 数据类型; 端口名 … 端口名: 数据类型); 端口名:端口模式 数据类型 ; END ENTITY实体名; 实体名; 实体名
第3章 VHDL快速入门 章 快速入门
【学习目标】 学习目标】 通过本章学习应掌握VHDL体系结构、库 与程序包、实体部分结构、结构体部分结构; 数据选择器的VHDL描述中的相关语法现象; 触发器的VHDL描述中的时钟信号的不同描述 方法和相关语法现象。

2第3章VHDL基础课稿PPT课件

2第3章VHDL基础课稿PPT课件

❖ port(a,b,c:in std_logic;

y:out std_logic);
❖ End nand3_gate1;
❖ Architecture ab of nand3_gate1 is
❖ Begin

y<=not(a and b and c);
❖ End ab;
❖ (程序中的英文不区分大小写)
.
24
实体(三输入与非门程序)
❖ Entity nand3_gate1 is
❖ port(a,b,c:in std_logic;

y:out std_logic);
❖ End nand3_gate1;
实体开始 的关键字
实体名称,也是程 序的存盘名
.
25
实体(三输入与非门程序)
❖ Entity nand3_gate1 is
.
15
2选1数据选择器
❖ 给出2选1数据选择器的VHDL程序 ❖ 加深对程序结构的理解
❖ Library ieee;
❖ Use ieee.std_logic_1164.all;
❖ Entity mux21b is
❖ port(a,b,s:in std_logic;

y:out std_logic);
❖ port(a,b,c: in std_logic;

y:out std_logic);
端口数据类型
❖ End nand3_gate1;
❖ End nand3_gate1;
❖ Architecture ab of nand3_gate1 is
❖ Begin

y<=not(a and b and c);

VHDL语言入门教程学习课程

VHDL语言入门教程学习课程

字符:(Character)
TYPE CHARACTER IS (NUL, SOH,STX, …, ‘ ’, ‘!’,…); --通常用‘’引起
字符串:(String)
来,区分大小写;
VARIABLE string_var: STRING (1 TO 7);
string_var:=“A B C D” ;
在条件语句中,必须要全面考虑Std_Logic的所有可能取值情况,否则综合器可 能会插入不希望的锁存器。
第12页/共112页
第十二页,编辑于星期日:七点 三十三分。
➢ 用户自定义
TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型 或 TYPE 数据类型名 IS 数据类型定义
数组:type value_type is array (127 downto 0) of integer; type matrix_type is array (0 to 15, 0 to 31) of std_logic;
HDL设计的电路,在设计的前期,就可以完成电路的功能级的验证。
HDL设计的电路类似于计算机编程。
常用的HDL语言:VHDL 、Verilog HDL
第1页/共112页
第一页,编辑于星期日:七点 三十三分。
VHDL 概述:
VHDL VHSIC
VHSIC Hardwarter Description Language Very High speed integrated circuit
➢ 信号Signal 信号表示逻辑门的输入或输出,类似于连接线,也可以表达存储
元件的状态。信号通常在构造体、程序包和实体中说明。
信号定义语句:
Signal 信号名: 数据类型 :=初始值 Signal clock:bit :=‘0’; --定义时钟信号类型,初始值为0 Signal count:BIT_VECTOR(3 DOWNTO 0); --定义count为4位位矢量

VHDL入门教程

VHDL入门教程

VHDL入门教程VHDL学习(本学习以MAXPLUS10为工具软件)第一章、 VHDL程序的组成一个完整的VHDL程序是以下五部分组成的:库(LIBRARY):储存预先已经写好的程序和数据的集合程序包(PACKAGE):声明在设计中将用到的常数、数据类型、元件及子程序实体(ENTITY):声明到其他实体或其他设计的接口,即定义本定义的输入输出端口构造体(ARCHITECTUR):定义实体的实现,电路的具体描述配置(CONFIGURATION):一个实体可以有多个构造体,可以通过配置来为实体选择其中一个构造体1.1库库用于存放预先编译好的程序包(PACKAGE)和数据集合体,可以用USE语句调用库中不同的程序包,以便不同的VHDL设计使用。

库调用的格式:LIRARY 库名USE 库名.所要调用的程序包名.ALL可以这样理解,库在硬盘上的存在形式是一个文件夹,比如库IEEE,就是一个IEEE的文件夹,可以打开MAX PLUSR安装源文件夹,进入VHDL93的文件夹,就可以看到一个IEEE的文件夹,这就是IEEE 库,而里面的文件就是一个个对程序包或是数据的描述文件,可以用文本打开来查看文件的内容。

例如在VHDL程序里面经常可以看到“USEIEEE.STD_LOGIC_1164”,可以这样解释这句话,本序里要用到IEEE 文件夹下程序包STD_LOGIC_1164,而STD_LOGIC_1164是可以在IEEE文件夹的STD1164.vhd文件里面看到的,用文本打开STD1164.vhd,可以看到有一名为“IEEE.STD_LOGIC_1164”PAKAGE定义。

简单的来说,库相当于文件夹,而程序包和数据就相当于文件夹里面的文件的内容(注意:不是相当于文件,因为程序包和数据都是在文件里面定义的,而文件名是和实体名相同的,可以说实体相当于文件)。

到了这里就可以考虑一个问题,“在安装MAX PLUS时有多少个库已经存在的呢”,要得到这个问题的答案,可以打开安装目录下的“VHDL93”文件夹,就可以看到里面有五个文件夹,分别是ATERA、IEEE、LPM、STD、VITAL,也就是说你看到了五个库,分别是ATERA功能库:增强型功能部件,即IP核,包括数字信号处理、通信、PCI和其他总线接口、处理器和外设及外设的功能。

VHDL基础快速入门教程

VHDL基础快速入门教程

16
⑶ 实数数据类型(Real) VHDL的实数数据类型(Real)与数学中的实数浮 点数相似,只是范围限定为:-1.0E38~1.0E38,并 且在书写时一定要有小数。如下程序段所示: ARCHITECTURE a OF Test IS SIGNAL A,B,C : Real ; BEGIN A <= 1.5 ; --带小数点 B <= 5.0 ; C <= 3.0E8; --科学计数 END a;
--(1) --(2) --(3) --(4) --(5) --(6) --(7) --(8) --(9)
因为A中的内容是3(11)2,B中的内容是2(10)2,故: ① E <=Unsigned (A) 后, E=3 (11)2 ; ② F <= B 后, F=2 (10)2 ;
10
BEGIN E <= Unsigned (A); F <= B; H(1 DOWNTO 0) <= E+F; H(3 DOWNTO 2) <= E-F; H(7 DOWNTO 4) <= E*F; G(0) <= E(0) AND F(0); G(1) <= E(1) OR F(1); C <= H; D <= Std_Logic_Vector (G); END a;
19
2.2.2 信号 (Signal) 信号 (Signal) 是VHDL中的一种重要的数据对 象。主要用于描述硬件电路中的一条硬件连接线或 指定电路内部的某一节点(补充的端口)。 其语法格式为: Signal 信号名[,信号名…] : 数据类型 [:=表达式] ; 注意: ⑴ 在VHDL语言程序中,信号赋值的符号与上面不同, 不能用“:=‖运算符,应为 “<=‖运算符。

VHDL入门易懂教程

VHDL入门易懂教程

VHDL入门易懂教程VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述数字系统的行为,结构和时序。

它是一种用于设计和开发数字电路的语言,比如FPGA(Field-Programmable Gate Array)和ASIC (Application-Specific Integrated Circuit)。

本文将提供一个易懂的VHDL入门教程,以帮助初学者快速了解并上手VHDL语言。

一、VHDL概述VHDL最初是为了满足军事和航空航天领域的需求而开发的,目前已经成为了一种广泛使用的硬件描述语言。

它不仅可以用于系统级的设计,还可以用于模块级和门级的设计。

VHDL的设计思想是从高级抽象开始,逐步转化为底层的物理设计,这使得VHDL非常适合大型和复杂的设计项目。

二、VHDL语法1.声明语句在VHDL中,首先需要声明各种信号和变量,以便在后续的代码中使用。

声明语句的语法如下:```signal signal_name : signal_type := initial_value;variable variable_name : variable_type := initial_value;```其中,signal_name和variable_name为信号和变量的名称,signal_type和variable_type分别为信号和变量的类型,initial_value为信号和变量的初始值。

2.过程语句VHDL中的过程类似于程序中的函数,用于执行一系列的操作。

过程语句的语法如下:```process (sensitivity_list)begin-- codeend process;```sensitivity_list是一个由信号组成的列表,当列表中的任意一个信号发生变化时,过程会被触发执行。

过程中的代码为具体的操作。

3.结构语句VHDL中的结构语句用于描述数字系统的结构,也就是各个模块之间的连接关系。

第4讲 VHDL编程基础(1)

第4讲 VHDL编程基础(1)

Y1 Y2 Y3 Y4
Y4
(b)
图4.1 MY74LS00的设计过程示意图
第4 讲
VHDL编程基础(1)
2.VHDL源程序 1) 2输入与非门NAND2的逻辑描述 -- IEEE库及其中程序包的使用说明 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; --实体NAND2的说明 ENTITY NAND2 IS
小写是不加区分的。
(3) 程序中的注释使用双横线“--”。
第4 讲
VHDL编程基础(1)
(4) 为了便于程序的阅读与调试,书写和输入程序 时,使用层次缩进格式,同一层次的对齐,低层次的,
较高层次的缩进两个字符。
(5) 考虑到 MAX+plusII 要求源程序文件的名字与 实体名必须一致,因此为了使同一个 VHDL 源程序文
义了引脚的端口信号属性和数据类型。
(5) 在结构体ART2中,COMPONENT→END COMPONENT 语句结构对所要调用的NAND2元件作
了声明。
第4 讲
VHDL编程基础(1)
(6) 实体MY74LS00引导的逻辑描述也是由三个主 要部分构成的,即库、程序包使用说明,实体说明和
结构体。
第4 讲
END ARCHITECTURE ART2;

第4 讲
VHDL编程基础(1)
3.说明与分析 (1) 整个设计包括两个设计实体,分别为NAND2和
MY74LS00,其中,实体MY74LS00为顶层实体。
(2) 实体NAND2定义了2输入与非门NAND2的引脚 信号A、B(输入)和Y(输出),其对应的结构体ART1描
2.类属(GENERIC)说明语句 类属(GENERIC)参量是一种端口界面常数,常以一

VHDL基础(精简)教程

VHDL基础(精简)教程

3.3 全加器的VHDL描述
3.3.1 半加器描述
ain bin cin
hu _1 add derh_add ae orr2 c ca oua t in
A co
A cof b
bin
B so e B so
u3sum cin
u2
f_ad cd oe u sum
图3-9 全加器f_adder电路图及其实体模块
STD_LOGIC数据类型定义:
TYPE STD_LOGIC IS ('U','X','0','1','Z','W','L','H','-'); --有9种取值
Copyright © CUGB 05.08.2021
3.2 时序电路描述
2. 设计库和标准程序包
LIBRARY WORK ; LIBRARY STD ; USE STD.STANDARD.ALL ;
5. 不完整条件语句与时序电路
跳至3.3
Copyright © CUGB 05.08.2021
3.2 时序电路描述
【例3-7】
ENTITY COMP_BAD IS PORT( a1,b1 : IN BIT;
q1 : OUT BIT ); END ; ARCHITECTURE one OF COMP_BAD IS BEGIN
图3-6 例3-8的电路图
3.2 时序电路描述
3.2.3 时序电路的不同表述
【例3-9】 ... PROCESS (CLK) BEGIN IF CLK'EVENT AND (CLK='1') AND (CLK'LAST_VALUE='0')

VHDL 第一讲

VHDL 第一讲

贴心建议:初学时,对于简单的程序,先尽自己努力看懂每一句话,从字面上先去理解,通过英文单词的意思,自己先去琢磨该段程序所要实现的功能,然后再去和正确的意思相比对,这样比一开始就去看解释来的记忆深刻,这些是我自己的切身体会。

1.三输入与非门在数字电路设计中,门电路是最基本的电路单元。

在这里我们挑选了比较典型的三输入的与非门,完成我们的第一个设计。

三输入与非门的逻辑表达式:F ABC逻辑符号为:源代码:逐行解释:1:库声明。

告诉编译器,我要使用这个库里的内容。

语法是:LIBRARY 库名;(结束有个分号的,别丢了,这个分号是每条语句的结束标志,每条语句最后都是要有分号的,这是它们的标配)。

2~4:声明所选择的程序包名称,ALL就是打开整个程序包。

一个库里当然有很多的程序包了,给编译器指明一下那个包要用,好缩小它的搜寻范围。

别让它满库的找,怪费俺们的CPU的。

语法:USE 库名.程序包.程序包的组成部分;。

一句话总结:1和2两句其实相当于C中的“#include<>”,使被声明的库和库中的元件对当前设计项目可见。

发散:IEEE库是最重要的资源库,我们经常使用其中的一些信号定义和数据的定义。

列举一下其中比较重要的几个程序包:(1)STD_LOGIC_1164:指定了STD_LOGIC和STD_ULOGIC逻辑系统(2)STD_LOGIC_ARITH:包含SIGNED和UNSIGNED数据类型定义和相应的算术和比较操作还包含了几个数据转换函数,允许数据从一个类型转换为另一个类型。

(3)STD_LOGIC_UNSIGNED:CONV_INTEGER(A)由INTEGER,UNSDGNED,SIGNED转换成STD_LOGIC_VECTOR由UNSIGNED,SIGNED转换成INTEGER(4)STD_LOGIC_SIGNED:包含了STD_LOGIC和STD_LOGIC_VECTOR其中,在一个程序中只要包含(1),(2),(3)就足够能应付绝大多的应用了。

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

a[3..0] b[3..0] Ci
Sum[3..0]
add4
Co
VHDL基本数据类型:
1)逻辑信号:Boolean,Bit,Std_logic 2)数值信号:Integer,unsigned,Real等

2 结构体(ARCHITECTURE )
结构体的一般格式如下:
ARCHITECTURE 结构体名 OF 实体名 IS [结构体说明部分]; BEGIN [并发处理语句]; END 结构体名;
VHDL基本语法
山东理工大学计算机学院
VHDL程序基本结构
例1 一个2输入的与门的逻辑描述 LIBRARY ieee; --库说明语句 USE ieee.std_logic_1164.ALL; --程序包说明语 句 ENTITY and2 IS PORT(a,b : IN STD_LOGIC; y : OUT STD_LOGIC); END and2; ARCHITECTURE and2x OF and2 IS BEGIN y<=a AND b; END and2x;
一个大规模的电原理图通常可以分割成多张子原理图,
以便于设计和存档。同样,在VHDL程序设计中,构造体对
应整个电原理图,而构造体可由多个BLOCK块组成,每一个 BLOCK块则对应一张子原理图。电原理图的分割关系和 VHDL程序中用BLOCK块分割构造体的关系是一一对应的。
ARCHITECTURE a OF CH3_3_1 IS BEGIN Half_Adder : Block -- Half Adder Begin Sum <= A Xor B; Carry <= A and B; End Block Half_Adder; Half_Subtractor: Block -- Half Subtractor Begin DiNot A and B; End Block Half_Subtractor; END a; 电路分成加减模块,便于把复杂任务简单化
该process没有参数(感测信号),所以一直循环等待,直到rst1=1
6、case when
ENTITY CH2_5_1 is PORT( D0,D1 : IN Std_Logic; S : IN Std_Logic_VECTOR(1 Downto 0); OP : OUT Std_Logic ); END CH2_5_1;
7、for loop
三位数的偶校验 ==》真值表 ENTITY CH3_2_1 is PORT( D : IN Z : OUT ); END CH3_2_1; ARCHITECTURE a OF CH3_2_1 IS BEGIN Process(D) Variable Tmp : Std_Logic ; Begin Tmp := '0'; For I In 0 to 2 Loop Tmp := Tmp XOR D(I); End Loop; Z <= D & Tmp ; End Process; END a;
mode
in
mode out
buffer
in
inout
in out
模式及其信号源
类属参数说明的格式为:
GENERIC(端口名{,端口名}:[IN] 子类型 [:=初始值] {;端口名{,端口名}: [IN] 子类型 [:=初始值]} );
例2:加入类属说明的2输入的与门的逻辑描述
ENTITY and2 IS GENERIC (rise,fall:time); PORT(a,b : IN STD_LOGIC; y : OUT STD_LOGIC); END and2; ARCHITECTURE and2x OF and2 IS SIGNAL u: BIT; BEGIN u<=a AND b; y<=u after(rise) when u=’1’ else u after(fall) ; END and2x;
4、条件 if 条件1 then 语句块A elseif 条件2 then 语句块B else 语句块Z end if;
5、wait until
ENTITY CH2_4_1 is PORT( A,RST1 : IN Std_Logic; OP1 : OUT Std_Logic ); END CH2_4_1; ARCHITECTURE a OF CH2_4_1 IS BEGIN Process Begin OP1 <= A; WAIT UNTIL RST1 ='1'; End Process; END a;

VHDL程序基本结构
实体
(Entity)
实体部分描述设计系
统的外部接口信号 (即输入/输出信号) VHDL设计文件的 结构体用于描述 两个基本组成部分 系统的内部电路
结构体
(Architecture)
一个完整的
配置
(Configuration)
VHDL程序
配置用于从库中选取
所需元件安装到设计 单元的实体中
ARCHITECTURE a OF CH2_1_3 IS SIGNAL E,F,G : Unsigned(1 DOWNTO 0); SIGNAL H : Unsigned(7 DOWNTO 0); BEGIN E <= Unsigned (A); --(1) F <= B; --(2) H(1 DOWNTO 0) <= E+F; --(3) H(3 DOWNTO 2) <= E-F; --(4) H(7 DOWNTO 4) <= E*F; --(5) G(0) <= E(0) AND F(0); --(6) G(1) <= E(1) OR F(1); --(7) C <= H; --(8) D <= Std_Logic_Vector (G); --(9) END a;
例1:
Architecture A of ex1 IS BEGIN Process(CP) VARIABLE F1:Boolean:=False; --f1是Boolean类型 begin IF CP'EVENT AND CP='1' THEN PROCESS语句是一种并发 处理语句,在一个构造体 IF(F1=fALSE) THEN REULT<='0'; 中多个PROCESS语句可以 F1=TRUE; 同时并发运行。因此, ELSE PROCESS语句是VHDL中 RESULT='1' 描述硬件系统并发行为的 END IF; 最常用、最基本的语句。 END IF; END Process; END A;
例2: -- ***************************************** LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; --****************************************** ENTITY CH2_1_3 is PORT( A : IN Std_Logic_Vector(1 DOWNTO 0); B : IN Unsigned(1 DOWNTO 0); C : OUT Unsigned(7 DOWNTO 0); D : OUT Std_Logic_Vector(1 DOWNTO 0) ); END CH2_1_3;
3、选择式信号设置语句:With-select
--********************************************* ENTITY CH2_3_3 is PORT( S: IN Std_Logic_Vector(1 Downto 0); Z: OUT Std_Logic ); END CH2_3_3; --********************************************* ARCHITECTURE a OF CH2_3_3 IS BEGIN With S Select Z <= '0' When "00", '1' When "01", '1' When "10", '0' When Others; END a;
包集合
(Package)

(Library)
包集合存放各设计模
块能共享的数据类型、 常数、子程序等
库 用于存放已编译的实体、
结构体、包集合和配置
1 实体(ENTITY)
实体的一般格式为: ENTITY 实体名 IS [类属参数说明]; [端口说明]; END;
a b
and2
y
ENTITY、IS、END是VHDL的关键字(保留字)。 实体中的每一个I/O信号被称为端口,其功能对应于电路 图 符号的一个引脚。端口说明则是对一个实体的一组端口的定义, 即对基本设计实体与外部接口的描述。端口是设计实体和外部 环境动态通信的通道。 类属参数说明是可选部分。如果需要,可使用以“GENERIC”语 句来指定该设计单元的类属参数(如延时、功耗等)。 实体名、端口名等均应为符合VHDL命名规则 的标识符。
结构体说明是指对结构体需要使用的信号、常数、数据类 型和函数进行
定义和说明。 并发处理语句位于BEGIN和END之间,这些语句具体地描述了构造体的 行为。并发处理语句是功能描述的核心部分,也是变化最丰富的部分。并发 处理语句可以使用赋值语句、进程语句、元件例化语句、块语句以及子程序 等。需要注意的是,这些语句都是并发(同时)执行的,与排列顺序无关。
例3: 四位加法器实体说明程序
ENTITY add4 IS PORT(a, b: IN STD_LOGIC_VECTOR(3 downto 0); Ci: IN STD_LOGIC; Sum: OUT STD_LOGIC_VECTOR(3 downto 0); Co: OUT STD_LOGIC); END add4; 由实体说明画出四位加法器add4的电路图如下所示。
相关文档
最新文档