Разработка микропроцессорной системы счета осей

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 16.12.2013
Размер файла 479,2 K

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

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

Размещено на http://www.allbest.ru/

Белорусский государственный университет транспорта

Кафедра "Микропроцессорная техника и информационно-управляющие системы"

Курсовой проект

Разработка микропроцессорной системы счета осей

Выполнил:

ст. гр. ЭМ-51

Сидоченко А.В.

Проверил:

Доцент Харлап С.Н.

Гомель 2013

Содержание

  • Введение
  • 1. Разработка структурной схемы
  • 2. Разработка принципиальных электрических схем
    • 2.1 Разработка принципиальной электрической схемы вычислительного канала
    • 2.2 Разработка принципиальной электрической схемы устройств сопряжения с исполнительными объектами
    • 2.3 Разработка принципиальной электрической схемы устройств безопасного ввода информации
    • 2.4 Разработка принципиальной электрической схемы парафазного генератора
    • 2.5 Разработка принципиальной электрической схемы согласования с линией
  • 3. Разработка алгоритмов и программного обеспечения
    • 3.1 Алгоритм работы подпрограммы считывания информации с реле
    • 3.2 Алгоритм проверки и управления состоянием переезда
    • 3.3 Алгоритм передачи информации в линию
    • 3.4 Алгоритм закрытия/открытия переезда
    • 3.5 Описание работы программы
    • 4. Расчет показателей безотказности и безопасности системы
  • Заключение
  • Список литературы
  • Приложение

микропроцессорный автоматический сигнализация программный

Введение

В настоящее время в нашей стране используются только релейные системы железнодорожной автоматики и телемеханики (СЖАТ). Однако уже с 80-х годов по всему миру внедряются микропроцессорные СЖАТ, имеющие следующие преимущества: резервирование технических средств, обеспечивающее надежное функционирование системы при выходе из строя отдельных компонентов, построение системы из отдельных независимых модулей с простой структурой, значительно меньшие масса и габариты модулей системы, что снижает затраты на их размещение, более простое техническое обслуживание и меньшие эксплуатационные расходы. Поэтому микроэлектронная, микропроцессорная и компьютерная техника определяет на ближайшее будущее развитие средств СЖАТ.

Целью данного курсового проекта является разработка микропроцессорной системы счёта осей. Это невозможно без применения знаний, ранее почерпнутых из дисциплин "Теоретические основы автоматики и телемеханики" и "Микропроцессорные средства управляющих систем", поэтому в процессе проектирования закрепляются полученные практические навыки и теоретический материал.

Исходя из сказанного, в данном проекте разработана микропроцессорная система счета осей.

Разрабатываемая микропроцессорная централизация должна соответствовать существующим нормам безопасности, предъявляемых к СЖАТ.

1. Разработка структурной схемы

В основу разрабатываемой безопасной МИУС положена структура системы с аппаратным диверситетом со слабыми связями. Разрабатываемая система находится на станции. Такая система состоит из двух вычислительных каналов (рисунок 1 и рисунок 2). Входные сигналы поступают на два микроконтроллера счетного пункта (СП). Далее они обрабатываются и передаются по модемной связи на решающее устройство (РУ). Решающее устройство обрабатывает поступившую информацию и выводит сигналы через безопасную выходную схему (БВС) на объект управления (УО). Кроме этого в схеме присутствуют и устройство сопряжения (УСО) и объект управления (УО). Для сопряжения с реле контроля перегона и для сопряжения поступающих в микроконтроллеры сигналов датчиков используется парафазный импульсный декодер. В устройстве сопряжения с датчиками системы счета осей используются полосопропускающие фильтры. Объектом управления является реле контроля перегона. Для контроля работы счетного пункта и решающего устройства со стороны диспетчера используются сигналы ТУ-ТС.

Рисунок 1 - Структурная схема счетного пункта разрабатываемой системы счета осей

Рисунок 2 - Структурная схема решающего устройства разрабатываемой системы счета осей

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

Выходной сигнал через импульсный декодер управляет включением реле. Достоинствами данной структуры являются: высокая безопасность и простота.

2. Разработка принципиальных электрических схем

2.1 Разработка принципиальной электрической схемы вычислительного канала

Вычислительные каналы разрабатываемой системы построены с использованием программируемых логических интегральных схемах (ПЛИС) Xilinx Spartan-II.

Программируемые логические интегральные схемы (ПЛИС) благодаря своим преимуществам являются наиболее перспективной элементной базой цифровой электроники. Фирма Xilinx, используя достижения передовых технологий, выпускает семейства ПЛИС с различной архитектурой, которые позволяют создавать в сжатые сроки цифровые системы с различным уровнем сложности и степенью интеграции [4].

В 1985 г. фирма Xilinx представила новый тип логических микросхем - перепрограммируемые пользователем базовые матричные кристаллы (Field Programmable Gate Array, или FPGA). Эти микросхемы предоставили разработчику электронных устройств преимущества использования стандартных базовых матричных кристаллов (БМК), при этом появилась возможность проектировать, конфигурировать, отлаживать, исправлять ошибки и реконфигурировать микросхему непосредственно на рабочем месте, что добавило гибкости и значительно сократило время выхода устройства на рынок готовой продукции.

Конфигурационная последовательность (bitstream) может быть загружена в ПЛИС FPGA непосредственно в системе и перегружена неограниченное число раз. Инициализация ПЛИС производится автоматически из загрузочного ПЗУ Xilinx при подаче напряжения питания или принудительно по специальному сигналу. Процесс инициализации занимает от 20 до 200 мс, в течение которых выводы ПЛИС находятся в высокоомном состоянии (подтянуты к логической единице).

Выпуск нового семейства ПЛИС Spartan™-3 с архитектурой FPGA начат в апреле 2003 г. Семейство специально разработано для использования в электронных устройствах, рассчитанных на большие тиражи и невысокую стоимость комплектующих.

Архитектура ПЛИС семейства Spartan™-3 содержит 5 фундаментальных программируемых элементов:

- Конфигурируемый логический блок (КЛБ). На базе КЛБ реализуется комбинаторная и синхронная логика, включая базовые запоминающие элементы.

- Блок ввода-вывода (БВВ). БВВ осуществляют коммутацию выводов корпуса микросхемы с внутренней конфигурируемой логикой. БВВ поддерживают большинство сигнальных стандартов ввода-вывода, существующих в настоящее время.

- Блок памяти. Каждый блок может конфигурироваться как двухпортовое ОЗУ емкостью 18 кбит.

- Блок умножителя. Встроенный умножитель 18x18 бит.

- Цифровой блок управления синхронизацией (DCM - Digital Clock Manager).

Все эти элементы расположены в кристалле. Блоки ввода-вывода расположены вокруг регулярной матрицы конфигурируемых логических блоков. Каждый блок памяти ассоциирован с блоком умножения 18x18. Модули управления синхронизацией располагаются рядом с крайними столбцами памяти.

Одним из кристаллов этого семейства Spartan-2 является кристалл XC2S100. Его основные особенности:

· Высокопроизводительные, программируемые пользователем логические интегральные схемы с архитектурой FPGA (Field Programmable Gate Arrays);

· Ёмкость от 15000 до 200000 системных вентилей;

· Системная производительность до 200 МГц;

· Корпусировка в наиболее дешевые корпуса;

· Совместимость по выводам кристаллов разной ёмкости в одинаковых корпусах;

· Встроенные цепи управления тактированием;

· Четыре встроенных модуля автоподстройки задержек (DLL - delay-locked loop) для расширенного управления тактовыми сигналами как внутри ПЛИС, так и всего устройства;

