如何以更好的方式编写此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;
答案 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_in
和type
声明可以位于function
或architecture
声明部分。 VHDL-2008中的代码可能如下所示:
process
替代方法需要一些声明,但更普遍适用。