case task is
when 1 => task <= 2;
when 2 => task <= 3;
when other =>...
end case
case 내에서 switch 변수를 변경하려고하지만 case 절이 통과 된 후에 값에 영향을 미치지 않습니다. 적절한 방법은 무엇입니까?VHDL의 Case 문에서 제어 변수를 변경하는 경우
case task is
when 1 => task <= 2;
when 2 => task <= 3;
when other =>...
end case
case 내에서 switch 변수를 변경하려고하지만 case 절이 통과 된 후에 값에 영향을 미치지 않습니다. 적절한 방법은 무엇입니까?VHDL의 Case 문에서 제어 변수를 변경하는 경우
<=
신호 할당을 사용하기 때문에 task
은 변수가 아니라 신호라고 가정합니다. 작업의 새로운 가치는 다음 시뮬레이션주기 (델타주기)에서 사용할 수 있습니다. 이것은 대개 프로세스가 다시 실행될 때 또는 "wait"문 뒤에 나타날 때 새 값이 표시됨을 의미합니다. 그러나 코드를 합성하려는 경우 wait 문은 필요하지 않습니다.
는 다른 방법으로, 당신은 변수task
위해를 사용하여 변수 할당 연산자를 사용할 수 있습니다 task := 2;
변수가 아닌 신호를 사용하여 -이 예상대로 업데이트됩니다.
신호는 여러 프로세스 간의 통신에 유용합니다 (예 : updates are well-controlled). 보통 변수는 프로세스 범위가 아니므로 프로세스 범위로 제한되므로 프로세스 간 통신에 잘못 사용되어 오류가 발생하기 쉽습니다.