Ta strona używa ciasteczek (plików cookies), dzięki którym może działać lepiej. Dowiedz się więcejRozumiem i akceptuję
Sprawdź ofertę filamentów!

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

Autor Wiadomość
FlyingDutch 




Posty: 118
Pomógł: 1 raz
Otrzymał 6 piw(a)
Skąd: Bydgoszcz
Programuję w:
C++,Python
Wysłany: 13-01-2018, 09:30   Różnice pomiędzy wire i reg w opisie portów w Verilog'u

Cześć,

czy mógłby ktoś wyjaśnić mi różnice pomiędzy wire i reg użytych do opisów portów I/O w modułach Verilog. Czytałem o tym temacie już trochę, ale nadal wiele kwestii jest dla mnie niejasnych.

Pozdrawiam[/b]

Polecany artykuł » Kurs STM32 - #2 - Podstawowe informacje o STM32



Anioły to też demony - lepiej ich nie wkurzaj
Postaw piwo autorowi tego posta
 
 
JTyburski 



Posty: 33
Pomógł: 2 razy
Otrzymał 4 piw(a)
Skąd: Warszawa
Programuję w:
VHDL, Verilog
Wysłany: 13-01-2018, 13:01   

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! :D

Ostatnio zmieniony przez JTyburski 13-01-2018, 13:33, w całości zmieniany 9 razy  
Postaw piwo autorowi tego posta
 
 
Więcej szczegółów
Wystawiono 1 piw(a):
FlyingDutch
FlyingDutch 




Posty: 118
Pomógł: 1 raz
Otrzymał 6 piw(a)
Skąd: Bydgoszcz
Programuję w:
C++,Python
Wysłany: 13-01-2018, 15:51   

JTyburski napisał/a:

...
[ 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! :D


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


Anioły to też demony - lepiej ich nie wkurzaj
Postaw piwo autorowi tego posta
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Wersja do druku

Skocz do:  

Nie rozwiązałeś swojego problemu? Zobacz podobne tematy: Programowanie układó... Dostępne zestawy tes... Sposoby dołączenia u... Pokrótce o co tu cho...
lub przeszukaj forum po wybranych tagach: opisie, pomiedzy, portow, reg, roznice, verilog'u, wire


Powered by phpBB modified by Przemo © 2003 phpBB Group
Popularne kursy: Arduinopodstawy elektroniki