تصميم المرسل
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 89 من 90.
التحدي
في هذا الدرس، ستكمل جهاز إرسال UART عبر إضافة سجل الإزاحة (shift register) لإرسال أي بايت، وليس فقط الحرف الثابت 'A'.
يقوم سجل الإزاحة بتحميل الإطار الكامل (بت التوقف stop + 8 بتات للبيانات data + بت البدء start) وإزاحته لإرساله بتًا تلو الآخر.
تنسيق الإطار (Frame Format)
| Stop (1) | Data (8 bits) | Start (0) |
|---|---|---|
| 1 | data_in | 0 |
على سبيل المثال، إذا كان data_in = 8'b01000001 (الحرف 'A')، يصبح سجل الإزاحة: 1 01000001 0
مهمتك
يتم تزويدك بآلة الحالة (state machine) من الدرس السابق (والتي تقوم بإرسال بايت ثابت). عليك تعديلها لإرسال أي بايت يتم إدخاله عبر data_in.
ما يجب عليك فعله:
- أضف
input [7:0]باسمdata_inإلى قائمة المنافذ (port list) (داخل الأقواس) - أضف
regبحجم 10-bit باسمshift_regخارج الأقواس (داخل جسم الـ module، لأنه signal داخلي) - عندما يكون
cnt == 0وstart == 1:- قم بتحميل
shift_regبـ{1'b1, data_in, 1'b0}
- قم بتحميل
- عندما يكون
cntبين 1 و 8:- قم بإرسال
tx <= shift_reg[0] - قم بالإزاحة لليمين (shift right):
shift_reg <= shift_reg >> 1
- قم بإرسال
- عندما يكون
cnt == 9:- قم بإرسال
tx <= shift_reg[0] - قم بالإزاحة لليمين (shift right):
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المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة