Menu
Coddy logo textTech

Recapitulação - Desafio de Operadores

Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 29 de 90.

challenge icon

Desafio

Complete o código escrevendo as expressões corretas para cada tarefa. Este desafio cobre todos os operadores deste capítulo.

O que fazer:

  1. Logical: Verifique se both value1 e value2 são non-zero e armazene em logic_out
  2. Reduction: Verifique se all os bits de vector são 1 e armazene em reduction_out
  3. Shift: Desloque data para a left em 2 bits e armazene em shift_out
  4. Concatenation: Combine high e low into um valor de 8-bit e armazene em concat_out
  5. Conditional: Store o larger entre `a` e `b` em cond_out

Experimente você mesmo

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
    // Lógico
    value1 = 4'd6;
    value2 = 4'd0;
    logic_out = ______;   // Verifique se value1 e value2 são ambos diferentes de zero
    
    // Redução
    vector = 4'b1111;
    reduction_out = ______;   // Check if all bits of vector are 1
    
    // Shift
    data = 8'b00001111;
    shift_out = ______;   // Desloque data 2 bits para a esquerda
    
    // Concatenação
    high = 4'b1010;
    low = 4'b1100;
    concat_out = ______;   // Combine high e low em um valor de 8 bits
    
    // Condicional
    a = 4'd7;
    b = 4'd12;
    cond_out = ______;   // Armazene o maior entre `a` e `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

Todas as lições de Fundamentos