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

Составление схемы счетного устройства видеоимпульсов на ПЛИС. Описание внутренней структуры и программы конфигурации. Конфигурирование. Система проектирования MAX+plus II. Антидребезговая система. Генератор тактовой частоты. Машина конечных автоматов.

Рубрика Физика и энергетика
Вид дипломная работа
Язык русский
Дата добавления 03.10.2008
Размер файла 1,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

CASE ss IS

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

q = GND; -- устанавливаем выход q в 0

IF d THEN --если на входе d высокий уровень,

ss = s1; --то следующее состояние будет s1,

END IF; -- иначе ss останется прежнем

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

q = VCC; --устанавливаем выход q в 1

IF !d THEN --если на входе d низкий уровень,

ss = s0; --следующее состояние будет s0, иначе ss останется END IF; --прежним;

END CASE;

END;

Итак, для работы нужно сначала выставить нужные режимы и флаги через регистр IR(регистр команд) обращение к нему ведется через линию RS выставлением на неё логического нуля. В состоянии Z0 обнуляются все переменные. С состояния P1 по состояние P4 выдерживается четыре паузы 21 мс, 4.1 мс, 0.1 мс и 0.1мс по причине указанной в пункте 2.4.4 до полной готовности индикатора и загружается управляющее слово Н ”38”, что означает: 8 разрядная шина данных, режим развертки одной строки и символы с матрицей 5х8. Далее в состоянии b4, c4 загружается управляющее слово Н”3C” что означает точно тоже самое, но матрица 5х10 точек, чтобы по крупнее показывал. С состояния r5 выбирается режим отображения управляющим словом Н”0C” что означает: включение изображения, курсор в виде почерка . С состояния r6 выбирается направление сдвига курсора вправо без сдвига изображения управляющим словом Н”06”. В состоянии r7 сбрасываются сдвиги, и начало строки адресуется в начало видео памяти DDRAM. В состоянии r8 идет очистка экрана, и счетчик адреса AC адресуется на видео память DDRAM.

На этом этапе все флаги необходимые для формирования изображения загружены. Само формирование изображения начинается с состояния dz0. В состояниях ..z0 значения с счетчика поступают и перекодируются согласно табл3.2.10 дальше записываются в регистр данных. В состоянии ..z1 идет считывание из регистра данных в регистр знакогенератора CGRAM и выводится на экран. И все это начиная с ds циклически, повторяется через заданный интервал времени. Смотри рисунок 3.2.3.1

В данном описании программы я опускал состояния, в которых выдерживались необходимые паузы для общения ПЛИС и микроконтроллера индикатора. Также нужно заметить, что данные в этот модуль программы поступают в параллельном виде, название этой шины Line[].

Рис 3.2.3.1 Блок-схема устройства управления индикатором

3.2.4 Делитель тактовой частоты для работы индикатора(divFreq)

Обыкновенный двоичный счетчик выступает в роли делителя тактовой частоты для работы индикатора т.к. индикатору нужна частота меньше чем, выдает кварцевый генератор. Коэффициент деления определяется расчетным и опытным путем (подбором).

3.2.5 Общая структура программы

Структуру проекта можно увидеть, используя специальное приложение Max+plus/ Hierarhy Display. Откроется окно, в котором проект представлен в виде дерева, указаны имя каждого файла и исходный тип, а также иконка. Двойной щелчок по иконке открывает исходный файл нижнего уровня с помощью соответствующего редактора. Слева от каждой ветви указаны файлы с такими же именами, но другими расширениями, которые созданы в процессе обработки исходного файла.

Рис 3.2.5.1 Дерево проекта конфигурации

Тексты каждого модуля можно увидеть в Приложении 3.

Заключение

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

Данное устройство можно подключать не только к СС с ФЭУ, но и к другим детекторам радиоактивных излучений, например счетчик Гейгера. Для этого необходимо пересчитать делитель, который установлен до компаратора.

