Графический редактор MAX+Plus. Рисуем схему счетчика. Часть

Ну все, надеюсь, что трафика хватило, свет не вырубился, злобный вирус не пожрал все содержимое винчестера и у вас хорошее настроение. Значит - продолжим.
Открываем MAX+PLUS II - для этого надо запустить файлик max2win.exe в папке с программой.
Сегодня мы начнем рисовать очень простую схему - схему 4-разрядного двоичного счетчика. Мы нарисуем один элемент счетчика - счетный триггер, и проверим его работу на симуляторе.
Делаем так:
File>New
вываливается окошко

Соответственно, нам предлагают на выбор создать графический, символьный, текстовый или диаграммный файл. Выбираем первое - графический (Graphic Editor file).
Вываливается белоснежное оконце графического редактора. Вот именно в нем мы и будем рисовать. Два раза кликаем внутри этого окна. Появляется окошко "Enter Symbol".

В верхней строчке пишем "dff". Жмем OK.
Теперь окно перестало быть белоснежно-чистым. На нем появился элемент DFF.
DFF - это синхронный D-триггер (D-FlipFlop).Он выглядит примерно так:


Что такое триггер - надо объяснять?
Совершенно верно:
Триггер - это элемент, который может сохранять поданный на него логический уровень после снятия входного сигнала.
D-триггер имеет следующие выводы:
D - синхронный вход данных, состояние на котором "захлапывается" по фронту тактового сигнала,
Clk (обозначен треугольником) - вход тактового сигнала,
PRN - асинхронная установка триггера (в лог. 1),
CLRN - асинхронный сброс (в лог. 0),
Q - выход.

PRN и CLRN - инвертированные, то есть активное состояние на них - лог.0
По умолчанию они неактивны (на них поданы единицы).
Вот таблица истинности триггера DFF, выдранная из хелпа по Макс Плюсу:

H - это "1"
L - это "0"
X - это "пофиг что"
- фронт тактового сигнала
Q0 - состояние не изменяется
Illegal - неразрешенное состояние входов

Переходим к счетчикам.
Что такое счетчик? Это такой хитрый элемент, у которого один тактовый вход и несколько выходов. На выходах присутствует некая комбинация единиц и нулей - то есть, двоичное число. Это число равно количеству импульсов, поступивших на тактовый вход счетчика C.

Счетчик состоит из пачки счетных триггеров. Счетный триггер - это синхронный D-триггер, инверсный выход которого замкнут на вход данных. Таким образом, по каждому тактовому импульсу, состояние счетного триггера изменяется на противоположное.
Почему? Ну смотрим.
Допустим, сначала состояние триггера = 0. То есть, на прямом выходе - 0, на инверсном - 1. Значит, на вход данных D поступает 1. При следующем импульсе на тактовом входе, состояние D захлопнется в триггер. На прямом выходе появится 1, на инверсном - 0, и этот ноль поступит на вход D. При следующем такте ноль на D захлопнется в триггер и так далее…

Если составить их последовательно, то можно получить счетчик. Чем сейчас и займемся…
Итак, щелкнем еще раз по пустому месту и наберем "not".
Вывалится треугольник с кружочком на носу - элемент NOT, или, по-русски - инвертор.

Зачем он нам нужен?
А затем, чтоб создать инверсный выход триггера. Как видите, у DFF только один выход - прямой. Нас это не совсем устраивает. Так что, собираем все мужество в кулак, расставляем элементы как нам удобно - и рисуем схему. Для рисования схемы, на панели инструментов (слева) надо нажать на кнопочку


Рисуем…

Нарисовали:

Ну, теперь вводим еще два новых элемента: input и output.
Ввели? Здорово! Дорисовываем схему:

Дважды тыкнувшись мышой в слова PIN_NAME, вводим осмысленные названия для входа и выхода. Названия не могут начинаться с цифры и могут содержать только буквы латиницы и некоторые "разрешенные" символы. Мы обзовем вход CLK, а выход - Q1.

Итак, у нас образовалась схема счетного триггера со входом и выходом. Ее уже можно компилировать и прошивать в чип. Однако даже если вы уже спаяли макет и полны решимости испытать все в действии - не стоит спешить: чип недешевый, а гарантированных циклов перезаписи у него - всего ничего - 100. Так что, давайте ка лучше, сначала проверим это дело на симуляторе.
Но для начала неплохо сохранить файл.
File>Save, вводим имя - counter.

Файл будет называться: counter.gdf.
Теперь делаем так:
File>Project>Set Project to Current File - сделаем этот файл основным файлом проекта.
Затем нам надо скомпилировать схему. Выбираем:
MAX+plus II > Compiler
Вываливается окошко:

Жмем Start. Оно компилится. Если все правильно - компилятор говорит что все круто. Жмем ОК.
Все. Теперь можно составить график для симулятора. Для этого запускаем редактор графиков:
MAX+plus II > Waveform Editor

Два раза тыкаемся по пустому месту в графе Name или Value. Вываливается окно:

Нажимаем List - в окошке NodesGroups from SNF. Вываливается список всех выводов нашей схемы:
CLK (I)
Q1 (O).
Поставим сначала вход, то есть - CLK. Выделяем его, жмем OK - и он оказывается на графике. Точно так же вытащим теперь выход Q1.

Теперь выделяем вход CLK и нажимаем слева на кнопочку - "сгенерить тактовую частоту". Вывалится окно:

В нем нас спрашивают о начальном значении (Starting Value) и о том, через сколько линий сетки изменяется состояние сигнала. Сетка на графике обозначается серыми вертикальными пунктирными линиями. Ничего не трогаем и жмем OK.
Вот что получилось:

Теперь самое время сохранить файл. Сохраняем под тем же именем, что и графический файл - counter. Иначе ничего не получится.
Теперь идем: MAX+plus II > Simulator.

Жмем Start - симулятор быренько симулирует и говорит что все очень хорошо (или все плохо, зависит от расположения звезд). Смотрим в окошко редактора графиков (Waveform Editor). Что получилось:

Этот график наглядно демонстрирует работу счетного триггера: по фронтам входного сигнала, состояние выхода изменяется на противоположное. Как видите, момент изменения выхода отстает от фронта по входу примерно на 2,5 нс. Это - нормально. Это - задержка на распространение сигнала. Дело в том, что симулятор очень умный, и поэтому просчитывает даже такие "мелочи" как задержка.
Ну все! Радуемся. Идем на перекур.
В следующий раз мы составим схему ажно на четырех счетных триггерах и проверим ее работу на симуляторе.






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




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