답변:
다음은 일부 사람들 (특히 물리적 전자 분야의 사람들)을 돕는 유추입니다.
A component
는 컴파일러에게 "어떤 시점에서 이런 종류의 핀이있을 것이라고 생각하지만 지금은 걱정하지 않아도된다"고 말한다. 일종의 "소켓"을 정의합니다. 계속해서 "소켓"에 "연결된"항목을 설명 할 수 있습니다.
An entity
은 이름과 핀 세트에 특정한 것으로 컴파일러가 해당 "소켓"에 "플러그인"할 수 있습니다 (따라서 "와이어"에 연결).
참고는하지 않는 것이 필요 을 component
이미 컴파일러 의미 "소켓"별도로 정의 할 필요가 없습니다 있도록 실체에 대해 알고 "직접 인스턴스화"를 할 수 있습니다. 사실, 그것은 내가 권장하는 접근법 일 것입니다. 그렇지 않으면 component
동기화 할 여분의 수준이기 때문입니다.
당신은 필요 당신의 Verilog 및 VHDL 및 VHDL 내에서의 Verilog 블록을 사용할 필요를 혼합하는 경우 구성 요소를 사용합니다. 그런 다음 component
소켓은 소켓이며 나중에 컴파일러 / 연구원은 Verilog를 소켓에 연결할 수 없습니다.
기업은 여러 가질 수있는 디자인 단위에 실제 인터페이스 아키텍처를. 엔티티는 물건이 들어오고 나가는 방법을 정의하고 아키텍처는 디자인 단위가 작동하는 방식을 정의합니다. 따라서 동일한 엔티티에 의해 설명되는 동일한 기능을 구현하는 여러 가지 방법을 가질 수 있습니다 .
구성 요소는 이상적인 또는 "가상"디자인 단위입니다. 하향식 설계를 수행하는 경우 (즉, 하위 레벨 블록을 설계하기 전에 최상위 레벨을 구성하는 경우) 구성 요소를 사용하여 설계 단위에 예상되는 인터페이스 유형을 설명 할 수 있습니다. 이것을 미래의 실제 구현을위한 자리 표시 자 또는 블랙 박스로 생각할 수 있습니다.
구성 을 사용 하면 특정 구성 요소 인스턴스를 엔티티 정의에 바인딩 할 수 있습니다. 어떤 포트에 어떤 포트를 연결해야하는지 매핑 할 수 있습니다. 이상적인 의미로 정의 된 구성 요소가 실제로 구현 된 엔티티에 맵핑되는 방식을 맵핑합니다.
실제로 , 나는 컴포넌트가 일반적으로 필요하지 않으며 일반적으로 사용되지 않는 다른 레벨의 추상화를 생성한다는 것을 발견했다. 엔터티를 직접 인스턴스화하고 해당 엔터티 인스턴스에 사용할 아키텍처를 참조하여 구성 요소의 사용 및 필요를 건너 뛸 수 있습니다.
예를 들면 다음과 같습니다.
MyDesignUnit : entity library_name.entity_name(architecture_name)
port map(
...
아래 [1]부터 :
VHDL의 엔터티, 구성 요소 및 구성 요소 인스턴스에는 중요한 차이점이 있습니다. 엔터티는 디자인 인터페이스를 설명하고, 구성 요소는 인스턴스 (또는 하위 블록)로 사용될 엔터티의 인터페이스를 설명하며, 구성 요소 인스턴스는 다른 부분과 신호에 연결된 구성 요소의 고유 한 복사본입니다. . 이를 자체 부품이있는 브레드 보드 설계 프로세스와 비교합니다. 엔터티 및 아키텍처는 인터페이스와 부품 작동 방식을 설명하는 데이터 북과 같습니다. 이 구성 요소는 연결 방법을 설명하는 부품과 함께 제공되는 짧은 핀 목록과 같습니다. 구성 요소 인스턴스는 실제 부품 자체이며, 각각 독립적으로 작동하는 많은 부품이있을 수 있습니다.
자세한 내용은 [1]을 참조하십시오.
예를 들어 [2] [3] ... 도서 (84 페이지 PDF) [4]보기 좋음 [5] 주로 링크 찾기 [6]
엔터티는 입력-출력 포트가 지정된 설계 단위입니다. 엔티티는 외부 포트를 정의하는 반면 내부 기능은 해당 아키텍처에 의해 지정됩니다. 구성 요소는 엔터티와 아키텍처를 모두 구성하는 완전한 디자인 단위입니다. 첫 번째 단계는 구성 요소 선언 (이름과 포트 지정)과 구성 요소 인스턴스화 (포트 매핑)입니다.