如果句子与各种值相比较,我如何构建?

时间:2015-12-28 21:00:07

标签: arrays if-statement comparison vhdl

如何以更好的方式编写此if语句条件?

if ((data_in(8 downto 1)=x"70") or (data_in(8 downto 1)=x"69") or 
    (data_in(8 downto 1)=x"72") or (data_in(8 downto 1)=x"7A") or
    (data_in(8 downto 1)=x"6B") or (data_in(8 downto 1)=x"73") or
    (data_in(8 downto 1)=x"74") or (data_in(8 downto 1)=x"6C") or
    (data_in(8 downto 1)=x"75") or (data_in(8 downto 1)=x"7D")) then
      data_make_code <= data_in (8 downto 1); -- enter key to buffer
      wrong_data <='0';
      cnt_bit :=0;
      -- if valid key then
      current_state <= break_code_receive; 
elsif
 ...
end if;

1 个答案:

答案 0 :(得分:6)

case语句可用于与多个值进行比较,然后others的{​​{1}}部分可用作case,如:

"else"

另一种方法是使用case data_in(8 downto 1) is when x"70" | x"69" | x"72" | x"7A" | x"6B" | x"73" | x"74" | x"6C" | x"75" | x"7D" => ... -- if part of code when others => ... -- else part of code end case; array的值,然后创建一个函数,以确定std_logic_vector值是否等于数组中的任何一个值。然后,data_intype声明可以位于functionarchitecture声明部分。 VHDL-2008中的代码可能如下所示:

process

替代方法需要一些声明,但更普遍适用。