2016-01-27 4 views
2

Я пытаюсь сделать, если заявление, которое проверяет, если bet_target является одним из многих номеров, код выглядит примерно так:VHDL, как иметь несколько условий, если оператор

bet_target : in unsigned(5 downto 0); 

if (bet_target = 1 or bet_target = 2 or bet_target = 3) then 
      --do stuff 
end if; 

Целевая ставка на любом число от 0 до 36 в двоичном формате от 6 переключателей. Есть ли более сжатый способ для написания заявления как такового?

Благодаря

+0

Вы можете найти этот ответ полезным: [Как я могу построить, если предложение с сравнить с различными значениями?] (http://stackoverflow.com/a/34501004/2352082) –

ответ

3

Если вы используете пакет IEEE numeric_std вы можете использовать сравнение, как в

if bet_target >= 0 and bet_target <= 36 then 
    ... 

Обратите внимание, что без знака ожидает целые значения естественного диапазона в качестве операндов для реляционных операторов.

(Также обратите внимание, что лишние круглые скобки не были включены - они разрешены).

Эти реляционные операторы возвращают логические значения, а в середине и будут логическим логическим оператором.

Место для поиска, как и почему в объявлениях IEEE numeric_std и IEEE Std 1076-2008 9.2 Операторы.

И понимая, что без знака будет иметь двоичный эквивалент натурального числа можно выразить это с одним условием:

if bet_target <= 36 then 
    -- do something 

end if; 
Смежные вопросы