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语言基础

位矢量(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
MyVHDL 基础学习教程

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; 电路分成加减模块,便于把复杂任务简单化
VHDL入门易懂教程

VHDL语言特点 四、VHDL语言特点
1、VHDL具有强大的语言结构,系统硬件描述能 力强、设计效率高;具有较高的抽象描述能力。 如:一个可置数的16位计数器的电原理图:
6
用VHDL描述的可置数16位计数器:
7
2、VHDL语言可读性强,易于修改和发现错误。 3、VHDL具有丰富的仿真语句和库函数,可对 VHDL源代码进行早期功能仿真,有利于大 系统的设计与验证。 4、VHDL设计与硬件电路关系不大。 5、VHDL设计不依赖于器件,与工艺无关 。 6、移植性好。 7、VHDL体系符合TOP-DOWN和CE(并行工程)设计 思想。 8、VHDL设计效率高,产品上市时间快,成本低。 9、易于ASIC实现。
3
三、VHDL的作用 VHDL的作用
1、VHDL打破软、硬件的界限 传统的数字系统设计分为: 硬件设计(硬件设计人员) 软件设计(软件设计人员) VHDL是电子系统设计者和 EDA工具之 间的界面。 EDA工具及 HDL的流行,使电子系统向集 成化、大规模和高速度等方向发展。 美国硅谷约有80%的 ASIC和 FPGA/CPLD 已采用 HDL进行设计。
配置(Configuration)
16
实体(说明) 一、实体(说明)
实体(说明): 定义系统的输入输出端口 语法:
ENTITY <entity_name> IS Generic Declarations Port Declarations END <entity_name>; (1076-1987 version) END ENTITY <entity_name> ; ( 1076-1993 version)
80年代初由美国国防部在实施超高速集成电 路(VHSIC)项目时开发的。 1987年由 IEEE 协会批准为 IEEE 工业标准, 称为 IEEE1076-1987。 各EDA公司相继推出支持VHDL的设计环境。 1993年被更新为 93 标准,即IEEE1076-1993。 进一步提高抽象描述层次,扩展系统描述能力。
VHDL入门

第2章VHDL 入门2.1VHDL 程序结构一个完整的VHDL 程序的结构以及各如图2-1所示。
•图2-1VHDL 程序结构并非所有VHDL 程序都具有图2-1的语法结构。
理论上,只有ENTITY 和ARCHITECTURE 是程序所必备的;而在实际应用中,我们常常需要在定义ENITY 之前调用库和库中相应的程序包(只是“调用”,而不是“编写”程序包)。
因此,图2-2所示的这个VHDL 程序结构,是实际应用中最基本、最常见的程序结构,也是本书中大部分例程所用的结构。
•图2-2VHDL 程序基本结构例程2-1为2分频电路的VHDL程序,读者可以通过此程序的说明加深对VHDL程序基本结构的了解。
例程2-12分频电路LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY FreDevider ISPORT(Clock:IN Std_Logic;Clkout:OUT Std_Logic);END;ARCHITECTURE Behavior OF FreDevider IS SIGNAL Clk:Std_Logic;BEGINPROCESS(Clock)BEGINIF rising_edge(Clock)THENClk<=NOT Clk;END IF; END PROCESS; Clkout<=Clk; END;实体声明(Entity Declaration)结构体定义(Architecture Definition)库、程序包调用例程2-1的功能与例程1-1完全相同,只是程序中多了一行注释。
VHDL中的注释以双连字号“--”标识,类似于C语言中的“//”。
注释对程序结果无任何响应,但可以增加程序的可读性和可维护性。
需要注意的是,在MAX+plusII中,编辑汉字很容易出现乱码,不但影响程序的可读性,而且常常会影响整个程序的编译。
因此,建议读者在写程序注释的时候,尽量用英文(本书中所有例程的注释原为英文,考虑到读者的习惯,所以在编入书中时都译成中文)。
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?
Very high speed integrated Hardware Description Language (VHDL)
★是IEEE、工业标准硬件描述语言 ★用语言的方式而非图形等方式描述硬件电路
容易修改 容易保存
★特别适合于设计的电路有:
复杂组合逻辑电路,如:
• 译码器、编码器、加减法器、多路选择器、地址译码器…...
6、结构体表达
例3-5 ARCHITECTURE arch_name OF e_name IS (说明语句 ) BEGIN arch_name 为结构体名 (功能描述语句) END ARCHITECTURE arch_name;
(说明语句)不是必须的。包括在结构体中需要说明和定义的数据对象、数 据类型、元件调用声明等; (功能描述语句)是必须的。可以是并行语句,顺序语句或是它们的混合。
一个结构体中可以包含任意个进程语句,所有的进程语句都是并行语 句。而由任一进程引导的语句结构属于顺序语句。 文件名不分大小写, 12、文件取名和存盘 VHDL文件后缀扩展名:.vhd, 尽量与实体名一致。
多路选择器VHDL描述小结
【例3-2】 … ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGIN d <= a AND (NOT S) ; e <= b AND s ; y <= d OR e ; END ARCHITECTURE one ;
例3-4 ENTITY e_name IS PORT (p_name : port_m data_type; ………. p_namei : port_mi data_type); END ENTITY e_name;
VHDL入门

FPGA系列培训第一讲 FPGA系列培训第一讲
VHDL文件格式 VHDL文件格式
Library和Use Library和 Entity Architecture VHDL87和VHDL93 VHDL87和
Library和 Library和Use
library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; use IEEE.std_logic_signed.all; use work.bc3000.all;
译码器
signal a: std_logic_vector(2 downto 0); signal y: std_logic_vector(7 downto 0);
decoder: process(a) begin if a = "000" then 000" y(0) <= '0' else y(0) <= '1'; end if; if a = "001" then 001" y(1) <= '0'; else y(1) <= '1'; end if; …… end process decoder;
的高4位为a的低4位,低4位位b的低4 的高4位为a的低4位,低4位位b的低4位
优先级
not 优先级高,and,or,xor优先级相同 优先级高,and,or,xor优先级相同 y <= not (a and b); --与非门 --与非门 y <= a and b or c and d; --error --error y <= (( a and b ) or c ) and d; --ok --ok 当and,or,xor混用时,必须使用括号 and,or,xor混用时,必须使用括号
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`。
VHDL学习入门

第一章第一章 VHDL 设计初步第一节 2选1多路选择器的VHDL 描述例1-1是2选1多路选择器的VHDL 完整描述,即可以直接综合出实现相应功能的逻辑电路及其功能器件。
图1-1是此描述对应的逻辑图或者器件图,图中,a 和b 分别是两个数据输入端的端口名,s 为通道选择控制信号输入端的端口名,y 为输出端的端口名。
“mux21a ”是此器件的名称,这类似于“74LS138”、“CD4013”等器件的名称。
电路图图1-2是例1-1综合后获得的电路,因而可以认为是多路选择器“mux21a ”内部电路结构。
由例1-1可见,此电路的VHDL 描述由两大部分组成: 1、由关键词ENTITY 引导,以 END ENTITY mux21a 结尾的语句部分,称为实体。
实体描述电路器件的外部情况及各信号端口的基本性质。
图1-1可以认为是实体的图形表达。
【例1-2】 【例1-4】ENTITY mux21a IS ENTITY mux21a ISPORT ( a, b : IN BIT; PORT ( a, b : IN BIT;s : IN BIT; s : IN BIT;y : OUT BIT ); y : OUT BIT );END ENTITY mux21a; END ENTITY mux21a;ARCHITECTURE one OF mux21a IS ARCHITECTURE one OF mux21a ISSIGNAL d,e : BIT; BEGINBEGIN IF s = '0' THENd <= a AND (NOT S) ; y <= a ; ELSEe <= b AND s ; y <= b ; y <= d OR e ; END IF;END ARCHITECTURE one ; END PROCESS;【例1-3】 END ARCHITECTURE one ;. . .ARCHITECTURE one OF mux21a ISBEGINy<=(a AND(NOT s)) OR (b AND s);END ARCHITECTURE one ;【例1-1】 ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS BEGIN y <= a WHEN s='0' ELSE b ; END ARCHITECTURE one ;图1-1 mux21a 实体 图1-2 mux21a 结构体2、由关键词ARCHITECTURE引导,以END ARCHITECTURE one结尾的语句部分,称为结构体。
VHDL 入门PPT课件

2.类属参数说明 类属参数说明和端口说明是实体定义部分的第一个描述对 象,说明设计实体和其外部环境通信的对象、通信的格式约定 和通信通道的大小。类属参数说明为设计实体与外部环境通信 的静态信息提供通道,用来规定端口的大小、实体中子元件的 数目、实体的定时特性等。类属参数说明必须放在端口说明之 前,一般书写格式如下: GENERIC ([CONSTANT]参数名称:[IN]子类型标识 [:= 静态表达式],…); 其中:[ ]内的内容是可以省略的;参数名称由英文字母和 数字组合而成,其第一个字符必须是英文字母。
第 6 章 VHDL 入门
[例6.2] ENTITY and2 is
PORT( a:IN BIT; b:IN BIT; c:OUT BIT
); END ENTITY and2; 该例中“[实体名]”为“and2”。定义中无类属参数说明, “PORT(…);”为端口说明,定义了实体的输入/输出端口。 实体定义中各部分的意义及要求如下:
); END ENTITY bus_and;
第 6 章 VHDL 入门
实例中的“GENERIC (datawidth:INTEGER:=8);”定义 了一个整数型的类属参数“datawidth”,并给该参数赋初值 “8”。在后续的定义中,字符“datawidth”就代表整数“8”。
3.端口说明 端口是设计实体与外部环境的动态通信通道,是对实体与 外部接口的描述。端口由端口说明(即端口表)描述。端口表中 每个端口定义由端口名、端口模式和数据类型3部分组成。端 口名是该端口的标识符;端口模式说明信号通过该端口的流动 方向;数据类型说明流过该端口的数据的类型。端口表的格式 如下:
第 6 章 VHDL 入门
1.实体名 实体名由英文字母和数字组合而成,实体的名称必须与描 述该实体的.VHD文件的名称相同,它表示设计电路的器件名 称。建议根据设计的电路的功能来命名实体。在定义实体名时, 不能用数字作为第一个字符,例如“74ls00”就是不允许的, 在编译时系统会报错,导致编译失败。实体名中也不允许有中 文字符。
第4讲-VHDL编程基础课件

第4讲 VHDL编程基础(1)
相应地,当我们使用VHDL语言设计一种硬件电路 时,我们至少需要描述三个方面旳信息:① 设计是在 什么规范范围内设计旳,亦即此设计符合某个设计规 范,能得到大家旳认可,这就是库、程序包使用阐明; ② 所设计旳硬件电路与外界旳接口信号,这就是设计 实体旳阐明;③ 所设计旳硬件电路其内部各构成部分 旳逻辑关系以及整个系统旳逻辑功能,这就是该设计 实体相应旳构造体阐明。
1.实体语句构造 实体阐明单元旳常用语句构造如下: ENTITY 实体名 IS [GENERIC(类属表);] [PORT(端口表);] END [ENTITY] [实体名];
第4讲 VHDL编程基础(1)
2.类属(GENERIC)阐明语句 类属(GENERIC)参量是一种端口界面常数,常以一 种阐明旳形式放在实体或块构造体前旳阐明部分。 内部电路构造和规模。 类属阐明旳一般书写格式如下: GENERIC([常数名:数据类型[:设定值] {;常数名:数据类型[:=设定值 ]});
第4讲 VHDL编程基础(1)
(3) 综合过程。任何一种语言源程序,最终都要转 换成门电路级才干被布线器或适配器所接受。
(4) 对综合器旳要求。VHDL描述语言层次较高, 不易控制底层电路,因而对综合器旳性能要求较高; Verilog和ABEL对综合器旳性能要求较低。
(5) 支持旳EDA工具。支持VHDL和Verilog旳EDA 工具诸多,但支持ABEL旳综合器仅仅Dataio一家。
PORT(A,B:IN STD_LOGIC; Y:OUT STD_LOGIC);
END COMPONENT NAND2; --元件连接阐明
第4讲 VHDL编程基础(1)
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); END ARCHITECTURE ART2;
VHDL语言入门教程

VHDL语言入门教程VHDL是一种硬件描述语言,主要用于设计数字电路和系统。
它是由美国国防部门于1980年代初开发的,目的是为了改进电子设计自动化(EDA)工具的开发效率和设计文档的可重复性。
VHDL广泛应用于数字信号处理(DSP)、嵌入式系统、通信系统和各种ASIC(专用集成电路)和FPGA(现场可编程门阵列)的设计。
本教程将介绍VHDL的基础知识,包括语法、数据类型和常见的建模技术。
一、VHDL的语法VHDL的语法由标识符、关键字、运算符和分隔符组成。
其中,标识符用于给变量、信号和实体命名,关键字用于定义语言特定的操作,运算符用于数学和逻辑运算,分隔符用于分隔语句。
VHDL中的代码以一个实体(entity)的声明开始,然后是体(architecture)的声明,最后是信号声明和进程(process)的描述。
以下是一个简单的例子:```vhdlentity AND_gate isportA, B: in std_logic;C: out std_logicend entity AND_gate;architecture Behavior of AND_gate isbeginC <= A and B;end architecture Behavior;```在这个例子中,我们声明了一个名为AND_gate的实体,它有两个输入信号A和B,一个输出信号C。
然后我们定义了一个名为Behavior的体,它描述了AND门的行为:C等于A与B的逻辑与运算结果。
二、VHDL的数据类型VHDL支持许多数据类型,包括标量类型、数据类型、自定义类型和引用类型。
标量类型包括bit、bit_vector、integer、real、std_logic和std_ulogic等。
其中,bit_vector是一组连续的位,std_logic和std_ulogic用于表示单个信号。
数据类型是由标量类型和数组类型组成的。
数组类型可以是一维、二维或更高维的,用于存储多个数据。
vhdl入门

2.2.1 VHDL 预定义数据类型
1.布尔数据类型 值范围true(1)、false (0) 用于逻辑关系 2. 位数据类型 Bit 0 ,1
3. 位矢量数据类型 位矢量基于位的数组
Bit_vector(0 to n); Bit_vector(n downto 0); 关键字 TO 表示数组从左到右升序排列 关键字 downto 表示数组从右到左降序排列 使用downto
+, *,/ **,MOD,REM,ABS +,-,* 可以综合,但不推荐用*,如果用乘法,选 用库函数 / 只有除数是2的N次幂才能综合,不用 如果用的话,选用库函数 其他不能综合。
2.4.2 并置运算符
& 用于多个元素或矢量连接成新的矢量
例
2.4.3 关系运算符
= 、/=、 <、<=、>、>=
2.1.2 结构体
注意:
⑴声明语句用于说明和定义内部信号、常量、 数据类型、子过程、元件等 ⑵内部说明信号不必规定信号方向 ⑶功能描述语句允许信号赋值、块、进程、 子程序调用、生成、元件例示等语句
功能描述语句主要用到 1.进程语句 2. 信号赋值语句 3.元件例化语句
例
2.1.3 库和包的调用
2.3.3 常数
书写格式: constant 常量名 :数据类型 [:= <表达式>]; 作用: 1.保证常数描述的数据在程序中不会因误操作被改变 2.对程序中某些关键数据值命名,可以提高程序的可 读性 3.将出现次数多的关键数值用数值表示,易于修改
例
2.4 VHDL运算符
2.4.1 算术运算符
1.1.1 VHDL特点
1.支持“自顶向下”的设计方法
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语法入门

§1. VHDL语法 入门
1.3 数据对象及类型
枚举: type Bit is (’0’,’1’); type Boolean is (false, true); 物理: type Time is range –2147483647 to +2147483647 units fs; ps=1000 fs; ns=1000 ps; us=1000 ns; ms=1000 us; sec=1000 ms; min=60 sec; hr= 60 min; end units;
§1. VHDL语法 入门
1.1 VHDL程序构件
配置说明
将具体的构造体分配给实体说明 示例
configuration conf1 of xor_gate is for data_flow end for; end conf1;
configuration conf2 of xor_gate is for structure end for; end conf1;
1.3 数据对象及类型
数据对象 数据类型
§1. VHDL语法 入门
1.3 数据对象及类型
数据对象
VHDL语言中用于进行赋值等操作的客体 信号(Signal)
信号赋值: sig <= a + b; 信号说明:
端口信号 port (端口信号名:端口模式 数据类型名 [:=初始 值];…); 内部信号 signal 信号名:数据类型名 [:=初始值]; 例:signal sel: bit := ’0’;
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经典教程(精简快速入门版)

3 VHDL语言VHDL: VHSIC Hardware Description Language.3.1 VHDL语言基础3.2 VHDL基本结构3.3 VHDL语句3.4 状态机在VHDL中的实现3.5 常用电路VHDL程序3.6 VHDL仿真3.7 VHDL综合HDL----Hardware Description Language一种用于描述数字电路的功能或行为的语言。
目的是提为电路设计效率,缩短设计周期,减小设计成本,可在芯片制造前进行有效的仿真和错误检测。
优点:HDL设计的电路能获得非常抽象级的描述。
如基于RTL(Register Transfer Level)描述的IC,可用于不同的工艺。
HDL设计的电路,在设计的前期,就可以完成电路的功能级的验证。
HDL设计的电路类似于计算机编程。
常用的HDL语言:VHDL 、Verilog HDLØVHDL 是美国国防部在20世纪80年代初为实现其高速集成电路硬件VHSIC 计划提出的描述语言;ØIEEE 从1986年开始致力于VHDL 标准化工作,融合了其它ASIC 芯片制造商开发的硬件描述语言的优点,于93年形成了标准版本(IEEE.std_1164)。
Ø1995年,我国国家技术监督局推荐VHDL 做为电子设计自动化硬件描述语言的国家标准。
VHDL 概述:VHDLVHSIC Hardwarter Description Language Very High speed integrated circuit VHSICVHDL优点:Ø覆盖面广,系统硬件描述能力强,是一个多层次的硬件描述语言;ØVHDL语言具有良好的可读性,既可以被计算机接受,也容易被人们所理解;ØVHDL语言可以与工艺无关编程;ØVHDL语言已做为一种IEEE的工业标准,便于使用、交流和推广。
VHDL语言的不足之处:设计的最终实现取决于针对目标器件的编程器,工具的不同会导致综合质量不一样。
vhdl教程

名 • 例子 type week is array (1 to 7) of integer; type deweek is array (1 to 7) of week;
VHDL培训教程
第一讲、VHDL简介及其结构 第二讲、VHDL中的对象、操作符、数据类型 第三讲、VHDL中的控制语句及模块 第四讲、状态机的设计
第一讲、VHDL简介及其结构
• 通过本课的学习您可以了解以下几点 1、VHDL 的基本概念 2、VHDL的基本结构 3、VHDL的设计初步
什么是VHDL
例如:1.0、2.834、3.14、0.0
VHDL 的基本类型
9、natural 自然数 和 positive 正整数 10、senverity level (常和assert语句配合使用)
包含有:note、warning、error、failure
• 以上十种类型是VHDL中的标准类型,在编程 中可以直接使用。使用这十种以外的类型,需 要自行定义或指明所引用的Library(库)和 Package(包)集合
• VHDLVHSIC Hardware Decription Language
其中VHSICVery High Speed Integrated Circuit
电子设计自动化的关键技术之一是要求用形式化 方法来描述硬件系统。VHDL适应了这种要求。
VHDL和Verilog HDL
• Verilog HDL: 另一种硬件描述语言,由Verilog 公司开 发,1995年成为IEEE标准。 优点:简单、易学易用 缺点:功能不如VHDL强大,仿真工具少
procedure(过程)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.1 VHDL基本语法 基本语法
3.1.1 组合逻辑电路的 组合逻辑电路的VHDL描述 描述
【例3-1】 】
ENTITY mux21a IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT ) ; END ENTITY mux21a ;
实体
图3-1 mux21a实体 实体
ARCHITECTURE one OF mux21a IS 要求赋值符“ ” BEGIN 要求赋值符“<=”两边的信号类型 必须一致。 y<=a WHEN s=‘0’ ELSE 必须一致。 b; END ARCHITECTURE one;
条件判断语句WHEN _ELSE通过测定表达式 通过测定表达式s=‘0’ 的比 条件判断语句 通过测定表达式 较结果,确定由哪一端口向y赋值 表达式中的“ ” 赋值。 较结果,确定由哪一端口向 赋值。表达式中的“=”没有 赋值意义,只是一种数据比较符号 数据比较符号。 赋值意义,只是一种数据比较符号。其表式的输出结果的 数据类型是布尔数据类型。 数据类型是布尔数据类型。
3.1.1 多路选择器的 多路选择器的VHDL描述 描述
【例3-2】 例 ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGIN d <= a AND (NOT S) ; e <= b AND s ; y <= d OR e ; END ARCHITECTURE one ; 用布尔方程的表达式来描述电路 布尔方程的表达式来描述电路 逻辑功能。 逻辑功能。
“ tell me how your circuit should behave and the VHDL compiler will give you the hardware that does the job” but the designer can not control how the circuit implement
3.1.1 多路选择器的 多路选择器的VHDL描述 描述
图3-3 mux21a功能时序波形 功能时序波形
3.1.2 相关语句结构和语法说明
例3-4 ENTITY e_name IS PORT (p_name : port_m data_type; ………. p_namei : port_mi data_type); END ENTITY e_name; 1、实体表达 、 实体描述的是电路器件的端口构成和信号属性。 实体描述的是电路器件的端口构成和信号属性。 2、实体名 、
第3章
原理图输入与 VHDL文本输入设计的区别 文本输入设计的区别
★Graphic is what you draw is what you get
“ tell me what hardware you want and I will give it to you”
★ VHDL is what you write is what functional you get
6、结构体表达 、
例3-5 ARCHITECTURE arch_name OF e_name IS (说明语句 ) BEGIN arch_name 为结构体名 功能描述语句) (功能描述语句) END ARCHITECTURE arch_name; (说明语句)不是必须的。包括在结构体中需要说明和定义的数据对象、数 说明语句)不是必须的。包括在结构体中需要说明和定义的数据对象、 据类型、元件调用声明等; 据类型、元件调用声明等; 功能描述语句)是必须的。可以是并行语句,顺序语句或是它们的混合。 (功能描述语句)是必须的。可以是并行语句,顺序语句或是它们的混合。
结构体中描述逻辑功能和电路结 构的语句分为: 构的语句分为 顺序语句和并行语句 中的VHDL功能描述 例3-1、例3-2中的 、 中的 功能描述 语句都是并行语句 并行语句。 语句都是并行语句。
3.1.1 多路选择器的 多路选择器的VHDL描述 描述
是用顺序语句 例3是用顺序语句 是用 IF_THEN_ELSE 表4 ENTITY e_name IS PORT (p_name : port_m data_type; ………. p_namei : port_mi data_type); END ENTITY e_name; 表达端口模式。 4、端口模式 例中的 port_m 表达端口模式。 、 定义端口上数据的流动方向和方式。 定义端口上数据的流动方向和方式。 IN: 1)单向只读模式,仅允许数据从此端口流入实体; : )单向只读模式,仅允许数据从此端口流入实体; OUT : 1)单向输出模式,仅允许数据流从实体内部输出;2)不能用于 )单向输出模式,仅允许数据流从实体内部输出; ) 内部反馈; )不用的不能接地; 内部反馈; 3)不用的不能接地; INOUT: 输入输出双向端口; : 输入输出双向端口; PCI总线的地址 数据复用线,DMA控制器数据总线等; 总线的地址/数据复用线 控制器数据总线等; 总线的地址 数据复用线, 控制器数据总线等 BUFFER: 与 INOUT 类似,区别在于当需要输入数据时,只允许内部回 类似,区别在于当需要输入数据时, : 读输出的信号, 的回读信号不是由外部输入的, 读输出的信号,BUFFER的回读信号不是由外部输入的,是由 的回读信号不是由外部输入的 内部产生,向外输出的信号。 内部产生,向外输出的信号。 的端口模式都定义为IN 的为OUT。 例1中a,b,s的端口模式都定义为 ,y的为 中 , , 的端口模式都定义为 的为 。
注意
各例的实体和结构体分别是 以“END ENTITY xxx ” 和 “ END ARCHITECTURE xx”结尾,符合 版标准。 结尾, 版标准。 结尾 符合93版标准 87版的语法要求中 结尾只要 版的语法要求中,结尾只要 版的语法要求中 “END” 或 “END xx”。 。 绝大多数的综合器兼容两种 语法规则。 语法规则。
复杂组合逻辑电路, 复杂组合逻辑电路,如:
• 译码器、编码器、加减法器、多路选择器、地址译码器…... 译码器、编码器、加减法器、多路选择器、地址译码器
状态机等等 状态机等等…… 等等
VHDL的功能和标准 VHDL的功能和标准
VHDL 描述 ◆输入端口 ◆输出端口 ◆电路的行为和功能 VHDL有过两个标准: 有过两个标准: 有过两个标准 ◆IEEE Std 1076-1987 (called VHDL 1987) ◆IEEE Std 1076-1993 (called VHDL 1993)
ARCHITECTURE one OF mux21a IS BEGIN y <= a WHEN s = '0' ELSE b ; END ARCHITECTURE one ;
结 构 体
图3-2 mux21a结构体 结构体
实体描述电路器件的外部情况及各信号端口的基本性质。 结构体描述电路器件的内部逻辑功能或电路结构。 实体描述电路器件的外部情况及各信号端口的基本性质。 结构体描述电路器件的内部逻辑功能或电路结构。
注
关键词不分大小写! 关键词不分大小写!
是实体名, 例5例6中e_name是实体名,具体取名由设计者自定。 例 中 是实体名 具体取名由设计者自定。 但一般不应用数字或中文定义实体名,也不用元件名作实体名。 但一般不应用数字或中文定义实体名,也不用元件名作实体名。如or2,latch等 , 等 也不能用数字开头的实体名, 也不能用数字开头的实体名,如74LSxx。 。 3、PORT 语句和端口信号名 、 描述电路的端口及其端口信号必须用端口语句 PORT( ..); ( ); 中的a,b,s 和 y 是端口信号名。 是端口信号名。 例5例6中的 p_name , 例1中的 例 中的 中的
例3-4 ENTITY e_name IS PORT (p_name : port_m data_type; ………. p_namei : port_mi data_type); END ENTITY e_name;
data_type是数据类型 是数据类型
5、数据类型BIT 、数据类型
VHDL 中,预先定义好的数据类型有多种: 预先定义好的数据类型有多种: 整数数据类型INTEGER,布尔数据类型 整数数据类型 ,布尔数据类型BOOLEAN, , 标准逻辑位数据类型STD _LOGIC和位数据类型 和位数据类型BIT。 标准逻辑位数据类型 和位数据类型 。 BIT 数据类型的信号规定的取值范围是逻辑位‘0’和‘1’。 数据类型的信号规定的取值范围是逻辑位‘ ’ ’ 必须加单引号‘’ 否则认为是整数数据类型INTEGER。 ‘’, 必须加单引号‘’,否则认为是整数数据类型 。 BIT 数据类型可以参与逻辑运算或算术运算,结果仍是 数据类型可以参与逻辑运算或算术运算,结果仍是BIT类型。 类型。 类型 BIT 数据类型的定义包含在 数据类型的定义包含在VHDL标准程序包 标准程序包STANDARD中, 标准程序包 中 而程序包STANDARD包含于标准库 包含于标准库STD中。 而程序包 包含于标准库 中
9、IF_THEN条件语句 、 条件语句
例3-3 ENTITY mux21a IS PORT (a, b: IN BIT; s: IN BIT; y: OUT BIT); END ENTITY mux21a;
一种顺序语句。 一种顺序语句。 IF 语句的执行顺序类似于软件语言, 语句的执行顺序类似于软件语言, 首先判断如果s为低电平, 首先判断如果 为低电平, 为低电平 则执行y<=a 语句; 则执行 语句; ARCHITECTURE one OF mux21a IS 否则,则执行语句y<=b。 否则,则执行语句 。 BEGIN PROCESS (a, b, s) BEGIN IF s=‘0’ THEN y<=a ; ELSE y<=b; END IF; IF 语句必须以 语句必须以END IF 结束 结束. END PROCESS; END ARCHITECTURE one;