تخزين مصفوفة السجلات
جزء من قسم تصميم RTL والتحقق منه في رحلة Verilog على Coddy. الدرس 22 من 38.
يمكن لمصفوفة غير مُعبّأة أن تمثّل كلمات من ذاكرة الأجهزة. تُحدّث عملية كتابة متزامنة كلمةً واحدة محددة؛ بينما تحدد عملية قراءة مستمرة كلمةً من دون ساعة قراءة. قد ينفّذ التخليق المصفوفات الصغيرة باستخدام المسجلات أو يستنتج موارد ذاكرة للأنماط المدعومة. لا تفترض أبدًا أن كلمة لم تُكتب إليها تبدأ بالقيمة صفر.
مقتطف ذو صلة؛ يتم توفير التصريحات والتوصيلات المحيطة في التحدي.
reg [7:0] mem [0:3];
always @(posedge clk)
if(we) mem[waddr] <= data;
assign q = mem[raddr];تتم الكتابة بتحفيز الحافة، بينما تتبع القراءة الكلمة المخزنة المحددة.
حدّد تمكين الكتابة وتوقيت القراءة بشكل صريح؛ ولا تعتمد على محتويات الذاكرة initial غير المحددة.
التحدي
متوسطنفّذ أربع كلمات بحجم 8 بت. عند الحافة الصاعدة، تكتب we البيانات في mem[waddr]. تكون q قراءة توافقية غير متزامنة من mem[raddr]. لا تحتوي الذاكرة على إعادة ضبط أو محتويات initial؛ إذ يكتب testbench كل عنوان تتم ملاحظته قبل قراءته. تحدث الملاحظات بعد الحافة، ولذلك تكون الكتابة إلى العنوان نفسه ظاهرة في q. أعمدة الإخراج: q. تكون جميع عناصر التحكم والبيانات مستقرة قبل كل حافة صاعدة للساعة؛ وتتم ملاحظة النتائج بعد ذلك.
أكمل design.v وحافظ على أسماء الوحدات ومنافذها. يوفّر testbench.v المقفل تغييرات الإدخال ويطبع المخرجات بعد استقرارها. ويختار سيناريو باستخدام وسيط للمحاكي مثل +CASE=1؛ ولا يلزم إدخال قياسي. لا تضف طباعة أو تأخيرات أو إنهاءً للمحاكاة إلى التصميم. الناتج المتوقع هو صف واحد من القيم العشرية لكل ملاحظة، مفصولة بمسافة واحدة ومنتهية بسطر جديد.
جرّب بنفسك
module dut (input clk, input we, input [1:0] waddr, input [7:0] data, input [1:0] raddr, output [7:0] q);
// استبدل هذا العنصر النائب بتصميمك.
assign q = 0;
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس تصميم RTL والتحقق منه
1دوائر RTL التوافقية الموثوقة
القيم الافتراضية تمنع المزالجمشفّرات الأولويةالتحقق من One-Hotفك ترميز Case الآمنمراجعة - موجّه الطلبات4RTL تسلسلي متحكَّم فيه
أولوية إعادة الضبط والتمكينالعدادات التشبُّعيةتسلسل البيانات والإشارة الصالحةاكتشاف الحواف المُعايَنةمراجعة - عداد الأحداث7المشروع - مراقب العينات
تجميع العيناتقبول العينات المفعّلة2الأحجام والحساب الموقّع
الحفاظ على بتّات الحملالمقارنات الموقّعةالإزاحات الحسابية إلى اليمينالتجاوز والتشبّعمراجعة - الفرق الموقّع5الذاكرة وجداول البحث
جداول ROM التوافقيةتخزين مصفوفة السجلاتمنافذ القراءة المسجّلةتمرير القراءة والكتابةمراجعة - بنك القراءة المزدوجة3وحدات RTL قابلة لإعادة الاستخدام
دوال توافقيةمعلمات آمنة العرضحلقات التوليدالتوليد الشرطيمراجعة - قناع بتات قابل لإعادة الاستخدامتدرّب بنفسك: مترجم Verilog عبر الإنترنت