На этапе разработки в схему счетного устройства была добавлена АЦП Analog Device, AD7715с последовательным интерфейсом SPI. АЦП планируется использовать для измерения напряжения подаваемого на детектор.

Литература

1. Корсунский М.И.,«Атомное ядро» - М.: Гостехиздат, 1957.

2. Бродин В.Б., Калинин А.В., «Системы на микроконтролерах и БИС программируемой логики» - М.: Эконом, 2002.

3. Вицын Н. «Современные тенденции развития систем автоматизированного проектирования в области электроники» // Chip News, № 1, 1997. С. 12-15.

4. Губанов Д. А., Стешенко В. Б., Храпов В. Ю., Шипулин С. Н. «Перспективы реализации алгоритмов цифровой фильтрации на основе ПЛИС фирмы ALTERA» // Chip News, № 9-10, 1997, с. 26-33.

5. Тех. Док. «One Technology Way, P.O. Box9106, Norwood, MA 02062-9106, U.S.A.», http://www.analog.com

6. LCD Controller/Driver LSI. Data Book. © 1994 Hitachi America Ltd.

7. «Алфавитно-цифровые индицирующие ЖК-модули фирмы Powertip.» Каталог, 1-е издание, © 1998 КТЦ-МК.

8. Микросхема: СЕ110. Техническое описание, 1-е издание, © 1997 КТЦ-МК,

9. Микросхема: DB-CE110. Техническое описание, 1-е издание, © 1997 КТЦ-МК.

10. Тех. Док.«MC78TXX», Fairchild Semiconductor Corporation, 2002, http://www.fairchildsemi.com

11. Тех. Док. «LMS1585A», National Semiconductor Corporation, April, 2000, http://www.national.com, Email: europ.support@nsc.com

12. Тех. Док. «ByteBlasterMV Parallel Port Download Cable» Altera Corporation, July, 2002, Version 3.3

Приложение 1 (Принципиальная схема устройства)

19

Приложение 2 (Список портов ввода вывода ПЛИС epm 3256a)

Приложение 3 (Текст программы)

--Антидребезговая система

INCLUDE "LPM_COUNTER";

CONSTANT DELAY = 6;

SUBDESIGN ANTIBOUNCE

(

IN : INPUT;

CLK : INPUT;

OUT : OUTPUT;

)

VARIABLE

CT : LPM_COUNTER WITH(LPM_WIDTH=DELAY);

TRIG : DFF;

BEGIN

TRIG.D = !IN;

CT.ACLR = !(!IN $ TRIG.Q);

CT.CLOCK = CLK;

TRIG.CLK=CT.Q[DELAY-1];

OUT = !TRIG.Q;

END;

--Десятичнодвоичный счетчик

CONSTANT DIGITS = 6;

INCLUDE "LPM_COUNTER";

SUBDESIGN COUNTER10

(

-- входные данные

CLOCK : INPUT;

ACLR : INPUT;

COUNT_ENA : INPUT;

-- выход

Q[DIGITS-1..0][3..0] : OUTPUT;

)

VARIABLE

RESET[DIGITS-1..0] : NODE;

COUNTER[DIGITS-1..0] : LPM_COUNTER WITH (LPM_WIDTH=4);

BEGIN

IF COUNTER[0].Q[3..0]==B"1010" THEN RESET[0]=vcc; ELSE RESET[0]=gnd; END IF;

IF COUNTER[1].Q[3..0]==B"1010" THEN RESET[1]=vcc; ELSE RESET[1]=gnd; END IF;

IF COUNTER[2].Q[3..0]==B"1010" THEN RESET[2]=vcc; ELSE RESET[2]=gnd; END IF;

IF COUNTER[3].Q[3..0]==B"1010" THEN RESET[3]=vcc; ELSE RESET[3]=gnd; END IF;

IF COUNTER[4].Q[3..0]==B"1010" THEN RESET[4]=vcc; ELSE RESET[4]=gnd; END IF;

IF COUNTER[5].Q[3..0]==B"1010" THEN RESET[5]=vcc; ELSE RESET[5]=gnd; END IF;

