vhdl语言的基本知识点罗列.doc
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的编写和仿真流程。
第一部分VHDL语言基础知识
第1部分VHDL语言基础知识第1章概述1.1 电子器件的发展和现状电子技术的发展总是同电子器件的发展密切相关的,由于电子器件的不断更新换代,电子技术得到了飞速发展,当今信息技术被广泛应用在国民经济的方方面面。
多媒体技术的普及、高速宽带网络的建设、数字电视的出现以及与我们日常生活息息相关的各种家用电器,都离不开微处理器、存储器和一些采用行业标准的专用芯片。
这些电子器件的发展经历了从电子管、晶体管、小规模集成电路、中规模集成电路到大规模集成电路和超大规模集成电路几个阶段,其发展趋势是体积越来越小,集成度越来越高。
随着半导体技术的迅速发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担,系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好在自己的实验室里就能设计并制造出适用的ASIC芯片,并且能够得到实际的应用。
使用ASIC完成电子系统的设计,其优点是集成度高、保密性强、可大幅度地减少印刷电路板的面积和接插件、电路性能好并能降低装配和调试费用、更适合较大规模批量生产、降低生产成本。
例如,现在微机中使用的显卡、网卡、数字电视等都是专用的ASIC芯片。
采用ASIC设计的不足之处是一次性的投资大,设计周期一般比较长,不便于以后修改设计,因而近几年在ASIC领域出现了一种半定制电路,即现场可编程逻辑器件FPLD。
目前使用较多的可编程逻辑器是现场可编程门阵列FPGA(field programmable gate array)和复杂可编程逻辑器件CPLD(complex programmable gate array)。
早期使用的可编程器件有PROM、EPROM、E2PROM、PAL、GAL等,这些芯片的容量一般比较小,只能完成简单的数字逻辑功能,这些器件基本上是使用专用的编程器进行装载。
CPLD和FPGA的芯片是在早期使用的PAL和GAL基础上发展起来的,相比早期的可编程器件,现场可编程逻辑器件FPLD的容量大,器件的容量远远大于PAL和GAL,更适合做时序和组合逻辑电路的设计,不但集成度高,而且逐渐向低功耗发展,芯片的使用电压有+5V、+3.3V和+2.5 V几种,有的芯片外部是+5V而内部的工作电压则是+3.3V或+2.5V。
第四讲VHDL语言基础知识
关键词 VHDL 实体 逻辑功能
此两处必须同名
逻辑行为描述
1、实体
格式
ENTITY 实体名 IS [GENERIC ( 类属表 );] [PORT ( 端口表 );] END 实体名;
说明
实体说明所设计的逻辑电路的输入、输 出信号及其特性(输入(in)输出(out)、双向 (inout)、buffer)
•文件(FILES)是传输大量数据的客体,包含一些专门数据 类型的数值。
对象说明的一般格式是: <对象类型> < 标识符表>:<子类型说明> <信号种类>: =<表达式>; 说明 标识符 <子类型说明>是类型名或类型名加限制条件 <信号种类>为BUS或REGISTER,该项为任选项 :=<表达式>为对象赋初值
IS
一个包集合由包集合标题和包集合体两 大部分组成。 包集合体是一个可选项。
5、库
格式
LIBRARY 库名; USE 库名. 程序包名. All;
USE语句的使用有两种常用格式: USE 库名.程序包名.项目名 ; USE 库名.程序包名.ALL ;
VHDL库的种类
• IEEE库:IEEE标准库, 是按IEEE组织制定的 工业标准进行编写的, 是内容丰富的资源库 使用需声明 • •STD_LOGIC_1164 程序包 •STD_LOGIC_ARITH 程序包 •STD_LOGIC_UNSIGNED 程序包
STD库:VHDL标准库,STANDARD和 TEXTIO程序包即收入在STD库中 使用无需声明
VHDL库的种类
• • •
ASIC库:EDA厂商提供库 使用需声明 WORK库:现行作业库,当前工作目录的所有设计 使用无需声明 USER库:用户自定义库 使用需声明
VHDL语言的基本知识点罗列
VHDL语言的基本知识点罗列1 VHDL语言的标识符VHDL中的标识符可以是常数、变量、信号、端口、子程序或参数的名字。
使用标识符要遵守如下法则:a)标识符由字母(A…Z;a…z)、数字和下划线字符组成。
任何标识符必须以英文字母开头。
λ末字符不能为下划线。
λb)不允许出现两个连续下划线。
标识符中不区分大小写字母。
λVHDL定义的保留子或称关键字,不能用作标识符。
λc) VHDL中的注释由两个连续的短线(--)开始,直到行尾。
以下是非法标识符:-Decoder —起始不能为非英文字母3DOP —起始不能为数字Large#number —“#”不能成为标识符的构成符号Data__bus —不能有双下划线Copper_ —最后字符不能为下划线On —关键字不能用作标识符。
注:在AHDL语言中标识符要区分大小写,但在VHDL语言中不区分大小写。
所以写程序时,一定要养成良好的书写习惯,应用关键字时用大写,自己定义的标识符用小写。
标识符表示的几种数据对象的详细说明如下:1) 常数(Constant )常数是一个固定的值,主要是为了使设计实体中的常数更容易阅读和修改。
常数一被赋值就不能在改变。
一般格式:CONSTANT 常数名:数据类型:=表达式;例:CONSTANT Vcc: REAL: =5.0;—设计实体的电源电压指定常数所赋得值应与定义的数据类型一致。
常量的使用范围取决于它被定义的位置。
程序包中定义的常量具有最大的全局化特性,可以用在调用此程序包的所有设计实体中;设计实体中某一结构体中定义的常量只能用于此结构体;结构体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中。
2) 变量(Variable)变量是一个局部变量,它只能在进程语句、函数语句和进程语句结构中使用。
用作局部数据存储。
在仿真过程中。
它不像信号那样,到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。
变量常用在实现某种算法的赋值语句中。
VHDL入门
元件声明
y1 : OUT BIT);
END COMPONENT;
1
COMPONENT or_2
位
PORT( i3, i4 : IN BIT;
全
y2 : OUT BIT); END COMPONENT;
加
COMPONENT xor_2
器
PORT( a, b : IN BIT;
c : OUT BIT);
END adder;
2、结构体
ARCHITECTURE <结构体名> OF <实体名> IS
[结构体说明部分]; BEGIN <并行处理语句>; END结构体名;
•ARCHITECTURE a OF adder IS •BEGIN •s<=a XOR b XOR cin; •co<=((a XOR b) AND cin) OR (a AND b); •END a;
体
说
s ,co : OUT BIT);
明
图二 实体说明的描述
u2
cin
=1
s
u1
u3 tmp
END adder; ARCHITECTURE a OF adder IS BEGIN
a
&2
b
=1 tmp
1 u4
u5
结
&
≥1
co
s<=a XOR b XOR cin;
构 体
图三 1位全加器的逻辑图
co<=((a XOR b) AND cin) OR (a AND b);
中,通过调用库 中的元件或已设 计好的模块来对 当前的设计进行
u5:or_2 PORT MAP (tmp2,tmp3,co); 描述。
VHDL语言的基本知识点罗列
VHDL语言的基本知识点罗列1 VHDL语言的标识符VHDL中的标识符可以是常数、变量、信号、端口、子程序或参数的名字。
使用标识符要遵守如下法则:a)标识符由字母(A…Z;a…z)、数字和下划线字符组成。
任何标识符必须以英文字母开头。
λ末字符不能为下划线。
λb)不允许出现两个连续下划线。
标识符中不区分大小写字母。
λVHDL定义的保留子或称关键字,不能用作标识符。
λc) VHDL中的注释由两个连续的短线(--)开始,直到行尾。
以下是非法标识符:-Decoder —起始不能为非英文字母3DOP —起始不能为数字Large#number —“#”不能成为标识符的构成符号Data__bus —不能有双下划线Copper_ —最后字符不能为下划线On —关键字不能用作标识符。
注:在AHDL语言中标识符要区分大小写,但在VHDL语言中不区分大小写。
所以写程序时,一定要养成良好的书写习惯,应用关键字时用大写,自己定义的标识符用小写。
标识符表示的几种数据对象的详细说明如下:1) 常数(Constant )常数是一个固定的值,主要是为了使设计实体中的常数更容易阅读和修改。
常数一被赋值就不能在改变。
一般格式:CONSTANT 常数名:数据类型:=表达式;例:CONSTANT Vcc: REAL: =5.0;—设计实体的电源电压指定常数所赋得值应与定义的数据类型一致。
常量的使用范围取决于它被定义的位置。
程序包中定义的常量具有最大的全局化特性,可以用在调用此程序包的所有设计实体中;设计实体中某一结构体中定义的常量只能用于此结构体;结构体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中。
2) 变量(Variable)变量是一个局部变量,它只能在进程语句、函数语句和进程语句结构中使用。
用作局部数据存储。
在仿真过程中。
它不像信号那样,到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。
变量常用在实现某种算法的赋值语句中。
三、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 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。
第4章VHDL语言基础
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语言基础
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设计。
VHDL语言
(5)布尔数据类型(BOOLEAN) )布尔数据类型( ) 属于枚举数据类型 取值为‘TRUE’和 FALSE’。 枚举数据类型, 属于枚举数据类型,取值为‘TRUE 和‘FALSE 。 常用来表示关系运算和关系运算结果。 常用来表示关系运算和关系运算结果。 (6)字符数据类型(CHARACTER) )字符数据类型( ) ASCII码的128个字符 书写时用单引号, 码的128个字符, ASCII码的128个字符,书写时用单引号,区分 大小写, 大小写,如‘a’、‘A’等。 、 等 (7)字符串数据类型(STRING) )字符串数据类型( ) 双引号括起来的一串字符 一串字符, abgh”。 双引号括起来的一串字符,如“abgh 。
SIGNAL 信号名 数据类型; 信号名:数据类型; 数据类型
[例1.4.6] 信号定义举例 例
SIGNAL A:INTEGER; ;
2.VHDL数据类型 2.VHDL数据类型 (1)整数数据类型(INTEGER) )整数数据类型( ) 取值范围: 2147483547~ 取值范围:-2147483547~ 2147483546 (2)实数数据类型(REAL) )实数数据类型( ) 取值范围: 1.0E38~ 取值范围:-1.0E38~ 1.0E38 (3)位数据类型(BIT) )位数据类型( ) 属于枚举数据类型 取值为‘ 和 枚举数据类型, 属于枚举数据类型,取值为‘1’和‘0’。 。 (4)位矢量数据类型(BIT_VECTOR) )位矢量数据类型( ) 用双引号括起来的一组位数据 一组位数据, 用双引号括起来的一组位数据,如“10011”, , 通常用来表示数据总线 表示数据总线。 通常用来表示数据总线。
(8)STD_LOGIC数据类型 ) 数据类型 属于枚举数据类型 取值有以下九种: 枚举数据类型, 属于枚举数据类型,取值有以下九种: ‘U’ 初始值 U ‘X’ 不定 ‘1’ ‘0 ’ 0 1 1 ‘Z’ 高阻 Z ‘W’ 弱信号不定 弱信号0 ‘H’ 弱信号1 ‘L’ 弱信号0 H 弱信号1 ‘-’ 不可能情况 (9)STD_LOGIC_VECTOR数据类型 ) 数据类型 用双引号括起来的一组 数据, 用双引号括起来的一组STD_LOGIC数据, 一组 数据 表示数据总线。 如“101011”,通常用来表示数据总线。 ,通常用来表示数据总线 注意:使用STD_LOGIC、 STD_LOGIC_VECTOR 注意:使用 、 数据类型时必须在库、程序包说明区进行说明。 数据类型时必须在库、程序包说明区进行说明。
第3部分VHDL基本知识共152页文档
数字逻辑
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语言的标识符和 保留关键字以大写表示,设计者自定义符号小写 表示,如实体名、结构体名、变量名等。
5
数字逻辑
3.1 硬件描述语言VHDL介绍
2019年,我国国家技术监督局制定的《CAD通用技术规 范》推荐VHDL作为我国电子设计自动化硬件描述语言 国家标准。从此,VHDL语言在我国迅速普及,成为广 大硬件工程师必须掌握的一项技术。
VHDL语言能够成为标准化的硬件描述语言并获得广泛 应用,是因为有其它硬件描述语言不具备的有点:
13
数字逻ary)、 程序包(package)、实体 (entity declaration)、结构 体(architecture body)、配 置(configuration)五部分组 成。设计实体结构结构图如 图3-2所示,其中设计实体 必须有实体和结构体,其它 部分根据设计需要来添加。
端口名2 :通信模式 数据类型;
……
端口名n :通信模式 数据类型;
);
第4章 VHDL语言基础
设计实体
结构体1
结构体2
结构体3
。 。 。
结构体n
FPGA-CPLD原理及应用
结构体的语法
第4章 VHDL语言基础
architecture 结构体名称 of 实体名称 is [说明语句] ;
begin [(功能描述)语句];
end [architecture] 结构体名称;
注:同一实体的结构体不能同名。定义语句中的常 数、信号不能与实体中的端口同名。
equal: out std_logic ); end eqcomp4;
A[3..0] B[3..0]
equal
FPGA-CPLD原理及应用
端口声明
第4章 VHDL语言基础
确定输入、输出端口的数目和类型。
Port (端口名称{,端口名称}:端口模式
… 端口名称{,端口名称}:端口模式 );
数据类型; 数据类型
FPGA-CPLD原理及应用
VHDL组成
第4章 VHDL语言基础
库 包 实体
结构体
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 downto 0);
FPGA-CPLD原理及应用
第4章 VHDL语言基础
计数器等效描述(out与buffer的区别)
FPGA-CPLD原理及应用
3、数据类型
第4章 VHDL语言基础
指端口上流动的数据表达格式,为预先定好的数据类型,如: bit、bit_vector、integer、std_logic、std_logic_vector 等。 例: entity m81 is port (a: in std_logic_vector(7 downto 0); sel: in std_logic_vector(2 downto 0); b:out bit ); end entity m81;
(完整word版)vhdl基本语法
VHDL 基础语法篇——VHDLVHDL硬件描述语言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毕竟是一种描述数字电路的工业标准语言,该种语言的标识符号、数据类型、数据对象以及描述各种电路的语句形式和程序结构等方面具有特殊的规定,如果一开始就介绍它的语法规定,会使初学者感到枯燥无味,不得要领.较好的办法是选取几个具有代表性的VHDL程序实例,先介绍整体的程序结构,再逐步介绍程序中的语法概念。
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。
VHDL语言的基本知识点罗列
其它语句end process;* 敏感表中只能有一个时钟信号* wait on 语句只能放在进程的最前面或者最后面* 时钟的边沿描述描述时钟一定要指明是上升沿还是下降沿上升沿到来的条件:IF clk=’1’ AND clk’LAST_VALUE=’0’ AND clk’EVENT 下降沿到来的条件:IF clk=’0’ AND clk’LAST_VALUE=’1’ AND clk’EVENT 关于时钟信号的总结:IF clock_signal=current_value ANDclock_signal’LAST ANDclock_siganl’EVENT可以简单写为:IF clock_signal=clock_siganl’EVENT AND current_value. 复位信号*同步复位当复位信号有效且在给定的时钟边沿到来时,触发器才被复位. 例1:process (clock)beginif (clock_edge_condition) thenif (reset_condition) thensignal_out<=reset_value;elsesignal_out=signal_in;:其它语句:end if;end if;end process;例2:process(clock)if (clock’event and clock=’1’) thenif reset=’1’ thencount<=’0’;elsecount<=count+1;end if;end if;end process;此例中,敏感表中只有时钟信号,因为只有时钟到来时才能复位.* 异步复位只要复位信号有效,触发器就被复位,所以敏感表中除时钟信号外,还需要复位信号例1:process(reset_signal,clock_signal)beginif (reset_signal) thensignal_out<=reset_value;elsif (clock_event and clock_edge_condition) thensignal_out<=signal_in;:其它语句:end if;end process;例2:process(clock,reset)beginif reset=’1’ thencount<=’0’;elsif clock’event and clock=’1’ thencount<=count+1;end if;end process;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VHDL语言的基本知识点罗列1 VHDL语言的标识符VHDL中的标识符可以是常数、变量、信号、端口、子程序或参数的名字。
使用标识符要遵守如下法则:a)标识符由字母(A…Z;a…z)、数字和下划线字符组成。
任何标识符必须以英文字母开头。
λ末字符不能为下划线。
λb)不允许出现两个连续下划线。
标识符中不区分大小写字母。
λVHDL定义的保留子或称关键字,不能用作标识符。
λc) VHDL中的注释由两个连续的短线(--)开始,直到行尾。
以下是非法标识符:-Decoder —起始不能为非英文字母3DOP —起始不能为数字Large#number —“#”不能成为标识符的构成符号Data__bus —不能有双下划线Copper_ —最后字符不能为下划线On —关键字不能用作标识符。
注:在AHDL语言中标识符要区分大小写,但在VHDL语言中不区分大小写。
所以写程序时,一定要养成良好的书写习惯,应用关键字时用大写,自己定义的标识符用小写。
标识符表示的几种数据对象的详细说明如下:1) 常数(Constant )常数是一个固定的值,主要是为了使设计实体中的常数更容易阅读和修改。
常数一被赋值就不能在改变。
一般格式:CONSTANT 常数名:数据类型:=表达式;例:CONSTANT Vcc: REAL: =5.0;—设计实体的电源电压指定常数所赋得值应与定义的数据类型一致。
常量的使用范围取决于它被定义的位置。
程序包中定义的常量具有最大的全局化特性,可以用在调用此程序包的所有设计实体中;设计实体中某一结构体中定义的常量只能用于此结构体;结构体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中。
2) 变量(Variable)变量是一个局部变量,它只能在进程语句、函数语句和进程语句结构中使用。
用作局部数据存储。
在仿真过程中。
它不像信号那样,到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。
变量常用在实现某种算法的赋值语句中。
一般格式:VARIABLE 变量名数据类型约束条件:=表达式;例:VARIABLE x,y:INTEGER; —定义x,y为整数变量VARIABLE count: INTEGER RANGE0 TO255:=10; —定义计数变量范围变量的适用范围仅限于定义了变量的进程或子程序中。
若将变量用于进程之外,必须该值赋给一个相同的类型的信号,即进程之间传递数据靠的信号。
变量赋值语句的语法格式如下:目标变量:=表达式;变量赋值符号是“:=”。
赋值语句右方的表达式必须是一个与目标变量有相同数据类型的数值。
变量不能用于硬件连线和存储元件。
3) 信号(Signal)信号是描述硬件系统的基本数据对象,它类似于连接线,它除了没有数据流动方向说明以外,其它性质与实体的端口(Port)概念一致。
变量的值可以传递给信号,而信号的值不能传递给变量。
信号通常在构造体、包集合和实体中说明。
信号说明格式为:SIGNAL 信号名:数据类型;信号初始值的设置不是必需的,而且初始值仅在VHDL的行为仿真中有效。
1.变量变量只能在进程、函数和过程中使用,一旦赋值立即生效。
例:VARIABLE x, y: INTEGER;VARIABLE count: INTEGER RANGE 0 TO 255:=10;2.信号信号除了没有方向的概念以外几乎和端口概念一致。
例:SIGNAL sys_clk: BIT:=’0’;SIGNAL ground: BIT:=’0’在程序中,信号值输入信号时采用代入符”<=”,而不是赋值符“:=”,同时信号可以附加延时。
信号传送语句:s1<=s2 AFTER 10ns信号是一个全局量,可以用来进行进程之间的通信3.信号与变量的区别:信号赋值可以有延迟时间,变量赋值无时间延迟;信号除当前值外还有许多相关值,如历史信息等,变量只有当前值;进程对信号敏感,对变量不敏感;信号可以是多个进程的全局信号,但变量只在定义它之后的顺序域可见;信号可以看作硬件的一根连线,但变量无此对应关系。
2 VHDL语言的数据类型VHDL语言提供了许多标准的数据类型,用户也可自定义数据类型,这样使VHDL语言的描述能力和自由度进一步提高。
但VHDL语言的数据类型的定义相当严格,不同类型之间的数据不能直接代入。
而且相同数据类型,但位长不同的也不能直接代入,否则EDA工具在编译综合时会报告类型错。
因此,为了熟练地使用VHDL 语言编写程序,必须很好的理解各种数据意义。
2.1. VHDL标准的数据类型1) 整数(Integer)整数类型的数代表正整数、负整数和零,表示的范围-(231-1)~(231-1),它与算术整数相似,可进行“+”,“-”,“*”,“/”等算术运算,不能用于逻辑运算。
2) 实数(Real)实数类型也类似于数学上的实数,或称浮点数,表示范围为-1.0E38~1.0E38.3) 位(Bit)在数字系统中信号通常采用一个位来表示,取值值能是1获0。
4) 位矢量(Bit_Vector)位矢量是用双引号括起来的一组位数据,使用位矢量必须注明位宽。
例如:SIGNALa:BIT_VEVCTOR(7to0)信号a被定义为一个具有8位位宽的矢量,最左位为a(7),最右位为a(0)。
5) 布尔量(Boolean)一个布尔量具有两个状态:“真”或“假”。
布尔量不属于数值,因此不能用于运算,它只能通过关系运算符获得。
一般这一类型的数据初始值总为FALSE.6) 字符(Character)字符也是一种数据类型,字符类型通常用单引号引起来,如‘A’。
字符类型区分大小写,如‘B’不同于‘b’。
7) 字符串(String)字符串是由双引号括起来的一个字符序列,也称字符矢量或字符串数组。
常用于程序的提示和说明,如“STRING”等。
8) 时间(Time)时间是一个物理数据。
完整的时间类型包括整数和单位两部分;整数与单位之间至少留一个空格,如55 ms,2 ns。
在包集合STANDARD中给除了时间的预定义,其单位为fs,ps,ns,us,ms,sec,min,hr。
在系统仿真时,时间数据很有用,可用它表示信号延时,从而使模型系统能更逼近实际系统的运行环境。
9) 错误等级(Severity Level)在VHDL仿真器中,错误等级用来指示设计系统的工作状态,它有四种:NOTE(注意)、WARNING(警告)、ERROR(出错)、FAILURE(失败)。
在仿真过程中,可输出这四种状态以提示系统当前的工作状态。
10) 自然数(Natural)和正整数(Positive)自然数是整数的一个子类型,非负的整数,即为零和正整数。
而Positive只能为正整数。
2.2. IEEE预定义标准逻辑位与矢量在IEEE库的程序包STD_LOGIC1164中,定义了两个重要的数据类型,即标准逻辑位STD_LOGIC和标准逻辑矢量STD_LOGIC_VECTOR,使得STD_LOGIC数据可以具有如下的9种不同的值:“U”—初始值“0”—0“Z”—高阻“L”—弱信号0“X ”—不定“1”—1“W”—弱信号不定“H”—弱信号1“_”—不可能情况注意在使用该类型数据时,在程序中必须写出库说明语句和使用包集合的说明语句。
3 VHDL语言的运算操作符在VHDL语言中共用4类操作符,可以分别进行逻辑运算(Logic)、关系运算(Relational)、算术运算(Arithmetic)和并置运算(Concatenation)。
被操作符所操作的对象是操作数,且操作数的类型应该和操作符所要求的类型相一致。
需要注意的是,各家EDA综合软件对运算操作符支持程序各不相同,使用时应参考综合工具说明。
1) 逻辑运算符运算符在VHDL语言中逻辑运算符有6种,他们分别为:NOT(非)OR(或)AND(与)NOR(或非)NAND(与非)XOR(异或)2) 关系运算符关系运算符它们分别是:=(等于)/=(不等于)<(小于)<=(小于等于)>(大于)>=(大于等于)3) 算术运算符+(加)/(除)SLL(逻辑左移)ROR(逻辑循环右移)-(减)MOD(求模)SRL(逻辑右移)ABS(取绝对值)*(乘)REM(取余)SLA(算术左移)4) 其他运算符<=(信号赋值):=(信号赋值)-(负)+ (正)& (并置运算符,用于位的连接)=>(并联运算符,在元件例化时可用于形参倒实参的映射)4 VHDL语言的结构VHDL语言主要组成构件有设计实体(Entity)、结构体(Architecture)、子程序(Function Procedure )、集合包(Package)和库(Library),前四种称为可编译的设计单元。
一个VHDL 设计就是有这四种构件的组成,编译之后将它们放在制定的库中共享。
其中,实体用于描述设计的接口界面信号,它规定端口数目,端口方向和端口类型。
它与硬件电路设计中的符号相对应。
而结构体指定设计的真实行为,性能和结构,与硬件电路设计中的原理图相对应。
子程序是可被调用的执行某一特定功能算法的集合。
集合包则是为了使常用的数据类型、常数和子程序对于其他设计块可用而集中充放的一批设计单元和约定。
4.1 设计实体实体的定义语法为:ENTITY 实体名IS[端口说明];END 实体名;端口说明书写格式如下:PORT(端口名{,端口名}:方向数据类型名;………………端口名{,端口名}:方向数据类型名);例如,一个二选一路数据选择器的设计实体可描述如下:ENTITY selection ISPORT(a, b, sel: IN BIT;C : OUT BIT );END selection;4.2 构造体用于描述系统内部的结构和行为。
构造体部分定义了设计单元的具体功能(行为)。
1. 构造体句法如下:ARCHITECTURE 构造体名OF 实体名IS[定义语句]内部信号,常数,数据类型,函数等的定义;BEGIN[并行处理语句];END 构造体名;例如:ARCHITECTURE dataflow OF selection ISBEGINq<=(a AND set) OR (NOT sel AND d1);END dataflow;4.2.1 构造体的子结构描述在规模较大的电路设计中,全部电路都用唯一的一个模块来描述是非常不方便的。
为此,电路设计者总希望将整个电路分成若干个相对比较大的模块来进行电路的描述。
这样,一个构造体可以用几个子结构,既相对比较独立的几个模块来构成。
VHDL语言可以有以下三种形式的子结构描述语句:1) 子程序:VHDL提供两种子程序:函数(FUNCTION)和过程(PROCEDURE)函数函数的定义形式如下:FUNCTION<函数名称><接口表>RETURN<数据类型>IS[定义语句];BEGIN<函数语句部分>;END 函数名称;.下面是一个比较器的例子:FUNCTION max(a, b: INTEGER) RETURN INTEGER IS BEGINIF (a>=b)THEN RETURN a;ELSE RETURN b;END IF;END max;一个函数定义好后,可以在其它地方调用。