VHDL基本语法总结-FPGA常见问题社区-FPGA CPLD-ChipDebug

VHDL基本语法总结

VHDL和Verilog都是硬件描述语言,在国内,Verilog应用相比较而言更多,因为它更加接近C语言比较容易学,很多人说VHDL难度高,但它的数字逻辑性更高同样的设计或许代码量更多点,却不太容易犯错,目前版本的VerilogHDL 和VHDL 在行为级抽象建模的覆盖面范围方面有所不同。一般认为Verilog 在系统级抽象方面要比 VHDL 略差一些,而在门级开关电路描述方面要强的。现在市面上VHDL的总结教程比较少,这个系列文章就将总结VHDL的入门知识点。

VHDL 语言的英文全名为Very HighSpeed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言。这里不多做更深入的介绍,直接进入正题。

  • VHDL的基本的语法

1、VHDL的标识符

VHDL的标识符可以是常数、变量、信号、端口、子程序或者参数的名字。标识符需要遵守一些法则,这些法则和Verilog区别不大,

1、比如必须为英文字母开头,

2、末字符不能为下划线。

 3、不允许出现两个连续下划线。

 4、标识符中不区分大小写字母

 5、VHDL 定义的保留子或称关键字,不能用作标识符。

 6、VHDL 中的注释由两个连续的短线(–)开始,直到行尾。

2、标识符表示的几种数据对象

(1)、常数Constant

(2)、变量Variable

(3)、信号Signal

  信号和变量的区别:信号赋值可以有延迟,变量只是当前值。信号可以看作是硬件的一根连线。

3、VHDL语言的数据类型

VHDL数据类型的定义非常严格,不同类型的数据类型不能直接带入,相同数据类型不同位长的也不能带入。

整数(Integer)

整数代表正整数、负数和零

实数(Real)

实数类型也类似于数学上的实数,或称浮点数

位(Bit)

在数字系统中通常采用一位来表示,取值只能是0或1

位矢量(Bit_Vector)

位矢量是用双引号括起来的一组位数据,使用位矢量必须

注明位宽。

例如:SIGNAL a:BIT_VEVCTOR(7to0)

布尔量(Boolean)

一个布尔量具有两个状态:“真”或“假”。布尔量不属于数值,因此不能用于运算,它只能通过关系运算符获得。一般这一类型的数据初始值总为FALSE.

字符(Character)

字符也是一种数据类型,字符类型通常用单引号引起来,如‘A’。字符类型区分大小写,如‘B’不同于‘b’。

字符串(String)

字符串是由双引号括起来的一个字符序列,也称字符矢量或字符串数组。常用于程序的提示和说明,如“STRING”等。

时间(Time)

时间是一个物理数据。完整的时间类型包括整数和单位两部分;整数与单位之间至少留一个空格,如55 ms,2 ns。在包集合STANDARD 中给除了时间的预定义,其单位为fs,ps,ns,us,ms,sec,min,hr。

 

自然数(Natural)和正整数(Positive)

自然数是整数的一个子类型,非负的整数,即为零和正整数。而Positive 只能为正整数。

4、IEEE 预定义标准逻辑位与矢量

在IEEE 库的程序包STD_LOGIC1164 中,定义了两个重要的数据类型, 即标准逻辑位STD_LOGIC 和标准逻辑矢量STD_LOGIC_VECTOR,使得STD_LOGIC 数据可以具有如下的9 种不同的值:

“U”—初始值

“0”—0

“Z”—高阻

“L”—弱信号0

“X ”—不定

“1”—1

“W”—弱信号不定

“H”—弱信号1

“_”—不可能情况

注意在使用该类型数据时,在程序中必须写出库说明语句和使用包集合的说明语句。

5、VHDL的语言结构

为了写出创建数字硬件的VHDL的代码,必须构建一个设计实体(design entity)。而这个设计实体包含三个部分,称作库组成(library part)、实体声明(entity declaration)和结构体声明(architecture declaration)

所谓就是一个标准的逻辑库,包含各种定义,用来引用这个标准逻辑库中的定义,函数和过程,包含一个库组成和一个库子句,一般这样写

图片[1]-VHDL基本语法总结-FPGA常见问题社区-FPGA CPLD-ChipDebug

实体声明可以理解为数字电路的接口,或者外部的输入输出。

结构体是指数字电路的功能成份。

详细来讲:可以把实体成是一个数字电路的黑盒子,而它的声明是表达黑盒子的引脚,但内部的具体电路信号则是结构体,声明的也是具体的原理内容。

 

举例:

图片[2]-VHDL基本语法总结-FPGA常见问题社区-FPGA CPLD-ChipDebug

如图(a)就是设计的实体,声明的信号为ABCD以及F,而图(b)中A_B以及C_D则是结构体需要定义的信号。在基础的结构上VHDL和Verilog在这点上有很大的不同。

图片[3]-VHDL基本语法总结-FPGA常见问题社区-FPGA CPLD-ChipDebug

实体

图片[4]-VHDL基本语法总结-FPGA常见问题社区-FPGA CPLD-ChipDebug

结构体

 

 

 

 

 

 

请登录后发表评论

    没有回复内容