Koder priorytetowy
Część sekcji Projektowanie RTL i weryfikacja ścieżki Verilog w Coddy. Lekcja 2 z 38.
Koder mapuje bit żądania na indeks. Wiele aktywnych żądań wymaga jawnej reguły priorytetu. Łańcuch if/else-if nadaje priorytet wcześniejszym gałęziom; osobny sygnał valid odróżnia brak żądania od indeksu zero.
Odpowiedni fragment; pozostałe deklaracje i połączenia podano w wyzwaniu.
if (req[3]) code = 3;
else if (req[2]) code = 2;
else if (req[1]) code = 1;
else code = 0;Wygrywa pierwsza spełniona gałąź, co daje najwyższy priorytet bitowi żądania o najwyższym numerze.
Określ kolejność priorytetów i wyraźnie zdefiniuj wynik przy braku żądania.
Wyzwanie
ŚredniZakoduj najwyższy ustawiony bit 4-bitowego req w code. Ustaw valid, jeśli istnieje jakiekolwiek żądanie; gdy req ma wartość zero, code i valid również mają wartość zero. Kolumny wyjściowe: code, valid. Wszystkie wartości sygnału wejściowego są znanymi wartościami binarnymi.
Uzupełnij design.v i zachowaj nazwy modułów oraz portów. Zablokowany testbench.v dostarcza zmiany sygnału wejściowego i wyświetla wyjścia po ich ustaleniu. Wybiera scenariusz za pomocą argumentu symulatora, takiego jak +CASE=1; standardowe wejście nie jest wymagane. Nie dodawaj do projektu wyświetlania danych, opóźnień ani kończenia symulacji. Oczekiwanym wyjściem jest jeden wiersz wartości dziesiętnych dla każdej obserwacji, rozdzielonych pojedynczą spacją i zakończonych znakiem nowej linii.
Spróbuj swoich sił
module dut (input [3:0] req, output reg [1:0] code, output reg valid);
// Zastąp ten kod zastępczy własnym projektem.
initial code = 0;
initial valid = 0;
endmoduleTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Projektowanie RTL i weryfikacja
1Niezawodna logika kombinacyjna RTL
Wartości domyślne zapobiegają zatrzaskomKoder priorytetowyWeryfikacja kodu one-hotBezpieczne dekodowanie casePodsumowanie — router żądań2Szerokości i arytmetyka ze znakiem
Zachowywanie bitów przeniesieniaPorównania ze znakiemArytmetyczne przesunięcia w prawoPrzepełnienie i nasyceniePodsumowanie — różnica ze znakiemPoćwicz samodzielnie: Kompilator Verilog online