· Иерархическая система элементов памяти на базе 4-х входовых таблиц преобразования (4-LUT - Look-Up Table) конфигурируемых либо как 16-ти битовая RAM (Random Access Memory), либо как 16-ти битовая двухпортовая RAM, либо как 16-ти битовый сдвиговый регистр;

· 92 пользовательских вывода

Тактовый сигнал на ПЛИС каждого канала и на ПЛИС БМЭ подаётся с микросхемы-генератора с частотой 200 МГц.

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

Вычислительный канал осуществляет приём релейной информации, проверку её корректности, выполнение алгоритма работы. Алгоритм работы вычислительного канала реализован на ПЛИС. Листинг программного обеспечения приведен в приложении А.

На микросхеме DD3.2 собран усилитель с коэффициентом усиления 4.8, который усиливает выходное заначение амплитудой 5В. Коэффициент усиления по напряжению составляет: Кu =(R12/R11) + 1 = 10. Пусть R11= 2кОм, тогда R12=8кОм. Цепь коррекции ОУ состоит из корректирующего конденсатора С3 емкостью 33пФ.

Для согласования фидеров питания с ПЛИС применяется делитель напряжения. Значения сопротивлений R3=(Uвых R2)/(Uвх-Uвых).Примем значение сопротивления R3=1кОм, тогда R4=(5·1)/(24-5)=260 Ом. Соответственно R5=1кОм и R6=260 Ом.

Микроконтроллер PIC16F873 обладает:

ь низким энергопотреблением;

ь высокоскоростной RISC архитектурой;

ь 8к FLASH памяти;

ь 368 байт памяти данных (ОЗУ), на основе которой можно реализовать блоки сравнения и хранения кодов;

ь 24 программируемых линий ввода-вывода;

ь 14 источников сигналов прерываний;

ь позволяет выбрать параметры тактового генератора;

ь широким диапазоном напряжений питания от 2В до 5,5В;

ь диапазон рабочих частот до 20МГц;

ь все команды выполняются за один цикл;

ь двумя 8-разрядными и одним 16-разрядным таймерами, с помощью которых можно установить длительность сигналов АЛС;

Архитектура основана на концепции раздельных шин и областей памяти для данных и для команд (Гарвардская архитектура). Шина данных и память данных (ОЗУ) - имеют ширину 8 бит, а программная шина и программная память (ПЗУ) имеют ширину 14 бит. Такая концепция обеспечивает простую, но мощную систему команд, разработанную так, что битовые, байтовые и регистровые операции работают с высокой скоростью и с перекрытием по времени выборок команд и циклов выполнения. 14-битовая ширина программной памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команды.

Все команды выполняются за один цикл, исключая команды переходов, которые выполняются за два цикла.

Принципиальная схема вычислительного канала приведена в приложении В.

2.2 Разработка принципиальной электрической схемы устройств сопряжения с исполнительными объектами

Сигналы, управляющие работой реле К1 и К2, поступают с выходов каналов на входы УВИР, представленной на рисунке 10.

Рисунок 10 -- Мажоритарное УВИР

При синхронном поступлении импульсных сигналов на входы 1, 2, 3 происходит заряд конденсаторов C1, C2, C3 в течение времени действия входных импульсов. Во время паузы они разряжаются на светодиоды оптопар VO1 и VO2 через резисторы R1, R2. При этом напряжение, воздействующее на них, равно сумме напряжений на конденсаторе и источнике питания. В результате этого фототранзисторы оптопар переключаются и формируют импульсы, поступающие на вход преобразователя полярности (элементы C4, C5, VD6, VD7). Поляризованное реле ИР притягивает якорь.

При отсутствии импульсов на двух входах из трех на светодиоды воздействует только напряжение заряда конденсаторов приблизительно в два раза меньшей величины, чем в случае синхронного поступления импульсных сигналов на все входы. В результате оптроны не переключаются, и ИР отпустит свой якорь. В данной схеме для обеспечения ее безопасного функционирования используются функции дифференцирования, удвоения напряжения и гальванической развязки. Временная диаграмма работы схемы при трёх активных входах изображена на рисунке 11, при двух -- на рисунке 12.

Рисунок 11 - Временная диаграмма работы УСО при трёх активных входах

Рисунок 12 - Временная диаграмма работы УСО при двух активных входах

В качестве реле К1 и К2 применены реле 1 класса надежности РЭЛ1-1600, сопротивление обмотки которых 800 Ом, напряжение отпускания 5В, напряжение срабатывания 16В.

В пакете OrCAD была собрана часть описанной схемы - УВИР с конденсаторной гальванической развязкой, которая приведена на рисунке 13, а временная диаграмма ее работы - на рисунке 14.

Рисунок 13 - Схема УВИР с конденсаторной гальванической развязкой, выполненная в пакете OrCAD

Рисунок 14 - Временная диаграмма работы УВИР

Как видно из временной диаграммы на пятом импульсе происходит включение реле при достижении напряжения порядка 16В. Напряжение 2В, отпирающее транзистор соответствует напряжению срабатывания оптронов VO1 и VO2 мажоритарного УВИР на рисунке 8.

2.3 Разработка принципиальной электрической схемы устройств безопасного ввода информации

Для обеспечения необходимой достоверности контрольной информации о состоянии исполнительных объектов в безопасных системах используются различные виды избыточного кодирования последовательного или параллельного вида. Устройства безопасного ввода информации изображено на рисунке 16.

Рисунок 16 - Устройства безопасного ввода информации

На выходах устройства ввода информации T и не-T генерируются последовательности парафазных импульсов. Достоверность информации подтверждается парафазностью импульсных последовательностей, поступающих на входы А и В. Значение переменной X определяется следующим образом. Если на вход А приходит сигнал Т, а на вход В - сигнал не-Т, то контакт реле замкнут, в противоположном случае - контакт разомкнут.

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

Для поступления парафазных импульсов Т и не-Т собран генератор на элементах DD1.1- DD1.4.

Генератор импульсов состоит из четырёх инверторов, резистора и конденсатора. Используя формулу, определим номиналы конденсатора и резистора. Пусть опрос кнопки бдительности происходит каждые 5 мс, тогда выходная частота генератора f=1/0,01=100Гц, исходя из формулы, найдём номиналы резистора и конденсатора. Возьмём резистор номиналом 2,2 кОм и получим номинал конденсатора равным 1,5 мкФ.

Для контролирования цепи контроля торможения используется идентичная схема, в которой генератор собран на элементах DD1.5,DD1.6,DD2.1,DD2.2. Выходная частота генератора, номиналы резистор и конденсатора такие же. Опрос цепи каждые 5 мс достаточен для аварийного срабатывания системы.

2.4 Разработка принципиальной электрической схемы парафазного генератора

Для выбранной ПЛИС выберем генератор, который генерировал бы частоту 200МГц для тактирования схем системы. Для данных целей можно применить генератор и умножитель частоты в одном корпусе TL555. Схема генератора приведена на рисунке 17.

Рисунок 17 - Генератор импульсов

По данным указанным в Xilinx Application Note 078, примем C5=0.047F, R16=1M.

2.5 Разработка принципиальной электрической схемы согласования с линией

В разработанной МПС предусмотрена возможность передачи сигналов телесигнализации через линию связи внешней ЭВМ (например, на станции). Передача организована программно как отдельный процесс. Используемый интерфейс - RS-485. Приведение сигнала к уровню стандарта осуществляет чип MAX490. Он реализует связь в режиме полного дуплекса на расстояние до 1200 м. Назначение выводов приведено в таблице 1, схема подключения - на рисунке 18.

Таблица 1 - Назначение выводов МАХ490

Обозначение

Назначение

A

вход

B

выход

Vcc

питание +5В

RO

разрешение передачи

Z

вход

Y

выход

GND

земля

DI

разрешение приёма

Рисунок 18 - Схема сопряжения с линией

