在VHDL中键入vs Subtype和down vs to for Integers

时间:2012-09-22 18:01:08

标签: vhdl

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

我的理解是subtype只是缩小了其中一种主要类型的版本,例如integersubtype small_integer is integer range -128 to 127;所有可能在主要类型上执行的操作也可能在{ {1}}(当然,有一些限制)。此外,最好使用subtypes来防止错误。

那么subtypes的目的是什么?

type的{​​{1}}和donwto之间有什么区别? (为了得到重点,这是一个例子)
to

谢谢!

3 个答案:

答案 0 :(得分:9)

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

  • VHDL的标准库定义了许多基础类型供您构建,例如std_logicstd_ulogicintegercharacter,{{ 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