COUNTER[0].clock=clock;

COUNTER[DIGITS-1..1].clock=RESET[DIGITS-2..0];

Q[DIGITS-1..0][3..0]=COUNTER[DIGITS-1..0].Q[3..0];

COUNTER[DIGITS-1..0].aclr=RESET[DIGITS-1..0]#aclr;

COUNTER[0].cnt_en=COUNT_ENA;

END;

--Устройство управления индикатором

CONSTANT DATA_WITH = 8;

INCLUDE "LPM_COUNTER";

SUBDESIGN WH1602

(

CLK : INPUT;

IN[5..0][DATA_WITH-1..0] : INPUT;

D[DATA_WITH-1..0] : BIDIR;

E : OUTPUT;

RW : OUTPUT;

RS : OUTPUT;

)

VARIABLE

clk_a : NODE;

Ddff[DATA_WITH-1..0] : dff;

Din[DATA_WITH-1..0] : dff;

Dmsh[DATA_WITH-1..0] : NODE;

_RW : NODE;

_RS : NODE;

Eena : NODE;

Pause : LPM_COUNTER WITH (LPM_WIDTH=9);

STR : LPM_COUNTER WITH (LPM_WIDTH=4);

LINE[DATA_WITH-1..0] : NODE;

ST : MACHINE

WITH STATES ( z0, p1, r1, p2, r2, p3, r3, p4,

r4, b4, c4, r5, b5, c5, r6, b6, c6, r7, b7, c7, r8, b8, c8,

ds, bs, cs, dz0, bz0, cz0, dz1, bz1, cz1 );

Dtri[DATA_WITH-1..0] : TRI;

OE : NODE;

INC[3..0] : NODE;

INBUF[5..0][DATA_WITH-1..0] : DFF;

READ : DFF;

BEGIN

clk_a = dff(!clk_a, clk, vcc, vcc);

Pause.clock = clk_a;

-- outputs

Ddff[DATA_WITH-1..0].d = Dmsh[DATA_WITH-1..0];

Ddff[DATA_WITH-1..0].clk = !clk_a;

Dtri[DATA_WITH-1..0].in = Ddff[DATA_WITH-1..0].q;

D[DATA_WITH-1..0] = Dtri[DATA_WITH-1..0].out;

Din[DATA_WITH-1..0].d = D[DATA_WITH-1..0];

Din[DATA_WITH-1..0].clk = !dff (clk_a & Eena , clk, vcc, vcc);

Dtri[DATA_WITH-1..0].oe = dff (OE, !clk_a, vcc, vcc);

RW = dff (_RW, !clk_a, vcc, vcc);

RS = dff (_RS, !clk_a, vcc, vcc);

E = dff (clk_a & Eena , clk, vcc, vcc);

-- machine

ST.clk = clk_a;

CASE ST IS

WHEN z0 =>

Dmsh[DATA_WITH-1..0] = H"FF"; OE = vcc;

Eena = gnd; _RW = gnd; _RS = gnd; Pause.aclr = vcc;

ST = p1;

-- загрузка индикатора после включения питания

-- пауза перед включением 21мс

WHEN p1 =>

Dmsh[DATA_WITH-1..0] = H"38"; OE = vcc;

Eena = gnd; _RW = gnd; _RS = gnd; Pause.aclr = gnd;

IF Pause.q[]==200 THEN ST = r1; ELSE ST = p1; END IF;

-- INITIAL SETTING ONCE 00111000

WHEN r1 =>

Dmsh[DATA_WITH-1..0] = H"38"; OE = vcc;

Eena = vcc; _RW = gnd; _RS = gnd; Pause.aclr = vcc;

ST = p2;

-- пауза 7 мс > 4.1 мс

WHEN p2 =>

Dmsh[DATA_WITH-1..0] = H"38"; OE = vcc;

Eena = gnd; _RW = gnd; _RS = gnd; Pause.aclr = gnd;

IF Pause.q[]==100 THEN ST = r2; ELSE ST = p2; END IF;

