Przypisanie ciągłe
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 37 z 90.
W sprzęcie połączenie to fizyczny przewód łączący dwa punkty w obwodzie. Gdy przewód jest już na miejscu, połączenie jest trwałe i zawsze aktywne. Jeśli zmieni się jeden koniec, drugi zmieni się natychmiast.
W Verilogu potrzebujemy sposobu na modelowanie tego zachowania. Chcemy przekazać wartość do przewodu i pozostawić go podłączonym na zawsze. Ten proces nazywa się przypisaniem ciągłym.
Przypisanie ciągłe używa słowa kluczowego assign, aby utworzyć stałe połączenie między przewodem a wyrażeniem. Przewód stale przyjmuje wartość wyrażenia, tak jak fizyczny przewód.
Pomyśl o tym jak o przylutowaniu przewodu, a nie jednorazowym wpisaniu wartości.
Składnia
assign wire_name = expression;| Część | Znaczenie |
|---|---|
assign | Słowo kluczowe rozpoczynające przypisanie ciągłe |
wire_name | Przewód, którym steruje wartość (nie może być typu reg) |
expression | Wartość sterująca przewodem |
Prosty przykład
wire out;
assign out = a & b;Oznacza to, że out jest zawsze równe a AND b. Za każdym razem, gdy zmieni się a lub b, out zmienia się natychmiast.
Jak to działa
W przeciwieństwie do reg, który przechowuje wartość, wire z przypisaniem ciągłym jest stale aktualizowany:
module continuous_demo;
reg a, b;
wire c;
assign c = a & b; // c zawsze odzwierciedla wynik operacji AND na a i b
initial begin
a = 0; b = 0;
#10 $display("a=%d, b=%d, c=%d", a, b, c); // c=0
a = 1;
#10 $display("a=%d, b=%d, c=%d", a, b, c); // c=0 (1&0=0)
b = 1;
#10 $display("a=%d, b=%d, c=%d", a, b, c); // c=1 (1&1=1)
$finish;
end
endmoduleWynik:
a=0, b=0, c=0
a=1, b=0, c=0
a=1, b=1, c=1Za każdym razem, gdy zmienia się a lub b, c aktualizuje się automatycznie.
Wiele przypisań
W module możesz mieć wiele przypisań ciągłych:
module multiple_assign (
input a, b, c,
output x, y
);
assign x = a & b;
assign y = x | c; // y zależy od x
endmoduleWszystkie przypisania są wykonywane równolegle i nieprzerwanie.
Typowe zastosowania
Przypisania ciągłe są używane do:
- Prostej logiki kombinacyjnej (AND, OR, XOR)
- Łączenia przewodów
- Tworzenia buforów trójstanowych
- Sterowania wyjściami za pomocą wyrażeń kombinacyjnych
Wyzwanie
Co zrobić:
- Dodaj brakujące przypisanie ciągłe, które sprawia, że
zjest równex AND y.
Spróbuj swoich sił
module continuous_challenge (
input x,
input y,
output z
);
// TODO: Dodaj brakujące przypisanie ciągłe, dzięki któremu z będzie równe wynikowi operacji AND na x i y
endmoduleTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
1Wprowadzenie
Czym jest VerilogSprzęt a oprogramowanieTwój pierwszy modułKomentarzePoziomy abstrakcji projektu4Operatory, część 1
Operatory arytmetyczneOperator moduloOperatory porównaniaPowtórka — prosta matematykaOperatory bitowe7Przypisania i bramki
Przypisanie ciągłePrzypisanie z operatoramiWbudowane prymitywy bramekBramki AND, OR i NOTBramki XOR i XNORPodsumowanie — układ z bramek logicznych10Podejmowanie decyzji
Instrukcja ifIf-elsePowtórka – prosty komparatorInstrukcja caseCaseX i CaseZPowtórka – projektowanie ALU13Odmierzanie czasu i opóźnienia
Czym są opóźnieniaOpóźnienia bramekOpóźnienia przypisańDyrektywa timescaleGenerowanie zegaraPodsumowanie — kontrola czasu2Typy danych
Typ WireTyp RegLiczby całkowite i rzeczywisteWektoryTabliceParametryPowtórka — deklarowanie sygnałów5Operatory — część 2
Operatory logiczneOperatory redukcjiOperatory przesunięciaOperator konkatenacjiOperator warunkowyPowtórzenie — wyzwanie z operatorami11Pętle
Pętla forPętla whilePętla repeatPętla nieskończonaInstrukcja wyłączaniaPowtórka — wzorce pętli3System liczbowy
Reprezentacja binarnaLiczby o określonej szerokościLiczby o nieokreślonej szerokościLiczby ujemneWartości specjalne X i ZPodsumowanie — formaty liczb6Moduły
Struktura modułuPorty wejściowe i wyjściowePorty dwukierunkoweInstancjonowanie modułuMapowanie portów według nazwMapowanie portów według kolejnościPodsumowanie — zbuduj moduł9Bloki proceduralne
Blok alwaysBlok initialLista czułościPrzypisanie blokującePrzypisanie nieblokującePodsumowanie — always a initial12Projekt multipleksera
Projekt multipleksera 2 do 1Projekt multipleksera 4 do 115Sterownik sygnalizacji świetlnej
Definiowanie stanówLogika maszyny stanówPoćwicz samodzielnie: Kompilator Verilog online