3. Разработка алгоритмов и программного обеспечения

3.1 Алгоритм работы подпрограммы считывания информации с реле

Алгоритм подпрограммы представлен на рисунке 19.

Рисунок 19 - Алгоритм работы подпрограммы считывания информации с реле

3.2 Алгоритм проверки и управления состоянием переезда

Алгоритм подпрограммы представлен на рисунке 20.

Рисунок 20 - Алгоритм проверки и управления состоянием переезда

3.3 Алгоритм передачи информации в линию

Алгоритм подпрограммы представлен на рисунке 21.

Рисунок 21 - Алгоритм передачи информации в линию

3.4 Алгоритм закрытия/открытия переезда

Алгоритм подпрограммы представлен на рисунке 22.

Рисунок 22 - Алгоритм закрытия/открытия переезда

3.5 Описание работы программы

Листинг программы ПЛИС приведен в приложении А. Далее в пункте изложены основные принципы организации вычислений и дано описание используемых портов, сигналов и процессов.

В начале программы объявлены все порты ввода и вывода информации:

· F1, F2 - входы, на которые подаётся напряжение +5В при наличии питания на фидерах и нулевое напряжение при его отсутствии.

· O1_T, O1_nT, O1_A, O1_B, O2_T, O2_nT, O2_A, O2_B, O3_T, O3_nT, O3_A, O3_B, O4_T, O4_nT, O4_A, O4_B - входы, на которые подаются импульсы от устройств безопасного ввода информации(c огневых реле ОР1 - ОР4).

· P1_T, P1_nT, P1_A, P1_B, P2_T, O2_nT, P2_A, P2_B, P3_T, P3_nT, P3_A, P3_B - входы, на которые подаются импульсы от устройств безопасного ввода информации(c путевых реле ПР1 - ПP3).

· K1, K2 - выходы управления переездными светофорами.

· SendInfo - вход, по которому осуществляется выдача информации о состоянии МПС АПС.

· Info - выход, по которому производится последовательная передача данных телесигнализации.

· Synchr - вход, сигнал синхронизации передачи.

· Zvuk - выход, по которому осуществляется звуковая сигнализация.

· Pereezd - выход, несущий информацию о состоянии переезда.

· FStatus - вектор, несущий информацию о состоянии фидеров питания.

Далее объявлены сигналы, используемые в программе:

· Close - сигнал, устанавливаемый при включении путевых реле, используемый далее в процессе включения переездной сигнализации и закрытии переезда.

· P1 - сигнал, устанавливаемый при включении путевого реле ПР1.

· P2 - сигнал, устанавливаемый при включении путевого реле ПР2.

· P3 - сигнал, устанавливаемый при включении путевого реле ПР3.

· O1 - сигнал, устанавливаемый при включении огневого реле O1.

· O2 - сигнал, устанавливаемый при включении путевого реле O1.

· O3 - сигнал, устанавливаемый при включении путевого реле O1.

· O4 - сигнал, устанавливаемый при включении путевого реле O1.

· CLK, ClkL, - внутренние тактирующие сигналы, используемые для реализации различного рода задержек. Назначение каждого из сигналов приведено в комментариях листинга.

При запуске программы все сигналы инициализируются в нуль.

Описание процессов.

· p1, p2, p3, o1, o2,o3,o4 - процессы, проверяющие состояние путевых и огневых реле.

Если приходит фронт сигнала Т производится четыре замера состояния на линиях Т, не-Т, А и В через 1.5, 3, 6.5 и 8 мс, т.е. по два в первый и второй полупериоды. Со следующим фронтом начинается новый цикл считывания. Состояние реле определяется следующим образом: если на вход А приходит сигнал Т, а на вход В - сигнал не-Т, то реле замкнуто, иначе - разомкнуто. При определении состояния реле устанавливается сигнал Blok=1. Если Blok=0, это говорит о нарушении парафазности или импульсного характера сигнала.

Рисунок 25 - Временная диаграмма работы процесса

· fiders. Процесс проверяет наличие напряжения на фидерах питания. Состояние о фидерах питания выдается по телесигнализации дежурному по переезду.

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

· delayL. Процесс реализует изменение внутреннего тактирующего сигнала ClkL для мигания ламп переездных светофоров.

· closeP. Процесс реализует выполнение алгоритма закрытия переезда. Проверяет состояние сигналов Close и при наличии на нем выдаёт сигналы на включение ламп переездных светофоров и звуковой сигнализации в зависимости от состоянии сигнала ClkL.

· TS. Процесс выдачи в порт InfoOut информации телесигнализации. Выдаётся стартовый бит, четыре бита адреса для идентификации переезда, 6 бит данных телесигнализации, бит паритета и стоповый бит.

data (0) = O1; состояние огневого реле ОР1

data (1) = O2; состояние огневого реле ОР2

data (2) = O3; состояние огневого реле ОР3

data (3) = O4; состояние огневого реле ОР4

data (4) = Pereezd; состояние переезда

data(6 downto 5):= FStatus; состояние фидеров питания

При включении системы происходит инициализация внутренних сигналов, осуществляется считывание информации с входных портов и её обработка. Если какое-либо путевое реле включается, запускаются процессы, обеспечивающие алгоритмы закрытия переезда и включения переездной сигнализации. Также запускаются процессы, контролирующие включённое состояние огневых реле ламп переездных светофоров.

Каждый час дежурному по переезду выдается телесигнализация о состоянии системы.

4. Расчет показателей безотказности и безопасности системы

Основными показателями безотказности и безопасности системы являются:

- безотказность СЖАТ -- свойство системы непрерывно сохранять работоспособное состояние в течение некоторого времени или наработки. Показатели безотказности делятся на две группы: показатели невосстанавливаемых и восстанавливаемых изделий.

Невосстанавливаемые изделия -- изделия, поведение которых существенно лишь до первого отказа, -- характеризуются следующими количественными показателями надежности: интенсивностью отказов (t); вероятностью безотказной работы Р(t); вероятностью отказа Q(t); средней наработкой до отказа То.

Восстанавливаемые изделия -- изделия, эксплуатация которых допускает их многократный ремонт, -- характеризуется следующими количественными показателями надежности: параметрами потока отказов (t) и потока восстановлений (t); функцией готовности Кг(t); коэффициентом готовности Кг; средним временем работы между двумя отказами tср; средним временем восстановления tв.

Безопасность СЖАТ -- свойство системы непрерывно сохранять исправное, работоспособное или защитное состояние в течение некоторого времени или наработки. Показатели безопасности аналогичны показателям безотказности.

Для невосстанавливаемых систем рассчитывают следующие показатели: вероятность безопасной работы Рб(t); вероятность опасного отказа Qоп(t); интенсивность опасных отказов оп(t); среднюю наработку до опасного отказа Топ.

Вероятность безотказной работы мажоритарной структуры с умеренной связью определяется выражением:

,

где P1, Pмэ - вероятности безотказной работы соответственно канала обработки информации и мажоритарного элемента МЭ;

n - число информационных выходов модуля.

Для разрабатываемой системы n=3.

Для вычислительного канала имеем:

Резисторы - 16 шт. = 1/ч

Конденсаторы - 13 шт. = 1/ч

Диоды - 5 шт. = 1/ч

Интегральные микросхемы - 6 = 1/ч

Для БМЭ:

Резисторы - 29 шт. = 1/ч

Конденсаторы - 20 шт. = 1/ч

Диоды - 21 шт. = 1/ч

Транзисторы - 9 шт. = 1/ч

Интегральные микросхемы - 3 = 1/ч

Реле - 6 шт. = 1/ч

Таким образом,

.

Вероятность безотказной работы за год составляет:

=2,56-1,679=0,881, или 88,1%.

Вероятность появления опасного отказа в мажоритарном модуле определяется выражением:

