Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - تحدي المعاملات

جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 29 من 90.

challenge icon

التحدي

أكمل الكود بكتابة التعبيرات الصحيحة لكل مهمة. يغطي هذا التحدي جميع العوامل (operators) الواردة في هذا الفصل.

ما يجب القيام به:

  1. المنطقي (Logical): تحقق مما إذا كان كل من value1 و value2 غير صفريين، وقم بتخزين النتيجة في logic_out
  2. الاختزال (Reduction): تحقق مما إذا كانت جميع بتات vector هي 1، وقم بتخزين النتيجة في reduction_out
  3. الإزاحة (Shift): قم بإزاحة data لليسار بمقدار بتين، وقم بتخزين النتيجة في shift_out
  4. الدمج (Concatenation): ادمج high و low في قيمة واحدة بطول 8 بت، وقم بتخزينها في concat_out
  5. الشرطي (Conditional): قم بتخزين القيمة الأكبر بين `a` و `b` في cond_out

جرّب بنفسك

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
    // منطقي (Logical)
    value1 = 4'd6;
    value2 = 4'd0;
    logic_out = ______;   // التحقق مما إذا كان كل من value1 و value2 غير صفريين
    
    // الاختزال (Reduction)
    vector = 4'b1111;
    reduction_out = ______;   // Check if all bits of vector are 1
    
    // Shift
    data = 8'b00001111;
    shift_out = ______;   // إزاحة data لليسار بمقدار بتين (2 bits)
    
    // الدمج (Concatenation)
    high = 4'b1010;
    low = 4'b1100;
    concat_out = ______;   // دمج high و low في قيمة واحدة بطول 8 بت
    
    // الشرطي (Conditional)
    a = 4'd7;
    b = 4'd12;
    cond_out = ______;   // تخزين القيمة الأكبر من بين `a` و `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

جميع دروس الأساسيات