محاكاة وحدة المعالجة المركزية Learn-Fixing CPU

author
0 minutes, 23 seconds Read

آخر مرة نظرت إليها بمعالج RISC 16 بت بسيط يهدف إلى الطلاب. كان يحتاج إلى القليل من المساعدة في الوثائق وكذلك لديه ملف مفقود، ومع ذلك، فقد تمكنت من الحصول عليها لمحاكاة استخدام أداة مجانية على أداة الإنترنت تسمى ODA Playground. هذه المرة، سأطلبك مع تفاصيل التعليمات البرمجية وكذلك كيفية تشغيل المحاكاة بالضبط.

سترغب في الرجوع إلى النشر السابق إذا لم تسحبها بالفعل. توفر المخططات وكذلك الجداول نظرة عامة رفيعة المستوى سيساعدك في فهم الملفات التي تمت مناقشتها في هذا المنشور.

إذا كنت ترغب في برمجة هذا حقا على FPGA حقيقي، فستكون لديك القليل من العمل للقيام به. يتم تنفيذ الذاكرة بالإضافة إلى تهيئة التسجيل بطريقة تعمل بشكل جيد للمحاكاة، ومع ذلك لن تعمل على FPGA حقيقي. على أي حال، دعنا نبدأ!

ملف ملف

إذا كنت تأخذ كل بيانات على حدة، فلا من الصعب فهم أي منها. إليك تشغيل سريع (أستخدم أسماء البيانات، سأستفيد في محاكاة الإنترنت الخاصة بي):

Parameter.v – هذا يشبه بيانات تضمين تحدد بعض التعريفات الأساسية لكل ملف آخر.

prog.v – هذه هي ذاكرة الاتجاه. وحدة بسيطة، فإنه يأخذ عنوان وكذلك يقدم البيانات لهذا العنوان. يقرأ توجيه LeadMemb $ البيانات من البيانات (Test.Prog).

تسجيل.V – ملف التسجيل. هذا يشبه ذاكرة الاتجاه تقريبا، بل لديه اثنين من المنافذ التي تم فحصها وكذلك يمكنك تكوينها.

data.v – ذاكرة الوصول العشوائي. هذا مثل السجلات تقريبا، مهما أكبر وكذلك مع منفذ خارج واحد. هناك بعض رمز المحاكاة الذي يفتح بيانات بالإضافة إلى طباعة تعليقات الذاكرة، ومع ذلك فقد حذفت أنه كما كان فقط لتصحيح الأخطاء. يأتي المحتوى الأولية من ملف Test.Data.

alu.v – هل تعتقد أن هذا سيكون معقدا، ولكن ليس كذلك. يتطلب الأمر مجرد مدخلتين وكذلك يفعل شيئا ما لإنتاج الإخراج. شيء بسيط مثل يضيف أو يطرح. دائما @ (*) يخبر فيريلوج بعدم إنتاج المنطق المسجلات لهذا. يتحول فقط إلى بعض البوابات البسيطة وكذلك muxes.

DataPath_Unit.v – هذا هو واحد من الملفات الأكثر تعقيدا، على الرغم من أنه إذا قمت بحفر فيه، فسترى أنه سائما بشكل أساسي. تنتج هذه البيانات جميع الموارد (مثل السجلات وكذلك الذكريات) وكذلك الأسلاك معا.

Control_Unit.v – وحدة واحدة أطول، وهذا ينفذ فقط جدول الاتجاه، تعيين خطوط التحكم بناء على التعليمات الحالية.

alucontrol.v – هذه البيانات ترميز تعليمات ألو. كان مفقودا على المشاركة الأصلية. من الغريب، هناك وحدة المعالجة المركزية الأخرى مماثلة على نفس الموقع بالضبط يحتوي على ملف Alucontrol، ومع ذلك فمن الواضح أنه لمجموعة اتجاه مختلفة. ومع ذلك، بدءا من الحفاظ على هذه البيانات وكذلك استخدام جدول الأنماط، كنت قادرا على إعادة إنشاء ذلك. إذا كان [FPGA4STudents] يصحح هذا، فقد تبدو الملفات مختلفة للغاية.

Design.SV – هذه البيانات مطلوبة لمحاكاة Edaplayground أنا أستخدمها. أنه يحتوي على عناصر المستوى الأعلى (مسار البيانات وكذلك وحدة التحكم). نظرا لأن Edaplayground تقوم فقط بمعالجة هذا الملف، فمن الضروري إدراج الملفات الأخرى المذكورة أعلاه. هذا يسبب بعض التحذيرات لأن كل واحد منهم لديه توجيهات زمنية، ولكن هذا غير ضار.

testbench.sv – the testbench ليس جزءا من التصميم الحقيقي، ومع ذلك فقط يضع المحاكاة وكذلك يجمع النتائج. اضطررت إلى تعديلها قليلا للعمل مع Edaplayground، ومع ذلك العملية هي نفسها. إنها تنتج فقط وحدة المعالجة المركزية، وتغذيها على مدار الساعة، وكذلك تتيح لها تشغيل لفترة من الوقت. برنامج الاختبار وكذلك محتويات الذاكرة موجودة في Test.Prog بالإضافة إلى Test.Data.

