【FPGA学习笔记】VHDL语言(二):VHDL的数字表示,数据对象,数据类型

VHDL 的语法规则

一、数字表示

整数:5,34,123_789_456
实数:44.66E-2(44.66*0.01)
以数制基数表示的数2#1111_1110#254表示二进制数,11111110,转换为十进制是254,254可以省略(2#1111_1110#)。

字符、字符串:字符放在单引号中,字符串放在双引号中

数位字符串(位矢量)代表的是二进制,8进制,16进制的数组,长度为等值的二进制数位数

B:二进制,X:十六进制,O:八进制。
eg:B’1_1110_1100 表示二进制数数组,长度是9
X’34表示十六进制数数组,长度是6
O’1AB表示八进制数数组,长度是12
数组:用下标名表示

SIGNAL a : BIT_VECTOR (0 TO 3); --数组
SIGNAL z : BIT ;
z <= a(3);  --数组元素
二、 数据对象

常量,变量,信号
1、常量CONSTANT
常量允许的设计单元有实体,结构体,程序包,块,进程,子程序。常量的使用范围取决于被定义的位置。

CONSTANT constant_name :数据类型 :=表达式;

CONSTANT DATA:T_VECTOR(3 DOWNTO 0) :="1010"
CONSTANT VCC:REAL := 5.0;
CONSTANT DELY :TIME := 25ns;
CONSTANT X:NEW_BIT := 'X';
CONSTANT WIDTH:INTERGER := 8;

2、变量VARIABLE
暂存某些值的存储单元,常用于赋值语句。
变量是一个局部量,只能用于进程和子程序中。
变量赋值会立即发生,没有延时。

VARIABLE variable_name:数据类型 约束条件 :=表达式;

VARIABLE A B :BIT;--定义数据A B为bit类型的变量
VARIABLE C,D :INTEGER :=2;--定义C,D为整形变量,初始值为2
VARIABLE count : INTEGER RANGE 0 TO 255 :=10; --定义count为整形变量,范围为0~255,初值是10 

3、信号SIGNAL
a.信号代表物理设计中的一条硬件连接线,包括输入,输出端口。

b.信号作为一种数值容器,不仅仅可以容纳当前值,还可以保持历史值

c.使用和定义范围是:实体,结构体,程序包。进程和子程序中不允许定义信号。进程只对信号敏感,不对变量敏感。,所以进程只能将信号列入敏感列表。

c.信号不需要赋初值,硬件特性明显,具有全局性

eg:在程序包定义的信号,在调用这个程序包的设计实体全可见。
实体中定义的信号,在其对应的结构体中都可见。

4、CONSTANT,VARIABLE,SIGNAL 三者比较

a. VARIABLE是局部量,只能用于进程和子程序;
SIGNAL是全局量,可以用来进程之间的通信。

b. 变量赋值立即生效;信号赋值存在一定延时。

c. 变量暂存数据,信号用作连线。

d. 信号赋值可以在进程和结构体中。
进程中:顺序赋值过程,赋值操作要视进程是否启。
结构体重:并行执行,各自独立发生。

**e.**信号赋值语句中,其值不会立即带入,在下一条语句执行时,仍使用原来的信号。只到进程结束后,所有的赋值顺序代入。

三、数据类型

1、标准数据类型
integer整数类型
real实数类型
bit位
bit_vector位矢量:每位取0or1
boolean:布尔量,分为TRUE,FALSE
character
string
time
nature自然数
severity level错误等级:NOTE、WARNING、ERROR、FAILUER
2、IEEE库STD_LOGIC_1164程序包中的数据类型

1、STD_LOGIC
有九种取值:‘U’初始值,“X”不定态(常用于系统仿真),‘0’强制0,‘1’强制1,‘Z’高阻态(双向总线),‘W’弱信号不定态,‘L’弱信号0,‘H’弱信号1,‘_’不可能情况
2、STD_LOGIC_VECTOR
一维数组,每个元素都是STD_LOGIC类型的,要严格考虑位宽和数据类型。

3、用户自定义数据类型
1、枚举(ENUMERATED)

TYPE  数据类型名 IS (元素1,元素2...);

TYPE STD_LOGIC IS ('U','X','0','1','Z','W','L','H','_');

2、数组(ARRAY)

TYPE 数据类型名 IS ARRAY(范围) OF 元素类型名;

TYPE count IS ARRAY (STD_LOGIC '-' DOWNTO 'U ') OF INTEGER; 

3、子类型:定义具有一定限制条件的基本类型的数据对象

SYBTYPE 子类型名 IS 数据类型名(约束范围);

SYBTYPE BYTE IS BIT_VECTOR(7 DOWNTO 0);

4、类型转换

VHDL程序中,不同类型的对象不能代入,所以要类型转换。
类型标记法:

VARIABLE x : INTEGER;
VARIABLE y :REAL;

x := INTEGER(y);
y := REAL(x);

函数法

FPGA是Field Programmable Gate Array的缩写,是一种可在现场可编程的电路。它常用于数字电路和系统设计,具有高度可定制性和可重构性的特点。 要使用FPGA采集电脑串口发送来的数据,首先需要将FPGA与电脑串口进行连接。一般来说,电脑串口会使用RS232协议进行通信,所以需要将FPGA与串口之间的电平进行转换。 在FPGA,可以使用VHDL语言进行开发。VHDL是一种硬件描述语言,用于描述数字系统的结构和行为。通过编写VHDL代码,可以定义FPGA的输入、输出以及逻辑功能。 在接收电脑串口发送的数据时,可以使用FPGA的串口通信模块,将数据从串口接收到FPGA。接收数据的模块可以定义一个接收寄存器,并且通过串口模块将接收的数据存储到寄存器。 然后,可以在FPGA使用VHDL代码对接收到的数据进行处理和分析。根据具体的需求,可以进行数据解码、解析、校验等操作,以获取需要的数据信息。 最后,可以使用FPGA的输出引脚,将处理后的数据以某种格式发送出去。可以选择串口通信、以太网通信等方式,将数据发送给其他设备或系统进行进一步处理或显示。 总之,通过将FPGA与电脑串口连接并使用VHDL语言进行编程,可以实现采集电脑串口发送来的数据,并对数据进行处理和发送的功能。这些操作可根据具体需求进行设计和实现。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值