VHDL中整数的Type vs Subtype和down vs to

VHDL中整数的Type vs Subtype和down vs to,vhdl,Vhdl,VHDL中的类型和子类型之间有什么区别?我应该在哪里使用它们 我的理解是子类型只是主要类型之一的缩小版本,例如整数:子类型小\整数是整数范围-128到127在主类型上可能执行的所有操作,在子类型上也可能执行(当然,有一定的限制)。此外,最好使用子类型来防止错误 那么类型的作用是什么呢 对于整数,donwto和to之间有什么区别?(为了阐明这一点,这里有一个例子) 子类型位索引为31到0的整数范围 子类型bit_索引为0到31的整数范围 谢谢 正如您正确地说的,类型是子类型的基础;没有类型就没有

VHDL中的
类型
子类型
之间有什么区别?我应该在哪里使用它们

我的理解是
子类型
只是主要类型之一的缩小版本,例如
整数
子类型小\整数是整数范围-128到127
在主类型上可能执行的所有操作,在子类型上也可能执行(当然,有一定的限制)。此外,最好使用
子类型
来防止错误

那么
类型的作用是什么呢

对于
整数
donwto
to
之间有什么区别?(为了阐明这一点,这里有一个例子)
子类型位索引为31到0的整数范围
子类型bit_索引为0到31的整数范围

谢谢

  • 正如您正确地说的,类型是子类型的基础;没有类型就没有子类型。但是,子类型仅在模拟中更安全;在实际硬件中,没有边界检查等

  • VHDL的标准库定义了许多基本类型供您构建,如
    std_逻辑
    std_逻辑
    整数
    字符
    std_逻辑
    (无约束)等。您自己的定义,如
    std\u logic\u vector(7到0)
    间接创建子类型(如果您明确定义并命名子类型,则直接创建)

  • 当您查看自己的枚举时,例如,在描述状态机的状态时,您需要一个类型:

    类型tState为(空闲、做某事、完成)

  • 我不确定整数的
    downto
    to
    ,这似乎是无用的,但VHDL没有另一种机制来定义a,这种机制允许todownto


印度的TO和DOWNTO不同(最高位的MSB与第0位的MSB)

10000001”是MSB,“10000001”是LSB

std_logic_vector(0 downto 3) 

10000001”是LSB,“10000001”是MSB

您也可以创建自己的无约束数组类型的子类型,例如
类型无约束数组是标准逻辑向量(1到0)的数组(自然范围)和<代码>子类型受限\u t为无约束\u t(5到0)是的,您可以,并且当您为此编写解析器/合成器时,在数学软件包中使用MSB和LSB的概念是一件非常痛苦的事情。由于std_逻辑_向量最初只用于位,因此可以认为不存在LSB和MSB。OTOH,如果您进一步研究无符号类型和从numeric_std签名的类型,您会发现MSB始终是对象最左边的索引。更进一步说,如果您使用无符号的数字,那么这个原则也适用于标准逻辑向量。
std_logic_vector(0 downto 3)