Как бы вы справились с особым случаем в этой цифровой логической системе?

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

Вопрос

Я опубликовал эту цифровую логическую схему в качестве ответ Для еще один вопрос stackoverflow.Он описывает логическую систему, которая будет закодирована в Verilog или VHDL и в конечном итоге реализована в FPGA.

альтернативный текст http://img145.imageshack.us/img145/5125/bitshifterlogicdiagramkn7.jpg

Пронумерованные поля на диаграмме представляют биты в поле.Каждое поле имеет K биты, и биты для текущий и маска будет обеспечиваться компьютерной системой (с использованием заблокированного регистра или его эквивалента).Биты в Далее будет считан обратно в ту же компьютерную систему.

Решение, которое я опубликовал, работает до тех пор, пока в маска поле, и в нем установлен ровно один бит текущий битовое поле.Идея заключается в том, что Далее битовое поле станет текущий битовое поле после того, как компьютерная система выполнила какую-либо задачу (операцию планирования, в исходном вопросе).

Итак, мой вопрос заключается в следующем:Как бы вы изменили эту систему, чтобы она должным образом обрабатывала особый случай, когда текущий все битовое поле равно нулю (биты не установлены)? В нынешнем виде, если все биты в текущий равны нулю, выходные данные также будут равны нулю, независимо от того, какие биты в маска установлены на.

В идеале, если текущий это все нули, самый младший установленный бит в маска должно быть установлено в Далее.Система также должна по-прежнему оставаться масштабируемой до любого количества битов (K) без необходимости добавлять экспоненциально больше логических элементов.Суть первоначального вопроса заключалась в том, чтобы придумать решение, которое было бы легко реализовать для любого количества битов.

Смотрите также: этот вопрос stackoverflow

Это было полезно?

Решение

Что касается меня, я бы сказал пользователю FPGA, что у них должен быть один из битов, равный 1 при вводе.

Однако, если это не ваше предпочтительное решение, что плохого в идее предварительной подачи всех текущих входных данных изначально в большой элемент NOR (чтобы выходные данные были истинными только тогда, когда все входные данные равны false).Все линии тока также продолжаются до их элементов AND, за исключением того, что ток [1] является OR'ed с выходом нашего элемента NOR перед входом в его элемент AND

Таким образом, ток [1] был бы истинным, входящим в элемент И, если все Токи ложны.

Имейте в виду, что я понимаю булеву алгебру, но я никогда не работал на необработанном оборудовании - я предполагаю, что вам нужно будет буферизировать все входные сигналы в элементы И, чтобы обеспечить правильную синхронизацию, но я подозреваю, что вы знаете это лучше, чем я.

Следующая диаграмма оставлена на случай, если SO исправит свой код / предварительные блоки - последнее обновление SO, похоже, наполнило их (оставив их пропорциональным шрифтом, а не шрифтом фиксированной ширины).В любом случае, графическая диаграмма Эджеймса лучше.

Вот моя схема, немного менее элегантная, чем ваша :-):

               +-------------------+
               |                   |
               |     +----         |
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