Menu
Coddy logo textTech

Recap - Operator Challenge

Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 29 sur 90.

challenge icon

Défi

Complétez le code en écrivant les expressions correctes pour chaque tâche. Ce défi couvre tous les opérateurs de ce chapitre.

À faire :

  1. Logical : Vérifiez si both value1 et value2 sont non nuls, puis stockez le résultat dans logic_out
  2. Reduction : Vérifiez si all les bits de vector valent 1, puis stockez le résultat dans reduction_out
  3. Shift : Décalez data de 2 bits vers la gauche, puis stockez le résultat dans shift_out
  4. Concatenation : Combinez high et low into une valeur de 8 bits, puis stockez le résultat dans concat_out
  5. Conditional : Stockez larger de `a` et `b` dans cond_out

Essayez vous-même

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
    // Logique
    value1 = 4'd6;
    value2 = 4'd0;
    logic_out = ______;   // Vérifie si value1 et value2 sont tous les deux non nuls
    
    // Réduction
    vector = 4'b1111;
    reduction_out = ______;   // Check if all bits of vector are 1
    
    // Shift
    data = 8'b00001111;
    shift_out = ______;   // Décale data de 2 bits vers la gauche
    
    // Concaténation
    high = 4'b1010;
    low = 4'b1100;
    concat_out = ______;   // Combine high et low en une valeur de 8 bits
    
    // Conditionnel
    a = 4'd7;
    b = 4'd12;
    cond_out = ______;   // Stocke le plus grand de `a` et `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

Toutes les leçons de Fondamentaux

Entraînez-vous par vous-même : Compilateur Verilog en ligne