Menu
Coddy logo textTech

Powtórzenie — wyzwanie z operatorami

Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 29 z 90.

challenge icon

Wyzwanie

Uzupełnij kod, zapisując poprawne wyrażenia dla każdego zadania. To wyzwanie obejmuje wszystkie operatory z tego rozdziału.

Co zrobić:

  1. Logiczne: Sprawdź, czy zarówno value1, jak i value2 są różne od zera, i zapisz wynik w logic_out
  2. Redukcja: Sprawdź, czy wszystkie bity zmiennej vector mają wartość 1, i zapisz wynik w reduction_out
  3. Przesunięcie: Przesuń data w lewo o 2 bity i zapisz wynik w shift_out
  4. Konkatenacja: Połącz high i low w wartość 8-bitową i zapisz wynik w concat_out
  5. Warunkowe: Zapisz większą z wartości `a` i `b` w cond_out

Spróbuj swoich sił

module operator_challenge;
  reg [3:0] value1, value2;
  reg logic_out;
  
  reg [3:0] vector;
  reg reduction_out;
  
  reg [7:0] data;
  reg [7:0] shift_out;
  
  reg [3:0] high, low;
  reg [7:0] concat_out;
  
  reg [3:0] a, b;
  reg [3:0] cond_out;
  
  initial begin
    // Logiczne
    value1 = 4'd6;
    value2 = 4'd0;
    logic_out = ______;   // Sprawdź, czy zarówno value1, jak i value2 są różne od zera
    
    // Redukcja
    vector = 4'b1111;
    reduction_out = ______;   // Check if all bits of vector are 1
    
    // Shift
    data = 8'b00001111;
    shift_out = ______;   // Przesuń data w lewo o 2 bity
    
    // Konkatenacja
    high = 4'b1010;
    low = 4'b1100;
    concat_out = ______;   // Połącz high i low w 8-bitową wartość
    
    // Warunkowe
    a = 4'd7;
    b = 4'd12;
    cond_out = ______;   // Zapisz większą z wartości `a` i `b`
    
    $display("6 && 0 = %d", logic_out);
    $display("&4'b1111 = %d", reduction_out);
    $display("00001111 << 2 = %b", shift_out);
    $display("{1010, 1100} = %b", concat_out);
    $display("max(7, 12) = %d", cond_out);
    $finish;
  end
endmodule

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Verilog online