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

مراجعة - بناء وحدة

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

challenge icon

التحدي

يجمع هذا التحدي بين كل ما تعلمته في هذا الفصل. ستقوم بإنشاء وحدة (module) من الصفر وستقوم باستدعائها (instantiate).

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

الجزء الأول: قم بإنشاء وحدة تسمى <strong>flipflop</strong> تحتوي على:

  • مدخل بحجم 1 بت يسمى clk
  • مدخل بحجم 1 بت يسمى d
  • مدخل بحجم 1 بت يسمى reset
  • مخرج بحجم 1 بت يسمى q (استخدم reg، ويتم تعيين قيمته داخل بلوك always)

يجب أن تعمل الوحدة على النحو التالي:

  • عندما تكون قيمة reset هي 1، تصبح قيمة q هي 0
  • خلاف ذلك، عند كل حافة للساعة (clock edge)، تصبح قيمة q هي d

الجزء الثاني: قم باستدعاء وحدة <strong>flipflop</strong> داخل الوحدة <strong>top</strong> باستخدام ربط المنافذ بالاسم (port mapping by name)

قم بتوصيل المنافذ بالإشارات التالية:

  • المنفذ clk ← الإشارة clock
  • المنفذ d ← الإشارة data
  • المنفذ reset ← الإشارة reset_signal
  • المنفذ q ← الإشارة out

جرّب بنفسك

// الجزء 1: إنشاء وحدة flipflop

  // TODO: أضف المنافذ (ports)

  // TODO: أضف كتلة always مع posedge clk و posedge reset
  
  // إذا كان reset هو 1، فإن q <= 0
  
  // وإلا q <= d


// الجزء 2: الوحدة الرئيسية (Top module) مع الاستدعاء
module top (
  input clock,
  input data,
  input reset_signal,
  output out
);

  // TODO: قم باستدعاء flipflop مع تسمية النسخة ff1
  
  // استخدم ربط المنافذ بالاسم: .clk(clock), .d(data), .reset(reset_signal), .q(out)

endmodule

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