, (2)

где Д - период диагностирования элементов модуля;

i - интенсивность отказов канала обработки информации.

Основной цикл программы и основные подпрограммы при размещении на кристалле занимают около 57000 системных вентилей ПЛИС. Учитывая, что значение средней задержки распространения сигнала равно 12нс, можно принять время максимального цикла примерно равное 57000*12нс.

Следовательно, для разработанной системы Д равняется примерно 684мкс или лет. i - есть суммарная интенсивность отказов, которая составляет:

i = 1/ч

или 0,049 1/лет

Таким образом вероятность опасного отказа за год составляет:

или %.

Полученная вероятность соответствует барьеру установленному стандартом. Это позволяет говорить о том, что систему можно считать безопасной.

Заключение

В результате выполнения данного курсового проекта была разработана микропроцессорная система автоматической переездной сигнализации.

Разработаны принципиальные схемы вычислительных каналов, устройств сравнения и контроля, алгоритмы и программное обеспечение МИУС. Произведен необходимый расчет показателей безопасности и безотказности системы. Разработанная система полностью отвечает требованиям безопасности, предъявляемым к СЖАТ.

При проведении расчёта показателей безопасности и безотказности были получены следующие значения характеристик:

- вероятность безотказной работы Р=0.881;

- вероятность отказа системы (одновременное появление одинакового сбоя в двух вычислительных каналах) Q=1.110-14.

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

Список литературы

Методы построения безопасных микроэлектронных систем железнодорожной автоматики / В.В. Сапожников, Вл. В. Сапожников, Х.А. Христов, Д.В. Гавзов; Под ред. Вл. В. Сапожникова. - М.: Транспорт, 1995. - 272 с.

РТМ 32 ЦШ 1115842.01-94. Безопасность железнодорожной автоматики и телемеханики. Методы и принципы обеспечения безопасности микроэлектронных СЖАТ. - СПб.: ПГУ ПС, 1994. - 120 с.

Щелкунов Н.Н., Дианов А.П. Микропроцессорные средства и системы. М.: Радио и связь, 1989.

XC2S100 Datasheet. Xilinx. 2001

Цифровые интегральные микросхемы. Справочник/ Богданович М.Н., Грель И.Н., Дубина С.А., Прохоренко В.А., Шалимо В.В. - Минск: Полымя, 1996. - 603 с.

Системы железнодорожной автоматики и телемеханики / Кравцов Ю. А., Нестеров В. Л. и др. -Учебник для ВУЗов. М.: Транспорт, 1996. 400 с.

Приложение А - Листинг программы ПЛИС вычислительного канала

---------------------------------------------------------------------------------------------------

--

-- Title : mine

-- Design : work

-- Author : Alexey Kuprienko

-- Company : Home

--

---------------------------------------------------------------------------------------------------

--

-- File : mine.vhd

-- Generated : Sun Dec 4 17:21:15 2005

-- From : interface description file

-- By : Itf2Vhdl ver. 1.20

--

---------------------------------------------------------------------------------------------------

--

-- Description : курсовой проект по МИУС Куприенко Алексея

--

---------------------------------------------------------------------------------------------------

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use IEEE.STD_LOGIC_ARITH.all;

use IEEE.STD_LOGIC_UNSIGNED.all;

entity mine is

Port

(

F1: in STD_LOGIC;-- контроль наличия напряжения на фидере 1

F2 : in STD_LOGIC;-- контроль наличия напряжения на фидере 2

CLK: in STD_LOGIC;

ClkL: in STD_LOGIC;

FStatus: out STD_LOGIC_VECTOR (1 downto 0);

SendInfo: in STD_LOGIC;

Pereezd: out STD_LOGIC;

P1_nT : in STD_LOGIC; -- P1 - Путевое реле 1

P1_A : in STD_LOGIC;

P1_B : in STD_LOGIC;

P1_T : in STD_LOGIC;

P2_nT : in STD_LOGIC; -- P2 - Путевое реле 2

P2_A : in STD_LOGIC;

P2_B : in STD_LOGIC;

P2_T : in STD_LOGIC;

P3_nT : in STD_LOGIC; -- P1 - Путевое реле 1

P3_A : in STD_LOGIC;

P3_B : in STD_LOGIC;

P3_T : in STD_LOGIC;

O1_nT : in STD_LOGIC; -- O1 - ОР1 переездного св.1

O1_A : in STD_LOGIC;

O1_B : in STD_LOGIC;

O1_T : in STD_LOGIC;

O2_nT : in STD_LOGIC; -- O2 - ОР2 переездного св.1

O2_A : in STD_LOGIC;

O2_B : in STD_LOGIC;

O2_T : in STD_LOGIC;

O3_nT : in STD_LOGIC; -- O3 - ОР1 переездного св.2

O3_A : in STD_LOGIC;

O3_B : in STD_LOGIC;

O3_T : in STD_LOGIC;

O4_nT : in STD_LOGIC; -- O4 - ОР2 переездного св.2

O4_A : in STD_LOGIC;

O4_B : in STD_LOGIC;

O4_T : in STD_LOGIC;

K1 : out STD_LOGIC;

K2 : out STD_LOGIC;

--K1,K2 -выходной вектор управления светофорами

Zvuk : out STD_LOGIC;

InfoOut : out STD_LOGIC;-- сигнал выдачи в линию информации о состоянии АПС

Synchr : in STD_LOGIC-- синхронизация передачи

);

end mine;

architecture mine of mine is

-- СПИСОК СИГНАЛОВ, ИСПОЛЬЗУЕМЫХ В ПРОГРАММЕ

signal Close : STD_LOGIC :='0';-- закрыть переезд

signal P1 : STD_LOGIC :='0';-- ПР1 замкнуто

signal P2 : STD_LOGIC :='0';-- ПР2 замкнуто

signal P3 : STD_LOGIC :='0';-- ПР3 замкнуто

-- БЛОК СИГНАЛОВ, СООТВЕТСТВУЮЩИХ ПОРТАМ ПЛИС

signal O1: STD_LOGIC;

signal O2: STD_LOGIC;

signal O3: STD_LOGIC;

signal O4: STD_LOGIC;

begin

process

begin

CLK<=not CLK after 0.1 ms;

end process;

process

begin

Synchr<=not Synchr after 10 ns;

end process;

process

begin

SendInfo<=not SendInfo after 3600 s;

end process;

-- СЪЁМ ИНФОРМАЦИИ С ПУТЕВОГО РЕЛЕ 1; ПРОИЗВОДИТСЯ ПОСТОЯННО

p1 : process

variable P1_T1,P1_T2,P1_T3,P1_T4 : STD_LOGIC;

variable P1_nT1,P1_nT2,P1_nT3,P1_nT4 : STD_LOGIC;

variable P1_A1,P1_A2,P1_A3,P1_A4 : STD_LOGIC;

variable P1_B1,P1_B2,P1_B3,P1_B4 : STD_LOGIC;

variable Blok : STD_LOGIC :='0';

begin

-- __ __

-- длительность импульсов и провалов: 5 ms _| |__| |_

if P1_T'event and P1_T='1' -- если пришёл фронт сигнала Т

then

wait for 1.5 ms;

P1_A1:=P1_A;

P1_B1:=P1_B;

P1_T1:=P1_T;

P1_nT1:=P1_nT;

wait for 1.5 ms;

P1_A2:=P1_A;

P1_B2:=P1_B;

P1_T2:=P1_T;

P1_nT2:=P1_nT;

wait for 3.5 ms;

P1_A3:=P1_A;

P1_B3:=P1_B;

P1_T3:=P1_T;

P1_nT3:=P1_nT;

wait for 1.5 ms;

P1_A4:=P1_A;

P1_B4:=P1_B;

