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.
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.
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 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 component
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.
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(
...
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]
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).