Я пытаюсь разработать следующее:
- Путь данных восьмеричного калькулятора, который имеет 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 снова нажата? Я хочу найти более простой метод, чем использование счетчика.
Любая помощь приветствуется!