كيف يمكنك التعامل مع حالة خاصة في نظام المنطق الرقمي هذا؟

StackOverflow https://stackoverflow.com/questions/486473

سؤال

لقد قمت بنشر هذا المخطط المنطقي الرقمي باعتباره إجابة ل سؤال آخر لتدفق المكدس.وهو يصف نظامًا منطقيًا سيتم ترميزه في Verilog أو VHDL وسيتم تنفيذه في النهاية في FPGA.

نص بديل http://img145.imageshack.us/img145/5125/bitshifterlogicdiagramkn7.jpg

تمثل المربعات المرقمة في الرسم التخطيطي وحدات بت في الحقل.كل حقل لديه ك بت، وبت ل حاضِر و قناع سيتم توفيرها بواسطة نظام كمبيوتر (باستخدام سجل مغلق أو ما يعادله).البتات في التالي ستتم قراءتها مرة أخرى في نفس نظام الكمبيوتر.

يعمل الحل الذي قمت بنشره طالما كان هناك مجموعة بت واحدة على الأقل في ملف قناع الحقل، وهناك بت واحد بالضبط تم تعيينه في حاضِر مجال قليلا.الفكرة هي أن التالي سيصبح حقل البت هو حاضِر bit بعد قيام نظام الكمبيوتر بأداء بعض المهام (عملية جدولة، في السؤال الأصلي).

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

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

أنظر أيضا: سؤال تدفق المكدس هذا

هل كانت مفيدة؟

المحلول

بالنسبة لي، أود أن أخبر مستخدم FPGA أنه يجب أن يكون لديه أحد البتات مضبوطًا على 1 عند الإدخال.

ومع ذلك، إذا لم يكن هذا هو الحل المفضل لديك، فما الخطأ في فكرة التغذية المسبقة لجميع المدخلات الحالية في البداية إلى بوابة NOR كبيرة (بحيث يكون الإخراج صحيحًا فقط عندما تكون جميع المدخلات خاطئة).تستمر جميع الخطوط الحالية أيضًا حتى بوابات AND الخاصة بها باستثناء أن التيار[1] يتم OR'ed مع مخرج بوابة NOR قبل الدخول إلى بوابة AND الخاصة بها

بهذه الطريقة، سيكون التيار[1] صحيحًا عند دخول بوابة AND، إذا كانت جميع التيارات خاطئة.

ضع في اعتبارك أنني أفهم الجبر المنطقي ولكني لم أعمل مطلقًا على الأجهزة الأولية - أعتقد أنك ستحتاج إلى تخزين جميع إشارات الإدخال مؤقتًا في بوابات AND لضمان التوقيت الصحيح ولكني أظن أنك ستعرف ذلك أفضل من أنا.

يتم ترك الرسم البياني التالي في حالة قيام SO بإصلاح التعليمات البرمجية/الكتل المسبقة الخاصة بها - يبدو أن آخر تحديث لـ SO قد حشوها (تاركًا خطًا متناسبًا وليس ثابت العرض).على أية حال، الرسم التخطيطي لـ eJames هو الأفضل.

هذا هو الرسم البياني الخاص بي، وهو أقل أناقة قليلاً من الرسم البياني الخاص بك :-):

               +-------------------+
               |                   |
               |     +----         |
Current[1]-----+------\   \        |
                       |NOR|o--+   |
Current[2-k]---+------/   /    |   |
               |     +----     |   |
               |              +\   /+
               |              | \_/ |
             +---+            |  OR |
              \ /Buffer        \   /
               +                ---
               |                 |
             +---+             +---+
             |2-k|             | 1 |    <- These signals feed 
             +---+             +---+       into your AND gates.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top