مسجل الإزاحة
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 86 من 90.
التحدي
يقوم سجل الإزاحة (shift register) بإزاحة البيانات من اليسار إلى اليمين مع كل حافة لرمز الساعة (Clock). ينتقل كل بت إلى الموقع التالي.
كيف يعمل سجل الإزاحة بـ 4 بتات
Initial: q0=0, q1=0, q2=0, q3=0
Clock 1: q0 = d, q1 = old q0, q2 = old q1, q3 = old q2
Clock 2: q0 = d, q1 = old q0, q2 = old q1, q3 = old q2بعد 4 دورات لرمز الساعة (Clock)، يصل بت الإدخال الأول إلى q3.
واجهة وحدة النظام (Module Interface)
| Port | Direction | Width | Description |
|---|---|---|---|
clk | input | 1 bit | إشارة Clock |
reset | input | 1 bit | إعادة ضبط جميع المخرجات إلى 0 |
d | input | 1 bit | إدخال البيانات (Data input) |
q0 | output | 1 bit | مخرج المقلب (flip-flop) الأول |
q1 | output | 1 bit | مخرج المقلب الثاني |
q2 | output | 1 bit | مخرج المقلب الثالث |
q3 | output | 1 bit | مخرج المقلب الرابع |
مهمتك هي إكمال وحدة النظام أدناه.
ما يجب عليك فعله:
- عند إشارة
reset، قم بضبط جميع المخرجات على 0 - عند كل حافة صاعدة لرمز الساعة (Clock)، قم بإزاحة البيانات من اليسار إلى اليمين:
q0يأخذ قيمةdq1يأخذ قيمةq0السابقة (oldq0)q2يأخذ قيمةq1السابقة (oldq1)q3يأخذ قيمةq2السابقة (oldq2)
جرّب بنفسك
module shift_register (
input clk,
input reset,
input d,
output reg q0,
output reg q1,
output reg q2,
output reg q3
);
// TODO: أضف always @(posedge clk or posedge reset)
// عند reset: q0<=0, q1<=0, q2<=0, q3<=0
// وإلا: إزاحة البيانات: q0 <= d, q1 <= q0, q2 <= q1, q3 <= q2
endmodule
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة