我想知道是否可以将枚举类型(如FSM状态)转换为std_logic_vector或整数。我正在使用OSVVM为FSM做一个测试平台,我想使用记分板包自动将预期状态与实际状态进行比较。
谢谢!
答案 0 :(得分:8)
要转换为整数,请使用:
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中,我们使用具有已解析值的记录来创建事务接口。我们有一个整数的resoled类型(osvvm.ResolutionPkg.integer_max)。我们使用'POS(我们把它放入)和'VAL(我们把它拿出来)通过记录传递枚举值。
注意不要将'VAL与'VALUE混淆。 'VALUE将字符串转换为值 - 与'IMAGE。
相反您当然可以在SynthWorks的OSVVM类中学习所有这些:)。
答案 1 :(得分:0)
也许这样......
/**
** pure js
**/
// snap event
var addEvent = function addEvent(element, eventName, func) {
if (element.addEventListener) {
return element.addEventListener(eventName, func, false);
} else if (element.attachEvent) {
return element.attachEvent("on" + eventName, func);
}
};
// snap parmas
var snapper = new Snap({
element: document.getElementById('content'),
disable: 'right',
maxPosition: 250,
minPosition: -250,
transitionSpeed: .2
});
// snap button click function
addEvent(document.getElementById('ol'), 'click', function() {
snapper.open('left');
});
/**
** jQuery functions
**/
(function($) {
// slick slider
$('#carousel').slick({
dots: false,
prevArrow: false,
nextArrow: false,
autoplay: true,
autoplaySpeed: 3000
});
})(jQuery);