VHDL中的 type
和 subtype
之间有什么区别?我应该在哪里使用它们?
我的理解是 subtype
只是缩小了一种主要类型的版本,例如 integer
: subtype small_integer is integer range -128 to 127;
在主要类型上可能的所有操作,也可能在 subtypes
上(当然,有一些限制) . 此外,最好使用 subtypes
来防止错误 .
那么 type
的目的是什么?
对于 integers
, donwto
和 to
之间有什么区别? (为了得到重点,这是一个例子)subtype bit_index is integer range 31 downto 0; subtype bit_index is integer range 0 to 31;
谢谢 !
2 回答
正如您所说, type 是 subtypes 的基础;没有类型没有子类型 . 但是,子类型在模拟中更安全;在实际硬件中,没有边界检查等...
VHDL的标准库定义了许多基础类型供您构建,如
std_logic
,_ 89300,integer
,character
,std_logic_vector
(无约束)等 . 你自己的定义如std_logic_vector(7 downto 0)
间接创建一个子类型(或者直接定义你的子类型并明确命名)当您查看自己的枚举时,例如,在描述状态机的状态时,您需要一个类型:
type tState is (IDLE, DO_SOMETHING, DONE);
downto
和to
,它似乎没用,但VHDL根本就没有另一种机制来定义range,而且这种机制允许 to 和 downtoTO和DOWNTO在印度方面有所不同(最高位的MSB与位0)