Wektory
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 9 z 90.
Wektor to wielobitowy przewód lub rejestr. Zamiast pojedynczego bitu wektory pozwalają pracować z magistralami danych. To zbiór bitów połączonych w grupę.
Uwaga: Wektor nie jest osobnym typem danych. To po prostu wielobitowa wersja wire lub reg.
wire single; // Pojedynczy bit
wire [7:0] bus; // Wektor 8-bitowy (bity od 7 do 0)Aby zadeklarować wektor, użyj składni [MSB:LSB], gdzie MSB to najbardziej znaczący bit, a LSB to najmniej znaczący bit.
wire [3:0] a; // 4-bitowy wektor typu wire
reg [7:0] data; // 8-bitowy wektor typu reg
wire [15:0] addr; // 16-bitowy wektor typu wireDostęp do bitów
Podczas dostępu do pojedynczych bitów lub fragmentów wektora używasz liczb dziesiętnych do określania pozycji bitów (indeksów) oraz wartości binarnych (0 lub 1) do przypisywania.
Dzieje się tak, ponieważ pozycja bitu to lokalizacja (jak adres), którą naturalnie wyraża się liczbą dziesiętną, podczas gdy wartość przechowywana w tym bicie może wynosić tylko 0 lub 1: to wybór binarny.
Na przykład data[0] oznacza „bit numer zero”, a = 1 oznacza „ustaw go na wysoki”. Przypisanie pojedynczemu bitowi liczby dziesiętnej, takiej jak 75, nie zapisuje wartości 75 — Verilog po cichu zachowuje tylko jej najmłodszy bit, więc zawsze wpisuj jawnie 0 lub 1.
reg [7:0] data;
data = 170;
data[0] = 1; // Ustaw LSB na 1
data[7] = 0; // Ustaw MSB na 0
data[3:1] = 3'b101; // Set bits 3,2,1 to 101 (binary remains)Kolejność bitów
Kolejność bitów ma znaczenie:
wire [3:0] a; // a[3] to MSB, a[0] to LSB
wire [0:3] b; // b[0] to MSB, b[3] to LSB (rzadziej spotykane)Większość projektantów używa formatu [MSB:LSB], z MSB po lewej stronie.
Przypisywanie wartości
reg [3:0] a;
a = 10;
a = 5;
a = 3; Fragmenty wektorów
Możesz uzyskać dostęp do zakresu bitów:
reg [15:0] word;
word[15:8] = 255; // Przypisz starszy bajt (8'hFF = 255)
word[7:0] = 0; // Przypisz młodszy bajt (8'h00 = 0)
word[3:1] = 3'b101; // Assign a slice Wyzwanie
Poniższy moduł wymaga deklaracji wektorów.
Co należy zrobić:
- Zmień każde wejście i wyjście na wektor 8-bitowy.
Spróbuj swoich sił
module vector_example(
input a, // Zmień na 8-bitowy wektor [7:0]
input b, // Zmień na 8-bitowy wektor [7:0]
output c // Zmień na 8-bitowy wektor [7:0]
);
assign c = a & b;
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