Как реализовать аппаратное обеспечение, которое запоминает предыдущее значение в дизайне цифровой логики?

Я пытаюсь разработать следующее:

  • Путь данных восьмеричного калькулятора, который имеет 24-битный входной регистр в регистре и 24-битный аккумулятор в соотв.
  • Содержимое обоих регистров отображается в виде восьми восьмеричных (основание-8) цифр. Оба очищаются при сбросе.
  • Калькулятор имеет кнопки C (очистить), цифры 0-7 и функции +, - и x. Однократное нажатие C очищает рег.
  • Нажатие C во второй раз без других промежуточных клавиш сбрасывает соотв. Нажатие числа сдвигает в reg на три бита влево и помещает нажатое число в младшие три бита.
  • Нажатие функции выполняет эту функцию в двух регистрах и помещает результат в соотв. Нарисуйте блок-схему из пути данных этого калькулятора.

Что у меня есть до сих пор:

  • триггеры reg_in и acc, с одинаковыми часами и сбросом
  • ALU (выполнение функциональных операций), принимающий входные данные от in_reg и acc и выводящий обратно в in_reg, управляемый сигналом ALUselect
  • регистр сдвига, чтобы сдвинуть входные биты на 3 и поместить их обратно в reg_in

Однако часть, на которой я застрял, заключается в том, как реализовать часть «нажатие C». Какой выбор дизайна я могу сделать, что позволит мне очистить reg_in, если C нажата один раз, и очистить acc, если C снова нажата? Я хочу найти более простой метод, чем использование счетчика.

Любая помощь приветствуется!


person ce1    schedule 21.02.2018    source источник


Ответы (1)


Дополнительный однобитовый регистр должен решить проблему. Назовем его last_button.

  • Установите last_button на 1, если нажата C, а last_button ранее было 0.
  • Установите last_button на 0, если нажата другая кнопка.
  • Если last_button становится 0 при нажатии C, очистите reg_in.
  • Если last_button становится 1 при нажатии C, очистите acc.
  • В случае, если acc очищен, также очистите last_button до 0.

Вы можете предположить, что эта логика представляет собой машину Мили с двумя состояниями, тогда last_button является сигналом состояния. Кнопка C всегда переключает состояние, другие кнопки устанавливают состояние на ноль. Выходы (очистить reg_in/acc) машины зависят как от входов (кнопок), так и от текущего состояния.

person Community    schedule 21.02.2018