Menu
Coddy logo textTech

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 wire

Dostę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 
challenge icon

Wyzwanie

Poniższy moduł wymaga deklaracji wektorów. 

Co należy zrobić: 

  1. 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;
  
endmodule
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Verilog online