2017-11-01 18 views
2

VHDL의 엔티티 구문에 대해 혼동스러워합니다. 다음은 엔티티가 선언되어야하는 방법 EBN form의 규칙입니다 :VHDL 엔티티 구문

enter image description here

출처 : Peter J. Ashenden, "The Designers Guide to VHDL", 3rd ed., Morgan Kaufmann, 2008.

내가 대한 혼란 스러워요하는 선언의 끝입니다. 이에 따르면 엔티티 또는 식별자을 끝에 포함 할 필요가 없으며 모든 것이 동일하게 작동합니다. 예를 들어 아래 두 선언은 동일합니까?

선언 한

entity identifier is 
    ... 
begin 
    ... 
end ; 

선언이

entity identifier is 
    ... 
begin 
    ... 
end entity identifier ; 

예라면, 왜 사람이 후자의 선언을 선택할 것인가? 두 가지 변종 중 어느 것을 사용해야합니까? 나는 보통 예에서 후자의 선언을 보았 기 때문에 이것을 묻고 있는데, 왜 첫 번째 선언보다 두 번째 선언을 선호 할 것인가를 스스로 설명 할 수는 없다.

+0

여기에 선택적 구문에 대한 요구 사항은 스타일의 문제입니다. 의견을 구하는 동안 디자인 파일에 디자인 유닛을 여러 개 포함 할 수 있으며 평가 순서에 따라 기본 단위 (엔티티)와 보조 단위 (아키텍처)간에 다른 기본 및 보조 단위를 인터리빙 할 수 있습니다. 제한된 수의 행을 가진 편집기 창을 통해 볼 때 끝이 실제로 끝나는 지에 대한 질문을 시작합니다. – user1155120

답변

4

더 나은 문서화 된 코드가 나오기 때문에 거의 항상 후자 선언을 사용합니다. 전자의 경우 독자가 단순한 end;을 발견하면 무엇이 끝났는지 분명하지 않습니다.

} // if (enable) 

나 : (일반적으로)

VHDL보다 자세한 언어를 사용하여, 프로그래머들은 C++에서 예를 들어 폐쇄되고 있는지 독자를 보여주기 위해 그 가까운 무언가를 구축하는 의견을 추가 할

if (enable) 
    begin : enable_block 
    ... 
    end : enable_block 
:의 Verilog에

end // if (enable) 

SystemVerilog를 적절한 언어로 같은 일을하고의 시설을 추가

end ; 
end identifier ; 

"거의 항상"

당신이 VHDL이 모든 말을 할 수있는 이유는

end ; 
end entity ; 
end identifier ; 
end entity identifier ; 

있는 유일한 이들은 합법적, VHDL-87와 VHDL-93은 이전 버전과 호환되도록하는 것입니다 ? 예. 실행 가능한 코드를 작성했는지, 필자는 항상 후자를 작성합니다. 그러나 나는 이번 주에 일부 VHDL에 대한 파워 포인트 슬라이드를 만들었는데, 나는 전체가 독자의주의를 산만하게 만들었 기 때문에 내가 의도적으로 그냥 end;이라고 썼다. 당신은 당신이 원하는 것을 만들 수 있습니다.

+0

친애하는 테일러 씨, 자세한 설명에 감사드립니다. "더 잘 문서화 된 코드"는 훌륭한 주장이며, 좀 더 자세한 변형을 사용하겠습니다. –

+2

또한 깨진 코드를 쉽게 식별 할 수 있습니다. 도구가'구문 오류 : 최종 프로세스 예상, 종료 엔티티 발견 '을보고하면 실수를 더 빨리 찾습니다. –