Menu
Coddy logo textTech

Liczby o określonej szerokości

Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 14 z 90.

W Verilog można zadeklarować liczbę o określonym rozmiarze. Nazywa się ją liczbą o określonym rozmiarze. Jest to przydatne, ponieważ zapobiega nieporozumieniom co do liczby bitów w liczbie i zapewnia, że sprzęt działa dokładnie zgodnie z oczekiwaniami.

Liczba o określonym rozmiarze ma następujący format: [bits]'[format][value]

  • <strong>bits</strong>: liczba bitów (na przykład 8)
  • <strong>'</strong>: apostrof oddzielający rozmiar od formatu (wymagany)
  • <strong>format</strong>: podstawa liczby: b dla systemu binarnego, d dla dziesiętnego, h dla szesnastkowego lub o dla ósemkowego
  • <strong>value</strong>: właściwa liczba (na przykład 1010)

Na przykład:

  • 4'b1010: 4 bity, liczba binarna 1010 (dziesiętnie 10)
  • 8'd255: 8 bitów, liczba dziesiętna 255 (binarnie 11111111)
  • 16'hFF: 16 bitów, liczba szesnastkowa FF (binarnie 0000000011111111)
  • 3'b1: 3 bity, liczba binarna 001 (najbardziej znaczące bity są uzupełnione zerami)

Przykład kodu:

reg [7:0] data;

data = 8'b10101010;   // 8 bits, binary 10101010
data = 8'd170;        // 8 bitów, dziesiętnie 170
data = 8'hAA;         // 8 bits, hex AA

Wszystkie trzy przykłady przypisują tę samą wartość do data.

Dlaczego rozmiar ma znaczenie

Bez określenia rozmiaru:

reg [7:0] data;
data = 1;        // Co to oznacza? 1 bit? 8 bitów?

Verilog domyślnie zakłada, że małe liczby mają 32 bity, co może powodować problemy.

Z określonym rozmiarem:

reg [7:0] data;
data = 8'b00000001;   // Clear: 8-bit value 1

Dopełnianie zerami

Gdy przypisujesz mniejszą wartość do większego wektora, Verilog wypełnia lewe bity zerami:

reg [7:0] data;
data = 4'b1010;    // Becomes 8'b00001010
challenge icon

Wyzwanie

Uzupełnij kod, wpisując liczby o odpowiednim rozmiarze.

Co należy zrobić:

  1. Ustaw a na 8-bitową liczbę binarną odpowiadającą liczbie dziesiętnej 170 (binarnie 10101010)
  2. Ustaw b na 4-bitową liczbę binarną odpowiadającą liczbie dziesiętnej 12 (binarnie 1100)
  3. Ustaw c na 16-bitową liczbę szesnastkową odpowiadającą liczbie dziesiętnej 255 (szesnastkowo FF)

Spróbuj swoich sił

module sized_challenge;
  reg [7:0] a;
  reg [3:0] b;
  reg [15:0] c;
  
  initial begin
    a = ______;   // 8-bitowa liczba binarna dla 170 (10101010)
    b = ______;   // 4-bitowa liczba binarna dla 12 (1100)
    c = ______;   // 16-bitowa liczba szesnastkowa dla 255 (FF)
    
    $display("a = %b", a);
    $display("b = %b", b);
    $display("c = %h", c);
    $finish;
  end
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