-- INITIAL SETTING TWICE 00111000

WHEN r2 =>

Dmsh[DATA_WITH-1..0] = H"38"; OE = vcc;

Eena = vcc; _RW = gnd; _RS = gnd; Pause.aclr = vcc;

ST = p3;

-- пауза 0.7 мс > 0.1 мс

WHEN p3 =>

Dmsh[DATA_WITH-1..0] = H"38"; OE = vcc;

Eena = gnd; _RW = gnd; _RS = gnd; Pause.aclr = gnd;

IF Pause.q[]==10 THEN ST = r3; ELSE ST = p3; END IF;

-- INITIAL SETTING THIRD 00111000

WHEN r3 =>

Dmsh[DATA_WITH-1..0] = H"38"; OE = vcc;

Eena = vcc; _RW = gnd; _RS = gnd; Pause.aclr = vcc;

ST = p4;

-- пауза 0.7 мс > 0.1 мс

WHEN p4 =>

Dmsh[DATA_WITH-1..0] = H"38"; OE = vcc;

Eena = gnd; _RW = gnd; _RS = gnd; Pause.aclr = gnd;

IF Pause.q[]==10 THEN ST = r4; ELSE ST = p4; END IF;

-- Function Set 0011NF**

WHEN r4 =>

Dmsh[DATA_WITH-1..0] = H"3C"; OE = vcc;

Eena = vcc; _RW = gnd; _RS = gnd; Pause.aclr = vcc;

ST = b4;

WHEN b4 =>

Dmsh[DATA_WITH-1..0] = H"00"; OE = gnd;

Eena = vcc; _RW = vcc; _RS = gnd; Pause.aclr = vcc;

ST = c4;

WHEN c4 =>

Dmsh[DATA_WITH-1..0] = H"00"; OE = gnd;

Eena = gnd; _RW = vcc; _RS = gnd; Pause.aclr = gnd;

IF Din[DATA_WITH-1].q==0 THEN ST = r5; ELSE ST = b4; END IF;

-- Display ON/OFF = 00001DCB, Display ON,Cursor&Blink OFF

WHEN r5 =>

Dmsh[DATA_WITH-1..0] = H"0C"; OE = vcc;

Eena = vcc; _RW = gnd; _RS = gnd; Pause.aclr = vcc;

ST = b5;

WHEN b5 =>

Dmsh[DATA_WITH-1..0] = H"00"; OE = gnd;

Eena = vcc; _RW = vcc; _RS = gnd; Pause.aclr = vcc;

ST = c5;

WHEN c5 =>

Dmsh[DATA_WITH-1..0] = H"00"; OE = gnd;

Eena = gnd; _RW = vcc; _RS = gnd; Pause.aclr = gnd;

IF Din[DATA_WITH-1].q==0 THEN ST = r6; ELSE ST = b5; END IF;

-- Entry Mode Set = 000001IS, Increment & Shift OFF

WHEN r6 =>

Dmsh[DATA_WITH-1..0] = H"06"; OE = vcc;

Eena = vcc; _RW = gnd; _RS = gnd; Pause.aclr = vcc;

ST = b6;

WHEN b6 =>

Dmsh[DATA_WITH-1..0] = H"00"; OE = gnd;

Eena = vcc; _RW = vcc; _RS = gnd; Pause.aclr = vcc;

ST = c6;

WHEN c6 =>

Dmsh[DATA_WITH-1..0] = H"00"; OE = gnd;

Eena = gnd; _RW = vcc; _RS = gnd; Pause.aclr = gnd;

IF Din[DATA_WITH-1].q==0 THEN ST = r7; ELSE ST = b6; END IF;

-- Return Home

WHEN r7 =>

Dmsh[DATA_WITH-1..0] = H"02"; OE = vcc;

Eena = vcc; _RW = gnd; _RS = gnd; Pause.aclr = vcc;

ST = b7;

WHEN b7 =>

Dmsh[DATA_WITH-1..0] = H"00"; OE = gnd;

