A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aula 10 – Exp 8: Implementação de Máquinas de Estado

Apresentações semelhantes


Apresentação em tema: "Aula 10 – Exp 8: Implementação de Máquinas de Estado"— Transcrição da apresentação:

1 Aula 10 – Exp 8: Implementação de Máquinas de Estado
Aula 10 – Exp 8: Implementação de Máquinas de Estado Fabbryccio Cardoso Dalton S. Arantes DECOM-FEEC-UNICAMP

2 Exemplo1: identificar seq 1000
Estado 1 Estado 10 Estado 100

3 Exemplo1: identificar seq 1000
I n Out Next Estado 1 Estado 10 Estado 100

4 Help (right click in Mcode)

5 Modelo

6 Script em linguagem M (1/3)
function [dout, estado] = seq1000( din, vin ) persistent next, next = xl_state(0, {xlUnsigned, 2, 0}); atual = next; dout = 0; estado = atual; if vin == 1 Switch ..... end

7 Script (2/3) switch(atual) case 2; case 0; if din == 1 next = 3;
else end case 1; if din == 0 next = 2;

8 Script (3/3) case 3; if din == 0 next = 0; dout = 1; else next = 1;
end Estado 1 10 100

9 Experimento Identificar a seguinte seqüência de pressionamento de botões: Up Down Up Down. Entradas: Botões Up e Down. Saída: Led_0 para indicar identificação de sequência. Saídas: Led_2 e Led_3 para indicar o estado atual. Implementar a lógica de “debouncing” do Experimento 7 usando o bloco Mcode. Utilizar dois registradores (regU e regD) internos e um único contador interno.

10 Modelo 10 ns AJ15 {'ac4'} {'ah4'} {'aa6'} {'ag3'} {'aa5'} {'ac3'}

11 Máquina de Estados

12 Saída do Debouncer

13 Saída da Máquina de Estado

14 Implementação Debouncer 1/2
function [Uout, Dout, regU_D] = debouncer(Uin, Din) persistent counter, counter = xl_state(0, {xlUnsigned,27,0}); persistent regU, regU = xl_state(0, {xlUnsigned,1,0}); persistent regD, regD = xl_state(0, {xlUnsigned,1,0}); constante = xfix({xlUnsigned,27,0},100e6-1); Uout = 0; Dout = 0;

15 Implementação Debouncer 2/2
if Uin == 1 regU = 1; end if Din == 1 regD = 1; regU_D = xl_or(regU, regD); if regU == 1 | regD == 1 …………………………….

16 Implementação Máquina de Estados
function [dout, estado] = seqUDUD(Uin, Din) persistent next, next = xl_state(0, {xlUnsigned,2,0}); persistent reg_dout, reg_dout = xl_state(0, {xlUnsigned, 1, 0}); atual = next; estado = atual; if Uin == 1 | Din == end dout = reg_dout;

17 Exemplo 2 Implementar passo a passo oscilador 0-1 de período 1 segundo.

18 Exercício Parte 1 Repetir o exemplo do modelo “exemplo1.mdl” para identificar a seqüência binária 0011.

19 Avaliação Realização do experimento: 5,0 pontos.
Fontes do experimento e do exercício: 5,0 ponto.


Carregar ppt "Aula 10 – Exp 8: Implementação de Máquinas de Estado"

Apresentações semelhantes


Anúncios Google