P1_T4:=P1_T;

P1_nT4:=P1_nT;

if P1_A1=P1_T1 and P1_A2=P1_T2 and P1_T1=P1_T2 then

if P1_B1=P1_nT1 and P1_B2=P1_nT2 and P1_nT1=P1_nT2 then

if P1_A3=P1_T3 and P1_A4=P1_T4 and P1_T3=P1_T4 then

if P1_B3=P1_nT3 and P1_B4=P1_nT4 and P1_nT3=P1_nT4 then

if P1_A1/=P1_A3 and P1_A2/=P1_A4 then

Blok:='1';

P1<='1'; -- путевое реле 1 замкнуто

end if;

end if;

end if;

end if;

end if;

if P1_A1=P1_nT1 and P1_A2=P1_nT2 and P1_nT1=P1_nT2 then

if P1_B1=P1_T1 and P1_B2=P1_T2 and P1_T1=P1_T2 then

if P1_A3=P1_nT3 and P1_A4=P1_nT4 and P1_nT3=P1_nT4 then

if P1_B3=P1_T3 and P1_B4=P1_T4 and P1_T3=P1_T4 then

if P1_A1/=P1_A3 and P1_A2/=P1_A4 then

Blok:='1';

P1<='0'; -- путевое реле 1 разомкнуто

end if;

end if;

end if;

end if;

end if;

-- нарушение парафазности или импульсного сигнала на входах А и В

if Blok='0' then

P1<='0';

end if;

end if;

end process;

-- СЪЁМ ИНФОРМАЦИИ С ПУТЕВОГО РЕЛЕ 2; ПРОИЗВОДИТСЯ ПОСТОЯННО

p2 : process

variable P2_T1,P2_T2,P2_T3,P2_T4 : STD_LOGIC;

variable P2_nT1,P2_nT2,P2_nT3,P2_nT4 : STD_LOGIC;

variable P2_A1,P2_A2,P2_A3,P2_A4 : STD_LOGIC;

variable P2_B1,P2_B2,P2_B3,P2_B4 : STD_LOGIC;

variable Blok : STD_LOGIC :='0';

begin

-- __ __

-- длительность импульсов и провалов: 5 ms _| |__| |_

if P2_T'event and P2_T='1' -- если пришёл фронт сигнала Т

then

wait for 1.5 ms;

P2_A1:=P2_A;

P2_B1:=P2_B;

P2_T1:=P2_T;

P2_nT1:=P2_nT;

wait for 1.5 ms;

P2_A2:=P2_A;

P2_B2:=P2_B;

P2_T2:=P2_T;

P2_nT2:=P2_nT;

wait for 3.5 ms;

P2_A3:=P2_A;

P2_B3:=P2_B;

P2_T3:=P2_T;

P2_nT3:=P2_nT;

wait for 1.5 ms;

P2_A4:=P2_A;

P2_B4:=P2_B;

P2_T4:=P2_T;

P2_nT4:=P2_nT;

if P2_A1=P2_T1 and P2_A2=P2_T2 and P2_T1=P2_T2 then

if P2_B1=P2_nT1 and P2_B2=P2_nT2 and P2_nT1=P2_nT2 then

if P2_A3=P2_T3 and P2_A4=P2_T4 and P2_T3=P2_T4 then

if P2_B3=P2_nT3 and P2_B4=P2_nT4 and P2_nT3=P2_nT4 then

if P2_A1/=P2_A3 and P2_A2/=P2_A4 then

Blok:='1';

P2<='1'; -- путевое реле 2 замкнуто

end if;

end if;

end if;

end if;

end if;

if P2_A1=P2_nT1 and P2_A2=P2_nT2 and P2_nT1=P2_nT2 then

if P2_B1=P2_T1 and P2_B2=P2_T2 and P2_T1=P2_T2 then

if P2_A3=P2_nT3 and P2_A4=P2_nT4 and P2_nT3=P2_nT4 then

if P2_B3=P2_T3 and P2_B4=P2_T4 and P2_T3=P2_T4 then

if P2_A1/=P2_A3 and P2_A2/=P2_A4 then

Blok:='1';

P2<='0'; -- путевое реле 2 разомкнуто

end if;

end if;

end if;

end if;

end if;

-- нарушение парафазности или импульсного сигнала на входах А и В

if Blok='0' then

P2<='0';

end if;

end if;

end process;

-- СЪЁМ ИНФОРМАЦИИ С ПУТЕВОГО РЕЛЕ 3; ПРОИЗВОДИТСЯ ПОСТОЯННО

p3 : process

variable P3_T1,P3_T2,P3_T3,P3_T4 : STD_LOGIC;

variable P3_nT1,P3_nT2,P3_nT3,P3_nT4 : STD_LOGIC;

variable P3_A1,P3_A2,P3_A3,P3_A4 : STD_LOGIC;

variable P3_B1,P3_B2,P3_B3,P3_B4 : STD_LOGIC;

variable Blok : STD_LOGIC :='0';

begin

-- __ __

-- длительность импульсов и провалов: 5 ms _| |__| |_

if P3_T'event and P3_T='1' -- если пришёл фронт сигнала Т

then

wait for 1.5 ms;

P3_A1:=P3_A;

P3_B1:=P3_B;

P3_T1:=P3_T;

P3_nT1:=P3_nT;

wait for 1.5 ms;

P3_A2:=P3_A;

P3_B2:=P3_B;

P3_T2:=P3_T;

P3_nT2:=P3_nT;

wait for 3.5 ms;

P3_A3:=P3_A;

P3_B3:=P3_B;

P3_T3:=P3_T;

P3_nT3:=P3_nT;

wait for 1.5 ms;

P3_A4:=P3_A;

P3_B4:=P3_B;

P3_T4:=P3_T;

P3_nT4:=P3_nT;

if P3_A1=P3_T1 and P3_A2=P3_T2 and P3_T1=P3_T2 then

if P3_B1=P3_nT1 and P3_B2=P3_nT2 and P3_nT1=P3_nT2 then

if P3_A3=P3_T3 and P3_A4=P3_T4 and P3_T3=P3_T4 then

if P3_B3=P3_nT3 and P3_B4=P3_nT4 and P3_nT3=P3_nT4 then

if P3_A1/=P3_A3 and P3_A2/=P3_A4 then

Blok:='1';

P3<='1'; -- путевое реле 3 замкнуто

end if;

end if;

end if;

end if;

end if;

if P3_A1=P3_nT1 and P3_A2=P3_nT2 and P3_nT1=P3_nT2 then

if P3_B1=P3_T1 and P3_B2=P3_T2 and P3_T1=P3_T2 then

if P3_A3=P3_nT3 and P3_A4=P3_nT4 and P3_nT3=P3_nT4 then

if P3_B3=P3_T3 and P3_B4=P3_T4 and P3_T3=P3_T4 then

if P3_A1/=P3_A3 and P3_A2/=P3_A4 then

Blok:='1';

P3<='0'; -- путевое реле 3 разомкнуто

end if;

end if;

end if;

end if;

end if;

-- нарушение парафазности или импульсного сигнала на входах А и В

if Blok='0' then

P3<='0';

end if;

end if;

end process;

-- СЪЁМ ИНФОРМАЦИИ С ОГНЕВОГО РЕЛЕ 1 ПЕРЕЕЗДНОГО СВЕТОФОРА 1;

o1 : process

variable O1_T1,O1_T2,O1_T3,O1_T4 : STD_LOGIC;

variable O1_nT1,O1_nT2,O1_nT3,O1_nT4 : STD_LOGIC;

variable O1_A1,O1_A2,O1_A3,O1_A4 : STD_LOGIC;

variable O1_B1,O1_B2,O1_B3,O1_B4 : STD_LOGIC;

