VHDL : 컴포넌트와 엔티티


25

구성 요소 엔터티의 차이점이 무엇인지 궁금합니다. 어떤 경우에 엔티티 대신 구성 요소를 사용하는 것이 더 좋은지 알고 싶습니다. 정말 고맙습니다.


1
누구든지 태그 호출 'vs'를 만들 수 있습니까? 고맙습니다.
Peterstone

7
제목처럼 "vs"를 의미합니까? 흠, 좋은 생각은 아닙니다.
stevenvh

2
여기에있는 모든 사람들이 Visual Studio를 사용하는 것은 아닙니다. 잠깐만 요. ;-)
cbmeeks

답변:


17

다음은 일부 사람들 (특히 물리적 전자 분야의 사람들)을 돕는 유추입니다.

A component는 컴파일러에게 "어떤 시점에서 이런 종류의 핀이있을 것이라고 생각하지만 지금은 걱정하지 않아도된다"고 말한다. 일종의 "소켓"을 정의합니다. 계속해서 "소켓"에 "연결된"항목을 설명 할 수 있습니다.

An entity은 이름과 핀 세트에 특정한 것으로 컴파일러가 해당 "소켓"에 "플러그인"할 수 있습니다 (따라서 "와이어"에 연결).

참고는하지 않는 것이 필요component이미 컴파일러 의미 "소켓"별도로 정의 할 필요가 없습니다 있도록 실체에 대해 알고 "직접 인스턴스화"를 할 수 있습니다. 사실, 그것은 내가 권장하는 접근법 일 것입니다. 그렇지 않으면 component동기화 할 여분의 수준이기 때문입니다.

당신은 필요 당신의 Verilog 및 VHDL 및 VHDL 내에서의 Verilog 블록을 사용할 필요를 혼합하는 경우 구성 요소를 사용합니다. 그런 다음 component소켓은 소켓이며 나중에 컴파일러 / 연구원은 Verilog를 소켓에 연결할 수 없습니다.


컴포넌트는 DIP 패키지와 같습니다. 회로에서 동일한 8 핀 연산 증폭기를 수십 번 사용할 수 있으며 항상 8 핀입니다. 동일한 유형의 연산 증폭기 임에도 불구하고 별도의 구성 요소입니다. 엔터티는 데이터 시트의 핀아웃과 같습니다. 모든 개별 연산 증폭기는 동일한 핀아웃을 갖습니다.
ajs410

14

기업은 여러 가질 수있는 디자인 단위에 실제 인터페이스 아키텍처를. 엔티티는 물건이 들어오고 나가는 방법을 정의하고 아키텍처는 디자인 단위가 작동하는 방식을 정의합니다. 따라서 동일한 엔티티에 의해 설명되는 동일한 기능을 구현하는 여러 가지 방법을 가질 수 있습니다 .

구성 요소는 이상적인 또는 "가상"디자인 단위입니다. 하향식 설계를 수행하는 경우 (즉, 하위 레벨 블록을 설계하기 전에 최상위 레벨을 구성하는 경우) 구성 요소를 사용하여 설계 단위에 예상되는 인터페이스 유형을 설명 할 수 있습니다. 이것을 미래의 실제 구현을위한 자리 표시 자 또는 블랙 박스로 생각할 수 있습니다.

구성 을 사용 하면 특정 구성 요소 인스턴스를 엔티티 정의에 바인딩 할 수 있습니다. 어떤 포트에 어떤 포트를 연결해야하는지 매핑 할 수 있습니다. 이상적인 의미로 정의 된 구성 요소가 실제로 구현 된 엔티티에 맵핑되는 방식을 맵핑합니다.

실제로 , 나는 컴포넌트가 일반적으로 필요하지 않으며 일반적으로 사용되지 않는 다른 레벨의 추상화를 생성한다는 것을 발견했다. 엔터티를 직접 인스턴스화하고 해당 엔터티 인스턴스에 사용할 아키텍처를 참조하여 구성 요소의 사용 및 필요를 건너 뛸 수 있습니다.

예를 들면 다음과 같습니다.

MyDesignUnit : entity library_name.entity_name(architecture_name)
               port map(
                     ...

2

아래 [1]부터 :

VHDL의 엔터티, 구성 요소 및 구성 요소 인스턴스에는 중요한 차이점이 있습니다. 엔터티는 디자인 인터페이스를 설명하고, 구성 요소는 인스턴스 (또는 하위 블록)로 사용될 엔터티의 인터페이스를 설명하며, 구성 요소 인스턴스는 다른 부분과 신호에 연결된 구성 요소의 고유 한 복사본입니다. . 이를 자체 부품이있는 브레드 보드 설계 프로세스와 비교합니다. 엔터티 및 아키텍처는 인터페이스와 부품 작동 방식을 설명하는 데이터 북과 같습니다. 이 구성 요소는 연결 방법을 설명하는 부품과 함께 제공되는 짧은 핀 목록과 같습니다. 구성 요소 인스턴스는 실제 부품 자체이며, 각각 독립적으로 작동하는 많은 부품이있을 수 있습니다.

자세한 내용은 [1]을 참조하십시오.


예를 들어 [2] [3] ... 도서 (84 페이지 PDF) [4]보기 좋음 [5] 주로 링크 찾기 [6]


1
미주에있는 링크를 선호하는 것처럼 보이지만 그것이 인쇄에서 수행되는 방식이며 하이퍼 링크를 사용하지 않습니다. " 컨텍스트 및 자세한 내용은 이 링크 를 참조하십시오"라고 작성했을 수 있습니다 . 훨씬 더 사용하기 쉬운 AFAIC. 그냥 제안입니다.
stevenvh

2
오래된 뇌 :-). 나는 최대 정보 (당신이 알아 차리게 :-)에 기대어) 미주 방법은 독자들이 링크가 어디에서 왔는지 그리고 어떤 사이트가 같은 사이트에 있는지 여부를 때때로 볼 수 있습니다. 매우 긴 링크의 경우 의미있는 이름으로 bit.ly / j.mp를 사용하는 경향이 있습니다. 또한 사용자가 링크를 클릭하는 것에 대해 회심하는 것을 보았습니다 (복사 및 복사를 위해 붙여 넣을 수는 있지만). 그러나 요점을 지적하고 나중에 각각 옵션으로 고려할 것입니다.
Russell McMahon

0

엔터티는 입력-출력 포트가 지정된 설계 단위입니다. 엔티티는 외부 포트를 정의하는 반면 내부 기능은 해당 아키텍처에 의해 지정됩니다. 구성 요소는 엔터티와 아키텍처를 모두 구성하는 완전한 디자인 단위입니다. 첫 번째 단계는 구성 요소 선언 (이름과 포트 지정)과 구성 요소 인스턴스화 (포트 매핑)입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.