Menu
Coddy logo textTech

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.

challenge icon

Wyzwanie

Średni

Zakoduj 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;
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 Projektowanie RTL i weryfikacja

Poćwicz samodzielnie: Kompilator Verilog online