Скачиваний:
4
Добавлен:
10.08.2024
Размер:
150.41 Кб
Скачать
    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 для программирования конечного автомата.

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

  1. Акчурин А.Д. ОСНОВЫ РАБОТЫ В СРЕДЕ QUARTUS II. – Казань: КФУ, 2017. – 49 с [01.06.2022]

  2. Ефремов Н.В. Введение в систему автоматизированного проектирования Quartus II: учебное пособие. / Ефремов Н.В., Юсупов К.М., Колчев А.А. – Москва: ГОУ ВПО МГУЛ, 2011. -147 с. [01.06.2022]

  3. Язык Verilog программисту микроконтроллеров: [Электронный ресурс] URL: https://habr.com/ru/post/212507/ [01.06.2022].

  4. Теория вычисления. Введение в конечные аппараты: [Электронный ресурс]. URL: https://habr.com/ru/post/358304/ [01.06.2022]

  5. Конечный автомат. Verilog: [Электронный ресурс]. URL: http://www.labfor.ru/articles/state_machine [01.06.2022]

  6. 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