欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

VHDL的数据对象(学习笔记1)

发布时间:2024/10/14 编程问答 21 豆豆
生活随笔 收集整理的这篇文章主要介绍了 VHDL的数据对象(学习笔记1) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

VHDL语言数据对象

VHDL语言学习笔记(一):数据对象
内容:本文主要介绍VHDL语言的三种主要数据对象,即常量(constant)、变量(variable)和信号(signal)。


文章目录

  • VHDL语言数据对象
  • 一、 常量
  • 二、变量
  • 三、信号
  • 总结


一、 常量

在VHDL程序中,一经定义数值就不再发生变化的量就是常量。在硬件物理意义上,其表示为硬件电路中的电源或地线。
常量可以在程序包、实体声明、结构体声明和语句的声明部分中进行声明,常量定义语句所允许的设计单元有实体、结构体、程序包、块、进程和子程序。不同部分声明的常量具有不同的作用范围。

常量声明的语言结构:

CONSTANT 常量名 [, 常量名...] : 数据类型 := 表达式;
  • “CONSTANT”是用来表示常量的保留字,用来声明一个常量;
  • “[]”中的内容表示可选项,即多个相同数据类型的常量可以一起声明;
  • 数据类型是对象所具有的类型;
  • 表达式用来对常量进行赋值,其赋值符号为“:=”。

常量声明示例:

CONSTANT PI : REAL := 3.14; CONSTANT NUM : INTEGER := 6; CONSTANT DELAY : TIME := 7ns;

注意:

  • 常量定以后不允许修改;
  • 使用时要注意常量的作用范围。

二、变量

变量是指在设计实体中值会发生变化的量。变量主要是对临时数据进行局部存储,只能在进程语句、过程语句和函数语句的声明部分中使用。变量的赋值是理想化的数据传输,是立即发生、不存在任何延时的行为。

变量声明结构:

VARIABLE 变量名 [, 变量名...] : 数据类型 [:= 初始值]
  • “VARIABLE”是用来表示变量的保留字,用来声明一个变量;
  • “[:= 初始值]”用来对变量进行初始赋值操作,其中“:=”为赋值符号。

变量声明示例:

VARIABLE vA : INTEGER 0 TO 15 ; --声明了一个取值范围为0~15的整数类型变量 VARIABLE vB, vC : INTEGER :=2 ; --声明了两个初始值为2的整数类型变量 VARIABLE vC : STD_LOGIC := '1' ; --声明了一个初始值为1的标准位逻辑类型变量

变量注意事项:

  • 变量为局部量,仅限于在定义了变量的进程、过程或子程序的顺序语句中使用;
  • 如果变量没有赋予初始值,那么它将取默认值,即指定的数据类型的最左值或最小值。

变量的赋值结构:

目标变量名 := 表达式;
  • 赋值语句右侧的“表达式”与目标变量必须为同一数据类型;
  • 表达式可以为运算表达式,也可以是一个数值;
  • 新变量值的获得是直接的、立即发生的;
  • 目标变量可以是单值变量,也可以是变量集合,如位矢量类型的变量。

变量赋值示例:

VARIABLE vA, vB : REAL ; --定义了实数类型变量 VARIABLE vC, vD : STD_LOGIC_VECTOR (7 DOWNTO 0); --定义了位矢量类型变量vA := 10.0 ; vB := vA + 6 ; vC := "11010101" ; vD (0 TO 6) := vC (1 TO 7) ; --段赋值

三、信号

信号时设计实体之间动态交换数据的一种手段,其物理意义类似于电路内部的连接线。信号可以看做是数值的容器,它不但可以容纳当前值,也可以保持历史值。

信号声明结构:

SIGNAL 信号名 [, 信号名...] : 数据类型 [:= 初始值] ;

信号声明示例:

SIGNAL sA : STD_LOGIC := '1' ; --声明一个初始值为‘1’的标准逻辑信号 SIGNAL sB : BIT ; --声明了一个位信号 SIGNAL sC : STD_LOGIC_VECTOR ( 15 DOWNTO 0 ) ; --声明了一个标准位矢量信号

信号初始值的设置不是必需的,而且初始值仅在VHDL的行为仿真中有效。与变量相比,信号的硬件特性更明显,它具有全局性特性。比如,在程序包中定义的信号,对于所有调用此程序包的设计实体都是可见的;在实体中定义的信号,在其对应的结构体中都可见。
注意,在进程和子程序的顺序语句中不允许定义信号。

信号的赋值结构:

目标信号名 <= 表达式 ;

数据信号的传入可以设置延时,即便延时设置为0,目标信号的数据传入也不是零延时的。因此,符号"<="两边的数值并不一定总是一致的。
在进程中,允许同一个信号有不同驱动源,即同一个目标信号可以被多个表达式赋值,但是只有最后一个赋值语句会被执行。


总结

本文信息源自数据和网络。

与50位技术专家面对面20年技术见证,附赠技术全景图

总结

以上是生活随笔为你收集整理的VHDL的数据对象(学习笔记1)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。