Eena = vcc; _RW = vcc; _RS = gnd; Pause.aclr = vcc;

ST = c7;

WHEN c7 =>

Dmsh[DATA_WITH-1..0] = H"00"; OE = gnd;

Eena = gnd; _RW = vcc; _RS = gnd; Pause.aclr = gnd;

IF Din[DATA_WITH-1].q==0 THEN ST = r8; ELSE ST = b7; END IF;

-- Clear Display

WHEN r8 =>

Dmsh[DATA_WITH-1..0] = H"01"; OE = vcc;

Eena = vcc; _RW = gnd; _RS = gnd; Pause.aclr = vcc;

ST = b8;

WHEN b8 =>

Dmsh[DATA_WITH-1..0] = H"00"; OE = gnd;

Eena = vcc; _RW = vcc; _RS = gnd; Pause.aclr = vcc;

ST = c8;

WHEN c8 =>

Dmsh[DATA_WITH-1..0] = H"00"; OE = gnd;

Eena = gnd; _RW = vcc; _RS = gnd; Pause.aclr = gnd;

IF Din[DATA_WITH-1].q==0 THEN ST = ds; ELSE ST = b8; END IF;

--формирование изображения

WHEN ds =>

Dmsh[DATA_WITH-1..0] = LINE[]; OE = vcc;

Eena = vcc; RW = gnd; _RS = vcc; Pause.aclr = vcc;

ST = bs;

WHEN bs =>

Dmsh[DATA_WITH-1..0] = H"00"; OE = gnd;

Eena = vcc; _RW = vcc; _RS = gnd; Pause.aclr = vcc;

ST = cs;

WHEN cs =>

Dmsh[DATA_WITH-1..0] = H"00"; OE = gnd;

Eena = gnd; _RW = vcc; _RS = gnd; Pause.aclr = gnd;

IF STR.q==H"F" THEN ST=dz0;

ELSIF Din[DATA_WITH-1].q==0 THEN ST = ds; ELSE ST = bs; END IF;

--перемещение в начало

WHEN dz0 =>

Dmsh[DATA_WITH-1..0] = H"40"; OE = vcc;

Eena = gnd; _RW = gnd; _RS = gnd; Pause.aclr = vcc;

ST = bz0;

WHEN bz0 =>

Dmsh[DATA_WITH-1..0] = H"00"; OE = gnd;

Eena = vcc; _RW = vcc; _RS = gnd; Pause.aclr = vcc;

ST = cz0;

WHEN cz0 =>

Dmsh[DATA_WITH-1..0] = H"00"; OE = gnd;

Eena = gnd; _RW = vcc; _RS = gnd; Pause.aclr = gnd;

IF Din[DATA_WITH-1].q==0 THEN ST = dz1; ELSE ST = bz0; END IF;

WHEN dz1 =>

Dmsh[DATA_WITH-1..0] = H"80"; OE = vcc;

Eena = vcc; _RW = gnd; _RS = gnd; Pause.aclr = vcc;

ST = bz1;

WHEN bz1 =>

Dmsh[DATA_WITH-1..0] = H"00"; OE = gnd;

Eena = vcc; _RW = vcc; _RS = gnd; Pause.aclr = vcc;

ST = cz1;

WHEN cz1 =>

Dmsh[DATA_WITH-1..0] = H"00"; OE = gnd;

Eena = gnd; _RW = vcc; _RS = gnd; Pause.aclr = gnd;

IF Din[DATA_WITH-1].q==0 THEN ST = ds; ELSE ST = bz1; END IF;

END CASE;

INBUF[5..0][DATA_WITH-1..0].clk=READ.q;

INBUF[5..0][DATA_WITH-1..0].d=IN[5..0][DATA_WITH-1..0];

IF ST==dz1 THEN READ.d=vcc; ELSE READ.d=gnd; END IF;

READ.clk=clk;

IF ST==ds THEN STR.clock=vcc; ELSE STR.clock=gnd; END IF;

STR.aclr=READ.q;

CASE STR.q[] IS

