Liczby całkowite i rzeczywiste
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 8 z 90.
Oprócz wire i reg Verilog ma inne typy danych dla liczb, przeznaczone do różnych celów.
Liczba całkowita
integer to zmienna ogólnego przeznaczenia, służąca do zliczania i obliczeń.
- Domyślny rozmiar to 32 bity
- Ze znakiem (może przechowywać liczby ujemne)
- Używany głównie w testbenchach i pętlach
Deklarowanie liczby całkowitej:
integer i; // 32-bitowa zmienna ze znakiem
integer count; // Może przechowywać liczby ujemneUżywanie typu integer:
integer i;
initial begin
i = 0; // Zacznij od 0
i = i + 1; // Zwiększaj wartość
i = -5; // Może przechowywać wartości ujemne
$display("i = %d", i); // Wyświetla: i = -5
endLiczby rzeczywiste
real służy do przechowywania liczb zmiennoprzecinkowych (liczb z częścią dziesiętną).
- Przechowuje wartości ułamkowe
- Używane w testbenchach do obliczeń
- Nie można ich zsyntetyzować do sprzętu
Deklarowanie liczby rzeczywistej:
real pi; // Zmienna zmiennoprzecinkowa
real voltage;Używanie typu real:
real pi;
initial begin
pi = 3.14159; // Wartość dziesiętna
pi = 22.0 / 7.0; // Wynik dzielenia
$display("pi = %f", pi); // Wyświetla: pi = 3.142857
endGdzie ich używać
W stanowiskach testowych: Liczby całkowite i rzeczywiste są często używane jako liczniki pętli, do obliczeń i sprawdzania oczekiwanych wartości. Dzięki nim łatwiej pisać i rozumieć kod testowy.
W sprzęcie: tych typów zazwyczaj nie można syntezować, co oznacza, że nie da się ich przekształcić w rzeczywiste układy. W przypadku sprzętu, który ma działać na układzie FPGA lub chipie, użyj zamiast nich reg i wire.
Wyzwanie
Uzupełnij kod, aby testbench działał.
Co zrobić:
- Zadeklaruj liczbę całkowitą o nazwie i (licznik pętli)
- Zadeklaruj liczbę rzeczywistą o nazwie value (do obliczeń)
Spróbuj swoich sił
module test;
// Zadeklaruj zmienną całkowitą o nazwie i
// Zadeklaruj zmienną rzeczywistą o nazwie value
initial begin
i = 7;
value = i * 0.5;
$display("i = %0d, value = %f", i, value);
$finish;
end
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