معالج TTA. الجزء الأول

مقدمة


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

سوف أعيدها إلى الحياة في برنامج بسيط لتجميع ومحاكاة الدوائر المنطقية والكهربائية - اختار Logisim ذلك بسبب بساطته وسهولة الوصول إليه ، في حالة التنفيذ الناجح ، من المخطط إعادة كتابته إلى Verilog .

عند القراءة من الأفضل لمس المشروع على الفور ، يمكن العثور عليه في نهاية المقالة.

كتلة التحكم


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

وبالتالي:



ذاكرة


لكي تتمكن وحدة التحكم من تنفيذ البرنامج ، يجب أن يتم تخزينه في مكان ما ، ستكون الذاكرة وحدة وظيفية ، أحد المخرجات التي سيتم توصيلها بناقل وحدة التحكم.

وبالتالي:


المدخل الأدنى هو إشارة على مدار الساعة ، وأقصى اليسار هو إدخال البيانات ، وأقصى اليسار هو بيانات الإخراج ، وهي أيضًا أوامر BU والأخيرة هي التي تعمل كعلم ، وتبلغ وصول البيانات. عند استلام البيانات ، يتم كتابتها على العداد ، مما يشير إلى الأمر الحالي ، مع كل نبضة ساعة ، يزداد العداد ، وتقوم وحدة التحكم بنقل البيانات من FU إلى أخرى.

فو بسيطة أخرى


إنشاء وحدات FU بسيطة تؤدي إجراءات الجمع والطرح الشائعة.
يبدو قالب FU على هذا النحو: عند الإدخال ، هناك تسجيلات 8 بت وفقًا لعدد المدخلات ، ويتم الكتابة عليها عند استلام البيانات. قد يحتوي الإخراج أيضًا على السجلات التي سيتم تخزين الإجابة فيها ، ولكن هذا ليس ضروريًا للمُعَلِّم.

وبالتالي ، سيبدو المُلتقط والطرح كما يلي:



جهاز منتهي


لنقم بتوصيل الذاكرة ووحدة التحكم ، وبعد ذلك سنحاول إنشاء وحدة تحكم جديدة وكتابة برنامج.
سيكون الزر بمثابة إشارة على مدار الساعة.

لذا فإن الاتصال:


الآن قم بتوصيل المُجمع والطرح ، بالإضافة إلى ثابتي إدخال:


كل شيء جاهز لكتابة برنامج ، سيقوم بتنفيذ تسلسل عادي من الإجراءات: أضف واحدًا إلى القيمة السابقة للمُصنِّف ، ثم انتقل إلى البداية عن طريق الانتقال النسبي (لهذا ، تم إجراء مطروح: 3).

لنكتب برنامج.

مبدئيًا ، تتم إعادة تعيين جميع السجلات ، لذلك لا فائدة من ذلك ، فالأمر الأول هو إرسال وحدة إلى أحد إدخالات المُصمم (In3 -> O2) ، وإرسال إخراج المُصنِّف إلى إدخاله الثاني (In1 -> O1) ، وإرسال عنوان الذاكرة الحالي إلى إدخال المُخرج (In0 -> O3) ، وإرسال تغيير العنوان إلى إدخال آخر للطرح ، سيتم طرحه (In4 -> O4) ، بعد أن يذهب الطرح إلى إدخال مؤشر العنوان ، وبالتالي إكمال الانتقال (In2 -> O0).

يبدو البرنامج كما يلي:

1. In3 -> O2
2. In1 -> O1
3. In0 -> O3
4. In4 -> O4
5. In2 -> O0

في الذاكرة:


هذا كل شئ. هذا البرنامج يعمل بشكل صحيح. أخطط لجعل المزيد من وحدات FUs وجعل اتصالها بوحدة التحكم أكثر ملاءمة ، بالمناسبة فإن وحدات FUs هي أجهزة ControlFlow. يمكنك أيضًا توصيل عدة وحدات تحكم معًا ، أي إنشاء شبكة من هذه الأجهزة.

شكرا للانتباه!

جيثب

All Articles