- •Курсовой проект
- •Глава 1. Описание технологии конечных автоматов 4
- •Глава 2. Разработка конечного автомата – светофора 6
- •Глава 1. Описание технологии конечных автоматов 4
- •Глава 2. Разработка конечного автомата – светофора 7
- •Введение
- •Глава 1. Описание технологии конечных автоматов
- •1.1 Описание абстрактных автоматов
- •Общее задание на курсовое проектирование
- •Вариант задания на курсовое проектирование
- •Глава 2. Разработка конечного автомата – светофора
- •Описание устройства
- •Разработка диаграммы
- •Описание работы программы
- •Результат работы программы
- •Заключение
- •Список литературы
- •Приложение 1. Код программы
Результат работы программы
На рисунке 2 представлен результат функционального моделирования. Для сигнала синхронизации clk были поданы интервалы 40 нс, с начальным уровнем 0. Сигнал reset отражает сигналы сброса или обнуления конечного автомата. Выходной сигнал cnt отображается количество тактов для каждого состояния (3 такта для S1 (Красный), 1 такт – S2 (Жёлтый), 2 такта – S3 (Зелёный + поворот направо), 2 такта – S4 (Зелёный)). Сигнал light отражаются состояния светофора.
Если счетчик cnt равен состоянию №1 (STATE_1), то включается «Красный» и, при достижении 3 тактов, состояние изменяется на состояние №2 (STATE_2).
Если счетчик cnt равен состоянию №2 (STATE_2), то включается «Жёлтый» и, при достижении 1 такта, состояние изменяется на состояние №3 (STATE_3).
Если счетчик cnt равен состоянию №3 (STATE_3), то включается «Зелёный + поворот направо» и, при достижении 2 тактов, состояние изменяется на состояние №4 (STATE_4).
Если счетчик cnt равен состоянию №4 (STATE_4), то включается «Зелёный» и, при достижении 2 тактов, состояние изменяется на состояние №1 (STATE_1).
Рисунок 3 – Диаграмма работы конечного автомата
Заключение
В курсовом проекте был разработан конечный автомат – светофор. Конечный автомат имеет четыре различных состояния (включается Красный сигнал светофора – STATE_1, Жёлтый сигнал светофора – STATE_2, Зелёный сигнал светофора + поворот направо – STATE_3 и Зелёный сигнал светофора – STATE_4). В каждом состоянии автомат находится разное количество тактов (в состоянии STATE_1 – 3 такта, в состоянии STATE_2 – 1 такт, в состоянии STATE_3 – 2 такта, в состоянии STATE_4 – 2 такта). Конечный автомат работает в соответствии с техническим заданием.
В данной работе были изучены методы программного проектирования конечных автоматов по данному заданию на проектирование, определены количество состояний автомата, условия перехода и действия внутри состояния, а также написан код на языке Verilog для программирования конечного автомата.
Список литературы
Акчурин А.Д. ОСНОВЫ РАБОТЫ В СРЕДЕ QUARTUS II. – Казань: КФУ, 2017. – 49 с [01.06.2022]
Ефремов Н.В. Введение в систему автоматизированного проектирования Quartus II: учебное пособие. / Ефремов Н.В., Юсупов К.М., Колчев А.А. – Москва: ГОУ ВПО МГУЛ, 2011. -147 с. [01.06.2022]
Язык Verilog программисту микроконтроллеров: [Электронный ресурс] URL: https://habr.com/ru/post/212507/ [01.06.2022].
Теория вычисления. Введение в конечные аппараты: [Электронный ресурс]. URL: https://habr.com/ru/post/358304/ [01.06.2022]
Конечный автомат. Verilog: [Электронный ресурс]. URL: http://www.labfor.ru/articles/state_machine [01.06.2022]
FPGA для программиста, конечные автоматы (verilog): [Электронный ресурс]. URL: https://habr.com/ru/post/347928/ [01.06.2022]
Приложение 1. Код программы
module Traffic_light
(input reset,
input clk,
output reg [3:0] light = 0,
output reg [3:0] cnt = 0);
localparam [3:0]
RED = 0,
YELLOW = 1,
GREEN_RIGHT = 2,
GREEN = 3;
localparam [3:0]
STATE_1 = 0,
STATE_2 = 1,
STATE_3 = 2,
STATE_4 = 3;
localparam [3:0] N_STATE_1 = 3;
localparam [3:0] N_STATE_2 = 1;
localparam [3:0] N_STATE_3 = 2;
localparam [3:0] N_STATE_4 = 2;
reg [3:0] State = STATE_1;
always @(posedge clk)
begin
if (!reset)
begin
cnt <= 0 ;
light <= RED;
State <= STATE_1;
end
else
begin
cnt <= cnt+1;
case (State)
STATE_1 :
begin
if (cnt == N_STATE_1)
begin
cnt <= 1;
light <= YELLOW;
State <= STATE_2;
end
end
STATE_2 :
begin
if (cnt == N_STATE_2)
begin
cnt <= 1;
light <= GREEN_RIGHT;
State <= STATE_3;
end
end
STATE_3 :
begin
if (cnt == N_STATE_3)
begin
cnt <= 1;
light <= GREEN;
State <= STATE_4;
end
end
STATE_4 :
begin
if (cnt == N_STATE_4)
begin
cnt <= 1;
light <= RED;
State <= STATE_1;
end
end
default :
begin
cnt <= 1;
light <= RED;
State <= STATE_1;
end
endcase
end
end
endmodule
Санкт-Петербург 2022
