
ПР-7
.pdf
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение высшего образования
«МИРЭА - Российский технологический университет»
РТУ МИРЭА
Институт Информационных Технологий Кафедра Вычислительной Техники (ВТ)
ОТЧЁТ ПО ПРАКТИЧЕСКОЙ РАБОТЕ № 7
«Реализация конечных автоматов, заданных автоматным графом.»
по дисциплине
«Архитектура вычислительных машин и систем»
Выполнил студент группы |
Воеводский А.В. |
ИВБО-20-23 |
|
Принял ассистент кафедры ВТ |
Дуксина И.И. |
Практическая работа выполнена |
« __ » _______ 2024 г. |
«Зачтено» |
« __ » _______ 2024 г. |
Москва 2024
АННОТАЦИЯ
Данная работа включает в себя 2 рисунка, 3 листинга. Количество страниц
в работе — 12.
|
СОДЕРЖАНИЕ |
|
1 ПРОЕКТИРОВАНИЕ И РЕАЛИЗАЦИЯ..................................................... |
5 |
|
1.1 |
Реализация модулей счетчика и делителя частоты ................................. |
5 |
1.2 |
Реализация тестового модуля .................................................................... |
6 |
2 ТЕСТИРОВАНИЕ .......................................................................................... |
9 |
|
ЗАКЛЮЧЕНИЕ ............................................................................................... |
11 |
|
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ..................................... |
12 |
3
ВВЕДЕНИЕ
Автомат Мура - синхронный автомат, у которого значения выхода определяются только состоянием автомата в тот же дискретный момент времени. При этом комбинационная схема, вычисляющая выходное значение, не связана непосредственно с входными сигналами.
Автомат Мили - синхронный автомат, у которого вход и выход не развязаны во времени, т.е. хотя бы один выход зависит от текущего значения на входе.
Автоматы Мура и Мили широко применяются при проектировании цифровых устройств на основе программируемых логических интегральных схем (ПЛИС).
Основное преимущество использования автомата Мили заключается в возможности реакции автомата в течение текущего такта, что обусловлено зависимостью текущей выходной комбинации от текущей входной комбинации.
Наличие минимальной выходной задержки, связанной с переключением выходного регистра, отсутствие нестабильности переходного процесса на выходе автомата, отсутствие сквозного распространения сигнала через комбинационную схему от входа до выхода автомата, простота описания на языках описания аппаратуры HDL делает автомат Мура практически незаменимым.
Также автоматы Мура и взаимодействующие автоматы Мили используются в генетическом программировании (например, для решения задачи об "Умном муравье"). [1]
4

1 ПРОЕКТИРОВАНИЕ И РЕАЛИЗАЦИЯ
1.1 Реализация модулей автомата Мили и Мура
Реализация модуля автомата Мили представлена в Листинге 1.1.[2]
Листинг 1.1 — Реализация модуля автомата Мили
`timescale 1ns / 1ps module mealy(
input clk, input [2:0] a,
output reg [1:0] b, output reg d
); initial begin
b = 0;
end
always @(posedge clk) begin
case (b) 2'b00: begin
if (a[0] == 1) b <= 2'b11;
else
b <= 2'b10;
d = ~a[2] | a[0]; end
2'b01: begin
if (a[0] == 1) b <= 2'b10;
else
b <= 2'b00; d = a[2] | a[1]; end
2'b10: begin casex (a)
3'bx1x: b <= 2'b00; 3'bx00: b <= 2'b10; 3'bx01: b <= 2'b01;
endcase
d = (~a[2] & a[0]) | (a[2] & ~a[0]); end
2'b11: begin
if (a[1] == 1) b <= 2'b10;
else
b <= 2'b01; d = a[2] & a[1]; end
endcase
end endmodule
Реализация модуля автомата Мура представлена в Листинге 1.2. 5

Листинг 1.2 — Реализация модуля автомата Мура
`timescale 1ns / 1ps module moore(
input clk, input [2:0] a,
output reg [2:0] b, output d
); initial begin
b = 0;
end
assign d = (b[2] & b[1] ) | b[0]; always @(posedge clk)
begin
casex (b) 3'b00x: begin casex (a)
3'b0x0: b <= 5; 3'bxx1: b <= 6; 3'b1x0: b <= 4;
endcase end 3'b01x: begin casex (a)
3'b000: b <= 0; 3'bxx0: b <= 1; 3'b001: b <= 4; 3'bxx1: b <= 5;
endcase end 3'b10x: begin casex (a)
3'b000: b <= 4; 3'b001: b <= 3; 3'b010: b <= 0; 3'b011: b <= 1; 3'b100: b <= 5; 3'b101: b <= 2; 3'b110: b <= 1; 3'b111: b <= 0;
endcase end
6: begin
casex (a)
3'bx0x: b <= 2; 3'b01x: b <= 4; 3'b11x: b <= 5;
endcase end
endcase
end endmodule
1.2 Реализация тестового модуля
Реализация тестового модуля представлена в Листинге 1.3. 6

Листинг 1.3 — Реализация тестового модуля
`timescale 1ns / 1ps
module main( |
); |
|
reg |
clk; |
|
integer cnt; |
|
|
reg |
[2:0] a; |
|
wire [1:0] state_mealy; wire [2:0] state_moore; wire out_mealy, out_moore; initial
begin
clk = 0; a = 0; cnt = 0;
end
always #10 clk = ~clk;
always @(posedge clk) begin
cnt = cnt + 1; case (cnt)
1:a = 0;
2:a = 2;
3:a = 1;
4:a = 0;
5:a = 1;
6:a = 0;
7:a = 5;
8:a = 0;
9:a = 1;
10:a = 2;
11:a = 2;
12:a = 4;
13:a = 3;
14:a = 4;
15:a = 4;
16:a = 0;
17:a = 4;
18:a = 4;
19:a = 1;
20:a = 3;
21:a = 3;
22:a = 0;
23:a = 1;
24:a = 1;
25:a = 1;
26:a = 2;
27:a = 1;
28:a = 6;
29:a = 1;
30:a = 0;
31:a = 1;
32:a = 0;
33:a = 3;
34:a = 5;
35:a = 6;
default: $finish; endcase
end
mealy me(
.clk(clk),
.a(a),
7

Продолжение Листинга 1.3
.b(state_mealy),
.d(out_mealy) );
moore mo(
.clk(clk),
.a(a),
.b(state_moore),
.d(out_moore)
); endmodule
8

2 ТЕСТИРОВАНИЕ
Запустим полученную схему и произведем её верификацию. Результат выполнения представлен на Рисунке 2.1.
Рисунок 2.1 — Результат верификации полученной схемы
Граф обхода автомата Мура представлен на Рисунке 2.2.
Рисунок 2.2 — Граф обхода автомата Мура
Важно заметить, что этот же граф справедлив и для автомата Мили, если считать, что пары состояний 0 и 1, 2 и 3, 4 и 5 и состояние 6 соответствуют состояниям 0, 1, 2, 3 автомата Мили. Таким образом, из результата верификации
9
видно, что автоматы ведут себя согласно графу обхода, выходы автоматов совпадают с истинными. Таким образом, полученная схема верифицирована.
10