vhdl语言基础
- 格式:doc
- 大小:238.50 KB
- 文档页数:15
VHDL语⾔基础VHDL语⾔基础1 数据对象数据对象包括常量、变量、信号和⽂件四种类型1.1 常量常量是对某⼀常量名赋予⼀个固定的值,⽽且只能赋值⼀次。
通常赋值在程序开始前进⾏,该值的数据类型则在声明语句中指明--定义常量语句:--Constant 常数名:数据类型:=表达式Constant Vcc:real:=5.2; --指定Vcc的数据类型是实数,赋值为5.0VConstant bus_width:integer:=8; --定义总线宽度为常数8常量所赋的值应和定义的数据类型⼀致;常量在程序包、实体、构造体或进程的说明性区域必须加以说明。
定义程序包内的常量课提供所包含的任何实体、构造体所引⽤,定义在实体说明内的常量只能在该实体内可见,定义在进程说明内的常量只能在该实体内可见,定义在进程说明区域中的常量只能在该进程内可见1.2 变量变量只能在进程语句、函数语句和过程语句结构中使⽤。
变量的赋值是直接的,⾮预设的。
变量不能表达“连线”或储存原件,不能设置传输延迟量--定义变量语句--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") --位⽮量赋值1.3 信号信号表⽰逻辑门的输⼊或输出,类似于连接线,也可以表达存储元件的状态。
信号通常在构造体、程序包和实体中说明--信号定义语句--Signal 信号名:数据类型:=初始值Signal clock:bit:='0'; --定义时钟信号,初始值为0Signal count:BIT_VECTOR(3 DOWNTO 0); --定义count为4位位⽮量--信号赋值语句⽬标信号名<=表达式;x<=9;Z<=x after 5 ns; --在5ns后将x的值赋给z2 数据类型2.1 VHDL的预定义数据类型类型定义说明布尔(Boolean)TYPE BOOLEAN IS (FALSE,TRUE);取值为FALSE和TRUE,不是数值,不能运算,⼀般⽤于关系运算符位(Bit)TYPE BIT IS ('0','1');取值为0和1,⽤于逻辑运算位⽮量(Bit_Vector)TYPE BIT_VECTOR IS ARRAY(Natural range<>)OF BIT;基于Bit类型的数组,⽤于逻辑运算字符(Character)TYPE CHARACTER IS (NUL,SOH,STX,...,'','!',...);通常⽤''引号引起来,区分⼤⼩写字符串(String)VARIABLE string_var:STRING(1 TO 7);string_var:="A B C D";通常⽤""引起来,区分⼤⼩写整数(Integer)variable a:integer range -63 to 63取值范围 -(231 -1)~(231-1)要求⽤RANGE⼦句为所定义的数限定范围,以便根据范围决定此信号或变量的⼆进制位数实数(Real)-取值范围-1.0E38~+1.0E38,仅可⽤于仿真不可综合时间(Time)-物理量数据,完整的包括整数和单位两个部分,⽤⾄少⼀个空格隔开,仅可⽤于仿真不可综合时间(Time)-开,仅可⽤于仿真不可综合错误等级(SeverityLevel)TYPE severity_level IS (NOTE、WARNING、ERROR、FAILURE);表⽰系统状态,仅可⽤于仿真不可⽤于综合类型定义说明2.2 IEEE预定义标准逻辑位与⽮量标准逻辑类型对数字逻辑电路的逻辑特性描述更加完整、真实,因此在VHDL程序中,对逻辑信号的定义通常采⽤标准逻辑类型标准逻辑位(Std_Logic)符号说明'U'Undefined(未初始化)'X'Forcing Unknown(强未知)'0'Forcing 0(强0)'1'Forcing 1(强1)'Z'High Impedance(⾼阻)'W'Weak Unknown(弱未知)'L'Weak 0(弱0)'H'Weak 1(弱1)'-'Don't Care(忽略)标准逻辑位⽮量(Std_Logic_Vector)基于Std_Logic类型的数组使⽤Std_Logic和Std_Logic_Vector要调⽤IEEE库中的Std_Logic_1164程序包;就综合⽽⾔,能够在数字器件中实现的是“-、0、1、Z”四种状态。
vhdl基础及经典实例开发pdf VHDL是一种硬件描述语言,它用于描述和设计数字电路。
VHDL的全称是Very High Speed Integrated Circuit Hardware Description Language,它源于20世纪80年代的美国国防部,是一种为了描述硬件而设计的开发语言。
VHDL的基础知识包括语法、数据类型和结构体。
语法方面,VHDL 有自己的语法规则和词法规则,要正确地描述一个硬件电路,我们需要熟悉这些规则。
数据类型方面,VHDL内置了基本的数据类型,如bit、bit vector、integer等,这些数据类型可以用来描述电路的输入输出和中间信号。
结构体方面,VHDL支持设计者自定义类型,比如用record来描述一个复杂的数据结构。
在VHDL开发中,经典实例是不可或缺的。
经典实例可以帮助我们更好地理解VHDL的使用方法和特点,也可以让我们更好地掌握VHDL的编程技巧。
下面是一些经典实例的介绍。
1.二进制加法器(Binary Adder):二进制加法器可以实现两个二进制数的加法运算。
它是数字电路中常用的基本模块,很多其他的电路都需要用到它。
通过构建一个二进制加法器的实例,我们可以学习到VHDL的语法规则、数据类型的使用以及模块化设计的思想。
2.时钟分频器(Clock Divider):时钟分频器可以将输入的时钟信号分频为较低频率的信号。
在数字电路中,时钟分频器是非常常见的一个模块,它可以用于控制其他电路的时序。
通过构建一个时钟分频器的实例,我们可以学习到VHDL的状态机设计、时序逻辑的实现以及对时钟信号的处理。
3.多路选择器(Multiplexer):多路选择器可以根据选择信号选择其中的一个输入信号输出。
在数字电路中,多路选择器可以用于实现多个输入的选择和切换。
通过构建一个多路选择器的实例,我们可以学习到VHDL的条件语句的使用、信号赋值的方法以及对多个输入信号的处理。
vhdl 基础语法VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,用于描述数字系统的行为和结构。
以下是VHDL的基础语法:1. 实体(Entity):用于描述模块的接口和端口。
实体的语法如下:```entity entity_name isport (-- 输入端口input_name : in data_type;-- 输出端口output_name : out data_type);end entity_name;```2. 架构(Architecture):用于描述模块的内部行为和逻辑。
架构的语法如下:```architecture architecture_name of entity_name issignal signal_name : data_type;begin-- 逻辑实现end architecture_name;```3. 信号(Signal):用于在模块内部传递数据。
信号的语法如下:```signal signal_name : data_type;```4. 过程(Process):用于描述模块的并发行为。
过程的语法如下:```process (sensitivity_list)begin-- 逻辑实现end process;```5. 语句(Statement):用于描述模块的具体操作。
常见的语句包括:- 赋值语句:```signal_name <= value;```- 选择语句:```case expression iswhen value1 =>-- 逻辑实现1when value2 =>-- 逻辑实现2when others =>-- 默认逻辑实现end case;```- 循环语句:```for i in range loop-- 逻辑实现end loop;```这些是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用于表示单个信号。
数据类型是由标量类型和数组类型组成的。
数组类型可以是一维、二维或更高维的,用于存储多个数据。
第1章VHDL语言基础1.1 概述硬件描述语言(hardware description language,HDL)是电子系统硬件行为描述、结构描述、数据流描述的语言。
目前,利用硬件描述语言可以进行数字电子系统的设计。
随着研究的深入,利用硬件描述语言进行模拟电子系统设计或混合电子系统设计也正在探索中。
国外硬件描述语言种类很多,有的从Pascal发展而来,也有一些从C语言发展而来。
有些HDL成为IEEE标准,但大部分是企业标准。
VHDL来源于美国军方,其他的硬件描述语言则多来源于民间公司。
可谓百家争鸣,百花齐放。
这些不同的语言传播到国内,同样也引起了不同的影响。
在我国比较有影响的有两种硬件描述语言:VHDL语言和Verilog HDL语言。
这两种语言已成为IEEE标准语言。
电子设计自动化(electronic design automation,EDA)技术的理论基础、设计工具、设计器件应是这样的关系:设计师用硬件描述语言HDL描绘出硬件的结构或硬件的行为,再用设计工具将这些描述综合映射成与半导体工艺有关的硬件配置文件,半导体器件FPGA 则是这些硬件配置文件的载体。
当这些FPGA器件加载、配置上不同的文件时,这个器件便具有了相应的功能。
在这一系列的设计、综合、仿真、验证、配置的过程中,现代电子设计理论和现代电子设计方法贯穿于其中。
以HDL语言表达设计意图,以FPGA作为硬件实现载体,以计算机为设计开发工具,以EDA软件为开发环境的现代电子设计方法日趋成熟。
在这里,笔者认为,要振兴我国电子产业,需要各相关专业的人士共同努力。
HDL语言的语法语义学研究与半导体工艺相关联的编译映射关系的研究,深亚微米半导体工艺与EDA设计工具的仿真、验证及方法的研究,这需要半导体专家和操作系统专家共同努力,以便能开发出更加先进的EDA工具软件。
软件、硬件协同开发缩短了电子设计周期,加速了电子产品更新换代的步伐。
毫不夸张地说,EDA工程是电子产业的心脏起搏器,是电子产业飞速发展的原动力。
本书从应用的角度向国内广大读者介绍VHDL编程技术,让大家掌握HDL编程,了解FPGA结构,学会使用EDA工具,为集成电路前端设计打下基础。
1.1.1 硬件描述语言的诞生VHDL语言的英文全名是Very High Speed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言。
HDL发展的技术源头是:在HDL形成发展之前,已有了许多程序设计语言,如汇编、C、Pascal、Fortran、Prolog等。
这些语言运行VHDL程序设计教程·4·在不同硬件平台和不同的操作环境中,它们适合于描述过程和算法,不适合作硬件描述。
CAD的出现,使人们可以利用计算机进行建筑、服装等行业的辅助设计,电子辅助设计也同步发展起来。
在从CAD工具到EDA工具的进化过程中,电子设计工具的人机界面能力越来越高。
在利用EDA工具进行电子设计时,逻辑图、分立电子原件作为整个越来越复杂的电子系统的设计已不适应。
任何一种EDA工具,都需要一种硬件描述语言来作为EDA 工具的工作语言。
这些众多的EDA工具软件开发者,各自推出了自己的HDL语言。
HDL发展的社会根源是:美国国防部电子系统项目有众多的承包公司,由于各公司技术路线不一致,许多产品不兼容,他们使用各自的设计语言,使得甲公司的设计不能被乙公司重复利用,造成了信息交换困难和维护困难。
美国政府为了降低开发费用,避免重复设计,国防部为他们的超高速集成电路提供了一种硬件描述语言,以期望VHDL功能强大、严格、可读性好。
政府要求各公司的合同都用它来描述,以避免产生歧义。
由政府牵头,VHDL工作小组于1981年6月成立,提出了一个满足电子设计各种要求的能够作为工业标准的HDL。
1983年第3季度,由IBM公司、TI公司、Intermetrics公司签约,组成开发小组,工作任务是提出语言版本和开发软件环境。
1986年IEEE标准化组织开始工作,讨论VHDL语言标准,历时一年有余,于1987年12月通过标准审查,并宣布实施,即IEEE STD 1076—1987[LRM87]。
1993年VHDL重新修订,形成了新的标准,即IEEE STD 1076—1993[LRM93]。
从此以后,美国国防部实施新的技术标准,要求电子系统开发商的合同文件一律采用VHDL文档。
即第一个官方VHDL标准得到推广、实施和普及。
1.1.2 HDL语言的种类HDL语言在国外有上百种。
高等学校、科研单位、EDA公司都有自己的HDL语言。
现选择较有影响的作简要介绍。
Candence公司是一家著名的EDA公司,财力雄厚。
该公司的Verilog HDL于1983年由Gate Way Design Automatic公司的Phil Moorby首创。
他在1984—1985年间成功设计了Verilog-XL仿真器,于1986年提出了快速门级仿真的XL算法,使Verilog HDL语言变得更加丰富和完善,从而受到了EDA工具设计公司的青睐。
1989年Candence公司购买了GDA公司,Verilog HDL语言从此变为Candence公司的“私有财产”,成为Candence公司的EDA设计环境上的硬件描述语言。
经过Candence公司的努力,V erilog HDL于1995年成为IEEE标准,也是民间公司第一个硬件描述语言标准,即V erilog HDL 1364—1995。
由于Verilog HDL语言从C语言发展来,所以有C语言基础的设计人员能够较快入门。
ALTERA公司是一家半导体器件公司,其CPLD器件在世界市场上占主导地位。
这家公司不仅是硬件生产厂商,也是EDA工具开发商,它的EDA工具MAX+plus II、Quartus 由于人机界面友好、易于使用、性能优良,而受到FPGA、CPLD器件设计人员的欢迎。
运行在MAX+plus II环境下的VHDL语言具有C语言设计风格,好学好用,因此被众多用户使用。
HDL语言来自不同地方,由不同语言演变而来,为了各平台之间相互转换,又推出了第1章VHDL语言基础·5·EDIF(Electronic Design Interchange Format)。
它不是一种语言,而是用于不同数据格式的EDA工具之间的交换设计数据。
1.1.3 VHDL语言上机操作条件VHDL语言描述能力强,覆盖面广,抽象能力强,所以用VHDL语言作为硬件模型建模很合适。
设计者的原始描述是非常简练的硬件描述,经过EDA工具综合处理,最终生成付诸生产的电路描述或版图参数描述的工艺文件。
整个过程通过EDA工具自动完成,大大减轻了设计人员的工作强度,提高了设计质量,减少了出错机会。
VHDL语言可读性好。
VHDL既能被人容易读懂,又能被计算机识别,作为技术人员编写的源文件,它既是计算机程序、技术文档和技术人员硬件信息交流的文件,又是签约双方的合同文件。
VHDL语言中的设计实体(design entity)、程序包(package)、设计库(library),为设计人员重复利用他人的设计提供了技术手段。
重复利用他人的IP模块和软核(soft core)是VHDL的特色,许多设计不必个个都从头再来,而是只要在更高层次上把IP模块利用起来,就能达到事半功倍的效果。
VHDL语言可以在多种EDA工具设计环境中运行。
硬件平台是工作站或高档微机。
高档微机的配置应该具有:高分彩显17英寸以上,分辨率1024×768或更高硬盘20GB以上内存512MB以上CPU Intel兼容CPU光驱8倍速以上操作系统Windows XX开发工具MAX+plus II 或Quartus IICandence、Menter、ALTERA等公司的EDA工具均支持VHDL语言环境。
关于VHDL 语言的上机实验,在第7章中将作详细介绍。
1.2 VHDL程序的实体VHDL程序包含实体(entity)、结构体(architecture)、配置(configuration)、包集合(package)、库(library)5个部分。
简单的实体是由实体和结构体两部分组成的。
实体用于描述设计系统的外部接口信号,结构体用于描述系统的行为、系统数据的流程或者系统组织结构形式。
设计实体是VHDL 程序的基本单元,是电子系统的抽象。
简单的实体可以是一个与门电路(AND Gate),复杂的实体可以是一个微处理器或一个数字电子系统。
实体由实体说明和结构体说明两部分组成。
例1-1是计数器程序结构模板。
由这个抽象的程序可以归纳出VHDL程序的基本结构。
VHDL 程序设计教程·6·【例1-1】 计数器程序结构模板LIBRARY IEEE;USE ieee.std_logic_1164.all;_data_input_name : IN INTEGER RANGE 0 TO _count_value; SIGNAL_clk_input_name : IN STD_LOGIC;SIGNAL_clm_input_name : IN STD_LOGIC;SIGNAL_ena_input_name : IN STD_LOGIC; SIGNAL_ld_input_name : IN STD_LOGIC;SIGNAL_count_output_name : OUT INTEGER RANGE 0 TO _Count_value;END entity_name;: INTEGER RANGE 0 TO _count_value;敏感变量表_count_signal_name <= 0;ELSEELSE _count_signal_name <= _count_signal_name; END IF; END IF; END IF;END counter;由例1-1可以看出,VHDL 程序由两部分组成:第1部分为实体说明,第2部分为结构体。
VHDL 程序结构更抽象、更基本、更简练的表示如图1.1所示。
设计实体用关键字ENTITY 来标识,结构体由ARCHITECTURE 来标识。
系统设计中的实体提供该设计系统的公共信息,结构体定义了各个模块内的操作特性。
一个设计实体第1章VHDL语言基础·7·必须包含一个结构体或含有多个结构体。
一个电子系统的设计模型如图1.2所示。
结构体间通信图1.1 VHDL程序基础图1.2 VHDL程序设计系统模型1.2.1 实体的组成实体由实体名、类型表、端口表、实体说明部分和实体语句部分组成。