محاكاة

يمكنك عمل احد هذه الاشياء. يمكنك فتح نسختي من النمط الجاهز للذهاب، ومع ذلك فقد قد لا يكون خيار أفضل. أقترح عليك فقط الذهاب إلى Edaplayground وإنتاج مشروع Verilog جديد. ثم ابدأ في نقل الملفات من المشاركة الأصلية. سوف تعمل في أخطاء وكذلك الملفات المفقودة. انظر بالضبط كم يمكنك إصلاح. إذا تعطلت، فيمكنك الاستفادة من نسختي لمساعدتك إذا تعطلت. سوف تكتشف المزيد من هذه الطريقة.

إذا اخترت تجربة ذلك، فإن هنا نصائح قليلة حول Edaplayground. لا تتطلب UVM / OVM المحدد، ولا تتطلب أي نوع من المكتبات الأخرى. استخدمت ICARUS VERILOG 0.9.7، ولكن قد تستخدم على الأرجح أي نوع من أدوات Verilog المتاحة. تريد أن تفقد خانة الاختيار Epwave بالإضافة إلى متطلبات إضافة هذا إلى الجزء الداخلي من Testbench:

مبدئي
يبدأ
Dumpfile $ (“dump.vcd”)؛
dumpvvars $
استخدم إشارة + بجانب علامات التبويب “اسم البيانات” لإجراء ملفات جديدة. يحتوي Edaplayground على حد عشرة ملفات لكل جزء. تذكر أنه يجب عليك تضمين أي نوع من ملفات .v التي تنتجها في أي testbench.sv أو design.sv. لا تتطلب متطلبات تضمين ملفات البيانات لأن الملفات الأخرى تستخدمها بشكل غير مباشر.

يركض!

بمجرد حصولك على كل الأخطاء، يمكنك الضغط على تشغيل بالإضافة إلى ستحصل على عارض الموجي، Epwave. أنت هافE لإضافة إشارات من معدل الفائدة حتى تتمكن من مشاهدة وحدة المعالجة المركزية في العمل. سيكون من الممتع إضافة بعض أجهزة الإدخال / الإخراج في الذاكرة أو بعض منافذ تصحيح الأخطاء حتى تتمكن من مشاهدة الأشياء أفضل قليلا. عادة ما أشاهد عداد البرنامج بالإضافة إلى تسجيل منفذ تأليف للحصول على مفهوم ما يحدث في الداخل.

كان الرمز الأصلي برنامجا يمارس الكثير من التعليمات. لقد علقت عليها وكذلك استبدالها بهذا:

0000_0100_0000_0000 // 0000: طن R0 <- MEM (R2 + 0) منذ R2 = 0 هذا يضع 1 في R0 0000_0100_0100_0000 / 0002: tons بالضبط نفسه في R1 (R1 سوف يحتوي دائما على 1) / / ضع 8 (بايت)، 4 (كلمة): 0010_0000_0101_0000 //0004: r2 = r0 + r1 0001_0010_1000_0000 //0006: mem [r1] = r2 (أي ميم [1] = r2 0000_0010_0000_0000 //0008: R0 = MEM [R1] 1101_0000_0000_0011 / 000A: القفز إلى مكان # 4 (وحدة المعالجة المركزية مضاعفة بنسبة 2 وكذلك إضافة 2) // لا اتجاه في 000C، ولكن الكمبيوتر سوف يتعطل هناك أثناء قيامه بالقفز يجب أن تكون قادرا على الامتثال للقيمة المتزايدة التي تتألف إلى الذاكرة بالإضافة إلى مشاهدة دورة مكافحة البرنامج مرة أخرى إلى وضع 4 مع كل حلقة. إليك جلسة نموذجية: لقد تركت الكثير من الإشارات الداخلية، ولكن يمكنك أن ترى أن عنوان الذاكرة 1 يتم تعيينه على 2 وكذلك ثم إلى 3 في أول تكرير للحلقة الأولى. نهاية اللعبة هل هذا وحدة المعالجة المركزية الأكاديمية كبيرة؟ لست واثق. بعض وحدات المعالجة المركزية الأكثر بساطة موجودة، ومع ذلك فهي في كثير من الأحيان القليل لأنها صعبة أو أنها غير عملي للغاية. أي شيء أكثر تحديا من هذا هو على الأرجح أكثر من اللازم لدغة المبتدئين. بينما أعتقد أنه يجب أن يكون لديك بعض فهم فيريلوج أساسي قبل معالجة شيء مثل هذا، فإن الوثائق كانت متناثرة قليلا (ومربكة) في بعض المناطق. من الواضح أنه كان كافية كبيرة منذ أن وصلت إليه، ولكن إذا كنت قد بدأت للتو، فمن المرجح أن تقدر المزيد من المساعدة بالإضافة إلى التفسيرات. هل لديك وحدة المعالجة المركزية الأكاديمية الفيريمية المفضلة؟ ما زلت أبحث عن هذا الشخص الذي هو "صحيح تماما".

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *