第1天:VHDL状态机用户自定义数据类型

197 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

本文针对VHDL有效状态机的说明部分做一个简单的总结。

状态机

状态机的说明部分主要是用户自定义数据类型。

根据信号的输出方式,状态机分为Mealy型和Moore型。

根据输出时序,Moore属于同步输出状态机,Mealy属于异步输出状态机。

区别:

Moore的输出依据当前状态输入信号

Mealy的输出依据当前状态

Moore比Mealy多一个时钟周期;

用户自定义数据类型

  1. 限定性数组型数据类型定义

(将一组具有相同数据类型的元素集合在一起构成的新的数据类型)

  • 一维数组
TYPE 数组名 IS ARRAY(数组范围)OF 基本数据类型;

eg:TYPE STB IS ARRAY(7 DOWNTO 0)OF STD_LOGIC;

定义了一个数组型数据类型,名字为STB

该数据类型包含8个元素

每个元素的数据类型为STD_LOGIC

  • 二维数组
TYPE MATRIX IS ARRAY(127 DOWNTO 0)OF STD_LOGIC_VECTOR(7 DOWNTO 0);

该数据类型包含128个单元,每个单元中包含8个元素

  1. 非限定性数组型数据类型定义(不定义数据下标取值范围)
TYPE 数组名 IS ARRAY(数组下标名 RANGE<>)OF 数据类型;

eg: TYPE BIT_VECTOR IS ARRAY(NATURAL RANGE<>)OF BIT;

定义了一个数组型数据类型,名字为BIT_VECTOR

该数据类型包含的元素未确定

每个元素的数据类型为BIT(0或1)

  1. 枚举型数据类型(明确数据范围)
TYPE 数据类型名 IS 数据类型定义表述;

eg1:TYPE MY_LOGIC IS ('1','Z','U','0');

eg2:TYPE M_STATE IS (ST0, ST1, ST2, ST3, ST4,ST5, ST6);

SIGNAL PRESENT_STATE,NEXT_STATE:M_STATE;

定义一个枚举型数据类型名为MY_LOGIC

eg1包含4个取值

eg2包含6个“文本符号”取值

  1. 枚举型子类型数据类型(是TYPE所定义的原数据类型的一个子集)
SUBTYPE 子类型名 IS 基本数据类型 RANGE 约束范围;

eg: SUBTYPE digits IS INTEGER RANGE 0 TO 9;

本文介绍了四种VHDL自定义数据类型的方法,是为后面的状态机的学习打好基础。 我要写的是VHDL有效状态机,虽然不是前端后端服务端,但是也是技术对不对,所以我觉得是可以参加这个活动的,本来我看那个征文写的条条框框挺多的,我就有点害怕了,但是我看到后面说不少于500字,我才觉得轻松点了。如果不行我就不写这个了呗。