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

تسلسل البيانات والإشارة الصالحة

جزء من قسم تصميم RTL والتحقق منه في رحلة Verilog على Coddy. الدرس 18 من 38.

تُوزِّع خطوط الأنابيب العمل عبر المسجلات. تنتقل إشارة صلاحية بجانب كل عنصر بيانات، بحيث تتمكن مرحلة لاحقة من تمييز العيّنة عن الفقاعة. مع التعيينات غير الحاجزة، تقرأ مرحلة لاحقة القيمة السابقة لمرحلة أسبق عند الحافة نفسها. ينبغي أن يؤدي إعادة الضبط إلى إبطال العمل الجاري تنفيذه.

مقتطف ذو صلة؛ يتم توفير التصريحات والتوصيلات المحيطة في التحدي.

always @(posedge clk) begin
    stage <= data;
    stage_valid <= in_valid;
    result <= stage;
    out_valid <= stage_valid;
end

تنتقل البيانات وصلاحيتها عبر العدد نفسه من السجلات.

حاذِ البيانات والصلاحية عبر كل مرحلة من مراحل خط الأنابيب، وامسح حالة الصلاحية عند إعادة الضبط.

challenge icon

التحدي

متوسط

نفّذ خط أنابيب بمرحلتين من السجلات. عند كل حافة لا تكون حافة إعادة ضبط، تلتقط المرحلة الأولى a وin_valid. تستخدم المرحلة الثانية القيم السابقة للمرحلة الأولى: تصبح out_valid مساوية لقيمة الصلاحية القديمة، وتصبح y مساوية للبيانات القديمة زائد واحد بترديد 256 عندما تكون صالحة، وإلا فتصبح صفراً. تؤدي rst المتزامنة إلى مسح المرحلتين والمخرجات. أعمدة الإخراج: y وout_valid. تكون جميع عناصر التحكم والبيانات مستقرة قبل كل حافة ساعة صاعدة؛ وتتم ملاحظة النتائج بعدها.

أكمل design.v وحافظ على أسماء الوحدات ومنافذها. يزوّد testbench.v المقفل تغييرات الإدخال ويطبع المخرجات بعد استقرارها. ويختار سيناريو باستخدام وسيط للمحاكي مثل +CASE=1؛ ولا يلزم إدخال قياسي. لا تضف طباعة أو تأخيرات أو إنهاءً للمحاكاة إلى التصميم. يكون الإخراج المتوقع صفاً واحداً من القيم العشرية لكل ملاحظة، تفصل بينها مسافة واحدة وتنتهي بحرف سطر جديد.

جرّب بنفسك

module dut (input clk, input rst, input in_valid, input [7:0] a, output reg [7:0] y, output reg out_valid);
    // استبدل هذا العنصر النائب بتصميمك.
    initial y = 0;
    initial out_valid = 0;
endmodule
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس تصميم RTL والتحقق منه

تدرّب بنفسك: مترجم Verilog عبر الإنترنت