FPGA高级编程语言VHDL学习–数据类型讲解「建议收藏」

FPGA高级编程语言VHDL学习–数据类型讲解「建议收藏」由于具有多方面的优势,比如:覆盖面广、描述能力强、可读性好、生命周期长且与硬件工艺无关、可扩展性强、移植性强等。

欢迎大家来到IT世界,在知识的湖畔探索吧!

VHDL简介

作为FPGA高级编程语言的VHDL,由于具有多方面的优势,比如:覆盖面广、描述能力强、可读性好、生命周期长且与硬件工艺无关、可扩展性强、移植性强等,所以应用比较广泛。

VHDL(VHSIC Hardware Description Language)是指VHSIC硬件描述语言。

VHSIC(Very High Speed Integrated Circuit)是指超速集成电路。

今天主要就VHDL语言中的一些数据类型做一个整理与讲解,有些数据类型可能跟其它编程语言大同小异,很好理解,但是有些数据类型却是VHDL语言特有的,理解起来也是比较困难的,希望通过这篇文章,能把VHDL所涉及到的数据类型都讲清楚。

FPGA高级编程语言VHDL学习--数据类型讲解「建议收藏」

FPGA(现场可编程逻辑阵列)

VHDL中的数据类型

一、VHDL标准包中预定义数据类型

在VHDL的标准程序包(STANDARD)中定义好了,我们在使用过程中,已经被自动包含在VHDL源文件中,不再需要我们通过USE语句像调用其它程包一样显式调用一次。

主要有以下几种:

  • 布尔:(Boolean)
TYPE BOOLEAN IS (FALSE,TRUE); 

欢迎大家来到IT世界,在知识的湖畔探索吧!

布尔类型数据取值只有False和True,不是数值,不能运算,只能用于关系运算符。

  • 位: (Bit)
欢迎大家来到IT世界,在知识的湖畔探索吧!TYPE BIT IS ('0','1');

位的取值只有2个,0和1,主要用于逻辑运算。

  • 位矢量: (Bit_Vector)
TYPE BIT_VECTOR IS ARRAY(Natural range<>) OF BIT;

位矢量是基于位(Bit)类型的数组,可以理解为有很多Bit组成的数组,也主要用于逻辑运算,下面举例说明。

欢迎大家来到IT世界,在知识的湖畔探索吧!Signal x:Bit_Vector(0 to 7);
Signal y:Bit_Vector(7 Downto 0);
  • 字符:(Character)
TYPE CHARACTER IS (NUL,SON,STX,...'','!',..);

字符要用单引号 ” 引起来,并且还区分大小写。

  • 字符串: (String)
Variable string_var:String(1 to 7);
string_var:="A B C D";

字符串是用双引号引起来的,也是区分大小写的。

  • 整数: (Integer)

可以使用32位有符号的二进制数表示,范围为-(2^31-1)~(2^31-1),定义方式例如:

Variable a:integer range -63 to 63;

在实际应用中,VHDL仿真器将Integer作为有符号数处理,但是综合时将其作为无符号数处理。

并且要求使用RANGE为所定义的整数限定范围,以便根据此范围来决定表示该变量或者信号的二进制位数。

  • 实数: (Real)

实数只能用于仿真,不能用于综合,取值范围为-1.0E38~+1.0E38。

  • 时间: (Time)

该数据类型是一个FPGA中特有的数据类型,是一个物理量数据,完整的包括两部分,并且要用至少一个空格进行隔开,并且仅用于仿真不能综合。

单位有:fs,ps,ns,us,ms,sec,min,hr

例子:

constant delay:TIME:=25 ns;
  • 错误等级: (Severity Level)
TYPE Severity_level IS(NOTE、WARNING、ERROR、FAILURE);

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

  • 标准逻辑位(Std_Logic)

主要有九种,俗称九段逻辑。

U: Uninitialized; X: Forcing Unkown;

0: Forcing 0;1: Forcing 1;

Z: High Impedance; W: Weak Unknown

L: Weak 0; H: Weak 1; -: Don’t care

值得注意的是:以上九种数据类型中,能够在器件中综合的只有四种,是”-,0,1,Z”。

  • 标准逻辑位矢量(Std_Logic_Vector)

标准逻辑位矢量是基于Std_Logic类型的数组;

我们在使用Std_LogicStd_Logic_Vector时要调用IEEE库中的Std_Logic_1164程序包。调用方法为:

USE ieee.std_logic_1164.all;

用户自定义数据类型

用户自定义格式如下所示:

Type 数据类型名is数据类型定义of基本数据类型;

数组:

type value_type is array (127 downto 0) of integer;
type matrix_type is array(0 to15,0 to31) of std_logic;

枚举类型:

type states is(idle,decision,read,write);
type boolean is(false,true);
type bit is('0','1');

用户自定义子类型

定义格式为:

Subtype子类型名 is 基本数据类型定义 range 约束范围

例如:

subtype digit is integer range 0 to 9;

总结

VHDL语言中的基本数据类型就讲完了,下面总结一下,标准包中默认的数据类型有9种,使用的时候不需要使用USE来说明,默认会加载的,而IEEE.Logic_1164中定义的主要有2种,并且使用的时候需要使用USE来说明。最后一种数据类型是用户自定义数据类型以及子类型。

感谢您的阅读,更多关于FPGA学习内容以及其它学习问题请关注我,有问题请留言讨论。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/18236.html

(0)
上一篇 2023年 6月 20日 下午9:00
下一篇 2023年 6月 28日 下午12:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信