2011-03-02 2 views
1

정말 이상한 문제가 있으며 컴파일러가 불평하는 이유는 100 % 아닙니다. 코드는 다음과 같습니다VHDL의 간단한 IF 문에서 데이터 유형 문제

"AND can not have such operands in this context", 
"OR can not have such operands in this context", respectively for the second IF 

문 :

variable a : std_logic_vector(2 downto 0); 
variable b : std_logic; 
.... 
if (a = "100") AND (b) then 
    -- do something 
elsif (a = "011") OR (b) then 
    -- do something else 

내가 다음 오류 메시지가 표시됩니다.

VHDL이이 구조를 좋아하지 않는 이유는 누구나 생각해 볼 수 있습니다.

덕분에, 짐

답변

8

VHDL은 강력한 형식입니다 - 테스트 환경에서이 논리 값을 기대하고있다. 시도하십시오 (b = '1'). 무언가를 끝 -

경우 (A = "100") 다음 (B)는 다음 경우 :

0

당신은 비트 벡터를 비교하기 위해 노력하고있다, 하나는 약간 코드를 변경했다 elsif (a = "011")이면 if (b) then - 다른 작업을 수행 end if; end if;