Один важный момент! После совершения операции записи
или чтения DDRAM и появления после нее признака готовности (BF = 0),
прочитанное в этом же цикле (вместе с флагом BF) значение АС, скорее всего не
будет достоверным. Дело в том, что между появлением признака готовности и
вычислением контроллером нового значения АС существует некоторый временной
интервал, составляющий около 4 мкс при тактовой частоте контроллера 270 кГц.
Поэтому, если необходимо получить истинное значение АС, нужно совершить
повторную операцию прочтения IR спустя не менее чем 4 мкс (если контроллер
работает на частоте 270 кГц время ожидания необходимо пропорционально
увеличить).
Вывод на экран символа производится записью его кода в
регистр DR. При этом символ размещается в DDRAM по текущему адресу,
указываемому АС, а значение АС увеличивается или уменьшается на 1. Чтобы
произвести переустановку курсора на нужную позицию, необходимо присвоить АС
соответствующее значение (см. таблицу 2.4.9). Здесь есть одна тонкость. Когда
производится последовательная запись символов и в результате заполняется вся
строка, курсор автоматически переходит на вторую строку, но если необходимо
принудительно установить курсор, скажем, на начало второй строки, то будет
неверным присвоить АС казалось бы логичное значение (40), правильным является
значение (64). Значения адресов DDRAM в диапазоне ...fF (а равно и ...F)
являются неопределенными и результаты работы с ними могут быть
непредсказуемыми.
Необходимо учитывать, что контроллеры, устанавливаемые
на ЖКИ-модули, могут иметь различные наборы символов, причем это может зависеть
как от производителя контроллера, так и от модификации данной конкретной
модели. Например, фирма Powertip выпускает ЖКИ-модули с четырьмя базовыми
модификациями наборов символов: японской, европейской, французской и русской.
Более того, существует как минимум два варианта
русского набора символов: контроллер фирмы Hitachi (H2 по маркировке фирмы
Powertip) и контроллер фирмы Epson (EH по маркировке Powertip). Контроллер
фирмы Hitachi обладает существенным недостатком - у него весьма ограниченный
набор русских символов, фактически у него имеются только прописные русские
буквы, и даже среди них отсутствует символ "Ф". Напротив, контроллер
фирмы Epson содержит полный набор русских символов в прописном и строчном
вариантах, поэтому он весьма удобен для отечественных применений. Это свойство
контроллеров фирмы Epson обеспечило им заслуженную популярность на российском
рынке, поэтому в последнее время основная масса импортируемых в нашу страну
ЖКИ-модулей оснащены именно этим контроллером; в качестве примера в таблице 2.4.10
приведен набор символов этого контролера.
Таблица 2.4.10.Таблица кодов символов контроллера
Epson набор "Russian"
Из допустимых для размещения в DDRAM кодов символы с
кодами <--DESCRIPTION-->0...7 (и их дубликат с кодами
8...<--DESCRIPTION-->F) имеют специальное назначение - это
переопределяемые символы, графическое изображение которых может назначить сам
потребитель, разместив соответствующую информацию в области CGRAM. Для
программирования доступны 8 переопределяемых символов в режиме с матрицей 5 х 7
точек и 4 с матрицей 5 х 10 (в режиме 5 х 10 переопределяемые символы
адресуются кодами DDRAM через один: <--DESCRIPTION-->0, 2, 4, 6). Для
кодирования матрицы используются горизонтально "уложенные" байты,
пять младших битов которых несут информацию о рисунке (причем 1 означает, что
сегмент будет включен), 4-й разряд каждого из 8-ми (или 11-ти в режиме 5 х 10)
байтов матрицы определяет левую колонку символа, а 0-й - правую. Старшие три
бита не используются, равно как и старшие пять байтов, составляющих полную
область матрицы символа (16 байтов) в режиме 5 х 10 (обратите внимание, что
матрица программируемых символов допускает использование полной высоты строки
(8 строчек для режима 5 х 7 и 11 строчек для режима 5 х 10), то есть можно
размещать точки в области подчеркивающего курсора).
Чтобы определить собственный символ необходимо
установить счетчик АС на адрес начала матрицы требуемого символа в CGRAM -
<--DESCRIPTION-->0, 8, и т.д. (<--DESCRIPTION-->0, , для режима 5 х
10 точек) - произвести перезапись всех байтов матрицы, начиная с верхней
строки. После этого, записав в DDRAM код запрограммированного символа:
<--DESCRIPTION-->0, 1, 2 (<--DESCRIPTION-->0, 2, 4 для режима 5 х
10 точек), на экране в соответствующем месте будет отображаться
переопределенный символ.
Несколько слов о процессе инициализации ЖКИ-модуля.
Производитель контроллера рекомендует выполнять следующую последовательность
действий для инициализации. Выдержать паузу не менее 15 мс между установлением
рабочего напряжения питания (> 4,5 В) и выполнением каких-либо операций с
контроллером. Первой операцией выполнить команду, выбирающую разрядность шины
(это должна быть команда независимо от того, какой разрядности интерфейс вы
собираетесь использовать в дальнейшем), причем перед выполнением этой операции
не проверять значение флага BF. Далее опять выдержать паузу не менее 4,1 мс и
повторить команду выбора разрядности шины, причем перед подачей команды вновь
не производить проверку флага BF. Следующим шагом необходимо вновь выдержать
паузу, на этот раз 100 мкс, и в третий раз повторить команду установления
разрядности шины, вновь без проверки BF. Эти три операции являются
инициализирующими и призваны вывести контроллер в исходный режим работы (то
есть перевести в режим работы с 8-ми разрядной шиной) из любого состояния.
Следом за ними нормальным порядком (без выдерживания пауз, но с проверкой флага
BF) выполняется инициализация режимов работы с выдачей инициализирующей
последовательности, аналогичной указанной в таблице 2.4.7 (содержащей в том
числе команду выбора необходимой разрядности шины).
Необходимо помнить, что когда Вы объявляете режим
работы с 4-х разрядной шиной, то есть выдаете команду , то делаете это обычно
из 8-ми разрядного режима, который устанавливается автоматически после подачи
напряжения питания, а значит вы не сможете адекватно объявить необходимое
значение флагов N и F, располагающихся в младшей тетраде команды установки
разрядности шины. Поэтому команду необходимо повторить в уже установившемся 4-х
разрядном режиме путем последовательной передачи двух тетрад, то есть для 4-х
разрядного режима образом.[9]
2.5 Стабилизаторы
Для питания ПЛИС нужно +3.3В, компаратора, индикатора
и генератора +5В. Для питания всего устройства взят источник питания от
персонального компьютера, который выдает +12 В. Было выбрано два интегральных
стабилизатора.
Первый на +5В фирмы Fairchild Semiconductor MC78T05
Таблица 2.5.1 Технические характеристики
Параметр
|
Обозначение
|
Характеристики
|
Min
|
Max
|
Единицы измерения
|
Выходное
напряжение
|
V0
|
5мА ≤ Io ≤ 3.0A , TJ = +25°
|
4.8
|
5.2
|
В
|
Отклонение
напряжения по нагрузке
|
DV0
|
5мA ≤ Io ≤ 3.0A , TJ = +25°C
|
10
|
30
|
мВ
|
Максимальный
выходной ток
|
IPK
|
TA = +25°C
|
5.0
|
-
|
A
|
Выходное
сопротивление
|
R0
|
f = 1.0kHz
|
2.0
|
-
|
мОм
|
Ток короткого
замыкание
|
Isc
|
VI = 35V, TJ =+25°C
|
1.5
|
2.5
|
A
|
Входное напряжение (для V0 = 5V)
|
V1
|
TJ =+25°C
|
35
|
40
|
В
|
Рассеваемая мощность
|
W
|
|
|
25
|
Вт
|
§
Внутреннее короткое замыкание тока исключено
§
Внутренняя защита от тепловой перегрузки [10]
Рис 2.5.2 (Физические параметры стабилизатора MC78T05)
Второй на
+3.3 В фирмы
National Semiconductor LMS1585A
Основные характеристики:
§
Интервал выходных напряжений……………..1.5V и 3.3V
§
Не стабильность тока в
сети…………………………………0.005%
§
Не стабильность тока на
нагрузке……………………………0.05%
Таблица 2.4.3 Технические характеристики:
Параметр
|
Обозначение
|
Условие
|
min
|
max
|
Един. измер.
|
Выходное напряжение
|
Vout
|
IOUT = 0mA, VIN = 5V
0 IOUT 5A, 4.75VVIN7V
|
3.267
3.235
|
3.333
3.365
|
В
В
|
Отклонение выходного напряжения по нагрузке
|
DVout
|
VIN = 5V, 0 IOUT 5A
|
0.05
|
0.5
|
%
|
Рабочий ток
|
|
VIN = 5V
|
7.0
|
13.0
|
мА
|
§
Максимальное входное и выходное напряжение
(относительно земли)…………………………………………….…………………………….13V
§
Электростатический
допуск………………………………….2000V
[11]
Рис 2.4.3 (Физические параметры стабилизатора LMS1585A)
Устройство для программирования ПЛИС. На вход подается
шина с LPT порта а на выходе 7-и разрядная шина из которой
4 провода на порт JTAG, 2 на питание +5 В и 2 на землю
смотри приложение 1( схема устройства)
Рис 2.5.1.(Подключение ПЛИС к Компьютеру через LPT порт с помощью Byte Blaster)
Рис 2.5.2(Схема
ByteBlaster)
Как видно из схемы Байтбластер содержит одну
микросхему НС244 которая содержит в себе всего лишь 4 буфера и резисторы. Это
значит она очень дешевая и простая, её можно изготовить в домашних условиях.[12]
2.6 Сборка устройства
Как уже ранее говорилось, ПЛИС была выбрана EPM3256ATC144-10 семейства MAX3000,
для прошивки к ней подключаются программатор (Byte Blaster).
Также в устройство входит компаратор (AD8561), генератор тактовой частоты (Auch JCO
series), кнопки (СТАРТ/СТОП, СБРОС), источник питания ПК,
стабилизаторы напряжения (MC78T05,
LMS1585A) и индикатор (WH1602A). Принципиальная схема приведена в
приложение 1. В приложение 2 приведен список выводов ПЛИС. Подключение компонентов
схемы ведется согласно тех. документации прилагаемое с микросхемой.
3.1 Система проектирования MAX+plus II
В качестве средства автоматизации проектирования
устройств на основе собственных микросхем фирма Altera
разработала систему MAX+plus II . Эта
система состоит из 11 программ-обработчиков проекта (приложений), которые
функционируют под управлением программы Manager. Система
является полноцикловой, т.е. поддерживает не отдельные этапы проектирования
(как система типа CAD - computer aided design), а сквозной процесс от ввода и контроля описания до программирования
микросхемы ПЛИС. Такие системы получили название EDA - electronic
design automation.
Проект в системе MAX+plus II может
быть иерархическим и состоять из набора модулей. Каждый модуль содержит
описание части проекта, форма проекта может быть графическое представление
принципиальной схемы, текст на языках AHDL/ VHDL/ Verilog, логико-временные диаграммы функционирования.
Для создания исходных модулей в состав приложений
включены редакторы: графический – Graphic Editor,
текстовый – Text Editor, логико-временных диаграмм Waveform
Editor. Любой файл(модуль) может быть представлен в графическом
виде как символ. Это можно сделать явно с использования редактора символов – Symbol
Editor. Далее эти символы могут быть использованы при создании
иерархического проекта. Пользователю обширные библиотеки примитивов и макрофункций.[2]
3.2 Описание программы конфигурации
ПЛИС
Данная программа состоит из нескольких модулей. Каждый
модуль выполняет определённую функцию. Ниже приводиться структура программы
конфигурации.
Рис 3.2 Структура программы
3.2.1 Антидребезговая
система (antibounce)
Как известно при нажатии кнопок, при контакте
возникает дребезг, и вместо нужного простого перехода из нуля в единицу одной
ступенькой возникает сигнал в несколько скачков как показано на рисунке 3.2.1
Рис 3.2.1 Сигнал включения с дребезгом и без дребезга
Антидребезговая защита была реализована в модуле antibounce. Принцип его работы, основан на счетчике и одном триггере защелке. При
возникновении дребезга счетчик начинает считать до определенной константы в
программе она названа delay т.е. задержка и если по
истечении счета на входе по прежнему стоит единица то триггер защелка перещелкивается
и возникает переключение, смотри рис 3.2.2.
Рис 3.2.2 Схема антидребезгового устройства
Счетчик реализован с посредством макрофункции Lpm_counter. Встроенная в среду макрофункция Lpm_counter, есть ни что иное, как счетчик с
задаваемыми пределами и параметрами, созданная для облегчения процесса разработки
подобных устройств.
3.2.1,1 Встроенная
макрофункция – счетчик lpm_counter
Двоичный счетчик с возможностью прямого и обратного
счета и синхронного и асинхронного сброса. Lpm_counter описывается как переменная в разделе VARIABLE.
Форма описания счетчика следующая:
Имя_счетчика : lpm_counter WITH STATES (Параметры
счетчика);
Например
COUNTER : lpm_counter WITH
(lpm_width=4);
Таблица 3.2.1 Параметры счетчика
Параметры счетчика
|
Тип
|
Обязательный
|
Описание
|
LPM_WIDTH
|
Целочисленный
|
Да
|
Ширина счетчика(число битов на выходе)
|
LPM_DIRECTION
|
Строковый
|
Нет
|
Устанавливается в прямом “UP” или обратном “DOWN” направлении идет счет, по умолчанию стоит прямой.
|
LPM_MODULUS
|
Целочисленный
|
Нет
|
Установка максимума счета, если параметр не усыновлен то
счет не ограничен.
|
LPM_AVALUE
|
Целочисленный/Строковый
|
Нет
|
Ограничивает максимум счета 32 битами во избежания
перегрузки счетчика, когда поведение счетчика не определено при переполнении
|
LPM_SVALUE
|
Целочисленный/Строковый
|
Нет
|
Постоянное значение означает что нагрузка включается по
переднему фронту clock когда sset или sconst в “1”. Этот параметр должен быть использован если sconst используется
|
LPM_HINT
|
Строковый
|
Нет
|
Позволяет с большой точностью перевести текстовый файл из AHDL в VHDL. По умолчанию не используется.
|
LPM_TYPE
|
Строковый
|
Нет
|
Связывает LPM_имя
с VHDL графическим файлом
|
CARRY_CNT_EN
|
Строковый
|
Нет
|
Принимает значения “SMART”, “ON”, “OFF”. При включении lpm_counter
функция cnt_en передает сигнал через несущую цепочку. В некоторых случаях,
этот параметр используется как параметр установки появления изменения в
скорости, но при желании это можно выключить. По умолчанию стоит “SMART”, который сохраняет лучшие
отношение между скоростью и размером.
|
LABWIDE_SCLR
|
Строковый
|
Нет
|
Принимает значения “ON”,”OFF” или не используется. По
умолчанию стоит “NO”. Он позволяет выключить
использование LAB-ширины sclr особенно при использовании
устройств на базе FLEX 6000. Уменьшает использование случайных библиотек, и
таким образом даёт возможность использовать высшей логики плотнее, когда SCLR не используется в LAB.
|
Страницы: 1, 2, 3, 4, 5
|