Reprezentacja binarna
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 13 z 90.
W Verilogu pracujemy z układami cyfrowymi, które rozumieją tylko 0 i 1. Są one zapisywane w systemie binarnym.
System binarny używa tylko dwóch cyfr: 0 i 1. Każda cyfra binarna nazywa się bitem.
| Dziesiętny | Binarny | Bity |
|---|---|---|
| 0 | 0 | 1 bit |
| 1 | 1 | 1 bit |
| 2 | 10 | 2 bity |
| 3 | 11 | 2 bity |
| 4 | 100 | 3 bity |
| 5 | 101 | 3 bity |
Zapisywanie liczb binarnych w Verilogu
Aby zapisywać liczby binarne w Verilogu, użyj prefiksu 'b:
4'b1010 // 4-bit binary 1010 (decimal 10)
8'b11110000 // 8-bitowa liczba binarna 11110000 (dziesiętnie 240)
2'b01 // 2-bit binary 01 (decimal 1)Liczba przed 'b informuje Verilog, ile bitów ma wartość.
Jak zamienić liczbę dziesiętną na binarną
Wielokrotnie dziel liczbę dziesiętną przez 2 i odczytuj reszty od dołu do góry.
Przykład: Zamiana 9 na system binarny
| Krok | Dzielenie | Iloraz | Reszta |
|---|---|---|---|
| 1 | 9 ÷ 2 | 4 | 1 |
| 2 | 4 ÷ 2 | 2 | 0 |
| 3 | 2 ÷ 2 | 1 | 0 |
| 4 | 1 ÷ 2 | 0 | 1 |
Odczytuj reszty od ostatniej do pierwszej: 1001
9 = 4'b1001
Przykład w kodzie
module binary_example;
reg [3:0] a;
initial begin
a = 4'b1010; // Binary 1010 = decimal 10
$display("a = %b (binary)", a);
$display("a = %d (decimal)", a);
$display("a = %h (hex)", a);
$finish;
end
endmoduleWynik:
a = 1010 (binary)
a = 10 (decimal)
a = a (hex)Wyzwanie
Uzupełnij kod, wpisując brakujące wartości binarne.
Co należy zrobić:
- Zapisz liczbę dziesiętną 5 w systemie binarnym (4 bity)
- Zapisz liczbę dziesiętną 14 w systemie binarnym (4 bity)
Spróbuj swoich sił
module binary_challenge;
reg [3:0] a, b;
initial begin
// Zapisz liczbę dziesiętną 5 w postaci binarnej (4 bity)
a = 4'b______;
// Write binary for decimal 14 (4 bits)
b = 4'b______;
$display("5 = %b", a);
$display("14 = %b", b);
$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