Você está na página 1de 1

S1

(Estado inicial)

Enable='0'

Enable='1', troca de
estado (pulso fsm_clk)

S2
(Config. SPI)

count_80 != 0

count_80 = 0

S3
(Envio CMD0)

count_47 = 0

count_47 != 0

No recebeu resposta
ou resposta incorreta

S4
(Avalia resp.
CMD0)

Ainda no recebeu
resposta completa (count_24 != 0)

Resposta correta
(resp_cmd='00000001')

S5
(Envio CMD8)

count_47 != 0

count_47 = 0

S6
(Avalia resp.
CMD8)

resp_40bits != 0

resp_cmd(36)='0'
resp_cmd8 (36) != '0'
resp_40bits = 0
e resp_40bits = 0
resp_cmd8(13...10)='0001'
resp_cmd8(9...2)='10101010'

S7
(Estado final
erro)

S8
(Envio CMD55)

resp_cmd(36)='0'
resp_40bits = 0
e (resp_cmd8(13...10)!='0001'
ou resp_cmd8(9...2)!='10101010')

count_47 != 0

S9
(Estado final
erro)

count_47 = 0

S10
(Avalia resp.
CMD55)

bit_zero_lido = '0'

resp_cmd = '00000001' e bit_zero_lido = '1' resp_cmd != '00000000' e bit_zero_lido = '1'

S11
(Envia ACMD41)

count_47 != 0

count_47 = 0

S12
(Avalia resp.
ACMD41)

bit_zero_lido = '0'

resp_cmd = '00000000' e bit_zero_lido = '1'

S13
(Envia CMD58)

count_47 != 0

count_47 = 0

S14
(Avalia resp.
CMD58)

bit_zero_lido2 = '0'

resp_cmd8(32) = '1' e bit_zero_lido2 = '1' resp_cmd8(32) = '0' e bit_zero_lido2 = '1'

S15
(Envia CMD24)

count_47 != 0

S16
(Estado final
erro)

count_47 = 0

S17
(Teoricamente estado
no faz nada)

Passa direto

S18
(Avalia resp.
CMD24)

bit_zero_lido2 = '0'

resp_cmd8(41 downto 34) = '00000000' and bit_zero_lido2 = '1'

S19
(Envia dado a
ser armazenado)

busy='0'

busy='1'

S20
(Envia CMD17)

count_47 != 0

count_47 = 0

S21
(Avalia resp.
CMD17)

bit_zero_lido = '0'

bit_zero_lido = '1' e resp_cmd = '00000000'

S22
(Executa a leitura dos dados armazenados no carto)

dados = '1' e bit_zero_lido3 = '1'

S23
(Estado final)

bit_zero_lido3 = '0'

Você também pode gostar