variable Blok : STD_LOGIC :='0';

begin

-- __ __

-- длительность импульсов и провалов: 5 ms _| |__| |_

if P1='1' -- если переезд закрыт

then if ClkL='0'then

if O1_T'event and O1_T='1' -- если пришёл фронт сигнала Т

then

wait for 1.5 ms;

O1_A1:=O1_A;

O1_B1:=O1_B;

O1_T1:=O1_T;

O1_nT1:=O1_nT;

wait for 1.5 ms;

O1_A2:=O1_A;

O1_B2:=O1_B;

O1_T2:=O1_T;

O1_nT2:=O1_nT;

wait for 3.5 ms;

O1_A3:=O1_A;

O1_B3:=O1_B;

O1_T3:=O1_T;

O1_nT3:=O1_nT;

wait for 1.5 ms;

O1_A4:=O1_A;

O1_B4:=O1_B;

O1_T4:=O1_T;

O1_nT4:=O1_nT;

if O1_A1=O1_T1 and O1_A2=O1_T2 and O1_T1=O1_T2 then

if O1_B1=O1_nT1 and O1_B2=O1_nT2 and O1_nT1=O1_nT2 then

if O1_A3=O1_T3 and O1_A4=O1_T4 and O1_T3=O1_T4 then

if O1_B3=O1_nT3 and O1_B4=O1_nT4 and O1_nT3=O1_nT4 then

if O1_A1/=O1_A3 and O1_A2/=O1_A4 then

--Close1<='1'; -- путевое реле 1 разомкнуто; закрыт переезд

Blok:='1';

O1<='1'; -- лампа ОР1ПС1 исправна

end if;

end if;

end if;

end if;

end if;

if O1_A1=O1_nT1 and O1_A2=O1_nT2 and O1_nT1=O1_nT2 then

if O1_B1=O1_T1 and O1_B2=O1_T2 and O1_T1=O1_T2 then

if O1_A3=O1_nT3 and O1_A4=O1_nT4 and O1_nT3=O1_nT4 then

if O1_B3=O1_T3 and O1_B4=O1_T4 and O1_T3=O1_T4 then

if O1_A1/=O1_A3 and O1_A2/=O1_A4 then

--Close1<='0'; -- путевое реле 1 разомукнуто; переезд открыт

Blok:='1';

O1<='0';-- лампа ОР1ПС1 неисправна

end if;

end if;

end if;

end if;

end if;

-- нарушение парафазности или импульсного сигнала на входах А и В

if Blok='0'

then O1<:=0; -- лампа ОР1ПС1 неисправна

end if;

end if;

end if;

end process;

-- СЪЁМ ИНФОРМАЦИИ С ОГНЕВОГО РЕЛЕ 2 ПЕРЕЕЗДНОГО СВЕТОФОРА 1;

o2 : process

variable O2_T1,O2_T2,O2_T3,O2_T4 : STD_LOGIC;

variable O2_nT1,O2_nT2,O2_nT3,O2_nT4 : STD_LOGIC;

variable O2_A1,O2_A2,O2_A3,O2_A4 : STD_LOGIC;

variable O2_B1,O2_B2,O2_B3,O2_B4 : STD_LOGIC;

variable Blok : STD_LOGIC :='0';

begin

-- __ __

-- длительность импульсов и провалов: 5 ms _| |__| |_

if P1='1' -- если переезд закрыт

then if ClkL='1'then

if O2_T'event and O2_T='1' -- если пришёл фронт сигнала Т

then

wait for 1.5 ms;

O2_A1:=O2_A;

O2_B1:=O2_B;

O2_T1:=O2_T;

O2_nT1:=O2_nT;

wait for 1.5 ms;

O2_A2:=O2_A;

O2_B2:=O2_B;

O2_T2:=O2_T;

O2_nT2:=O2_nT;

wait for 3.5 ms;

O2_A3:=O2_A;

O2_B3:=O2_B;

O2_T3:=O2_T;

O2_nT3:=O2_nT;

wait for 1.5 ms;

O2_A4:=O2_A;

O2_B4:=O2_B;

O2_T4:=O2_T;

O2_nT4:=O2_nT;

if O2_A1=O2_T1 and O2_A2=O2_T2 and O2_T1=O2_T2 then

if O2_B1=O2_nT1 and O2_B2=O2_nT2 and O2_nT1=O2_nT2 then

if O2_A3=O2_T3 and O2_A4=O2_T4 and O2_T3=O2_T4 then

if O2_B3=O2_nT3 and O2_B4=O2_nT4 and O2_nT3=O2_nT4 then

if O2_A1/=O2_A3 and O2_A2/=O2_A4 then

Blok:='1';

O2<='1'; -- лампа ОР1ПС2 исправна

end if;

end if;

end if;

end if;

end if;

if O2_A1=O2_nT1 and O2_A2=O2_nT2 and O2_nT1=O2_nT2 then

if O2_B1=O2_T1 and O2_B2=O2_T2 and O2_T1=O2_T2 then

if O2_A3=O2_nT3 and O2_A4=O2_nT4 and O2_nT3=O2_nT4 then

if O2_B3=O2_T3 and O2_B4=O2_T4 and O2_T3=O2_T4 then

if O2_A1/=O2_A3 and O2_A2/=O2_A4 then

Blok:='1';

O2<='0';-- лампа ОР1ПС2 неисправна

end if;

end if;

end if;

end if;

end if;

-- нарушение парафазности или импульсного сигнала на входах А и В

if Blok='0'

then O2<=0; -- лампа ОР1ПС2 неисправна

end if;

end if;

end if;

end process;

- СЪЁМ ИНФОРМАЦИИ С ОГНЕВОГО РЕЛЕ 1 ПЕРЕЕЗДНОГО СВЕТОФОРА 2;

o3 : process

variable O3_T1,O3_T2,O3_T3,O3_T4 : STD_LOGIC;

variable O3_nT1,O3_nT2,O3_nT3,O3_nT4 : STD_LOGIC;

variable O3_A1,O3_A2,O3_A3,O3_A4 : STD_LOGIC;

variable O3_B1,O3_B2,O3_B3,O3_B4 : STD_LOGIC;

variable Blok : STD_LOGIC :='0';

begin

-- __ __

-- длительность импульсов и провалов: 5 ms _| |__| |_

if P1='1' -- если переезд закрыт

then if ClkL='0'then

if O3_T'event and O3_T='1' -- если пришёл фронт сигнала Т

then

wait for 1.5 ms;

O3_A1:=O3_A;

O3_B1:=O3_B;

O3_T1:=O3_T;

O3_nT1:=O3_nT;

wait for 1.5 ms;

O3_A2:=O3_A;

O3_B2:=O3_B;

O3_T2:=O3_T;

O3_nT2:=O3_nT;

wait for 3.5 ms;

O3_A3:=O3_A;

O3_B3:=O3_B;

O3_T3:=O3_T;

O3_nT3:=O3_nT;

wait for 1.5 ms;

O3_A4:=O3_A;

O3_B4:=O3_B;

O3_T4:=O3_T;

O3_nT4:=O3_nT;

if O3_A1=O3_T1 and O3_A2=O3_T2 and O3_T1=O3_T2 then

if O3_B1=O3_nT1 and O3_B2=O3_nT2 and O3_nT1=O3_nT2 then

if O3_A3=O3_T3 and O3_A4=O3_T4 and O3_T3=O3_T4 then

if O3_B3=O3_nT3 and O3_B4=O3_nT4 and O3_nT3=O3_nT4 then

if O3_A1/=O3_A3 and O3_A2/=O3_A4 then

Blok:='1';

O3<='1'; -- лампа ОР2ПС1 исправна

end if;

end if;

end if;

end if;

end if;

