Добавил:
Только когда поступишь в технический вуз поймешь на сколько ты гуманитарий Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

PR-7

.pdf
Скачиваний:
0
Добавлен:
19.03.2025
Размер:
322.78 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное учреждение высшего образования

«МИРЭА - Российский технологический университет»

РТУ МИРЭА

Институт Информационных Технологий Кафедра Вычислительной Техники (ВТ)

ОТЧЁТ ПО ЛАБОРАТОРНОЙ РАБОТЕ № 1

«Реализация конечных автоматов» по дисциплине

«Архитектура вычислительных машин и систем»

Выполнил студент группы

Ханашевич К.А.

ИВБО-10-23

 

Принял ассистент кафедры ВТ

Дуксина И.И.

Лабораторная работа выполнена

«__»_______2025 г.

«Зачтено»

«__»_______2025 г.

Москва 2025

АННОТАЦИЯ

Данная работа включает в себя 3 рисунка, 3 листинга. Количество страниц

в работе — 12.

 

СОДЕРЖАНИЕ

 

ВВЕДЕНИЕ..................................................................................................................

4

1

ПОСТАНОВКА ЗАДАЧИ .......................................................................................

5

2

ПРОЕКТИРОВАНИЕ И РЕАЛИЗАЦИЯ ...............................................................

6

2.1 Реализация автомата Мили...................................................................................

6

2.2 Описание конечного автомата Мура на языке Verilog......................................

7

ЗАКЛЮЧЕНИЕ .........................................................................................................

11

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ...............................................

12

3

ВВЕДЕНИЕ

Автомат Мура —синхронный автомат, у которого выходные значения определяются только состоянием автомата в тот же дискретный момент времени.

При этом комбинационная схема, вычисляющая выходные значения, не связана непосредственно с входными сигналами.

Автомат Мили — синхронный автомат, у которого вход и выход не развязаны во времени, т.е. хотя бы один выход зависит от текущего значения на входе.

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

столбцом с индексом j располагается новое состояние автомата, в которое переходит автомат, находясь в состоянии i при приходе входного слова j, а также значение выхода автомата (для автомата Мили — в текущий дискретный момент времени, для автомата Мура — в следующий дискретный момент времени).

Для проектирования автомата средствами языка Verilog, следует остановить своё внимание на операторе «case». Оператор «case» является оператором выбора. Имеется три формы данного оператора: «case», «casex» «casez». Оператор «сasex» игнорирует биты, отмеченные как «x» или как «z», в

то время как оператор «сasez» игнорирует только биты, отмеченные как «z».

4

1 ПОСТАНОВКА ЗАДАЧИ

Реализовать автомат Мили, заданный графом, в соответствии с вариантом,

который определяет выходные значения для каждого из состояний автомата на языке Verilog. Автомат должен иметь три входа: a,b,c (помимо входа синхросигнала). На графе над дугой указаны три символа, их следует трактовать как значения для a, b, c соответственно, необходимые для совершения обозначенного перехода. Варианты заданий присутствуют в СДО или могут быть изменены преподавателем самостоятельно.

Индивидуальный вариант:

5

2 ПРОЕКТИРОВАНИЕ И РЕАЛИЗАЦИЯ

2.1 Реализация автомата Мили

Для реализации автомата Мили по данному автоматному графу был создан модуль с входами переменных “a”, “b”, “c”, двухбитным выходом “state”,

отвечающем за кодирование актуального состояния автомата (двумя битами можно зашифровать 4 состояния) и однобитным выходом “result”, отвечающим за результат работы автомата. Так, в состоянии 1 операция на выходе “result”

должна быть “c | b”, для 2 – “a ↓ b”, для 3 – “b → c”, для 4 – “c | a”.

Зададим начальное состояния автомата как нулевое, далее с помощью оператора case и вложенных в него операторов casex получим следующее состояние автомата, также после перехода на новое состояние обновляем и выход “result”, зависящий от состояния автомата. Реализация модуля автомата Мили на языке Verilog представлена в Листинге 2.1.

Листинг 2.1 — Реализация модуля автомата Мили

