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.
vhdl
components
Peterstone
źródło
źródło
Odpowiedzi:
Oto analogia, która pomaga niektórym ludziom (szczególnie tym z fizycznego środowiska elektronicznego):
A
component
mó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
entity
to 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 trzeba
component
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 raziecomponent
jest 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
component
to gniazdo i dopiero później kompilator / twórca może podłączyć Verilog do gniazda.źródło
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:
źródło
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]
źródło
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).
źródło