if O3_A1=O3_nT1 and O3_A2=O3_nT2 and O3_nT1=O3_nT2 then

if O3_B1=O3_T1 and O3_B2=O3_T2 and O3_T1=O3_T2 then

if O3_A3=O3_nT3 and O3_A4=O3_nT4 and O3_nT3=O3_nT4 then

if O3_B3=O3_T3 and O3_B4=O3_T4 and O3_T3=O3_T4 then

if O3_A1/=O3_A3 and O3_A2/=O3_A4 then

Blok:='1';

O3<='0';-- лампа ОР2ПС1 неисправна

end if;

end if;

end if;

end if;

end if;

-- нарушение парафазности или импульсного сигнала на входах А и В

if Blok='0'

then O3:=0; -- лампа ОР1ПС2 неисправна

end if;

end if;

end if;

end process;

-- СЪЁМ ИНФОРМАЦИИ С ОГНЕВОГО РЕЛЕ 2 ПЕРЕЕЗДНОГО СВЕТОФОРА 2;

o4 : process

variable O4_T1,O4_T2,O4_T3,O4_T4 : STD_LOGIC;

variable O4_nT1,O4_nT2,O4_nT3,O4_nT4 : STD_LOGIC;

variable O4_A1,O4_A2,O4_A3,O4_A4 : STD_LOGIC;

variable O4_B1,O4_B2,O4_B3,O4_B4 : STD_LOGIC;

variable Blok : STD_LOGIC :='0';

begin

-- __ __

-- длительность импульсов и провалов: 5 ms _| |__| |_

if P1='1' -- если переезд закрыт

then if ClkL='1'then

if O4_T'event and O4_T='1' -- если пришёл фронт сигнала Т

then

wait for 1.5 ms;

O4_A1:=O4_A;

O4_B1:=O4_B;

O4_T1:=O4_T;

O4_nT1:=O4_nT;

wait for 1.5 ms;

O4_A2:=O4_A;

O4_B2:=O4_B;

O4_T2:=O4_T;

O4_nT2:=O4_nT;

wait for 3.5 ms;

O4_A3:=O4_A;

O4_B3:=O4_B;

O4_T3:=O4_T;

O4_nT3:=O4_nT;

wait for 1.5 ms;

O4_A4:=O4_A;

O4_B4:=O4_B;

O4_T4:=O4_T;

O4_nT4:=O4_nT;

if O4_A1=O4_T1 and O4_A2=O4_T2 and O4_T1=O4_T2 then

if O4_B1=O4_nT1 and O4_B2=O4_nT2 and O4_nT1=O4_nT2 then

if O4_A3=O4_T3 and O4_A4=O4_T4 and O4_T3=O4_T4 then

if O4_B3=O4_nT3 and O4_B4=O4_nT4 and O4_nT3=O4_nT4 then

if O4_A1/=O4_A3 and O4_A2/=O4_A4 then

Blok:='1';

O4<='1'; -- лампа ОР2ПС2 исправна

end if;

end if;

end if;

end if;

end if;

if O4_A1=O4_nT1 and O4_A2=O4_nT2 and O4_nT1=O4_nT2 then

if O4_B1=O4_T1 and O4_B2=O4_T2 and O4_T1=O4_T2 then

if O4_A3=O4_nT3 and O4_A4=O4_nT4 and O4_nT3=O4_nT4 then

if O4_B3=O4_T3 and O4_B4=O4_T4 and O4_T3=O4_T4 then

if O4_A1/=O4_A3 and O4_A2/=O4_A4 then

Blok:='1';

O4<='0';-- лампа ОР2ПС2 неисправна

end if;

end if;

end if;

end if;

end if;

-- нарушение парафазности или импульсного сигнала на входах А и В

if Blok='0'

then O4<=0; -- лампа ОР2ПС2 неисправна

end if;

end if;

end if;

end process;

-- КОНТРОЛЬ ПИТАНИЯ ФИДЕРОВ

fiders : process (F1, F2)

begin

if F1='1' and F2='1'

then FStatus<="11";

end if;

if F1='0' and F2='1'

then FStatus<="01";

end if;

if F1='1' and F2='0'

then FStatus<="10";

end if;

if F1='0' and F2='0'

then FSatus<="00";

end if;

end process;

-- ОПРЕДЕЛЕНИЕ СОСТОЯНИЯ ПЕРЕЕЗДА

ПР : process (P1,P2,P3)

variable Var : integer range 0 to 3 := 0;

begin

if (var=0 and P1='1' and P2='0' and P3='0') or

(var=0 and Close1='0' and P2='0' and P3='1')

then Close<='1';

var:=1;

end if;

if (var=1 and P1='1' and P2='1' and P3='0')or

(var=1 and P1='0' and P2='1' and P3='1')

then var:=2;

end if;

if (var=2 and P2='0')

then var:=3;

end if;

if (var=3 and P1='0' and P2='0' and P3='0')

then var:=0; Close<='0';

end if;

end process;

-- МИГАНИЕ ЛАМП ПЕРЕЕЗДНЫХ СВЕТОФОРОВ

delayL : process (Close)

constant TIMER : TIME := 1000 ms;

begin

if Close='1'

then ClkL<= not ClkL after TIMER;

end if;

end process;

-- ЗАКРЫТИЕ ПЕРЕЕЗДА

closeP : process (Close)

begin

if Close='1'

then if CLKl='1'

then K1<=CLK; -- попеременное мигание

K2<=CLK -- ламп переездных

Zvuk<='1'; -- звуковая сигнализация

Pereezd<='1';

else if K1<='0';

K2<='0';

Zvuk<='1'

Pereezd<='1';

end if;

else if K1<='0';

K2<='0';

Zvuk<='0';

Pereezd<='0';

end if;

end process;

TS: process()

if

-- ПЕРЕДАЧА В ЛИНИЮ ИНФОРМАЦИИ О СОСТОЯНИИ АПС

send : process (SendInfo)

variable start_read : boolean := false;

variable last_bit : boolean := false;

variable num_bit : integer := 0;

variable adress: STD_LOGIC_VECTOR (0 to 4) := "0111";

variable data : STD_LOGIC_VECTOR (0 to 6);

begin

if SendInfo = '1' then

if falling_edge(Synchr) then

if SendInfo = '0' and num_bit = 0

then InfoOut <= '0';

end if;

if start_read = true then

if num_bit = 11

then InfoOut <= '1';

num_bit := 0;

last_bit := true;

end if;

if num_bit = 13

then

InfoOut <= (adress(3) xor adress(2) xor adress(1) xor adress(0)

xor data(0) xor data(1) xor data(2) xor data(3)xor data(4));

num_bit := 14;

end if;

if num_bit = 12

then InfoOut <= data(6);

num_bit := 13;

end if;

if num_bit =11

then InfoOut <= data(5);

num_bit := 12;

end if;

if num_bit = 10

then InfoOut <= data(4);

num_bit := 11;

end if;

if num_bit = 9

then InfoOut <= data(3);

num_bit := 10;

end if;

if num_bit = 8

then InfoOut <= data(2);

num_bit := 9;

end if;

if num_bit = 7

then InfoOut <= data(1);

num_bit := 8;

end if;

if num_bit = 6

then InfoOut <= data(0);

num_bit := 7;

end if;

if num_bit = 5

then InfoOut <= adress(0);

num_bit := 6;

end if;

if num_bit = 4

then InfoOut <= adress(1);

num_bit := 5;

end if;

if num_bit = 3

then InfoOut <= adress(2);

num_bit := 4;

end if;

if num_bit = 2

then InfoOut <= adress(3);

num_bit := 3;

end if;

if num_bit = 1

then InfoOut <= '1';

num_bit := 2;

end if;

end if;

if SendInfo = '1' and num_bit = 0

then if last_bit = true

