本文章给大家讲解VHDL的数据定义,初学者必看,以及一些实数包不包括0对应的知识点,下面小编给各位解一下吧!
VHDL与其他软件编程语言一样,也对标识符、数据对象和数据类型有严格的定义。准确、熟练地掌握基础数据定义对于初学者来说是非常有必要的。
基本标识符
基本标识符有A~Z、a~z、0~9、下划线“_”。VHDL不区分大小写。标识符必须以字母开头,不能以下划线结尾。不能出现两个或多个连续的下划线。以下是一些有效的基本标识符DRIVE_BUS、addr_bus、decoder_38、RAM18。
数据对象
数据对象也可以被视为数值的载体。数据对象有三种形式常量、变量和信号。
1个常数
常量是设计者为常量名称分配固定值的量。一旦分配,该值就不会改变。一般格式为
常量常量名称数据类型=表达式;使用“=”常量声明进行常量赋值的示例如下
恒定宽度整数=8;--常数名称宽度,数据类型integer整数,赋值8constantVCC:real=33;--常量名称VCC,数据类型real实数,赋值332变量
变量是可以改变其值的量,可以在进程和子例程中指定,并且可以是任何数据类型。变量的赋值立即生效。一般格式为
变量变量名数据类型=初始值或表达式;给变量赋值用“=”表示。变量声明的例子如下
变量temp:std_iogic='0';--变量名temp,数据类型std_iogic标准逻辑位赋值初始值0变量a,b:bit_vector;--变量名a、b,数据类型bit_vector为位向量b='10101010';--位向量赋值a:=;--段赋值a:=b;a:='0';--位分配3信号
信号是电子电路内部硬件连接的抽象。它可以连接结构中单独的并行语句,并且可以通过端口连接到其他模块。该值可以随着时间的推移而改变,与立即生效的变量赋值不同,允许延迟。信号通常在实体、结构体和包中声明,但不能在进程中声明,只能在进程中使用。用“lt;=”表示信号分配,允许出现延迟,与实际组件的传输延迟特性一致。
一般格式为
信号信号名称数据类型=初始值;信号声明示例如下
signala:bit:='0';--信号名称为a,数据类型为bit,初始值为0。当赋值运算符“:=”给信号赋初始值时才会生效立即,毫不拖延。不过,信号一般是使用替换运算符“lt;=”来赋值的,它会在一定的延迟后生效。信号可以被赋予初始值,也可以不被赋予初始值。如果没有指定初始值,则采用默认值,即指定数据类型的最左边的值或最小值。
信号INIT:bit_vector;--定义信号INIT,它是一个位向量信号c:整数范围0到15;--定义信号c,数据类型为整数,整数范围为0到15signaly,x:real;--定义信号y,x,数据类型为实数ylt;=x;--经过延迟后将x值赋给y。特别提醒变量只能在流程语句中描述和使用;信号和常量可用于结构和过程语句中。使用“=”给变量和常量赋值,无延迟;使用“lt;=”给信号赋值,有延迟。
数据类型
1标准数据类型
有10种标准数据类型,参见表32。
表32标准数据类型
特别说明常用的数据类型包括整数、实数、位和位向量。整数可以用十进制、二进制、八进制和十六进制表示。例如,十进制的125,二进制写为2,八进制写为8,十六进制写为16。布尔量用于关系运算。如果agt;b成立,则结果为true。
2用户定义的数据类型
VHDL允许用户自定义数据类型。一般的书写格式是
type数据类型名称是数据类型定义;VHDL中常用的用户定义类型包括枚举类型、整数类型、数组类型、子类型等。
1)枚举类型
列出数据类型中的所有元素既方便又直观,提高了程序的可读性。书写格式为
type数据类型名称是;其中数据类型名称和元素是标识符。例如
类型颜色是;数据类型名称是颜色,是的。枚举类型中列出的元素通常是在程序编译过程中自动编码的。编码顺序是默认的。左边第一个元素编码为0,后续元素加1。编码过程中,每个元素会自动转换为位向量,位向量的长度将由列出的个数决定元素。如上例,有4个元素,位向量长度为2,默认编码值为blue='00';绿色='01';='10';红色='11'。定义信号时可以使用此数据类型,例如
类型颜色为;信号p:颜色;--signalp为颜色数据类型2)整数类型、实数类型
自定义整数类型和实数类型是标准数据类型的整数和实数的子类型。它们是根据特殊需要定制的数据类型,编译过程可以降低逻辑电路的复杂度,提高芯片资源的利用率。书写格式为
type数据类型名称是整数范围整数范围;type数据类型名称为realrange实数范围;例如
类型百分比是整数范围-100到100;百分比是数据类型的名称,其数据类型为整数,范围整数范围为-100~100。
输入电流的实际范围是-15到30;current为数据类型名称,其数据类型为实数,范围实数范围为-15~30。
3)数组类型
数组是由相同类型的数据(即数组元素)聚集在一起形成的一种新数据类型。有两种类型的数组限定数组和非限定数组。书写格式为
type数组类型名是数组元素数据类型的数组范围;type数组类型名称是arrayof数组元素的数据类型;range是一个整数,表示数组的上下界,是一个有限数组,例如
stb类型是位数组;变量addend:stb;--变量加数定义为stb数组stb是数组类型名称。是数组的上限和下限。该数组有8个元素。数组的下标顺序为7,6,5,4,3,2,1,0,每个元素的顺序为stb,stb,stb,stb,stb,stb,stb,stb,每个元素的数据类型元素是位。范围由“range
本文详细解了VHDL的数据定义,初学者必看的这类题和一些实数包不包括0相关的内容,希望对大家有所帮助!
No Comment