Проектирование конечного автомата. (ИКПИ) Задание на курсовое проектирование. Синтезировать конечный автомат с произвольной сменой состояний, каждое из которых отражает некоторое событие. Возможность перехода из одного состояния в другое зависит от сигнала “x”, который формируется с помощью счетчика тактов. В некоторых заданиях также предусматривается формирование дополнительного управления от внешних источников. В синтез входит: 1. 2. 3. построение временной диаграммы работы счетчика тактов с указанием интервалов времени формирования управляющего сигнала «x»; программа на Verilog HDL для реализации автомата на макете в FPGA CycloneV ; диаграмма переходов автомата. В задании таблица переходов (Табл.1) отражает ход смены состояний с учетом времени удержания предшествующего состояния в тактах. Таблица состояний (Табл.2) отражает событие, соответствующее полученному состоянию, и отображение состояния на выходной шине. Состояние выходной шины при реализации выводится на сегментные индикаторы. Задание 1. Светофор. Возможные состояния на выходной шине: - красный (r); - желтый (Y); -красный+желтый (rY); - зеленый (G); - желтый +правый поворот (Y-); -правый поворот ( -I); -зеленый +правый поворот (G-); - красный + левый поворот (- r). Вариант 1.1. Табл. 1. S0 (начальное) Состояния x S1 S2 S3 x=0 S1 S3 S3 x=1 S2 S3 S1 3 1 4 Время удержания (такт) Табл. 2 состояние событие выходная шина S1 S2 1 r S3 3 G 2 Y Вариант 1.2. Табл. 1 S0(начальное) x x=0 x=1 Время удержания(такт) Состояния S1 S1 S2 3 S2 S3 S3 1 S3 S3 S4 2 S4 S4 S1 2 S3 3 G- S4 4 G Табл. 2 состояние событие выходная шина S1 1 r S2 2 Y Вариант 1.3 Табл. 1. Состояния S0(начальное) x x=0 x=1 Время удержания(такт) S1 S1 S2 3 S2 S3 S3 1 S3 S3 S4 2 S4 S5 S5 1 S5 S5 S1 3 S3 3 Y- S4 4 G- S5 5 G S3 S4 S4 1 S4 S4 S5 2 S5 S5 S1 2 S3 3 Y S4 4 Y- S5 5 G Табл. 2. состояние событие выходная шина S1 1 r S2 2 Y Вариант 1.4. Табл. 1. Состояния S0(начальное) x x=0 x=1 Время удержания(такт) S1 S1 S2 2 S2 S2 S3 2 Табл. 2. состояние событие выходная шина S1 1 r S2 2 - r Вариант 1.5. Табл. 1. S0(начальное) x x=0 x=1 Время удержания(такт) Состояния S1 S1 S2 3 S2 S2 S3 2 S3 S4 S4 1 S4 S4 S1 2 Табл. 2. состояние событие выходная шина S1 1 r S2 2 -r S3 3 rY S4 4 G Вариант 1.6. Табл. 1. S0(начальное) x x=0 x=1 Время удержания(такт) Состояния S1 S1 S2 3 S2 S2 S3 2 S3 S4 S4 2 S4 S4 S5 1 S5 S5 S1 2 Табл. 2. состояние событие выходная шина S1 1 r S2 2 -r S3 3 r -I S4 4 rY S5 5 G Вариант 1.7. (выполняется рабочей группой из 2 студентов) Автомат не только регулирует автомобильное движение, но и организует пешеходный переход перекрестка, где разрешен только правый поворот. Красный сигнал светофора горит в течение 6 секунд, желтый – в течение 3 секунд, причем через 2 секунды включается разрешение правого поворота. Зеленый горит также 6 секунд. Для индикации регулировки автомобильного движения задействовать 2 правых индикатора (цвет + поворот). Для табло пешеходного перехода – 2 левых индикатора (цвет + счетчик времени). Задание 2. Стиральная машина. Автомат реализует три основных режима стиральной машины: «стирка», «полоскание» и «отжим». Отображение на индикаторах: С, П, О. Вариант 2.1. Хлопчатобумажные ткани. Табл. 1. S0 (начальное) Состояния x S1 S2 S3 x=0 S1 S2 S3 x=1 S2 S3 S4 4 3 2 Время удержания (такт) Табл. 2 состояние событие выходная шина S1 1 С S2 2 П S3 3 О После получения результата желательно приостановить работу устройства. S4 – режим перехода в останов(ожидание сброса). Вариант 2.2. Шерстяные ткани. Табл. 1. S0 (начальное) Состояния x S1 S2 S3 x=0 S1 S2 S4 x=1 S2 S3 S4 2 3 1 Время удержания (такт) Табл. 2 состояние событие выходная шина S1 1 С S2 2 П S3 3 О После получения результата желательно приостановить работу устройства. S4 – режим перехода в останов(ожидание сброса). Вариант 2.3. Возможность выбора режима. (выполняется рабочей группой из 2-х студентов). В состоянии S1 автомат считывает с внешнего устройства управление, определяющее дальнейший режим работы машины. В зависимости от режима устанавливается температура, которая высвечивается на крайних левых индикаторах. Для режима стирки х/б тканей установить 400, для шерстяных установить 300. Работа в режиме х/б : стирка 4 такта, полоскание 3 такта, отжим 2 такта; работа в режиме шерсть – стирка 3 такта, полоскание – 4 такта, отжим 1 такт. Из каждого режима автомат переходит в ожидание отключения. Вариант 2.4. Возможность выбора режима с проверкой веса белья. (выполняется рабочей группой из 2-х студентов). В состоянии S1 автомат считывает с внешнего устройства управление, определяющее дальнейший режим работы машины. Далее, в каждом режиме производится проверка веса загруженного белья. В зависимости от режима допустимый вес может составлять: для х/б – не более 5 кг, для шерсти – не более 2 кг. При превышении веса автомат выводит машину в ожидание отключения. Работа в режиме х/б: стирка 4 такта, полоскание 3 такта, отжим 2 такта; работа в режиме шерсть – стирка 3 такта, полоскание – 4 такта, отжим 1 такт. Из каждого режима автомат переходит в ожидание отключения. . Задание 3. Работа кассового картридера с банковской картой. Возможно выполнение рабочей группой из 2 студентов. В этом задании выделяем 5 этапов: -включение; - проверка наличия карты «П»; - считывание кода «С»; - обработка кода «О»; - получение результата «Р». Табл. 1. Состояния S0(начальное) x S1 S2 S3 S4 S5 x=0 x=1 Время удержания (такт) S1 S2 2 S2 S3 2 S3 S4 3 S4 S5 4 S5 S6 3 Табл. 2 состояние событие выходная шина S1 1 -- S2 2 П S3 3 С S4 4 О S5 5 P Режим включения предусматривает проверку связи картридера с хостом. После получения результата желательно приостановить работу устройства. S6 – режим перехода в останов(ожидание сброса). Задание 4. Разметка прямоугольной фигуры. Движение вперед – FO; Движение вправо - r I; Движение назад - rE; Движение влево – LE. Табл. 1. S0(начальное) x x=0 x=1 Время удержания(такт) Состояния S1 S1 S2 5 S2 S2 S3 2 S3 S3 S4 5 S4 S4 S0 2 Табл. 2 состояние событие выходная шина S0 0 -- S1 1 FO S2 2 rI S3 3 rE S4 4 LE Задание 5.1 Последовательный вывод на индикатор многозначного числа. Число набирается на тумблерах по 4 разряда на каждую цифру и последовательно выводится на 4 индикатора. Набранный символ записывается после установки «1» на входе разрешения записи. 1. Состояние S0 – начальное. 2. Состояние S1 – ожидание ввода. Время удержания 4 такта. Состояние выхода U. 3. Далее, автомат переходит в состояние ввода S2. Состояние выхода In. Время удержания состояния ввода – 2 такта. 4. Автомат переходит в состояние вывода S3 и выводит «_», если разрешение не поступит, при поступившем разрешении ввода выводится введенная цифра. Время удержания состояния вывода – 3 такта. Из состояния вывода автомат снова переходит в ожидание ввода. Последовательный вывод можно организовать с помощью регистра сдвига. Задание 5.2 Последовательный вывод на индикатор многозначного числа. Число набирается на тумблерах по 4 разряда и последовательно выводится на 6 индикаторов. Набранный символ записывается после установки «1» на входе разрешения записи. 1. Состояние S0 – начальное. 2. Состояние S1 – ожидание ввода. Время удержания 4 такта. Состояние выхода U. 3. Далее, автомат переходит в состояние ввода S2. Состояние выхода In. Время удержания состояния ввода – 2 такта. 4. Автомат переходит в состояние вывода S3 и выводит «_», если разрешение не поступит, при поступившем разрешении ввода выводится введенная цифра. Время удержания состояния вывода – 3 такта. Из состояния вывода автомат снова переходит в ожидание ввода. Последовательный вывод можно организовать с помощью демультиплексора. Задание 6. Включение двигателя автомобиля. S0 – начальное состояние. S1 – установка ключа. Ключ включает счетчик тактов. Этот сигнал получаем с тумблера. После включения счетчика время удержания состояния 3 такта. Состояние выхода – UP. S2 – проверка кода. Время удержания 4 такта. Состояние выхода – CH. При совпадении кода переход на включение двигателя – S3. Сигнал, имитирующий код, подается с тумблера. При несовпадении переход в S4. S3 – включение двигателя. Состояние выхода F. Время удержания 2 такта. За это время необходимо имитировать дальнейший поворот ключа, что приведет к приостановке счетчика тактов. S4 – индикация несовпадения кода. На индикаторе горит “A”. Время удержания 3 такта, переход в S1. Ключ возвращается в исходное положение. Задание 7. Автомат для прохода в метро. S0 – начальное состояние. S1 – ожидание карты. Индикация « __». Приложенная карта включает счетчик тактов. Сигнал, имитирующий это действие, получаем с тумблера Т1. Через 2 такта автомат переходит в состояние S2 – чтение состояния карты. S2 – чтение карты. Время удержания 2 такта. Состояние карты имитируется положением тумблера Т2: 1 – средств достаточно, 0 – недостаточно средств. Состояние выхода автомата 1 в случае наличия средств. В случае отсутствия автомат переходит в ожидание. S3 – индикация состояния карты. Автомат выводит в течение 3 тактов считанное состояние «1» или «0». После этого автомат переходит в состояние S4 или S1. Тумблер Т2 выключить. К окончанию состояния тумблер Т1 можно выключить. S4 – вход разрешен. Тумблер Т1 выключить. Состояние выхода Р. Структура автомата может быть представлена следующим образом. Синхронизация подается на схему от внешнего ввода в FPGA (50MHz, PIN AF14) через понижающий счетчик с возможностью его приостановки внешним сигналом с тумблера. Сигнал начальной установки счетчика в «0» может также подаваться от любого тумблера макета. Методика выполнения курсовой работы. Занятие 1. Рассмотрим пример. В качестве примера возьмем светофор, в котором переход из красного цвета в зеленый и из зеленого в красный происходит через короткий промежуток желтого. Табл. 1. S0 (начальное) Состояния x S1 S2 S3 x=0 S1 S1 S3 x=1 Время удержания (такт) S2 S3 S2 3 1 3 Табл. 2 состояние событие выходная шина S1 4 r S2 9 Y S3 12 G Граф работы автомата: 1. Порядок работы счетчиков. Согласно заданию, наш счетчик должен держать автомат в состоянии S1 в течение 3-х тактов, а затем выводить в состояние S2. Значит, при переходе счетчика в состояние «3», управляющее КЦУ формирует «1» для входа “x” автомата. Таким образом, следующий импульс синхронизации позволит автомату перейти в состояние S2. Состояние S2 держится 1 такт, но переход из него в S3 происходит по «1» на входе управления. Следовательно, управляющее КЦУ при состоянии счетчика «4» продолжает формировать «1». Формирование «0» на КЦУ происходит при приходе счетчика в состояние «5». Удержание состояния S3 также происходит в течение 3-х тактов. Нетрудно определить, что в этом случае КЦУ формирует «1» после прихода счетчика в состояние «7». Следующее за этим состояние S2 держится 1 такт и переходит в S1 по управлению уровнем «0». Из состояния счетчика «8» КЦУ формирует «0», счетчик возвращается в состояние «1» и цикл повторяется. Принцип формирования программы конечного автомата module moore_1 ( input clk, in, reset, output reg [1:0] out ); reg [1:0]state; parameter S0 = 0, S1 = 1, S2 = 2, S3 = 3; формирование переходов always @ (posedge clk or posedge reset) begin if (reset) state <= S0; else case (state) S0: state <= S1; S1: if (in) state <= S2; else state <= S1; S2: if (in) state <= S3; else state <= S1; S3: if (in) state <= S2; else state <= S3; endcase end формирование состояний always @ (state) begin case (state) S0: out = 2'b01; S1: out = 2'b10; S2: out = 2'b11; S3: out = 2'b00; default: out = 2'b00; endcase end endmodule Части программы (формирование переходов и состояний) могут меняться местами, на конечный результат это нисколько не повлияет.