Menu
Coddy logo textTech

Bezpieczne dekodowanie case

Część sekcji Projektowanie RTL i weryfikacja ścieżki Verilog w Coddy. Lekcja 4 z 38.

Użyj zwykłej instrukcji case dla dokładnych kodów sterujących. Określ zachowanie default dla nieobsługiwanych kodów i przypisz wszystkie wyjścia za pomocą assign. Dekodowanie z symbolami wieloznacznymi przy użyciu casex może ukrywać nieznane bity sterujące w symulacji, dlatego nie nadaje się do sytuacji, gdy nieznane wartości powinny pozostać widoczne podczas debugowania.

Odpowiedni fragment; otaczające deklaracje i połączenia są podane w wyzwaniu.

always @* begin
    y = 0;
    invalid = 0;
    case (op)
        0: y = a & b;
        1: y = a | b;
        default: invalid = 1;
    endcase
end

Nieobsługiwane kody powodują ustawienie jawnego statusu zamiast zachowania poprzedniego wyjścia.

Jawnie zdefiniuj nieobsługiwane kody sterujące i unikaj maskowania nieznanych kodów sterujących za pomocą casex.

challenge icon

Wyzwanie

Średni

Zaimplementuj 8-bitową jednostkę logiczną: op 0 oblicza a AND b, op 1 oblicza a OR b, op 2 oblicza a XOR b, a op 3 zwraca zero i ustawia invalid na jeden. Dla obsługiwanych operacji invalid ma wartość zero. Kolumny wyjściowe: y, invalid. Wszystkie wartości sygnałów wejściowych są znanymi wartościami binarnymi.

Uzupełnij design.v i zachowaj nazwy modułów oraz porty. Zablokowany testbench.v podaje zmiany sygnałów wejściowych 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, opóźnień ani kończenia symulacji. Oczekiwane wyjście to jeden wiersz wartości dziesiętnych dla każdej obserwacji, oddzielonych pojedynczą spacją i zakończonych znakiem nowej linii.

Spróbuj swoich sił

module dut (input [1:0] op, input [7:0] a, input [7:0] b, output reg [7:0] y, output reg invalid);
    // Zastąp ten kod zastępczy własnym projektem.
    initial y = 0;
    initial invalid = 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