عداد البتات
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 87 من 90.
التحدي
في هذا الفصل، ستقوم ببناء مرسل UART خطوة بخطوة. UART ترمز إلى Universal Asynchronous Receiver-Transmitter (المستقبل والمرسل غير المتزامن العام). وهو بروتوكول أجهزة بسيط يسمح لجهازين بالتواصل باستخدام سلك واحد فقط (للإرسال) وسلك آخر (للاستقبال).
تخيل الأمر مثل شخصين يتحدثان عبر الهاتف — أحدهما يتحدث (يرسل)، والآخر يستمع (يستقبل). يقوم UART بإرسال البيانات بتًا واحدًا في كل مرة، مع وجود بتات بدء وتوقف لتمييز بداية ونهاية كل بايت.
يرسل مرسل UART عدد 10 بتات: بت البدء (1)، بتات البيانات (8)، وبت التوقف (1). لتتبع أي بت نقوم بإرساله، نحتاج إلى عداد بتات (bit counter) يعد من 0 إلى 10.
كيف يعمل عداد البتات
- يبدأ من 0
- في كل دورة ساعة، يضيف 1
- عندما يصل إلى 10، يعود إلى 0
- يكرر ذلك للأبد
في هذه المهمة، لن نقوم بتصفيره بعد: سنقوم فقط بزيادته.
ما يجب فعله:
- قم بإنشاء وحدة (module) تسمى
uart_txتحتوي على:- مدخل واحد:
clk - مخرج واحد:
cnt(4 بتات، من النوعreg)
- مدخل واحد:
- داخل الوحدة:
- اضبط
cntعلى 0 في البداية داخل بلوك initial - أضف بلوك
always @(posedge clk) - اجعل
cntيزداد بمقدار 1 عند كل حافة ساعة
- اضبط
جرّب بنفسك
// TODO: قم بإنشاء وحدة uart_tx بمدخل clk ومخرج cnt (4 بت)
// TODO: قم بتعيين cnt إلى 0 في البداية داخل كتلة initial
// TODO: أضف كتلة always @(posedge clk)
// TODO: قم بزيادة cntجميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة