Skocz do zawartości

Różnice pomiędzy wire i reg w opisie portów w Verilog'u


FlyingDutch

Pomocna odpowiedź

Najprościej - "wire" to kabel, a "reg" to po prostu "rejestr" - innymi słowy pierwsze jest przeznaczone do niepamięciowego przekazywania czy też przechowywania w sobie wartości sygnałów (można to potraktować jako ścieżki łączące poszczególne bramki czy w ogólności elementy cyfrowe), drugie natomiast "przechowuje" niczym pamięć wartości sygnałów (można to z kolei potraktować jako swoisty rejestr z przerzutników D, które będą miały na wyjściu dane wartości dopóki nie przyjdzie zbocze zegara i tego stanu nie zmieni). Tym samym pierwszy nadaje się tylko do opisu logiki kombinacyjnej, a drugi do sekwencyjnej (choć też i do kombinacyjnej, jako że w przeróżnych opisach "reg" jest sprowadzany do "wire" i w efekcie po prostu jest zachowanie jak właśnie dla "wire"). Stąd też utarł się w Verilogu schemat taki, że: "wire" do logiki kombinacyjnej, "reg" zarówno do logiki kombinacyjnej jak i sekwencyjnej. I tak też to rozumuj (w praktyce tak właśnie się to przydaje). Ale to w ogólności oczywiście jest.

W przypadku portów I/O to chodzi o takie swoiste podejście co przyjęli w tym języku - mianowicie:

1. Na wejściach danego modułu (takiego najgłówniejszego tak jak w VHDL-u) wartości nie są pamiętane (tak jak w praktyce - dane napięcie dostarczasz, a nie jeszcze zmuszasz, aby było pamiętane przez układ na wejściu) - a skoro tak to wejściach są wyłącznie "wire"

2. Na wyjściach tego samego modułu wartości mogą, ale nie muszą być pamiętane (bo na takim wyjściu może być jakaś bramka, ale też może być właśnie rejestr) - stąd na wyjściach może być albo "wire", albo "reg"

3. Oczywiście ten sam moduł może składać się wewnątrz z wielu podmodułów naraz - ale też może zawierać obok tego funkcjonalność opisaną kodem (to tak jak w VHDL-u, że piszesz kod realizujący daną funkcjonalność, ale też przy tym wstawiasz komponenty, które są opisane innymi plikami i też realizują jakąś tam swoją funkcjonalność - i tak samo tu) - tylko jest tutaj zagwozdka taka, że w Verilogu są bloki kodów (tj. "always" i "initial" czy też w ogolności bloki "begin - end" - i każdy z bloków może sobą prezentować albo logikę sekwnecyjną albo kombinacyjną po prostu (może być i mieszana, ale liczy się to co jest na wyjściu) - i aby zachować kompatybilność jeśli chodzi o obydwie rzeczy, to przyjęte jest, że podmoduł może pamiętać wartość na wejściu (bo dany blok może np: być właśnie rejestrem, a nie koniecznie jakimś kombinacyjnym opisem), ale zarazem na wyjściu może być tylko "wire" tj. podmoduł nie pamięta co ma na wyjściu (a to po to, aby z kolei dopasować się do kombinacyjnego opisu w danym innym bloku tego samego modułu, bo z kolei on nie musi być wyłącznie sekwencyjny). Poza tym też chodzi o uproszczenie opisu (w ogólności podmoduł to jakiś komponent nie - np: bramka - a skoro tka to najłatwiej po prostu przyjąć, że robimy jak w życiu, czyli łączymy dany podmoduł z innym dosłownie kablem - a skoro tak to przyjmujemy "wire" i już - w końcu nie łączymy ich koniecznie "rejestrem", a tym samym "reg" odpada - i tyle 🙂 )

[ Dodano: 13-01-2018, 13:03 ]

Tu przy okazji wyjaśnienie tego wszystkiego (a właściwie podsumowanie tego co powiedziałem):, ale z poziomu już samego języka: https://inst.eecs.berkeley.edu/~cs150/Documents/Nets.pdf

[ Dodano: 13-01-2018, 13:32 ]

I jeszcze jedna sprawa - Verilog bardziej zmusza do dosłownego, sprzętowego myślenia na poziomie bramek i rejestrów i prozucenia całkowicie programistycznego myślenia ala język C czy Java - serio - takie doświadczenia i praktyka! 😃

  • Lubię! 1
Link do komentarza
Share on other sites

...

[ Dodano: 13-01-2018, 13:32 ]

I jeszcze jedna sprawa - Verilog bardziej zmusza do dosłownego, sprzętowego myślenia na poziomie bramek i rejestrów i prozucenia całkowicie programistycznego myślenia ala język C czy Java - serio - takie doświadczenia i praktyka! 😃

Cześć Jakub,

dużo mi pomogłeś tym opisem, tak jak mówiłem nie wszystko było dla mnie jasne.

To, że Verilog bardziej zmusza do myślenia "sprzętowego" to już zdążyłem zauważyć 😉

Pozdrawiam

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.