تصميم المُرسِل
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 89 من 90.
التحدي
في هذا الدرس، ستُكمل مُرسِل UART بإضافة shift register لإرسال أي بايت، وليس الحرف الثابت 'A' فقط.
يحمّل shift register الإطار الكامل (بت stop + 8 من data bits + بت Start) ثم يزيحه bit واحدًا في كل مرة.
تنسيق الإطار
| Stop (1) | Data (8 bits) | Start (0) |
|---|---|---|
| 1 | data_in | 0 |
على سبيل المثال، إذا كان data_in = 8'b01000001 (الحرف 'A')، يصبح shift register: 1 01000001 0
مهمتك
أُعطيتَ آلة الحالات من الدرس السابق (تُرسل بايتًا ثابتًا). تحتاج إلى تعديلها لإرسال أي بايت من دخل data_in.
ما يجب فعله:
- أضف
input [7:0]باسمdata_inإلى قائمة المنافذ (داخل الأقواس) - أضف
regمن 10-bit باسمshift_regخارج الأقواس (داخل جسم الوحدة، لأنه signal داخلي) - عندما يكون
cnt == 0وstart == 1:- حمّل
shift_regبالقيمة{1'b1, data_in, 1'b0}
- حمّل
- عندما تكون قيمة
cntبين 1 و8:- أرسل
tx <= shift_reg[0] - أجرِ إزاحة إلى اليمين:
shift_reg <= shift_reg >> 1
- أرسل
- عندما يكون
cnt == 9:- أرسل
tx <= shift_reg[0] - أجرِ إزاحة إلى اليمين:
shift_reg <= shift_reg >> 1
- أرسل
جرّب بنفسك
module uart_tx (
input clk,
input start, // NEW: إشارة البدء لبدء الإرسال
output reg tx, // NEW: خط الإخراج التسلسلي
output reg [3:0] cnt // أبقِه كمخرج للاختبار
);
initial begin
cnt = 0;
tx = 1; // NEW: اضبط tx على HIGH (حالة الخمول)
end
always @(posedge clk) begin
// NEW: منطق العداد مع شرط البدء
if (cnt == 0 && start) begin // NEW: ابدأ الإرسال
cnt <= 1;
end
else if (cnt > 0 && cnt < 9) begin // NEW: عُدّ أثناء الإرسال
cnt <= cnt + 1;
end
else if (cnt == 9) begin // NEW: أعد التعيين بعد البت الأخير
cnt <= 0;
end
end
endmoduleجميع دروس الأساسيات
4العوامل الجزء 1
العوامل الحسابيةعامل باقي القسمةعوامل المقارنةمراجعة - الرياضيات البسيطةالعوامل على مستوى البتات7التعيين والبوابات
التعيين المستمرالتعيين باستخدام العواملالعناصر الأساسية المدمجة للبواباتبوابات AND وOR وNOTبوابات XOR وXNORمراجعة - دائرة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الربطالمعامل الشرطيمراجعة - تحدي المعاملات11الحلقات التكرارية
حلقة Forحلقة Whileحلقة التكرارحلقة لا نهائيةتعليمة التعطيلمراجعة - أنماط الحلقات التكرارية3نظام الأعداد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ الإدخال والإخراج ثنائية الاتجاهإنشاء مثيل للوحدةربط المنافذ حسب الاسمربط المنافذ حسب الترتيبمراجعة - بناء وحدة9الكتل الإجرائية
كتلة Alwaysكتلة Initialقائمة الحساسيةإسناد حاجزإسناد غير حاجزمراجعة - Always مقابل Initial15متحكّم إشارات المرور
تعريف الحالاتمنطق آلة الحالاتتدرّب بنفسك: مترجم Verilog عبر الإنترنت