Рефераты. Счетное устройство видеоимпульсов на ПЛИС







§                    Внутреннее короткое замыкание тока исключено

§                    Внутренняя защита от тепловой перегрузки [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.75VVIN7V

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)

 

2.5 Программатор ByteBlaster

Устройство для программирования ПЛИС. На вход подается шина с 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. Конфигурирование ПЛИС

 

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.

Таблица 3.2.2 Таблица истинности lpm_counter


Входы

Выходы

Функции

aclr

aset

aload

clk_en

clock

Sclr

sset

sload

cnt_en

updoun

q[]


1

x

x

x

x

x

x

x

x

x

000…


0

1

x

x

x

x

x

x

x

x

111…

0

1

x

x

x

x

x

x

x

x

LPM_AVALUE

Асинхр. установка значений

0

0

1

x

x

x

x

x

x

x

data[]

Асинхр. загрузка данных

0

0

0

0

x

x

x

x

x

x

q[]

Текущее значение

0

0

0

1

ò

1

x

x

x

x

000…

Синхронный сброс

0

0

0

1

ò

0

1

x

x

x

111…

Синхронная установка

0

0

0

1

ò

0

1

x

x

x

LPM_SVALUE

Синхронная установка значении для LPM_SVALUE

0

0

0

1

ò

0

0

0

0

0

q[]

Текущее значение

0

0

0

1

ò

0

0

1

x

x

data[]

Синхронная загрузка данных

0

0

0

1

ò

0

0

0

1

1

q[]+1

Счет в прямом направл.

0

0

0

1

ò

0

0

0

1

0

q[]-1

Счет в обратном направл.


3.2.2 Двоичо-десятичный счетчик (counter10)

При написании программы возникла проблема поразрядного десятичного счета. Двоично-десятичный счетчик реализован помощью макрофункции lpm_counter. Сброс одного десятичного разряда двоично-десятичного счетчика производиться при достижении величины 10. Если один разряд счетчика досчитал до десяти, в двоичном коде B”1010”, то на вход aclr (асинхронный сброс счетчика) этого же счетчика и на счетчик отвечающего за следующий разряд на вход clock выставляется логическая единица. т.е. следующий счетчик считает десятки предыдущего, со следующим счетчиком также и так далее, таким  образом есть 6, соединенных последовательно, счетчиков каждый из которых отвечает за разряд рис 3.2.1.

Рис 3.2.1 Схема десятично-двоичного счетчика


Следовательно, счетное устройство пока может считать до 999999, далее обнуляется, но добавить разрядность не составляет особого труда, просто добавляем счетчик lpm_counter отвечающий за следующий разряд программно и перепрашиваем ПЛИС. Увеличивать возможности данного устройства можно на столько, на сколько хватает ресурсов ПЛИС (т.е. число триггеров внутри неё ) и фантазии создателя.

 

3.2.3 Устройство управлением индикатора (wh1602LCD)

Основан на машине конечных автоматов. Как уже говорилось в пункте 2.4.2, для того чтобы на индикаторе появилось изображение, после подачи на него питания, нужно выполнить с ним ряд действий. К описанию, которых я и приступаю, но прежде нужно заметить, что для подключение индикатора использовалась 8 разрядная шина.

Машина конечных автоматов используется в устройстве управления индикаторам для его инициализации, а за тем и вывод на экран цифр обозначающих число импульсов.

 

3.2.3,1 Машина конечных автоматов

Машина конечных автоматов или Машина состояний в AHDL – это структура, позволяющая описывать конечный автомат в виде множества внутренних состояний проекта. Переходы между состояниями синхронизируется тактовым сигналом. Условие и направление перехода определяется для каждого состояния индивидуально. Каждому состоянию можно поставить в соответствие один или несколько входных управляющих сигналов.

Машина состояний описывается как переменная в разделе VARIABLE. Поведение машины описывается в разделе логики после ключевого слова BEGIN. Форма описания машины состояний следующая:

Имя_переменной : MACHINE [ OF BITS <список битов> ]

                                      WITH STATES (состояние1, состояние2,……);

где

         состояние ::=<имя> [= значение ],

<значение> ::= <число>ê<имя>.

Например.

ss: MACHINE OF BITS (q1,q2,q3)

                   WITH STATES ( s1 = B”000”,

s2 = B”001”)

s3 =B”010”);

или

ss: MACHINE WITH STATES(s0,s1);

Обязательным является перечисление списка состояний (s0,s1). Если не обязательна конструкция  OF BITS, то объявление имени состояния равносильно объявлению переменной типа NODE.

Если объявлена конструкция OF BITS, то перечисленные биты должны существовать физически. В этом случае рассматриваются комбинация значений выходов этих битов (логических ячеек), аналогично константам. Кроме того, количество возможных состояний в этом случае равно 2  в степени “количества битов”, поэтому желательно явно описать все состояния, включая ложные. Первое по списку состояние является состоянием после сигнала сброса.

Машина состояний имеет следующие порты.

.clk – входной тактовый сигнал;

.reset – сигнал сброса, активный уровень – “1”;

.ena – разрешение перехода, активный уровень – “1”.

Поведение машины можно описать с помощью конструкции CASE

SUBDESIGN StateMachine

(

         clk, reset, d: INPUT; -- входные порты

         q: OUTPUT; -- выходной порт

)

VARIABLE

            ss: MACHINE WITH STATES(s0,s1); --переменная ss –машина с с-ми s0, s1

BEGIN

         ss.clk = clk; --соединим входной сигнал clk с тактовым входом машины

         ss.reset = reset; --соединим входной сигнал reset с входом сброс

--Далее рассматриваем каждое состояние и анализируем условие переходов

CASE ss IS

         WHEN s0 =>                 -- в состоянии s0

Страницы: 1, 2, 3, 4, 5



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.