VHDL: Component vs. Entity

25

Zastanawiam się, jaka jest różnica między komponentem a bytem. Chciałbym wiedzieć, w których przypadkach lepiej jest używać komponentów zamiast encji. Dziękuję bardzo.

Peterstone
źródło
1
Proszę, czy ktoś mógłby utworzyć tag „v”. Dziękuję Ci.
Peterstone
7
Masz na myśli „vs” jak w tytule? Hm, niezbyt dobry pomysł, myśli.
stevenvh
2
Nie wszyscy tutaj używają Visual Studio ... och, czekaj ... miałeś na myśli inne "vs" prawda? ;-)
cbmeeks

Odpowiedzi:

17

Oto analogia, która pomaga niektórym ludziom (szczególnie tym z fizycznego środowiska elektronicznego):

A componentmówi kompilatorowi, że „będzie coś z tego rodzaju pinami zwanymi w pewnym momencie, ale nie martw się na razie”. W pewnym sensie definiuje „gniazdo”. Możesz dalej opisywać, jakie „przewody” łączą się z tym „gniazdem” itp.

Jest entityto coś specyficznego z nazwą i zestawem pinów, które kompilator może następnie „podłączyć” do tego „gniazda” (a zatem podłączyć do „przewodów”).

Należy pamiętać, że nie trzebacomponent można zrobić „bezpośredniego konkretyzacji”, co oznacza, że kompilator już wie o podmiot więc „Gniazdo” nie muszą być zdefiniowane oddzielnie. W rzeczywistości byłoby to moje zalecane podejście, ponieważ w przeciwnym razie componentjest to dodatkowy poziom do synchronizacji.

Ci potrzebne do używania komponentów jeśli mieszanie Verilog i VHDL i musisz używać bloku Verilog w VHDL. Wtedy componentto gniazdo i dopiero później kompilator / twórca może podłączyć Verilog do gniazda.

Martin Thompson
źródło
Komponent jest jak pakiet DIP. Możesz użyć tego samego 8-pinowego wzmacniacza operacyjnego kilkanaście razy w obwodzie i zawsze jest to 8 pinów. Są to osobne komponenty, mimo że są tego samego typu wzmacniaczem operacyjnym. Podmiot jest jak pinout w arkuszu danych; wszystkie oddzielne wzmacniacze operacyjne mają ten sam pinout.
ajs410
14

Jednostka to prawdziwy interfejs do jednostki projektowej, która może mieć wiele architektur. Jednostka określa sposób wchodzenia i wychodzenia elementów, a architektura określa sposób działania jednostki projektowej. Możesz mieć wiele sposobów implementacji tej samej funkcji, które zostałyby opisane przez ten sam podmiot.

Składnik jest idealnym lub „wirtualne” budowa urządzenia. Kiedy projektujesz z góry na dół (tj. Zestawiasz najwyższy poziom przed zaprojektowaniem bloków niższego poziomu), możesz użyć komponentu, aby opisać typ interfejsu, którego oczekujesz dla swoich jednostek projektowych. Możesz myśleć o tym jak o miejscu lub czarnej skrzynce do przyszłego prawdziwego wdrożenia.

Za pomocą konfiguracji możesz powiązać określoną instancję komponentu z definicją encji. Tutaj możesz zmapować, który port powinien się połączyć z którym portem. Mapuje to, w jaki sposób komponent zdefiniowany w idealnym sensie odwzorowuje na jednostkę, która została faktycznie zaimplementowana.

W praktyce stwierdziłem, że komponenty są zwykle niepotrzebne i tworzą kolejny poziom abstrakcji, który zazwyczaj nie jest używany. Można pominąć użycie (i potrzebę) komponentów, bezpośrednio tworząc instancję encji i odwołując się do architektury, która ma być używana dla tej instancji encji.

Na przykład:

MyDesignUnit : entity library_name.entity_name(architecture_name)
               port map(
                     ...
Josh
źródło
2

Od [1] poniżej:

W VHDL istnieje ważne rozróżnienie między bytem, ​​komponentem i instancją komponentu. Encja opisuje interfejs projektu, komponent opisuje interfejs encji, który będzie używany jako instancja (lub podblok), a instancja komponentu jest wyraźną kopią komponentu, który został podłączony do innych części i sygnałów . Aby porównać je z procesem projektowania płyty chlebowej z samodzielnymi częściami. Obiekt i architektura są jak książka danych opisująca interfejs i schematy działania części. Element jest jak krótka lista pinów, która jest dołączona do części, aby opisać, jak należy go połączyć. Instancja komponentu jest samą częścią, z której wiele może działać niezależnie.

Zobacz [1], aby uzyskać kontekst i więcej szczegółów.


Istnieje wiele samouczków VHDL w Internecie, np. [2] [3] ... Książka (84 strony PDF) [4] Wygląda dobrze [5] Głównie dla linków [6]

Russell McMahon
źródło
1
wydaje się, że faworyzujesz linki w przypisach końcowych, ale tak właśnie dzieje się to w druku i nie używa hiperłącza tak, jak powinno być. Mógłbyś napisać „Zobacz ten link, aby uzyskać kontekst i więcej szczegółów”. O wiele bardziej przyjazny dla użytkownika, AFAIC. Tylko sugestia.
stevenvh
2
Stary mózg :-). Skłaniam się ku maksymalnej informacji (jak zauważysz :-)), a metoda endnote pozwala czytelnikom zobaczyć, skąd pochodzi link i czy niektóre są na tej samej stronie - jak to czasem się zdarza. W przypadku bardzo długich linków staram się używać bit.ly / j.mp z sensowną nazwą. Widziałem także użytkowników niechętnie klikających link (nawet jeśli można je skopiować i wkleić w celu sprawdzenia (dodatkowa praca)). ALE punkt odnotowany i rozważę każdą z nich w przyszłości.
Russell McMahon,
0

Jednostka to jednostka projektowa, której porty wejścia-wyjścia są określone. Jednostka po prostu definiuje porty zewnętrzne, podczas gdy funkcjonowanie wewnętrzne jest określone przez odpowiednią architekturę. Komponent to kompletna jednostka projektowa składająca się zarówno z encji, jak i architektury. Pierwszym krokiem jest deklaracja komponentu (określająca jego nazwę i porty), a następnie tworzenie instancji komponentu (mapowanie portów).

varshika03
źródło