WHEN H"1" => LINE[]=INBUF[5][DATA_WITH-1..0];

WHEN H"2" => LINE[]=INBUF[4][DATA_WITH-1..0];

WHEN H"3" => LINE[]=INBUF[3][DATA_WITH-1..0];

WHEN H"4" => LINE[]=INBUF[2][DATA_WITH-1..0];

WHEN H"5" => LINE[]=INBUF[1][DATA_WITH-1..0];

WHEN H"6" => LINE[]=INBUF[0][DATA_WITH-1..0];

WHEN H"7" => LINE[]=H"20";

WHEN H"8" => LINE[]=H"43";

WHEN H"9" => LINE[]=H"44";

WHEN H"A" => LINE[]=H"45";

WHEN H"B" => LINE[]=H"46";

WHEN H"C" => LINE[]=H"47";

WHEN H"D" => LINE[]=H"48";

WHEN H"E" => LINE[]=H"49";

WHEN H"F" => LINE[]=H"4A";

END CASE;

END;


Подобные документы

  • Устройство, управляющее полупроводниковыми ключами и содержащий в своем составе цифровой автомат. Описание функциональной схемы. Разработка принципиальной схемы и конструкции цифрового управляющего устройства. Входные и выходные сигналы устройства.

    курсовая работа [1,2 M], добавлен 16.07.2009

  • Обоснование и выбор функциональной схемы устройства. Выбор и расчет принципиальных схем узлов устройства.

    курсовая работа [78,4 K], добавлен 11.10.2008

  • Описание структурной электрической схемы. Составление принципиальной схемы изделия и описание ее работы. Расчет полевого транзистора 2N7002. Определение емкостей конденсаторов на входе и выходе каскада и в цепи эмиттера. Алгоритм поиска неисправности.

    дипломная работа [2,2 M], добавлен 10.07.2014

  • Изучение принципа работы мостового усилителя мощности звуковой частоты, составление описания модели схемы. Проектирование мостового УМЗЧ с помощью пакета прикладных программ Pspice схемотехнического проектирования и анализ результатов машинных расчетов.

    курсовая работа [78,3 K], добавлен 23.07.2010

  • Генераторы синхронные с самовозбуждением. Описание работы корректора напряжения. Принцип действия электродвигателя постоянного тока типа ПГ1500/225.ОМ4. Предназначение и состав электроэнергетической системы. Устройство и работа рулевой машины.

    реферат [37,3 K], добавлен 12.03.2012

  • Генератор - машина, преобразующая механическую энергию в электрическую. Принцип действия генератора. Индуктирование ЭДС в пелеобразном проводнике, вращающемся в магнитном поле. График изменения индуктированного тока. Устройство простейшего генератора.

    конспект урока [385,8 K], добавлен 23.01.2014

  • Действие параметров периодического сигнала на амплитудно-частотный и фазочастотный спектры периодического сигнала. Спектр периодической последовательности прямоугольных видеоимпульсов. Влияние изменения времени задержки на спектр периодического сигнала.

    лабораторная работа [627,1 K], добавлен 11.12.2022

  • Электрические схемы распределительных устройств станций и подстанций. Выбор схемы распределительного устройства высокого напряжения. Распределительные устройства с одной и двумя системами сборных шин. Устройства, выполненные по схемам кольцевого типа.

    презентация [372,2 K], добавлен 07.11.2013

  • Устройство синхронного генератора, экспериментальное подтверждение теоретических сведений о его свойствах. Сбор схемы генератора, пробный пуск и проверка возможности регулирования параметров. Анализ результатов эксперимента, составление отчета.

    лабораторная работа [221,2 K], добавлен 23.04.2012

  • Выбор генераторов, силовых трансформаторов, электрических аппаратов и токоведущих частей, схемы собственных нужд, ошиновки. Расчет потерь электроэнергии, токов короткого замыкания. Описание конструкции открытого распределительного устройства 220 кВ.

    курсовая работа [594,2 K], добавлен 02.06.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.