![]() |
![]() |
|||||||||||||||
Счетчик - часть 3. Апгрейд.
Автор: Итак, у нас уже есть счетчик. Но все что он пока что умеет - это считать. Его нельзя сбросить в нули, в его нельзя загрузить значение. Он ровным счетом ничего не умеет. Ну что ж - значит наша прямая обязанность - апгрейдить его. Чем мы сейчас и займемся. Апгрейд будет заключаться в добавлении следующих вещей:
Поехали.
Сначала приделаем к счетчику входы сброса. Чем различаются синхронный и асинхронный сбросы?
Синхронный - происходящий по фронту тактового импульса;
Думаем… Дополняем нашу схему: ![]() Напоминаю, что входы сброса - инвертированные. То есть, сброс происходит при подаче нуля. Ну теперь давайте сообразим с загрузкой. Тут уже не обойтись без мультиплексора. Мультиплексор - это "переключатель". То есть, у него много входов и один выход. В зависимости от заданного адреса, мультиплексор подключает к выходу соответствующий вход. В нашем случае, нужен мультиплексор на два 4-разрядных входа. Давайте его создадим.
Итак, товарищи творцы и созидатели - делаем раз: File>New>Graphic Editor File.
Восемь входов - это 4+4 (называем их соответственно D00…D03 и D10…D13) ![]() Рисуем таблицу истинности для 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 ![]()
Проверили. Ну, вроде все работает как надо. ![]() Вставляем его в схему… ![]()
Итак, теперь когда на входе PE - лог. 1,
сигнал на триггеры подается с элемента increment.
То есть, счетчик считает.
Еще один момент: мы кажется хотели сделать разрешение счета? Ну так значит нужен еще один мультиплексор.
Этот мультиплексор будет подавать на входы триггеров данные либо с инкрементора,
либо напрямую с выходов самих себя. Соответственно, в первом случае будет счет, во втором - не будет.
То есть, с каждым фронтом тактовой частоты триггеры будут хлопать в себя, себя же. ![]()
Когда на CE - лог.0, счета нет (сигнал берется напрямую с выходов триггеров),
Так. Осталось сделать только выход переполнения. Что это такое? ![]() Ну чего, ставим в схему : ![]() Ну вот, что хотели - соорудили. Теперь можно сделать это все символом. Компилируем, делаем. Получился вот такой симпатичный элементик: ![]() Это все на сегодня. Дальше будет хуже :) <<--Вспомним пройденное----Поехали дальше-->>
|
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |