2017-11-02 9 views
1

VHDL에 무언가를 쓰려고하는데 작동하지 않습니다. 그것은이 라인에서이 문제를 다음과 같이이 말한다VHDL 케이스 ... with ... with

case currentState is 
    when ST000 => 
     with A select nextState <= 
      ST025 when "01", 
      ST050 when "10", 
      ST000 when "11", 
      currentState when others; 
    when ST001 => ... 
    when others => ... 
end case; 

: Line 62. parse error, unexpected WITH 여기 내 코드의 일부입니다. 이 with이 예기치 않게 나타나는 이유는 무엇입니까? 이 두 구문 (case...iswith...select)을 함께 사용하는 것은 잘못된 것입니까?

+1

당신이 최소한의 완전하고 검증 예제를 제공 할 수 있습니까? – JHBonarius

답변

1

참고 사항이 없으면 참고 자료는 IEEE Std 1076-2008, IEEE VHDL 언어 참조 설명서에서 제공됩니다.

(10) 순차 문

10.1 일반

순차적 문장의 다양한 형태가이 절에 설명되어 있습니다. 순차 명령문은 서브 프로그램이나 프로세스의 실행을위한 알고리즘을 정의하는 데 사용됩니다. 그들이 나타나는 순서대로 실행됩니다.

10.9 Case 문

case 문이 문 다른 시퀀스 번호의 실행을위한 하나의 선택; 선택된 대안은 표현식의 값으로 정의됩니다.

일련의 진술은 순차 진술을 나타냅니다.

10.5.4 선택된 신호 할당

선택된 신호 할당은 힘 신호 또는 해제 신호 또는 값을 할당 동등한 경우 문을 나타낸다. 그러나

... IEEE 표준 1076에서 2002 사이

에서

부속서 E
(정보)
변경 ...
제 10

- 10.5 : 강제 추가 및 해제 할당. 간단한, 조건부 및 선택된 신호 할당 추가. 이전 -2008 선택된 신호 할당보다 VHDL 표준의 개정에

동시 신호 할당 문 (9 동시 제표, 하위 9.5 11.6 동시 신호 할당 문을 참조하거나 제/장에서 발견으로 만 사용할 수 있었다. 2 VHDL 표준의 이전 개정판에서 선택된 신호 할당).

주 당신이 경우 문을 대체 할 수있는이 -2008 기능에 대한 때 불편하거나 부족한 지원 :

case currentState is 
    when ST000 => 
     case A is 
      when "01" => 
       nextState <= ST025; 
      when "10" => 
       nextState <= ST050; 
      when "11" => 
       nextState <= ST000; 
      when others => 
       nextState <= CurrentState; 
     end case; 
    when ST001 => ... 
    when others => ... 
end case; 
+0

설명 주셔서 감사합니다! 나는 신호'select' 대신에'case'를 넣으면 효과가있는 것을 보았습니다. –