then last_bit := false;

else

start_read := true;

num_bit := 1;

data(0) := O1;

data(1) := O2 ;

data(2) := O3;

data(3) := O4;

data(4) := Pereezd;

data(6 downto 5) := FStatus;

end if;

end if;

end if;

end if;

end process;

end mine;

Приложение Б - Листинг программы ПЛИС БМЭ

--

-- Title : mine

-- Design : work

-- Author : Alexey Kuprienko

-- Company : Home

--

---------------------------------------------------------------------------------------------------

--

-- File : ИЬУ.vhd

-- Generated : Sun Dec 4 17:21:15 2005

-- From : interface description file

-- By : Itf2Vhdl ver. 1.20

--

---------------------------------------------------------------------------------------------------

--

-- Description : курсовой проект по МИУС Куприенко Алексея--

---------------------------------------------------------------------------------------------------

--

-- Description :

--

---------------------------------------------------------------------------------------------------

-- Design unit header --

library IEEE;

use IEEE.std_logic_1164.all;

entity BME is

port(

K1R1 : in STD_LOGIC;

K1R2 : in STD_LOGIC;

K2R1 : in STD_LOGIC;

K2R2 : in STD_LOGIC;

K3R1 : in STD_LOGIC;

K3R2 : in STD_LOGIC;

SSVR11 : out STD_LOGIC;

SSVR12 : out STD_LOGIC;

SSVR21 : out STD_LOGIC;

SSVR22 : out STD_LOGIC;

SSVR31 : out STD_LOGIC;

SSVR32 : out STD_LOGIC

);

end BME;

architecture BME of BME is

---- Component declarations -----

component FE

port (

In1 : in STD_LOGIC;

In2 : in STD_LOGIC;

Out1 : out STD_LOGIC;

Out2 : out STD_LOGIC

);

end component;

component spt

port (

In1 : in STD_LOGIC;

In2 : in STD_LOGIC;

In3 : in STD_LOGIC;

In4 : in STD_LOGIC;

Out1 : out STD_LOGIC;

Out2 : out STD_LOGIC

);

end component;

---- Signal declarations used on the diagram ----

signal NET122 : STD_LOGIC;

signal NET126 : STD_LOGIC;

signal NET130 : STD_LOGIC;

signal NET134 : STD_LOGIC;

signal NET138 : STD_LOGIC;

signal NET142 : STD_LOGIC;

signal NET295 : STD_LOGIC;

signal NET299 : STD_LOGIC;

signal NET303 : STD_LOGIC;

signal NET307 : STD_LOGIC;

signal NET317 : STD_LOGIC;

signal NET321 : STD_LOGIC;

begin

---- Component instantiations ----

U1 : spt

port map(

In1 => K2R1,

In2 => K2R2,

In3 => NET138,

In4 => NET142,

Out1 => NET303,

Out2 => NET307

);

U10 : FE

port map(

In1 => NET303,

In2 => NET307,

Out1 => SSVR21,

Out2 => SSVR22

);

U11 : FE

port map(

In1 => NET295,

In2 => NET299,

Out1 => SSVR11,

Out2 => SSVR12

);

U12 : FE

port map(

In1 => NET317,

In2 => NET321,

Out1 => SSVR31,

Out2 => SSVR32

);

U2 : spt

port map(

In1 => K1R1,

In2 => K1R2,

In3 => NET122,

In4 => NET126,

Out1 => NET295,

Out2 => NET299

);

U3 : spt

port map(

In1 => K3R1,

In2 => K3R2,

In3 => NET130,

In4 => NET134,

Out1 => NET317,

Out2 => NET321

);

NET142 <= not(K3R2);

NET138 <= not(K3R1);

NET126 <= not(K2R2);

NET122 <= not(K2R1);

NET134 <= not(K1R2);

NET130 <= not(K1R1);

end BME;

---------------------------------------------------------------------------------------------------

--

-- Title : Фиксирующий элемент

-- Design : First

-- Author : 123

-- Company : 456

--

---------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------

--

-- Description :

--

---------------------------------------------------------------------------------------------------

-- Design unit header --

library IEEE;

use IEEE.std_logic_1164.all;

-- other libraries declarations

-- synopsys translate_off

library VIRTEX;

library IEEE;

use IEEE.vital_timing.all;

-- synopsys translate_on

entity FE is

port(

In1 : in STD_LOGIC;

In2 : in STD_LOGIC;

Out1 : out STD_LOGIC;

Out2 : out STD_LOGIC

);

end FE;

architecture FE of FE is

---- Component declarations -----

component pt

port (

Reset : in STD_LOGIC;

Set : in STD_LOGIC;

T0 : in STD_LOGIC;

T1 : in STD_LOGIC;

Q0 : out STD_LOGIC;

nQ0 : out STD_LOGIC

);

end component;

component ptgen

port (

Y : out STD_LOGIC;

nY : out STD_LOGIC

);

end component;

component sbros

port (

Y : out STD_LOGIC

);

end component;

component spt

port (

In1 : in STD_LOGIC;

In2 : in STD_LOGIC;

In3 : in STD_LOGIC;

In4 : in STD_LOGIC;

Out1 : out STD_LOGIC;

Out2 : out STD_LOGIC

);

end component;

component Vosstan

port (

Y : out STD_LOGIC

);

end component;

component VCC

-- synopsys translate_off

generic(

InstancePath : STRING := "*";

MsgOn : BOOLEAN := False;

TimingChecksOn : BOOLEAN := false;

Xon : BOOLEAN := TRUE

);

-- synopsys translate_on

port (

P : out std_ulogic := '1'

);

end component;

---- Signal declarations used on the diagram ----

signal NET101 : STD_LOGIC;

signal NET260 : STD_LOGIC;

signal NET264 : STD_LOGIC;

signal NET276 : STD_LOGIC;

signal NET308 : STD_LOGIC;

signal NET387 : STD_LOGIC;

signal NET394 : STD_LOGIC;

signal NET398 : STD_LOGIC;

signal NET404 : STD_LOGIC;

signal NET414 : STD_LOGIC;

signal NET418 : STD_LOGIC;

signal NET422 : STD_LOGIC;

signal NET453 : STD_LOGIC;

signal NET458 : STD_LOGIC;

signal NET572 : STD_LOGIC;

signal NET576 : STD_LOGIC;

signal NET639 : STD_LOGIC;

signal NET707 : STD_LOGIC;

signal NET716 : STD_LOGIC;

signal NET97 : STD_LOGIC;

---- Configuration specifications for declared components

-- synopsys translate_off

for U6 : VCC use entity VIRTEX.VCC;

-- synopsys translate_on

-- synopsys translate_off

for U7 : VCC use entity VIRTEX.VCC;

-- synopsys translate_on

begin

---- Component instantiations ----

U1 : spt

port map(

In1 => In1,

In2 => NET97,

In3 => NET101,

In4 => In2,

Out1 => NET260,

Out2 => NET264

);

NET422 <= not(NET639);

NET418 <= not(NET422);

NET414 <= not(NET418);

NET453 <= NET639 and NET414;

NET458 <= not(NET453);

NET576 <= NET572 and NET458;

Out1 <= NET716;

Out2 <= NET707;

U18 : sbros

port map(

Y => NET572

);

U2 : ptgen

port map(

Y => NET97,

nY => NET101

);

U3 : Vosstan

port map(

Y => NET387

);

U4 : pt

port map(

Q0 => NET394,

Reset => NET308,

Set => NET387,

T0 => NET707,

T1 => NET716,

nQ0 => NET398

);

U5 : pt

port map(

Q0 => NET716,

Reset => NET576,

Set => NET276,

T0 => NET264,

T1 => NET260,

nQ0 => NET707

);

U6 : VCC

port map(

P =>...


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

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