РадиоКот :: Графический редактор MAX+Plus. Рисуем схему счетчика. Часть 1.
Например TDA7294

РадиоКот >Обучалка >Микроконтроллеры и ПЛИС >Программируемая логика Altera - первые шаги >

Теги статьи: Добавить тег

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

Автор:
Опубликовано 18.10.2005

Ну все, надеюсь, что трафика хватило, свет не вырубился, злобный вирус не пожрал все содержимое винчестера и у вас хорошее настроение. Значит - продолжим.

Открываем 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 - неразрешенное состояние входов

Переходим к счетчикам.

4-разрядный чсетчик

Что такое счетчик? Это такой хитрый элемент, у которого один тактовый вход и несколько выходов. На выходах присутствует некая комбинация единиц и нулей - то есть, двоичное число. Это число равно количеству импульсов, поступивших на тактовый вход счетчика 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 - в окошке Nodes&Groups from SNF. Вываливается список всех выводов нашей схемы:

CLK (I)
Q1 (O).

Поставим сначала вход, то есть - CLK. Выделяем его, жмем OK - и он оказывается на графике. Точно так же вытащим теперь выход Q1.


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


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

Вот что получилось:


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

Теперь идем: MAX+plus II > Simulator.


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


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

Ну все! Радуемся. Идем на перекур.
В следующий раз мы составим схему ажно на четырех счетных триггерах и проверим ее работу на симуляторе.

<<--Вспомним пройденное----Поехали дальше-->>




Как вам эта статья?

Заработало ли это устройство у вас?

12 0 0
4 0 0