gpt4 book ai didi

vhdl - 将枚举类型转换为 std_logic_vector VHDL

转载 作者:行者123 更新时间:2023-12-04 13:57:20 25 4
gpt4 key购买 nike

我想知道是否可以将枚举类型(如 FSM 状态)转换为 std_logic_vector 或整数。我正在使用 OSVVM 为 FSM 做一个测试平台,我想使用记分板包自动将预期状态与实际状态进行比较。

谢谢!

最佳答案

要转换为整数,请使用:

IntVal := StateType'POS(State) ; 

从那里,很容易转换为 std_logic_vector,但我更喜欢尽可能使用整数,因为它们的存储空间比 std_logic_vector 小。为了验证,如果你在值小于 32 位时开始更多地考虑整数,会更容易。

如果您需要它作为 std_logic_vector,仅使用 numeric_std 您可以:
Slv8Val := std_logic_vector(to_unsigned(IntVal, Slv8Val'length)) ; 

为了验证,我大量使用 numeric_std_unsigned,因此转换更容易:
Slv8Val := to_slv(IntVal, Slv8Val'length) ; 

如果您有一个整数并希望将其转换回枚举值,您可以使用 'VAL.
State := StateType'VAL(IntVal) ; 

在 OSVVM 中,我们使用具有解析值的记录来创建事务接口(interface)。我们有一个整数的解析类型(osvvm.ResolutionPkg.integer_max)。我们使用 'POS(当我们输入时)和 'VAL(当我们取出时)通过记录传输枚举值。

注意不要将 'VAL 与 'VALUE 混淆。 'VALUE 将字符串转换为值 - 与 'IMAGE.

您当然可以在 SynthWorks 的 OSVVM 类(class)中学习所有这些内容 :)。

关于vhdl - 将枚举类型转换为 std_logic_vector VHDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42254941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com