`timescale 1ns / 1ps

module Mealy_SFM( input a, b, c,

output reg [1:0] state, output reg result);

initial

state = 2'd0;

always@* begin

case (state) 3'd0: begin

casex ({a, b, c})

3'b1x0: state = 2'd0; 3'b1x1: state = 2'd1; 3'b0xx: state = 2'd2;

endcase end 3'd1: begin

casex ({a, b, c})

3'bx10: state = 2'd0; 3'bx11: state = 2'd1; 3'bxx0: state = 2'd2; 3'bx0x: state = 2'd3;

endcase end

6

3'd2: begin

casex ({a, b, c})

3'bxx0: state = 2'd1; 3'bxx1: state = 2'd3;

endcase end 3'd3: begin

casex ({a, b, c})

3'bx0x: state = 2'd0; 3'bx1x: state = 2'd2;

endcase end

endcase

case (state)

2'd0: result = ~(c & b); 2'd1: result = ~a & ~b; 2'd2: result = ~b | c; 2'd3: result = ~(c & a);

endcase

end

endmodule

2.2 Описание конечного автомата Мура на языке Verilog

Пусть стоит задача построить автомат Мура, эквивалентный автомату Мили, рассматриваемого в пункте 2.1. Для синтеза такого автомата будет построена автоматная таблица автомата Мили, в которой последовательность входов зафиксирована от «а» к «b» к «c» (Таблица 2.1).

Таблица 2.1. Автоматная таблица автомата Мили

Состояние\входы

000

001

010

011

100

101

110

111

 

 

 

 

 

 

 

 

 

S0

S2

S2

S2

S2

S0

S1

S0

S1

 

 

 

 

 

 

 

 

 

S1

S2 S3

S3

S0 S2

S1

S2 S3

S3

S0 S2

S1

 

 

 

 

 

 

 

 

 

S2

S1

S3

S1

S3

S1

S3

S1

S3

 

 

 

 

 

 

 

 

 

S3

S0

S0

S2

S2

S0

S0

S2

S2

 

 

 

 

 

 

 

 

 

Выход автомата зависит непосредственно от состояния, в котором он находится, поэтому не может быть ситуаций, в которых автомат находясь в 1ом состоянии выдаст действие другого состояния. Поэтому количество состояний не измениться. Исходный код модуля для автомата Мура представлен в Листинге

2.2.

7

Листинг 2.2 — Реализация модуля автомата Мура

`timescale 1ns / 1ps `define A 2'b00 `define B 2'b01 `define C 2'b10 `define D 2'b11

module Mur_SFM( input a, b, c, clk,

output reg [1:0] state, output reg d

);

initial state = 2'd0;

reg [1:0] next_state = 0;

always @(posedge clk) begin state = next_state; casex({state,a,b,c})

{`A, 3'b1x0}, {`B, 3'bx10}, {`D, 3'bx0x}: next_state <= `A; {`A, 3'b1x1}, {`B, 3'bx11}, {`C, 3'bxx0}: next_state <= `B; {`A, 3'b0xx}, {`B, 3'bxx0}, {`D, 3'bx1x}: next_state <= `C; {`B, 3'bx0x}, {`C, 3'bxx1}: next_state <= `D;

endcase end

always @(state)

begin

case (state)

 

2'd0: d

= ~(c & b);

2'd1: d

= ~a & ~b;

2'd2: d

= ~b | c;

2'd3: d

= ~(c & a);

endcase

 

end

 

endmodule

 

Был написан тестовый модуль (Листинг 2.3), в котором были учтены все возможные переходы состояний в соответствии с индивидуальным вариантом.

Схемы автоматов Мура и Мили представлены на Рисунках 2.2 и 2.3, временная диаграмма – Рисунок 2.4. Можно заметить, что состояние автомата Мура меняется только при переднем фронте синхросигнала, что является причиной сдвига состояний автомата Мура относительно Мили, а также влечет за собой использование иных значений переменных при подсчете выражений в состояниях автомата.

Листинг 2.3 — Реализация модуля тестирования

`timescale 1ns / 1ps

module test();

reg clk = 0, a, b, c;

wire result_mili, result_mur; wire [1:0] state_mili, state_mur;

8

Mealy_SFM Mili_out(.a(a), .b(b), .c(c), .state(state_mili),

.result(result_mili));

Mur_SFM Mur_out(.a(a), .b(b), .c(c), .clk(clk), .state(state_mur),

.d(result_mur) );

always #5 clk = ~clk;

always begin

a = 1; b = 0; c = 0; #10 // 0 -> 0 a = 1; b = 0; c = 1; #10 // 0 -> 1 a = 1; b = 1; c = 1; #10 // 1 -> 1 a = 1; b = 1; c = 0; #10 // 1 -> 0 a = 0; b = 1; c = 1; #10 // 0 -> 2 a = 1; b = 1; c = 1; #10 // 2 -> 3 a = 0; b = 1; c = 0; #10 // 3 -> 2 a = 1; b = 1; c = 0; #10 // 2 -> 1 a = 0; b = 0; c = 0; #10 // 1 -> 2

a = 1; b = 1; c = 0; #10 // 2 -> 1 //rep a = 1; b = 0; c = 1; #10 // 1 -> 3

a = 1; b = 0; c = 0; #40 // 3 -> 0 $finish;

end

endmodule

Рисунок 2.1 — Временная диаграмма работы автомата Мура

Рисунок 2.2 — RTL-представление автомата Мура

9

Рисунок 2.3 — RTL-представление автомата Мили

10

Соседние файлы в предмете Архитектура вычислительный машин и систем