Счетчик - часть 3. Апгрейд.

Итак, у нас уже есть счетчик. Но все что он пока что умеет - это считать. Его нельзя сбросить в нули, в его нельзя загрузить значение. Он ровным счетом ничего не умеет. Ну что ж - значит наша прямая обязанность - апгрейдить его. Чем мы сейчас и займемся.
Апгрейд будет заключаться в добавлении следующих вещей:
Вход синхронного и асинхронного сброса (R и SR) Вход разрешения счета E Входы параллельной синхронной загрузки данных D[3..0], PE Выход переполнения Ovf Поехали.
Сначала приделаем к счетчику входы сброса.
Открываем файл counter.gdf.
Вызываем элемент input. Обзываем его R - это будет асинхронный сброс.
Вызываем input еще раз (или копируем существующий), обзываем его SR. Это будет синхронный сброс.
Чем различаются синхронный и асинхронный сбросы?
Синхронный - происходящий по фронту тактового импульса;
Асинхронный - происходящий в любой момент времени, не зависимо от тактового сигнала.
Думаем…
Асинхронный сброс присобачить проще простого. На триггере DFF есть входы асинхронного сброса. Синхронный - его можно организовать, подав на входы всех триггеров нули. Поскольку у нас на входы уже идут сигналы с элемента increment, то подавать нули мы будем посредством элемента "И".
Дополняем нашу схему:

Напоминаю, что входы сброса - инвертированные. То есть, сброс происходит при подаче нуля.
Ну теперь давайте сообразим с загрузкой. Тут уже не обойтись без мультиплексора.
Мультиплексор - это "переключатель". То есть, у него много входов и один выход. В зависимости от заданного адреса, мультиплексор подключает к выходу соответствующий вход.
В нашем случае, нужен мультиплексор на два 4-разрядных входа. Давайте его создадим.
Итак, товарищи творцы и созидатели - делаем раз: File>New>Graphic Editor File.
Делаем два: вытаскиваем на свет божий 9 входов и 4 выхода.
Можно вытащить один вход и один выход, а потом накопировать сколько угодно любимой комбинацией плагиатора (Ctrl+C - Ctrl+V). Или, просто таская элементы с зажатой клавишей Ctrl.
Восемь входов - это 4+4 (называем их соответственно D00…D03 и D10…D13)
Девятый вход - адресный - A0. Если на нем 0 - подключается группа входов D0, если 1 - D1. Тут все понятно.
Выходы - Q0…Q3. Нарисовали…

Рисуем таблицу истинности для 2 входов и 1 выхода.
D0.0 D1.0 A0 | Q0 -------------|--- 1. 0 0 0 | 0 2. 0 0 1 | 0 3. 0 1 0 | 0 4. 0 1 1 | 1 5. 1 0 0 | 1 6. 1 0 1 | 0 7. 1 1 0 | 1 8. 1 1 1 | 1 Во-общем то и без нее все было ясно. Рисуем:

Нарисовали? Сохраняем файл под именем mux_2x4.gdf
Ставим на этот файл текущий проект (Set Project to Current File) - для того чтобы скомпилировать и проверить работу.
Компилируем. Проверяем на Waveform Editor'е…

Проверили. Ну, вроде все работает как надо.
Создаем символ (Create default symbol). Закрываем, возвращаемся к схеме счетчика. Сразу ставим на нее проект, а то забудем. Вызываем символ mux_2x4.
Вставляем его в схему…

Итак, теперь когда на входе PE - лог. 1, сигнал на триггеры подается с элемента increment. То есть, счетчик считает.
Когда на PE - 0, триггеры подключаются к входу данных D3..0.
Еще один момент: мы кажется хотели сделать разрешение счета? Ну так значит нужен еще один мультиплексор. Этот мультиплексор будет подавать на входы триггеров данные либо с инкрементора, либо напрямую с выходов самих себя. Соответственно, в первом случае будет счет, во втором - не будет. То есть, с каждым фронтом тактовой частоты триггеры будут хлопать в себя, себя же.
Нарисую только ту часть схемы, в которой произошли изменения:

Когда на CE - лог.0, счета нет (сигнал берется напрямую с выходов триггеров),
когда лог.1 - сигнал идет с инкремента - счет есть.
Так. Осталось сделать только выход переполнения. Что это такое?
На выходе переполнения появляется сигнал, когда счетчик досчитывает до максимального значения. У 4-разрядного счетчика может быть только 2^4 = 16 значений. От 0 до 15. То есть, 15 - это максимальное значение. Значит, нам надо навертеть такую схему, которая будет выдавать единицу только на число 15.
В двоичное с.с. 15 - это 1111. Путем неимоверных умственных усилий можно понять, что с поставленной задачей с легкостью справится один-единственный элемент И на 4 входа. Называется он and4.
Ну чего, ставим в схему :
Ну вот, что хотели - соорудили. Теперь можно сделать это все символом. Компилируем, делаем.
Получился вот такой симпатичный элементик:

Это все на сегодня. Дальше будет хуже :)






Рекомендуемый контент




Copyright © 2010-2019 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.