Menu
Coddy logo textTech

Récapitulatif - Défi sur les opérateurs

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.

Ce qu'il faut faire :

  1. Logique : Vérifiez si value1 et value2 sont tous deux non nuls, et stockez le résultat dans logic_out
  2. Réduction : Vérifiez si tous les bits de vector sont à 1, et stockez le résultat dans reduction_out
  3. Décalage : Décalez data vers la gauche de 2 bits, et stockez le résultat dans shift_out
  4. Concaténation : Combinez high et low en une valeur de 8 bits, et stockez le résultat dans concat_out
  5. Conditionnel : Stockez la plus grande valeur entre `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érifier si value1 et value2 sont tous 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écaler data vers la gauche de 2 bits
    
    // Concaténation
    high = 4'b1010;
    low = 4'b1100;
    concat_out = ______;   // Combiner high et low en une valeur de 8 bits
    
    // Conditionnel
    a = 4'd7;
    b = 4'd12;
    cond_out = ______;   // Stocker la plus grande valeur entre `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