Федеральное агентство связи
Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования «Санкт-Петербургский государственный университет телекоммуникаций
им. проф. М. А. Бонч-Бруевича»
ПРОЕКТИРОВАНИЕ КОНЕЧНОГО АВТОМАТА С РЕАЛИЗАЦИЕЙ В ПЛИС
Курсовая работа по дисциплине «Программное проектирование элементов
вычислительных систем»
Вариант №7 «Автомат для прохода в метро»
Студент: Коваленко Леонид Александрович Курс 2 Группа ИКПИ-81 Преподаватель: Неелова Ольга Леонидовна
Санкт-Петербург
2020
ОГЛАВЛЕНИЕ |
|
ВВЕДЕНИЕ .............................................................................................................................. |
3 |
ЗАДАНИЕ НА КУРСОВОЕ ПРОЕКТИРОВАНИЕ............................................................. |
4 |
Общее задание на курсовое проектирование ................................................................. |
4 |
Вариант задания на курсовое проектирование .............................................................. |
4 |
Диаграмма состояний ....................................................................................................... |
5 |
Работа устройства ............................................................................................................. |
5 |
Код программы .................................................................................................................. |
6 |
СПИСОК ЛИТЕРАТУРЫ..................................................................................................... |
10 |
2
ВВЕДЕНИЕ Конечный автомат – модель вычислительного устройства с фиксированным и
конечным объемом памяти, которое читает и обрабатывает цепочку входных символов, принадлежащих некоторому конечному множеству. Конечные автоматы различают в зависимости от того, какой результат они дают на выходе.
Абстрактный автомат является математической моделью дискретного устройства и описывается шестикомпонентным набором:
= ( , , , , , _)
— множество состояний.
— множество входных сигналов.
— множество выходных сигналов.
— функция переходов.
— функция выходов.
_ — начальное состояние.
Автомат Мили (автомат первого рода) — конечный автомат, выходная последовательность которого зависит от состояния автомата и входных сигналов.
{( + 1) = (( ), ( )) ( ) = ( ( ), ( ))
( ) — текущее состояние, ( + 1) — следующее состояние,
— функция переходов, ( ) — входной сигнал текущего состояния,— функция выходов, ( ) — выходной сигнал текущего состояния.
Автомат Мура (автомат второго рода) — конечный автомат, выходная последовательность которого зависит только от состояния автомата, и не зависит напрямую от входных сигналов.
{( + 1) = (( ), ( )) ( ) = ( ( ))
( ) — текущее состояние, ( + 1) — следующее состояние,
— функция переходов, ( ) — входной сигнал текущего состояния,— функция выходов, ( ) — выходной сигнал текущего состояния.
Причем справедлива эквивалентность автоматов Мили и Мура: для каждого автомата Мили может быть построен эквивалентный ему автомат Мура, и обратно — для каждого автомата Мура может быть построен эквивалентный ему автомат Мили.
Автоматы Мили и Мура широко применяются при проектировании цифровых устройств на основе программируемых логических интегральных схем (ПЛИС).
Основное преимущество использования автомата Мили заключается в возможности реакции автомата в течение текущего такта, что обусловлено зависимостью текущей выходной комбинации от текущей входной комбинации.
Наличие минимальной выходной задержки, связанной с переключением выходного регистра, отсутствие нестабильности переходного процесса на выходе автомата, отсутствие сквозного распространения сигнала через комбинационную схему от входа до выхода автомата, простота описания на языках описания аппаратуры HDL делает автомат Мура практически незаменимым.
3
ЗАДАНИЕ НА КУРСОВОЕ ПРОЕКТИРОВАНИЕ
Общее задание на курсовое проектирование
Необходимо синтезировать конечный автомат с произвольной сменой состояний, каждое из которых отражает некоторое событие. Возможность перехода из одного состояния в другое зависит от сигнала x, который формируется с помощью счетчика тактов. В некоторых заданиях также предусматривается формирование дополнительного управления от внешних источников.
В синтез входит:
1.Построение временной диаграммы работы счетчика тактов с указанием интервалов времени формирования управляющего сигнала x;
2.Программа на Verilog HDL для реализации автомата на макете в FPGA CycloneV;
3.Диаграмма состояний автомата.
Таблица переходов отражает ход смены состояний с учетом времени удержания предшествующего состояния в тактах.
Таблица состояний отражает событие, соответствующее полученному состоянию, и отображение состояния на выходной шине. Состояние выходной шины при реализации выводится на сегментные индикаторы.
Вариант задания на курсовое проектирование
Выбранный вариант: «Автомат для прохода в метро». Состояния автомата:
INITIAL_STATE ( 0) — начальное состояние.
CARD_WAITING_STATE ( 1) — состояние ожидания карты. Индикация «____». Приложенная карта включает счетчик тактов. Сигнал, имитирующий
приложение карты, получается с тумблера 1. Через 2 такта автомат переходит в 2 — состояние чтения карты.
CARD_READING_STATE ( 2) — состояние чтения карты. Индикация «□□□□». Время удержания 2 такта. Определяется корректность кода: биты младшей части должны быть противоположны битам старшей. Определяется достаточность денежных средств на карте путем сравнения текущего баланса и стоимости прохода (45 рублей). Если карта не приложена или код неверный, или средств недостаточно, то автомат переходит в состояние 5, иначе в 3.
CARD_DISPLAY_STATE ( 3) — состояние отображения информации о карте. Автомат выводит в течение 3 тактов новый баланс карты на индикаторах. После этого переходит в состояние 4.
ENTRY_PERMIT_STATE ( 4) — состояние разрешения входа. Выводит новый баланс карты на индикаторах. Проход разрешен. После этого переходит к состоянию 1.
CARD_READING_ERROR_STATE ( 5) — состояние отображения информации об ошибке: «EEEE».
4
Диаграмма состояний
На рисунке 1 представлена диаграмма состояний конечного автомата.
Рисунок 1. Диаграмма состояний
Работа устройства
Посмотрим на следующий рисунок.
Рисунок 2. Пример работы устройства (тестбенч-файл)
Параметры:
T — период синхроимпульса.
CODE_BITS — количество битов в коде (должно быть кратно 2).
MONEY_BITS — количество битов для описания денег (14 битов, но предполагается, что максимально возможное количество денег на счету: 10000 рублей; копейки не учитываются).
Источники сигнала:
clk — синхроимпульс.
ena — разрешение счета cnt при 1.
res — синхронный сброс счетчика cnt при 1.
reset — асинхронный сброс счетчика cnt при 0.
isCardAttached ( 1) — приложена ли карта к устройству считывания.
code — код карты. Код верный, если биты старшей части противоположны битам младшей (в данном примере 000 противоположны 111).
permission — разрешение прохода.
indicators — информационные индикаторы (4 шт.).
currentBalance — текущий баланс.
state — текущее состояние конечного автомата.
cnt — счетчик.
price — стоимость одной поездки (45 рублей).
5