VHDL经典教程(精简快速入门版)
VHDL入门.ppt
Architecture描述模块的实现
• 内部信号定义 • 自定义类型 • begin和end之间是实现模块的语句
基本数据类型
• std_logic • std_logic_vector • 不建议使用bit和bit_vector • std_logic是9值逻辑 • integer,仅在内部使用 • VHDL是强类型语言
Entity
• entity serirq is
• port (
•
nreset: in std_logic;
•
pclk: in std_logic;
•
nirqser: inout std_logic_vector(15 downto 0)
•
);
• end entity serirq;
多路选择器
• 选择赋值语句
• signal y: std_logic;
• signal a: std_logic_vector(3 downto 0);
• signal s: std_logic_vector(1 downto 0);
• with s select
• y <= a(0) when “00”,
Entity定义模块的接口
• in,out,inout,buffer • 顺序无关紧要 • buffer不建议使用
Architecture
• architecture behavior of serirq is • signal counter: std_logic_vector(5 downto 0); • signal int_i: std_logic_vector(15 downto 0); • signal en,nirqser_out: std_logic; • begin • …… • end architecture behavior;
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?
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简明教程
VDHL入门 入门
为了使大家能够迅速从整 体上把握VHDL程序的基本 结构和设计特点,我们先 看几个经典的设计实例, 以达到快速入门的目的。
A、设计一个2选1多路选择器
逻辑功能描述:若s=0 则 y=a;若s=1 则 y=b.
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; 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 ;
Bit,bit_vector ,Boolean, Integer,Real,and Time 注:Type Bit two logic value (‘0’, ‘1’)
3)面向 )面向ASIC的库 的库 4)WORK库(默认库)--工作库 ) 库 默认库) 工作库 5)用户定义库 )
实体
实体定义设计的全部输入输出信号. 格式如下:
Hardware Description Language
张 廷 2011.10.20
Verilog HDL
Verilog HDL: 硬件描述语言,由Verilog公司开发, 1995年成为IEEE标准。 优点:简单、易学易用 缺点:功能不如VHDL强大,仿真工 具少
什么是VHDL? ? 什么是
ENA
C、设计一个全加器
半加器真值表
b
a 0 1
a 0 0 1 1 0 0 0
b 0 1 0 1 1 0 1
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基本语法(简略共34页)精编版
VHDL硬件描述语言1.1 VHDL概述1.1.1 VHDL的特点VHDL语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特点,由于VHDL语言来源于C、Fortran等计算机高级语言,在VHDL语言中保留了部分高级语言的原语句,如if语句、子程序和函数等,便于阅读和应用。
具体特点如下:1. 支持从系统级到门级电路的描述,既支持自底向上(bottom-up)的设计也支持从顶向下(top-down)的设计,同时也支持结构、行为和数据流三种形式的混合描述。
2. VHDL的设计单元的基本组成部分是实体(entity)和结构体(architecture),实体包含设计系统单元的输入和输出端口信息,结构体描述设计单元的组成和行为,便于各模块之间数据传送。
利用单元(componet)、块(block)、过程(procure)和函数(function)等语句,用结构化层次化的描述方法,使复杂电路的设计更加简便。
采用包的概念,便于标准设计文档资料的保存和广泛使用。
3. VHDL语言有常数、信号和变量三种数据对象,每一个数据对象都要指定数据类型,VHDL的数据类型丰富,有数值数据类型和逻辑数据类型,有位型和位向量型。
既支持预定义的数据类型,又支持自定义的数据类型,其定义的数据类型具有明确的物理意义,VHDL是强类型语言。
4. 数字系统有组合电路和时序电路,时序电路又分为同步和异步,电路的动作行为有并行和串行动作,VHDL语言常用语句分为并行语句和顺序语句,完全能够描述复杂的电路结构和行为状态。
1.1.2 VHDL语言的基本结构VHDL语言是数字电路的硬件描述语言,在语句结构上吸取了Fortran和C等计算机高级语言的语句,如IF语句、循环语句、函数和子程序等,只要具备高级语言的编程技能和数字逻辑电路的设计基础,就可以在较短的时间内学会VHDL语言。
但是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描述中的时钟信号的不同描述 方法和相关语法现象。
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 入门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”就是不允许的, 在编译时系统会报错,导致编译失败。实体名中也不允许有中 文字符。
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入门教程
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和其他总线接口、处理器和外设及外设的功能。
EDA技术和VHDL设计第3章 VHDL语言入门
第3章 VHDL语言入门
图3-1 VHDL基本硬件模型
6
第3章 VHDL语言入门
3.2 两个简单的组合电路示例
本节以两个简单的示例引出VHDL语言的基本结构、语 句表述及一些语法规则。
7
第3章 VHDL语言入门 3.2.1 2选1多路选择器的设计 在数字电路中,2选1多路选择器是组合电路的典型代表。 假设有a和b两个数据,控制信号为s,当s取值为0时,选择 数据a作为输出;否则,选择数据b作为输出。按照数字电路 的设计方法,首先需要列出真值表、卡诺图,然后通过化简 卡诺图得到最简逻辑表达式,再根据所选择逻辑器件的要求 (如采用与门、或门实现电路,或只能采用与非门实现电路) 进行表达式的变换,确认最终的电路形式。图3-2是2选1多 路选择器的卡诺图及化简后的逻辑表达式,图3-3是根据逻 辑表达式确定的最终电路形式。
L2 ENTITY mux21 IS
L3
PORT( a, b, s : IN BIT; --输入端口 a、b、s,数据类型为 BIT
L4
y
: OUT BIT); --输出端口 y
L5 END ENTITY mux21;
L6 ----------------------------------------------------结构体描述------------------------------------------------------
18
第3章 VHDL语言入门
mux 21
a
b
y
s
图3-4 mux21元件符号
19
第3章 VHDL语言入门
图 3-5 2选1多路选择器电路的时序波形
20
第3章 VHDL语言入门 3.2.2 半加器的设计 下面再通过一个半加器的例子来说明VHDL的基本结构 形式。半加器指两个1位二进制数相加,只考虑两个加数本 身,而没有考虑由低位来的进位。图3-6显示了半加器的真 值表和逻辑表达式,其中a、b是两个加数,co是进位端,so 是求和端。图3-7是半加器的电路结构。例3-2是半加器的 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基础(精简)教程
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教程
名 • 例子 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(过程)
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)就足够能应付绝大多的应用了。
VHDL语言快速入门必读
一·1。
数据类型BIT与STD_LOGIC有什么区别。
BIT类型的取值只能是0或1,没有不定状态X,也没有高阻态。
STD_LOGIC类型可以有9种不同的值,包括U—初始值,X-不定,0-0,1—1,Z—高阻态,W—弱信号不定,L—弱信号0,H弱信号1。
‘—’不可能情况.2.信号和变量的异同。
信号是全局量,只要在结构体中已经定义,就可以在结构体中的所有地方使用,信号的赋值符号是”〈=”,信号带入时可以附加延时,信号实际带入过程和带入语句的处理时分开进行的。
变量是局部量,只能在进程,子程序内部定义和使用,变量的赋值符号是“:=",变量的赋值是立即执行的,不能附加延时。
3.VHDL语言的基本顺序语句和并行语句有哪些?双性语句:信号带入语句顺序语句:WHAT语句,断言语句,变量赋值语句,IF语句,CASE语句,LOOP语句,NEXT语句,EXIT语句,过程调用语句,NULL语句。
并行语句:进程(PROCESS)语句,条件带入语句,选择信号带入语句,并发过程调用语句,块语句。
4.用VHDL语言进行硬件设计的流程是什么?1。
分析实际的需求2确定芯片的功能3。
用VHDL 语言描述改元件4.编译,如果有错误修改后再编译直至编译通过。
5。
仿真,如果仿真不符合设计要求,修改程序直至仿真通过。
6。
测试7.综合,8.下载到实际的芯片上。
5.基本的硬件描述语言的种类有哪些?美国国防部开发的VHDL。
Verilog公司开发的Verilog-HDL.日本电子工业振兴协会开发的UDL/I语言。
6.VHDL语言中包含的库的种类有哪些?库:是经编译后的数据的集合,它存放包集合定义,实体定义,构造体定义,和配置定义。
库的种类:1.IEEE库,2。
STD库,3。
面向ASIC 的库,4.WORK库,5。
用户定义库7.IEEE库中所包含的基本类型转换函数有1。
包含程序所用的库LIBRARY IEEE;USE IEEE.STD_LOGIC_1164。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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语言的不足之处:设计的最终实现取决于针对目标器件的编程器,工具的不同会导致综合质量不一样。
3.1 VHDL语言基础3.1.1 标识符(Identifiers)标识符用来定义常数、变量、信号、端口、子程序或参数的名字,由字母(A~Z,a~z)、数字(0~9)和下划线(_)字符组成。
要求:l首字符必须是字母l末字符不能为下划线l不允许出现两个连续的下划线l不区分大小写l VHDL定义的保留字(关键字),不能用作标识符l标识符字符最长可以是32个字符。
注释由两个连续的虚线(--)引导。
关键字(保留字):关键字(keyword)是VHDL中具有特别含义的单词,只能做为固定的用途,用户不能用其做为标识符。
例如:ABS,ACCESS,AFTER,ALL,AND,ARCHITECTURE,ARRAY,ATTRIBUTE,BEGIN,BODY,BUFFER,BUS,CASE ,COMPONENT,CONSTANT,DISCONNECT,DOWNTO,ELSE,ELSIF,END,ENTITY,EXIT,FILE,FOR,FUNCTION,GENERIC,GROUP,IF,INPURE,IN,INOUT,IS,LABEL,LIBRARY,LINKAGE,LOOP,MAP,MOD,NAND,NEW,NEXT,NOR ,NOT,NULL,OF,ON,OPEN ,OR ,OTHERS,OUT,PACKAGE,POUT,PROCEDURE ,PROCESS,PURE,RANGE ,RECODE,REM,REPORT,RETURN,ROL,ROR,SELECT,SHARED,SIGNAL,SLA,SLL,SRA,SUBTYPE,THEN,TRANSPORT,TO,TYPE ,UNAFFECTED,UNITS,UNTIL,USE,VARIABLE,WAIT,WHEN,WHILE,WITH,XOR ,XNOR3.1.2 数据对象(Date Objects)数据对象包括常量、变量、信号和文件四种类型。
Ø常量Constant常量是对某一常量名赋予一个固定的值,而且只能赋值一次。
通常赋值在程序开始前进行,该值的数据类型则在说明语句中指明。
Constant 常数名:数据类型:=表达式Constant Vcc:real:=5.0;--定义Vcc的数据类型是实数,赋值为5.0V Constant bus_width:integer :=8;--定义总线宽度为常数8常量所赋的值应和定义的数据类型一致;常量在程序包、实体、构造体或进程的说明性区域内必须加以说明。
定义在程序包内的常量可供所含的任何实体、构造体所引用,定义在实体说明内的常量只能在该实体内可见,定义在进程说明性区域中的常量只能在该进程内可见。
Ø变量Variable变量只能在进程语句、函数语句和过程语句结构中使用。
变量的赋值是直接的,非预设的,分配给变量的值立即成为当前值,变量不能表达“连线”或存储元件,不能设置传输延迟量。
变量定义语句:Variable变量名:数据类型:=初始值;Variable count: integer 0 to 255:=20;--定义count整数变量,变化范围0~255,初始值为20。
变量赋值语句:目标变量名:= 表达式;x:=10.0;--实数变量赋值为10.0Y:=1.5+x;--运算表达式赋值,注意表达式必须与目标变量的数据类型相同A(3 to 6):=(“1101”);--位矢量赋值Ø信号Signal信号表示逻辑门的输入或输出,类似于连接线,也可以表达存储元件的状态。
信号通常在构造体、程序包和实体中说明。
信号定义语句:Signal信号名: 数据类型:=初始值Signal clock:bit :=‘0’;--定义时钟信号类型,初始值为0Signal count:BIT_VECTOR(3 DOWNTO 0);--定义count为4位位矢量信号赋值语句:目标信号名<= 表达式;x<=9;Z<=x after 5 ns; --在5ns后将x的值赋予z3.1.2 数据类型ØVHDL的预定义数据类型在VHDL标准程序包STANDARD中定义好,实际使用过程中,已自动包含进VHDL源文件中,不需要通过USE语句显式调用。
l布尔:(Boolean)TYPE BOOLEAN IS (FALSE, TRUE); --取值为FALSE和TRUE,不是数值,不能运算,一般用于关系运算符l位: (Bit)TYPE BIT IS (‘0’,’1’); --取值为0和1,用于逻辑运算l位矢量: ( Bit_Vector)TYPE BIT_VECTOR IS ARRAY (Natural range<>) OF BIT; --基于Bit类型的数组,用于逻辑运算SIGNAL a:Bit_Vector(0 TO 7);SIGNAL a:Bit_Vector( 7 DOWNTO0)l 整数:(Integer )取值范围-(231-1) ~(231-1),可用32位有符号的二进制数表示variable a :integer range -63 to 63在实际应用中,VHDL 仿真器将Integer 做为有符号数处理,而VHDL 综合器将Integer 做为无符号数处理;要求用RANGE 子句为所定义的数限定范围,以便根据范围来决定表示此信号或变量的二进制数的位数。
l 字符:(Character )TYPE CHARACTER IS (NUL, SOH,STX, …, ‘’, ‘!’,…); --通常用‘’引起来,区分大小写;l 字符串:(String )VARIABLE string_var:STRING (1 TO 7);string_var:=“A B C D ”; --通常用“”引起来,区分大小写;l实数:(Real)取值范围-1.0E38 ~+1.0E38,仅用于仿真不可综合1.0 --十进制浮点数8#43.6#e+4 --八进制浮点数43.6E-4 --十进制浮点数l时间:(Time)物理量数据,完整的包括整数和单位两个部分,用至少一个空格隔开,仅用于仿真不可综合;fs,ps,ns,us,ms,sec,min,hrl错误等级(Severity Level):表示系统状态,仅用于仿真不可综合;TYPE severity_level IS (NOTE、WARNING、ERROR、FAILURE);ØIEEE预定义标准逻辑位与矢量l标准逻辑位(Std_Logic)U:Uninitialized;X:Forcing Unkown;0:Forcing 01:Forcing 1 Z:High Impedance W:Weak UnknownL:Weak 0 H:Weak 1 —:Don’t carel标准逻辑位矢量(Std_Logic_vector)基于Std_Logic类型的数组;使用Std_Logic和Std_Logic_Vector要调用IEEE库中的Std_Logic_1164 程序包;就综合而言,能够在数字器件中实现的是“-、0、1、Z”四种状态。
在条件语句中,必须要全面考虑Std_Logic的所有可能取值情况,否则综合器可能会插入不希望的锁存器。
Ø用户自定义l TYPE 数据类型名IS 数据类型定义OF 基本数据类型或TYPE 数据类型名IS 数据类型定义数组:type value_type is array (127 downto0)of integer;type matrix_type is array (0 to 15, 0 to 31)of std_logic;枚举:type states is (idle,decision,read,write);type boolean is (false,true);type bit is (‘0’,‘1’);l SUBTYPE 子类型名IS 基本数据类型定义RANGE 约束范围subtype digit is integer range 0 to 9;3.1.3 数据类型转换VHDL为强定义类型语言,不同类型的数据不能进行运算和直接赋值。
l类型标记法Variable A: integer; Variable B: real;A= integer (B); B=real (A);l函数法Conv_interger(A);--由std_logic转换为integer型,在std_logic_unsigned包。
l常数转换法Signal a: bit; signal b: std_logic;A<=table(b); --将std_logic型转换为bit型在“STD_LOGIC_1164”、“STD_LOGIC_ARITH”和“STD_LOGIC_UNSIGNED”的程序包中提供的数据类型变换函数。