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

Синтез конечного автомата, работающего по принципу автомата Мили

.doc
Скачиваний:
4
Добавлен:
22.12.2022
Размер:
177.15 Кб
Скачать

Отчет по самостоятельной работе

«Синтез конечного автомата, работающего по принципу автомата Мили»

  1. Пояснение как работает автомат Мили

Выходной сигнал автомата зависит от состояния автомата и входных сигналов в момент времени. Состояния автомата определяется внутренним состоянием автомата и состоянием входа автомата в момент времени.

  1. Структурная схема автомата

  1. Таблица переходов и состояний

  1. Значит, при x=0 автомат будет совершать переходы:

S0 -> S7 -> S6 -> S5 -> S4 -> S3 -> S2 -> S1 -> S0 ->...

А при x=1

S0 -> S1 -> S5 -> S3 -> S7 -> S2 -> S6 -> S4 -> S0 ->...

  1. При этом изменение x* будет сказываться на выходе автомата следующим образом:

При x*=0 эквивалентность состояний следующая:

S0==0, S1==7, S2==6, S3==5, S4==4, S5==3, S6==2,S7==1;

При x*=1:

S0==1, S1==2, S2==3, S3==4, S4==5, S5==6, S6==7,S7==0;

  1. Совместить значения переходов и состояний

M=>N алгоритм переходов;

X=0: 0 => 1 => 2 => 3 => 4 => 5 => 6 => 7 => 0

X=1:1 => 2 => 6 => 4 => 0 => 3 => 7 => 5 => 1

по этим данным заполним таблицу истинности

4.Табл. переключений, карты Карно, электр. схема автомата Мили

  1. Таблица переключений

x

M2

M1

M0

N2

N1

N0

0

0

0

0

0

0

1

0

0

0

1

0

1

0

0

0

1

0

0

1

1

0

0

1

1

1

0

0

0

1

0

0

1

0

0

0

1

0

1

1

1

0

0

1

1

0

1

1

1

0

1

1

1

0

0

0

1

0

0

0

0

1

1

1

0

0

1

0

1

0

1

0

1

0

1

1

0

1

0

1

1

1

1

1

1

1

0

0

0

0

0

1

1

0

1

0

0

1

1

1

1

0

1

0

0

1

1

1

1

1

0

1

  1. По таблице переключений составляем карты Карно:

Для выхода N2:

N2 = X&M1 v nX&M2&nM1 v nM2&M1&M0 v M2&M1&nM0

Для выхода N1:

N 1 = X&nM2 v nX&nM1&M0 v nX&M1&nM0

Для выхода N0 :

N0 = X&M2&M0 v X&M1&M0 v nM2&nM1&nM0 v nX&M1&nM0

  1. Логические схемы

4. Две программы, для каждой временная диаграмма

  1. Программа «block2»

module block2

(input x, input [2:0]m, output n0,n1,n2);

assign n0 = x&m[2]&m[0] | x&m[1]&m[0] | ~m[2]&~m[1]&~m[0] | ~x&m[1]&~m[0];

assign n1= x&~m[2] | ~x&~m[1]&m[0] | ~x&m[1]&~m[0];

assign n2= x&m[1] | ~x&m[2]&~m[1] | ~m[2]&m[1]&m[0] | m[2]&m[1]&~m[0];

endmodule

Временная диаграмма:

Программа «mealy_3»

module mealy_3

(input clk,a, b, reset,

output reg [2:0] out);

reg [2:0] state;

assign in1=a&(~b) | a;

assign in2=b&(~a) | b;

parameter S0 = 0, S1 = 1, S2 = 2, S3 = 3, S4 = 4, S5 = 5,S6 = 6, S7 = 7;

always @ (posedge clk or posedge reset)

begin

if (reset)

state <= S0;

else

case (state)

S0:

if (in1)

begin

state <= S1;

end

else

begin

state <= S7;

end

S1:

if (in1)

begin

state <= S5;

end

else

begin

state <= S0;

end

S2:

if (in1)

begin

state <= S6;

end

else

begin

state <= S1;

end

S3:

if (in1)

begin

state <= S7;

end

else

begin

state <= S2;

end

S4:

if (in1)

begin

state <= S0;

end

else

begin

state <= S3;

end

S5:

if (in1)

begin

state <= S3;

end

else

begin

state <= S4;

end

S6:

if (in1)

begin

state <= S4;

end

else

begin

state <= S5;

end

S7:

if (in1)

begin

state <= S2;

end

else

begin

state <= S6;

end

endcase

end

always @ (state or in2)

begin

case (state)

S0:

if (in2)

begin

out = 3'b001;

end

else

begin

out = 3'b000;

end

S1:

if (in2)

begin

out = 3'b010;

end

else

begin

out = 3'b111;

end

S2:

if (in2)

begin

out = 3'b011;

end

else

begin

out = 3'b110;

end

S3:

if (in2)

begin

out = 3'b100;

end

else

begin

out = 3'b101;

end

S4:

if (in2)

begin

out = 3'b101;

end

else

begin

out = 3'b100;

end

S5:

if (in2)

begin

out = 3'b110;

end

else

begin

out = 3'b011;

end

S6:

if (in2)

begin

out = 3'b111;

end

else

begin

out = 3'b010;

end

S7:

if (in2)

begin

out = 3'b000;

end

else

begin

out = 3'b001;

end

endcase

end

endmodule