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