Menu
Coddy logo textTech

Liczby o nieokreślonej szerokości

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

Liczba bez określonej szerokości to liczba zapisana bez podania jej liczby bitów. Gdy zapisujesz liczbę bez prefiksu określającego szerokość, Verilog domyślnie zakłada, że ma ona 32 bity.

a = 'b1010;        // Unsized: Verilog treats this as 32 bits
a = 32'b1010;    // To samo co powyżej, ale zapisane jawnie

Liczby bez określonego rozmiaru używają tylko formatu i wartości: [format][value]

  • <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)

Apostrof ' nadal jest wymagany między formatem a wartością, ale przed nim nie podaje się liczby bitów.

  • 'b1010: 32-bitowa liczba binarna 1010
  • 'd255: 32-bitowa liczba dziesiętna 255
  • 'hFF: 32-bitowa liczba szesnastkowa FF
  • 'b1: 32-bitowa liczba binarna 1 (z 31 zerami wiodącymi)

Przykład kodu:

reg [7:0] data;

initial begin
  data = 1010;      // Bez określonego rozmiaru: wartość 32-bitowa (może spowodować ostrzeżenie)
  data = 'd255;     // Unsized: 32-bit decimal 255
  data = 'hFF;      // Bez określonego rozmiaru: 32-bitowa wartość szesnastkowa FF
end

Bez określonego rozmiaru a z określonym rozmiarem

 Bez określonego rozmiaruZ określonym rozmiarem
Przykład1010 lub 'd2558'b1010 lub 8'd255
Szerokość bitowa32 bity (domyślnie)Jawna (zgodnie ze specyfikacją)
ApostrofWymagany przy określaniu formatuWymagany
Kiedy używaćProsty kod testbenchaPrzypisania sprzętowe

Potencjalny problem

Liczby bez określonego rozmiaru mogą powodować nieoczekiwane zachowanie, gdy są przypisywane do mniejszych rejestrów:

reg [3:0] small;
small = 'b1111;      // 32-bit value, but fits in 4 bits (fine)
small = 'b10000;     // Wartość 32-bitowa, ale za duża! (ostrzeżenie)

Drugi przykład przypisuje 32-bitową wartość 10000 do 4-bitowego rejestru. Zachowywane są tylko 4 młodsze bity (0000), co może nie być tym, czego się spodziewasz.

Kiedy używać liczb bez określonego rozmiaru

Liczby bez określonego rozmiaru są przydatne do:

  • Prostych liczb w testbenchach
  • Liczników pętli
  • instrukcji $display

W przypadku przypisywania wartości do rzeczywistego sprzętu używaj liczb o określonym rozmiarze, aby zachować jednoznaczność i uniknąć ostrzeżeń.

challenge icon

Wyzwanie

W poniższym kodzie niektóre liczby nie mają określonego rozmiaru. Zmień je na liczby o określonym rozmiarze (8 bitów), aby uniknąć ostrzeżeń.

Co zrobić:

  1. Zmień a na 8-bitową liczbę binarną oznaczającą 1010
  2. Zmień b na 8-bitową liczbę dziesiętną oznaczającą 255
  3. Zmień c na 8-bitową liczbę szesnastkową oznaczającą FF

Spróbuj swoich sił

module unsized_challenge;
  reg [7:0] a, b, c;
  
  initial begin
    a = 'b1010;      // Change to sized (8-bit binary)
    b = 'd255;     // Zmień na zapis o określonej szerokości (8-bitowy dziesiętny)
    c = 'hFF;      // Change to sized (8-bit hex)
    
    $display("a = %b", a);
    $display("b = %b", b);
    $display("c = %b", 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