首页 > 解决方案 > VHDL中的递增枚举类型

问题描述

在 vhdl 中,我可以定义自己的枚举类型并创建这种类型的信号:

type tp is (red,green,blue,yellow);
signal sg: tp := red;

但现在我想要一个 for 循环来运行所有这些状态。就像是

for i in sg'min to sg'max loop
   <something>
end loop;

在 c++ 中有用于此目的的迭代器。但在 VHDL 中,我只能找到sg'pos将信号转换为可以递增的数字。但我似乎找不到将数字转换回信号的方法。

标签: vhdlincrementenumeration

解决方案


这就是你需要的:

for i in tp'left to tp'right loop
   <something>
end loop;

`left 和 `right 被称为类型属性。它们在您的测试平台中很有用,但不推荐用于您的设计。这是因为您的合成器可能会更改枚举的顺序,这可能会给您带来问题。


推荐阅读