Transcript for:
Máquinas de Estados Assíncronas

beleza turma vamos lá então o min tá falando de máquinas de estados assíncronas tá tá falando de máquina estados assíncronas vamos vamos começar meio que do começo aqui tá eu vou fazer um exemplo que eu acho que é o o que mais o que vai mais pegar tá a gente tem Essência dois tipos de máquinas de estados tá aliás tem vários tipos de máquinas de estados deixa eu melhorar tá as que a gente tá tratando aqui na disciplina a gente tá chamando de eh máquinas de Estados finitas e aqui a gente tá tratando de dois tipos tá uma que a gente tá chamando de síncrona e uma que a gente tá chamando de assíncrona a máquina é alguma coisa que uma entidade que calcula alguma coisa pra gente tá uma máquina de estados é uma máquina que calcula alguma coisa pra gente e ela tem memória de alguma forma ela lembra de ela lembra de informações que ela foi vendo no passado dela ela é finita porque ela tem uma quantidade finita de memória tá ess finita tem a ver aqui ó com quantidade de memória nesse caso aqui que a gente no caso que a gente tá tratando não só essa quantidade é finita como ela é pré-determinada no projeto da máquina tá é um pouco mais forte do que do que tem uma quantidade finita ela tem uma quantidade finita e a quantidade é pré-determinada no projeto da máquina então projeto uma máquina que tem quatro Estados quanto de memória ela tem 2 bits aí projet uma máquina que tem 30 e 30 estados quanto de memória ela tem 5 bits sei lá 5 bits que é o necessário para guardar para representar esses 30 estados por aí vai todo mundo ok com isso E aí a gente tem essas duas duas categorias aqui que a gente cham de síncrona e assíncrona tá assíncrona ela realiza a computação dela mediante um um evento que eu chamo de evento de sincronia então acontece alguma coisa esse alguma coisa é do lado de fora da máquina acontece alguma coisa a máquina percebe isso em resposta a essa alguma coisa que aconteceu ela executa a computação dela ok eu chamo aqui de evento de onia tá vocês normalmente chamam de clock eu não gosto desse nome que esse nome implica que é um relógio o relógio implica que é uma coisa bem regular assim tipo tipo um reloginho assim sabe tá uma coisa periódica irregular o que não é verdade a maioria dos sistemas isso não é verdade isso E mesmo quando é verdade esse cloque é bastante dinâmico bastante dinâmico assim a gente mexe nesse CL mesmo em máquinas bem simples A gente mexe nesse clock tipo bota ele mais rápido pr computação mais rápido bota mais devagar para gastar menos energia tá então eu não gosto muito desse nome de esse nome clock mas também é um nome clássico também não tenho como brigar tanto Contra isso OK mas cuidado é um evento de sincronia todo mundo bem e o que que é a máquina assíncrona ela tá sempre emio em princpio ela tá sempre computação e não só quando acontece alguma coisa discreta que é esse evento de sincronia tudo bem tá sempre calculando alguma coisa OK então Vamos por partes aqui tá por partes a gente viu certos diagramas de estados né a gente quer comunicar a lógica dessas máquinas aqui então sei lá em algum momento a gente desenhou coisas assim né sei lá um exemplo tudo bem só olhando aqui eu consigo eu preciso conseguir inferir que cara tem certos estados que eu posso chamar aqui de a b e c a b e c tem uma certa lógica para mudar de estado esse diagrama aqui sempre implica que eu tô num determinado estado e o que que a máquina faz ela observa as entradas observa o estado atual e calcula o próximo estado e vai para esse próximo estado tranquilo vamos imaginar aqui que sei lá vou escrever condições arbitrárias aqui tá x x bar x x bar hum um simplificar um pouco a coisa aqui x x Barra por exemplo E aí Isso aqui implica para mim que essa máquina tem uma entrada de dados que a gente tá chamando de x e que o que que essa máquina faz tá que que essa máquina faz ela observa Qual é o estado atual Qual é a entrada e calcula o próximo estado e muda para esse próximo estado Tudo bem então se ela tá ali no estado a que eu marquei com a bolinha com que eu marquei de vermelho e entre aspas chega a hora dela calcular a computação dela Qual é a computação dela ela vai lá e vai observar eu tô no estado a aí imagina que tá chegando x = 1 aí ela calcula o próximo estado próximo estado é o a ela vai lá e troca pro estado a ela tá no a e troca pro estado a que que significa trocar do Estado a pro estado a em algum lugar lá tem uma tem alguma coisa que é uma memória de alguma forma nessa máquina tem alguma coisa que implementa uma memória tá implemento memória vamos supor que o Estado A tá codificado como zer e zer então em algum momento tem guardado lá zero e zero nessa memória de alguma forma e na hora que ela fez essa conta aqui o que tá chegando para ela é zer zer todo mundo ok com isso no fundo no fundo é isso aí que tá acontecendo tá que que muda da máquina síncrona pra máquina assíncrona é quando que ela calcula as coisas tá na máquina síncrona existe um certo evento de sincronia que determina quando que isso aqui vai acontecer então quando é que acontece a mudança de estado acontece mudança de estado e quando acontecer o evento de sincronia todo mundo ok E aí repara ó essa esse evento de sincronia ele ele influencia essa memória porque no fundo no fundo é isso que significa mudar de estado el vai guardar o conteúdo de uma memória e o con o como é que é o funcionamento na máquina assíncrona na máquina síncrona ela tá o tempo todo fazendo isso ela não espera um evento de sincronia a memória tá o tempo todo respondendo a mudanças nesse sinal aqui que é um sinal que diz para ela qual que é o próximo estado todo mundo bem com isso Isso é a única diferença entre as duas coisas Oi positivo operante Tranquilo então beleza no caso da máquina síncrona vamos dar ligeira revisada aqui no caso da máquina síncrona a gente tem em Essência uma forma de fazer em Essência tá que é eu construí uma memória síncrona que a gente faz isso com fli flobs normalmente para isso que eles vão servir faz aqui uma camada de flip flops tá e a gente vai chamar isso aqui normalmente de registrador bota vários flip flops juntos operando no mesmo sinal de sincronia só isso aí eu produzo aqui uma função que eu vou chamar de função de próximo estado next state function tá e o que que essa função tem que fazer ela é combinacional uma tabela verdade ela não tem memória ela precisa pegar o estado atual o estado atual que é a saída desse dessa memória aí o que que essa memória tá guardando ela precisa pegar as entradas e calcular o próximo estado que são as entradas que a entrada dess memória só isso ok E aí Isso aqui implementa a lógica dessas setas aí OK todo mundo bem que mais que eu preciso fazer eu preciso produzir uma saída tá e normalmente o que a gente faz é criar outra lógica combinacional aqui outra função tá E aí eu tenho em Essência duas formas de fazer uma forma um pouco mais simples que é essa função só depende do Estado atual e ela calcula a saída e a gente cham isso aqui de máquina de m e uma outra uma variação disso aqui tá é eu fazer essa função de saída depender também das entradas e a a gente chamou isso de máquina de mil todo mundo ok mas repare aqui tá repare que se mudar as entradas aqui se eu perceber uma mudança sinal vermelho nesse caso da máquina de mil eventualmente eu posso perceber uma mudança na saída mas eu não mudo de estado vocês estão vendo ali quando que eu mudo de estado Só quando eu perceber uma mudança aqui no sinal de sincronia aí é que eu vou avaliar se eu vou mudar de estado se não aí eu vou avaliar qual vai ser o próximo estado e eu mudo para esse próximo estado nem que seja aquele caso tipo tô no a e vou pro A tá mas eu mudo de estado em resposta ao sinal de sincronia não às entradas todo mundo Ok todo mundo ok E aí perceba tá se eu tô vendo uma mudança aqui ó nas no sinal de entrada eventualmente eu tô vendo uma mudança nesse sinal aqui essa função é combinacional eu tô tem entradas é uma linha de tabela verdade tá tem um tem as entradas ali tem uma linha da tabela verdade quando eu mudo Uma das entradas eu tô mudando qual linha da tabela verdade eu tô acionando eventualmente eu tô mudando saída eventualmente eu tô mudando o que que tá aparecendo aqui mas Mas eu só mudo de estado Quando acontecer uma mudança no sinal de sincronia isso é o conceito da máquina síncrona todo mundo ok e qual que é a ideia da máquina assíncrona a gente vai fazer alguma coisa semelhante a isso aqui só que não vai ter esse sinal de sincronia E aí quando é que a máquina muda de estado agora ela muda de estado repare ela é sensível a essa informação aqui quando hora que essa informação muda ela muda de estado todo mundo tá vendo que essa vai ser normalmente a dificuldade de é normalmente essa a dificuldade que vocês T normalmente essa a dificuldade que vocês T de perceber como é que essa parada muda de estado ela tá mudando de estado meio que o tempo todo por quê Porque a tua entrada meio que pode mudar o tempo todo tudo bem E só isso aqui você viu apaguei uma um sinal e só isso aí gera complicação Colossal não só do ponto de principalmente do ponto de vista teórico tá é bem mais complicado isso aqui bem mais complicado é bem mais simples a gente ter um sinal de sincronia e tudo acontecer em resposta a esse sinal de sincronia as coisas são bem mais ordenadas bem mais disciplinadas tudo bem por isso que todas as máquinas que vocês conhecem digitais elas são síncronas todas as máquinas que vocês conhecem digitais elas são síncronas Inclusive eu sou um um advogado de a gente nem fala mais de máquina assíncrona na aula que não vale a pena mas como o min já começou agora já era nessa turma aqui na minha turma eu tô pensando em nem falar sobre isso eu sou bem subordinado Vocês pode imaginar não vai cair na prova eu não falei nada [Risadas] disso quem tá dizendo é você eu não sei ainda porque eu não cheguei lá vou saber quando prova for feita Tudo bem mas vamos pro partes Presta atenção aí presta atenção todo mundo ok com isso aqui é isso aqui que a gente vai fazer tá aí vamos lá presta atenção aqui comigo presta bastante atenção no que eu vou falar Tá bastante atenção vou falar da onde que sai a memória essa é uma pergunta bem bem bem fundamental porque se eu não tiver como fazer a memória não tem como eu fazer uma máquina de estados Qualquer que seja tá não tem como fazer uma máquina de estados Qualquer que seja Então qual queer a ideia de eu fazer uma memória Ok tanto pra máquina síncrona quanto pra máquina assíncrona a ideia básica é a mesma de construir a memória todo mundo bem presta muita atenção aqui comigo muita atenção aqui comigo tá porque a ideia vem de uma coisa que vocês estudaram no primeiro semestre quando você chegaram aqui você fizeram cálculo um a vocês viam derivada integral vocês lembram disso né tá vem dali essa ideia de onde é que sai Cadê a memória tá presta atenção aqui comigo quando vocês estudaram integral lá no cálculo um não precisa saber aqui calcul integral a gente não vai ficar calculando integrais aqui tá mas olha a ideia básica aqui da coisa olha a ideia básica vocês estudaram lá integral tem uma função qualquer aqui Tem uma função qualquer aqui aí vocês em algum momento lá o professor fala assim ah integral é área embaixo dessa curva Então escreve alguma coisa assim ó integral de A até B de F Dex DX tá é a área dessa curva aí Começando aqui num lugar que a chamou de a terminando num lugar de B Então essa área aqui ó certo certo fo foi isso aqui né todo mundo ok isso aqui é um número por mais estranho que pareça esse número isso é um número você calcula esse número vocês fizeram um monte de continha dessa aqui emem cálculo um né calcular esses números tudo bem só que olha só porque lá em cálculo um ainda você fez uma coisa que você não percebeu Tá talvez Provavelmente você não percebeu mas olha só uma coisa você pode fazer uma uma algo que é o seguinte oos seguintes eh situação você pode travar esse esse a o limite inferior de Integração eu tô travando Esse lugar aqui onde eu começo calcular essa área e aí você pode em vez de ter um B fixo você pode definir uma variável e falar assim cara eu vou calcular de A até um número T E aí Isso aqui em vez de ser um número passa a ser uma certa função que eu vou chamar de F grande de T você me dá um t Olha só isso aqui uma função você me dá um t eu te dou um número em resposta que número esse número aqui ó então isso vira uma função também todo mundo ok todo mundo bem com isso que Essência O que que eu tô fazendo eu tô pegando isso aqui e falando assim ah É como se eu tivesse um um slide Zinho Onde eu posso botar esse T aqui me dá um número eu posso botar esse T aqui me dá um número eu posso botar esse T aqui me dá outro número e calcular uma função uma função que é vocês fizeram ass em cálculo um é que vocês não est muito percebendo que era isso que acontecia Por exemplo quando sei lá eu não lembro mais tá de cabeça mas quando em algum momento você calculou que integral do Cosseno é seno né não o integral do Cosseno é seno né que aí vai dá tem tem lá Teorema Fundamental do Cálculo que é a antiderivada né que é a integral meio que cancela faz operação contrária deriv meio que essa meio que esse intuição é essa lembram disso vem daqui essa ideia aí essa ideia aí tá então Prim que você tem uma função só que tem uma coisa lá que o professor de cálculo me que não comentou com você que é o seguinte essa função essa função f aqui ela tem memória e essa é uma coisa um pouco mais Sutil de perceber por que que eu tô falando que tem memória porque olha só imagina que eu calculei calculei a função essa função f t num ponto t0 chamar aqui de t0 aí dá um dá um número lá dá um resultado lá qualquer dá um número se essa integral existir vai dar um número certo uma quantidade beleza e aí depois de um tempo você quer ir lá fala assim não Beleza agora eu quero calcular a função nesse valor aqui aí pela forma como você calculou essa coisa você pode ir lá e começar do zero do ponto a e calcular até o T1 ou você pode usar outra coisa Falar assim cara eu não eu já fiz eu já sei quanto que vale daqui para lá eu já sei essa quantidade que é o f de t0 se eu já sei isso aqui que que eu preciso fazer Ah eu só preciso calcular esse outro pedaço aqui ó certo e aí isso daqui é uma certa forma de memória porque eu tô lembrando uma coisa a parte vermelha então a parte amarela meio que lembra da parte vermelha eu tô ex eu tô meio usando a palavra meio de maneira meio informal assim para você tipo me que olhar e falar assim ah é tá bom É pode ser professor acho que eu posso falar sim faz algum sentido tudo bem faz algum sentido tá beleza até aí OK até aí OK beleza até aí OK aí começa aquela a questão então então tá bom que que é integral aqui no nosso mundinho de onde que aparece isso da onde que vai aparecer esse conceito aqui integrar alguma coisa tá Da onde que aparece esse conceito de integrar alguma coisa esse conceito vai aparecer essa ideia de acumular alguma coisa tá e acumulando alguma coisa e com isso ter essa noção de memória de alguma forma vai acontecer sempre que eu fizer aluma coisa assim ó eu tenho um certo sistema que eu vou chamar aqui de H ele faz alguma coisa ele produz uma saída lá uma saída qualquer tá para ele produzir uma saída ele precisa de uma entrada uma função qualquer eu dou uma entrada para ela calculou uma saída para mim tudo bem só que quando a gente tá aqui em engenharia normalmente o que a gente quer fazer é eu quero colocar uma eu não me interesso tanto pela entrada mas eu me interesso muito pela saída pelo que a máquina tá fazendo porque eu quero que ela faça uma coisa específica eu não quero que o eu não quero que sei lá um carro ande de qualquer jeito eu quero que Ele ande de linha reta eu não quero que um carro ande qualquer eu quero que Ele ande num numa determinada velocidade quando eu tô lá dirigindo eu não quero que eu não quero que ele vai pra frente somente eu quero que ele vai paraa frente a 60 km/h certo eu tô Inter bastante interessado no que que no que que acontece com a saída e eu não me interesso tanto com qual a entrada que eu preciso botar pro carro ficar a 60 porh até porque essa entrada tem que mudar se mudar a condição do carro Afinal você sabe que você tá todo mundo que dirige aí você está dirigindo no plano você tá lá apertando acelerador do carro aí tá numa certa velocidade aí você tá sei lá dirigi na estrada e começa a subida se você não apertar mais o acelerador o carro começa a reduzir a velocidade certo então você precisa mudar a entrada para ter a mesma saída e se você tá na descida você tá lá 60 por hora no plano apertando lá o pedal lá tá paradinho aí começa a descida e você você quer manter os mesmos 60 por hora cara você sabe disso assim não precisa calcular nada você sabe que você precisa tirar o pé do acelerador velho porque o carro acelera sozinho na descida você percebe ele aumentando de velocidade el 60 por se ele vai acelerar mas ele vai com certeza ficar mais de 60 se você continuar acelerando o que você tava fazendo antes certo o que eu quero dizer é quando muda a condição do sistema tem que mudar a entrada para ele continuar fazendo a mesma coisa é que a condição mínima é ficar menor ou igual a 60 não aqui nesse meu exemplo eu quero ficar a 60 eu quero ficar travado em 60 mas não vai ficar Você já colocou uma condição ele não vai conseguir ficar de como que não tem o freio se ele passar do 60 eu diminui velocidade carro tem freio esse pedal não foi enunciado que que eu faço com um rapaz desse de Fal no carro tem acelerador e tem freio Ah então f de um carro mesmo né tá não é um carro que só tem acelerador seria um carro muito estranho seria um carro meio perigoso até mas enfim todo mundo bem o que que eu tô mais interessado presta atenção eu não tô tão interessado no que que tá acontecendo aqui ó qual igual a entrada que a máquina tá vendo o que eu realmente Tô interessado é eu tenho um sinal de referência eu tenho uma certa informação de referência sei lá velocidade que eu quero manter eu tô vendo uma saída aqui eu tô vendo o que de fato está acontecendo e o que me interessa é a diferença entre o que tá acontecendo e o que eu quero que aconteça se eu quero que está que esteja a 60 e está a 60 é uma situação se eu quero estar a 60 e eu tô abaixo de 60 é outra situação se eu quero estar a 60 por h eu estou acima de 60 é outra situação concorda cada uma delas Exige uma resposta diferente da minha parte que T dirigindo certo tá em todos esses casos eu tô comparando a saída o que de fato o sistema está fazendo com o que eu quero que ele faça e a partir daqui eu tô gerando um sinal pros para controlar de fato a máquina no caso o carro aperto mais ou acelerador PIS no freio eu tô na direção eu giro o volante Ok tem lá depende cada sistema vai ter um conceito diferente que que a saída que que é o estado desejado tudo bem tô usando esse exemplo aqui agora todo mundo ok todo mundo ok esse isso aqui tá Isso aqui a gente chama de realimentação eu não tenho nenhuma vergonha de falar que esse aqui é o conceito mais importante de Engenharia e talvez o único que interessa pelo menos nas nossas engenharias aqui que estão ligadas com essa noção de informação diga uma pergunta Dent aqui acabi tendo segunda parte tem a realimentação e desligado eu ligo que aparece é determinado em princípio indeterminado vai para qualquer lugar todo mundo ok todo mundo ok aí vão quem fizer de fato teoria de controle vai estudar alimentação positiva negativa não sei o quê blá blá um monte de coisa toda tá lá eventualmente você vai fazer eletrônica comigo aí você vai estudar um monte de de de esquema de realimentação em outros contextos e coisa mas toda vez que a gente quer com um sistema faça alguma coisa siga um sinal de referência e aí esse sinal codifica o a o meu desejo do que eu quero que ele faça de alguma forma tá a gente precisa implementar alguma coisa alguma coisa dessa natureza aqui sistema de realimentação e cuidado que não precisa necessariamente ter um fio assim tá um fio ligando uma saída com entrada não precisa ter um fio Sao com a entrada tipo fazendo um um parêntese lá da aula de eletrônica esse aqui é um dos circuitos que analista tem uma entrada aqui tem uma saída aqui tá E esse cara aqui esse cara aqui tem um esquema de realimentação implementado aí e você tá vendo que não tem fio Lig não tem fio ligando esse ponto aqui com esse ponto aqui não precisa ter um fio ligando um ponto com outro a saída com entrada Ok mas precisa ter alguma forma de influência da da da saída da referência no sinal que entra aqui ó para controlar de fato a máquina o sistema precisa ter alguma forma de influência que não não não precisa ser um fio tá todo mundo ok eu não vou dizer para vocês como é que funciona isso aqui mas não precisa ter um fio beleza Beleza então vamos lá eu não sei como é que o abordou esse essa questão aqui aqui com você especificamente Tá mas a gente tem portas lógicas e nada impede da gente vir aqui pegar a saída e conectar na entrada Nada me impede de fazer isso certo e aí algumas vezes isso aqui gera um sistema estável e outras vezes gera um sistema instável tá informalmente aqui é fácil de ver o que que é o instável se por algum motivo aqui tem zero não sei como que esse zero apareceu aí mas se por algum motivo tem zero essa porta lógica calcula um e bota aqui e aí ela transforma esse zero em um E aí isso faz aparecer um zero aqui aí isso faz aparecer um zero aqui isso faz calcular um aqui e aí vocês estão vendo que a saída dela fica 0 1 0 1 0 ela não para isso aqui é um oscilador que é um exemplo de um sistema instável tudo bem todo mundo ok que é um exemplo do que a gente chama de realimentação positiva mas eu não tô tão interessado nesse detalhe em algum momento também a gente pode fazer variações tá eu posso pegar isso aqui fazer alguma coisa assim ó e esse sistema esse aqui é muito parecidos é muito parecido esse sistema aqui esse sistema aqui tá ele tem um comportamento completamente diferente porque se por algum motivo tiver um zero aqui a primeira porta L vai calcular um vai botar aqui e a outra vai calcular um zero vai botar aqui e aí isso aí tá Fica aí nesse estado aí el fic paradinha aí nesse canto e se por algum Infortúnio em vez de zero ali Aqui começou com um aqui vai calcular um zero vai botar um e ela vai ficar paradinha no estado Amarelo Então você estão vendo que essa máquina é estável Ela tem dois estados estáveis tá se eu considerar que aqui é a saída tem um estado zero tem um estado um todo mundo ok com isso todo mundo ok com isso todo mundo bem e repare tá esses esse zero aqui Depende do próprio zero estar ali então de alguma forma a saída tá influenciando a a saída tá influenciando nela mesmo ali ó tô usando a saída para calcular o que que tem que acontecer na saída n não tá se a saída é aqui essa estado vermelho a memória tá guardando Zero Só que depende de onde você escolhe a saída Se eu escolher sair daqui aí esse estado vermelho tá guardando um você pode escolher onde você tá onde você pode escolher onde que é sua saída tem nenhum problema com isso em princípio o lugar onde você escolhe como saída é completamente arbitrário todo mundo mas tá ok com isso então você escolher um lugar ali tem dois estados estáveis um que é o zero que é um todo mundo bem então repare tem uma forma de realimentação aqui tem uma forma de alimentação aqui e essa alimentação é que tá guardando para mim zero ou um de alguma forma essa realimentação é que é a memória da coisa essa noção de memória de lembrar desse zero tá nesse nesse arranjo aí repare não é um lugar não não tem um lugar lá onde tá guardado esse zero não tem um lugar no circuito onde tá guardado esse zero tem um processo acontecendo e esse processo dá essa ideia de que tô guardando um zero tem um processo essa essa máquina tá o tempo todo calculando a saída ela tá o tempo todo olhando lá ah Aqui é zero Então aqui tem que ser um Então aqui tem que ser zero Então aqui tem que ser um Então aqui tem que ser zero Então aqui tem que ser um ela tá o tempo todo calculando isso aqui ela tá o tempo too calculando fazendo alguma coisa OK e esse processo aí é o que produz esse efeito de eu me lembrar do zero todo mundo bem com isso mundo bem com isso aí Dev ter mostrado para vocês Que esse aqui é o a ideia básica de fazer memória aí para fazer o let que a gente faz a gente substitui esses inversores aí por inversores condicionais que eu chamo tá presta bem atenção aqui se eu fizer algumas funções básicas aqui ó 0 0 1 1 0 1 1 se eu fizer a end a end é assim certo 0 0 1 E aí se eu introduzir a variável B você pode dizer que aqui é zer e que aqui é a cópia do B todo mundo Ok só que aqui tinha inversores eu preciso achar alguma coisa que faz inversora tá Opa eu tenho b a inversora é o b barrado então eu posso pensar assim Ah em vez de usar end eu posso fazer aend aend é assim ó 1 1 1 0 certo e aí se eu introduzir a variável B de novo isso aqui é 1 isso aqui é b barrado isso quer dizer que eu posso deixa eu limpar isso aqui vim aqui colocar nend aqui no lugar colocar nend no lugar e se aqui tá entrando um e aqui tá entrando um é exatamente o que tinha antes duas inversoras ali porque é isso que a nente faz ó quando tem um beleza só que agora esse processo aqui me permite esse esse essa portinha aqui esse outra circuito ele tem duas entradas aqui ó e essas duas entradas me permitem trocar de estado me permitem selecionar o que é que eu vou guardar lá na memória esse que é o princípio de funcionamento do Led Beleza se eu vier e botar zero aqui zero aqui olha a tabela verdade ó isso aqui tem que ser um aqui tem que ser um e se aqui é um qu Enquanto aqui for um é b barrado certo e se ali embaixo tem um aqui tem que ser zero e aí esse negócio fica nesse estado aí porque na segunda nend zero e zero dá um mesmo e ela fica parada aí eu faço só aparecer um lá na saída beleza E se eu fizer oo contrário Opa se eu voltar aqui para um aqui aqui continua um aqui continua zero aqui continua um só fazer a continha da nend aí E se eu mexer aqui para zero Opa zero nem qualquer coisa é um é o que tá escrito na tabela verdade então aqui aparece um a segunda nend tá funcionando como inversor porque é um nem qualquer coisa é inversora é o que tá escrito no tabela verdade então aqui tem que ser zero e aí Aqui tem que ser zero e aí se eu voltar aqui para um aqui continua um aqui continua zero e aí eu guardei o zero lá na nessa memória todo mundo bem esse é o princípio de funcionamento de um let tá E aí a partir daqui depois o min deve ter feito flip flop aí sei lá como é que ele fez a arquitetura isso aqui porque tem flip flop JK tem outros flip flops que eu vou tipo Espero que dê tempo de fazer com vocês mas eu vou fazer um flip flop a partir de uma máquina assíncrona porque no final você com é uma máquina assíncrona tem Vocês estão vendo o sinal de sincronia aqui não mas tem memória vocês estão convencidos que tem memória mas tem sinal de sincronia não então isso aqui é uma máquina de estados finito só tem um bit uma máquina de estados finita não tem sinal de sincronia Então ela é uma máquina de estad finitas assíncrona já era uma máquina assíncrona Vocês já viram a máquina assíncrona aqui todo mundo bem e a gente a partir dela usou para fazer um outro uma outra máquina aí que a gente modif flop que tem uma entrada de sincronia e a partir dessa dessa com com entrada de sincronia a gente cria as máquinas síncronas todo mundo ok com isso mas tá todo mundo bem então repare ó o princípio básico é ter algum esquema de realimentação todo mundo ok com isso todo mundo ok com isso então no final das contas eu preciso fazer um circuito um circuito para fazer uma máquina assíncrona eu preciso fazer algum circuito que faz alguma coisa assim ó que ele mesmo de alguma forma Isso aqui é uma função combinacional tá next state next state function uma função combinacional como tinha antes tá só que em vez de ter uma camada aqui de memória síncrona essa própria função aí de próximo estado vai ver vai as entradas dela vai perceber o que é que tá acontecendo na saída eu preciso também ver as entradas e ela calcula eí Qual que é o próximo estado dela e onde é que tá a memória a memória tá aqui ó nesse processo de realimentação assim como está aqui ó nesse processo de realimentar todo mundo ok com isso todo mundo ok com isso conceitualmente é isso não tem nem nada assim nenhum segredo conceitualmente é para ser simples tá o diabo mora nos detalhes Mas conceitualmente é simples todo mundo bem então vamos lá eu vou fazer com vocês aqui eu espero que eu eu esqueci a minha nota de aula então vocês vão ter que fazer comigo e me não me deixar errar Tá mas vamos projetar um flip flop tipo D com uma máquina assíncrona que é uma máquina relativamente interessante da gente ver como é que como é que faz tá Como é que é o flip flop tipo D tem duas entradas d e uma entrada eu vou chamar de C simplesmente o clock tá então tem duas entradas aqui ele em princípio o que a gente estava fazendo tem duas saídas né um q e um q barrado certo eu vou fazer a máquina com uma saída só tá só para simplificar um pouco pra gente cuidar de menos coisa tá mas é relativamente fácil ir lá e puxar um fio do lugar que barrado lá dentro vai ficar meio Óbvio assim de onde é que você tira ele tá vou fazer essa máquina aqui porque tem menos informação pra gente todo mundo ok e Como que essa máquina funciona como que essa máquina funciona eu vou fazer a máquina sensível a borda de subida então toda vez que eu veio uma transição de zero para um Nessa entrada aqui o que tiver aqui é para copiar para cá se tiver zero é para ir pro estado zero se tiver um é para ir para um estado que guarda um na saída todo mundo ok com isso todo mundo bem com isso você tem que manter isso aqui na tua cabeça porque se você não entender a especificação do que você quer fazer não vai entender a nenhuma da partida aquii não vai entender a tabela vai ficar viajando todo mundo bem com isso todo mundo Ok então vamos lá Então vamos lá vamos lá procedimento procedimento você pode começar fazendo diagrama de estados fazendo um Eu acho que é o mais razoável começar a fazendo uma tabela de translação de estados pra máquina síncrona é o é o canal porque você vai ver que é bem sistemático o que tem que acontecer na tabela assim tá você pode ficar viajando em cima dela eu faço negócio assim tipo que nem um computador um computador assim ó pá pá pá sempr a mesma coisa Claro que eu preciso ir pensando no que tá acontecendo aqui mas a ordem com que eu vou fazer nas coisas é sempre igual tá tá tudo bem para porque e eu já falo isso para vocês eu falo para vocês que eu sou burro para se eu não seguir uma instrução bem certinha eu vou eu vou errar e eu não tô falando que vocês são burros eu provavelmente vocês são mais espertos do que eu tá então se você não quer errar Segue o que eu tô fazendo porque provavelmente eu sou mais burro que você se eu faço de um jeito que não é para errar se vocês são mais espertos também não vão errar tudo bem Não vai dar uma de espertalhão aqui vamos lá então nessa tabela ela vai ser assim ó para baixo aqui eu vou criando estados cada linha vai ter um vai ser um estado que eu vou criando os estados da máquina e vocês vão ver que no começo eu vou só ficar criando estado sem me preocupar com quantos estados eu se eu perceber que tem a necessidade de um estado adicional vou lá e Cri um estado adicional e vou fazendo em algum momento vai fechar essa conta aqui ou tem que fechar porque aliás se for possível solucionar o problema com uma máquina de estados com a quantidade de estados finita uma hora vai parar isso aí se for possível resolver esse problema com uma máquina estado finita mas não vai ter nenhum problema para vocês aqui que não vai ser possível resolver Tá Mas vamos lá aqui em cima ó eu vou botar as entradas aqui eu vou botar as entradas quantas entradas tem nessa máquina não també quantas entradas tem nessa máquina duas d e c Beleza então vou botar aqui ó todas as combinações de entrada aqui em cima tá 0 0 1 1 0 1 1 Vamos colocar nessa ordem aqui ó D do lado esquerdo C do lado direito pode ser repare que o que eu fiz aqui em cima na mesma ordem da do mapa de carn né na mesma ordem do mapa de carn por quê Porque eu quero ter visível na minha cabeça Quem são vizinhos aqui ah eu sou aí tá vendo eu digo que eu sou burro velho vocês não acreditam um Um Faz doutorado passa 15 anos dando aula agora sim por isso que eles não podem deixar errar todo mundo ok todo mundo Ok então vamos lá do lado de cá ó eu vou botar a saída no minha casa aqui só tem uma saída que a saída que eu vou fazer sempre na máquina C só sempre vou fazer o design assim se eu tô nesse estado a saída só depende do Estado atual Ok sempre que é como se fosse entre aspas máquina de m Ok então vamos lá vamos lá começa em algum lugar tá gente você começa em algum lugar eu vou criar um estado que eu vou chamar aqui de Idol init dá o nome que você quiser dá o nome que você quiser se você quiser chamar de s0 Tá beleza tá belezinha tudo bem Eu prefiro dar um algum nome que tem algum significado do para que que esse estado existe Afinal cada estado tá tentando lembrar alguma informação ou um conjunto de informações Então vale a pena você dar um algum nome que faça sentido mas não se preocupa muito com qual é o nome certo nem o nome errado algum qualquer nome que faça sentido na tua cabeça Beleza você escolhe o lugar para começar você escolhe o lugar para começar esse lugar que você começa é completamente arbitrário Então vou pensar assim eu vou começar nesse estado Idol e eu vou supor que as que a entrada está zer zer para eu começar o processo do Design aqui dessa coisa tudo bem aí como é que você começa então você vem aqui e fala assim se eu tô no Idol e tá chegando zer zer eu vou pro Idol Esse é esse cara aqui para lembrar que esse cara que tá aqui que é o próximo estado é o mesmo estado de onde eu estou na linha quer dizer se eu estou no estado Idol e tá chegando a entrada 00er eu vou pro Idol que é o mesmo lugar onde eu tô agora que é como se fosse isso aqui ó todo mundo bem já vou adiantar para vocês algumas coisas todos os as linhas aqui todos os estados na H que tiver fazendo essa tela aqui a primeira a primeira passada da tabela todos os estados tem que ter um estado que eu vou chamar de estável todos eles T que ter essa cara aqui não só isso todos eles T que ter exatamente um estado estável exatamente um se tiver zero tá errado nesse momento se tiver zero Tá errado se tiver dois tá errado se tiver três tá errado tiver quatro tá errado um e exatamente um na máquina Hã assíncrona o design da máquina síncrona você vai lá e faz pelo diagrama de estados primeiro que é mais fácil de você fazer a coisa não sai fazendo diagrama de estados aqui não porque é bem mais complicado beleza na máquina S assíncrona assíncrona você começa com essa tabela aqui tá por conta dessa condição eu vou dar nome dessa tabela aqui de tabela de transição de estados primitiva depois a gente otimiza ela depois que ela tiver pronta beleza próxima coisa que você vai fazer repare que eu tô impondo uma disciplina para mim tá eu eu eu posso fazer o que eu quiser aqui mas eu estou impondo uma disciplina para mim mesmo segunda coisa segunda regra que você vai seguir que é parte dessa disciplina segunda regra que você vai seguir as entradas só podem mudar uma de cada vez eu nunca vou mudar mais de um bit ao mesmo tempo tudo ok isso quer dizer que se eu começo com as entradas zero e zero não tem como eu tô dizendo a princípio na hora que projetando isso aqui que nunca vai acontecer esse caso de de as entradas estarem zer zer e ela de uma vez só e para um OK eu tô impondo essa disciplina no circuito por que Professor Porque sim só faz Beleza depois você vai ver que na otimização você cobre eventualmente os casos de de de mudança de mais de um bit simultaneamente depois ok Isso quer dizer o seguinte Olha só se eu tô no estado zerer ali naquela no ID ali quer dizer que esse estado é inalcançável a partir essa essa condição aqui é inalcançável nessa linha da tabela neste momento Então você já marca lá tudo bem E eu vou botar a saída vou imaginar que tô começando com a saída zero sei lá pode começar onde você quiser tá não importa não importa onde você começar bota ali qualquer coisa tudo bem até aí aí ó você vê é o setup do do do do da solução tá a tabela é sempre essa bota todas as combinações de entrada lá em cima bota os vizinhos com com os vizinhos quando tem mais de dois bits fica meio chato porque a você precisa você não consegue botar os vizinhos tudo um lado do lado do outro tá mas você precisa prestar bem atenção em E se eu tô aqui quais os casos que eu não tenho como como alcançar quais os tatos mudam mais de um bit você já marca todos eles lá com com tracinho beleza aí sobrou um monte de coisa que você precisa preencher tá vendo lá aqueles ali que você precisa preencher você precisa preencher esses aí vão depender da lógica do sistema Da Lógica da máquina que você tá projetando ok mas até aqui é sempre igual assim sempre igual todo mundo comigo então vamos lá se eu vier daqui para cá com as entradas o cloque saiu de zero foi para um vocês estão vendo que o clock SA o de zero foi para um e na máquina que eu tô projetando o cloque sai de zero e para um o clock sai de zero e para um é para eu guardar o que tiver entrando no D certo tá entrando zero Vocês estão vendo Vocês estão vendo você concorda comigo que se eu jogar pro estado Idol que é um estado que já existe aí ele tá guardando zero certo isso Me convida presta atenção cuidado isso me convida a fazer isso só que você não vai fazer isso por qu porque esse aqui também seria um estado estável nessa condição e na disciplina que a gente tá seguindo aqui é para ter um exatamente um estado estável Vocês estão vendo Então você precisa ir lá e criar outro estado dá um nome aí para ele input zero eu vou chamar só zero para escrever menos coisas pode ser em zero aí você bota uma linha na tabela dá o nome dele lá Bota ele estável ali naquela linha onde você criou ele novo ali coloca a saída nesse caso aqui tem que ser zero a saída alguma dúvida não próximo agora você vem e faz esse esse aí o que que aconteceu com a máquina eu sair daqui e vim para cá o clock que era zero tá zero que que é para acontecer no flip flop D nada não é para ele mudar a saída dele não não saída dele que era zero tem que continuar Zero Certo Hã mas é você concorda que essa é a situação onde eu tô preparando ele para gravar um que é entrada D iG e o clock tá embaixo eu mudei a entrada mas não não gravei porque só Grava alguma coisa quando sobe o clock é que o clock não subiu vocês estão vendo certo cria outro estado aí como é que vai ser o nome desse cara quanto input input 1 o nome não importa tá tipo assim ó deixa escolherem porque vocês pode ser imput um é tanto faz mesma coisa então ó em um Bota ele aqui em um aqui é para ser saída zero né foi o que a gente acabou de concluir tá Ah na hora que eu col tô crio a linha nova eu eu não fiz aqui na segunda mas eu já passo o tracinho onde eu já sei que não dá para alcançar que nesse caso aqui é esse e nesse caso aqui é esse todos aqueles onde a entrada muda mais de um bit já já sei que não não não vai ser alcançável aqui no primeira passada todo mundo bem próximo em zero eu tô lá com meu flip flop ele tá guardando zero eu tô mudando daqui para cá as entradas daqui para cá o cloque foi de um para zero e a entrada permaneceu zero entrada de dados para onde que eu vou você vai pro faz sentido ir pro ID concorda Por qu porque o exatamente a condição de eu tô com as duas entradas ig a zero e eu t guardando zero exatamente que tá acontecendo ali do lado deixa eu escever de branco isso aqui aqui eu tô saindo o clock tava em um foi para um calma não o clock a minha saída do flip flop está em zero o estado atual tá em zero a saída o clock estava em um foi para um Então não é para eu gravar o dado Presta atenção então na saída tem que continuar zero tá na saí tem continuar zero e a entrada de dados saiu de um de zero para um para Qual estado eu vou qual é o nome dele para onde em um Se eu jogar aqui em um aqui vai ser in um e ele deveria ser um estado estel aqui eu posso fazer isso não então preciso criar um novo estado concordam dá um nome para ele aí em do já pegaram o espírito do em dois em dois aqui não vou alcançar e a saída dele é Zero Certo todo mundo ok com isso todo mundo ok próximo antes fazer até o próximo quantas linhas tem aí agora quatro tá todo mundo vendo que tem no mínimo quatro Estados essa máquina certo vocês estão vendo que nas Quatro estados que a gente já que a gente criou até agora cada um deles tem um estado estável e somente um estado estável certo a gente já sabe que tem que ser essa Tem que manter assim não pode ter mais de um estado estável e todos eles aqui a saída é zero certo aí é uma pergunta que eu faço para vocês tem como criar pode acontecer a pergunta é essa se alguma coisa pode acontecer de eu criar um estado S aqui qualquer e tiver um qualquer coisa e aqui ser zero pode acontecer de eu fazer isso eu poder fazer eu posso fazer mas vocês concordam comigo que o s é o in zero Então se eventualmente eu querer criar esse estado s o in zero já faz o papel dele não interessa o que tem nas outras linhas ali o in zer já faz o papel dele e se eu tentar fazer esse aqui o Idol já faz o papel dele não interessa o que eu colocar aqui ó não interessa o que eu colocar aqui o ID já faz esse papel Aí eu pergunto para vocês então diante dessa observação aí quantos mais estados eu consigo criar nessa situação aqui vocês estão vendo que tem no máximo quatro Estados você estão meio que concluindo comigo tem no máximo quatro Estados onde aqui pode ser zero que é o número de combinações diferentes de entrada quantos mais estados podem existir nessa máquina qu mais quatro quais qu hã outros quatro outros quatro cada um onde ele é estável num num ponto diferente só que todos eles tem a saída um todo mundo meio que dá para perceber que isso vai isso deve acontecer isso pode acontecer eu sei que eu vou pular um pouquinho mas poderia ter mais do que esses o você pode criar um monte demais mas todos os a mais que você criar além desses oito aí que a gente vai que eu já vou pré preencher agora todos esses a maisis você criar eles são equivalentes a um daqueles que já tá ali é porque podia ter umado um estado de transição Isso é uma outra conversa esquece a questão é vai vai surgir essos mas os estados eh estáis eles vão se repetir eles podem Como assim eles podem se repetir tipo você vai criar novos estados isso novos estados vão ter os estados estáveis issso só que eles vão ser os mesmos de antes sim mas eles vão ser diferentes porque a saída é parte da da da da especificação entendeu o o fato dele eu vou criar já os quatro aqui tá porque eu vou recomeçar agora a fazer essa coisa do zero Tudo bem eu vou começar agora do zero vou dar uma reordenada vou começar do zero porque de novo na minha cabeça tem que ser um negócio assim do tipo o máximo de coisas que eu já puder fazer preenchido e não pensar eu já vou fazer e é o que eu quero mostrar para vocês Tudo bem mas vamos lá isso o que eu tô dizendo aqui que eu vou fazer então aqui ó eu vou chamar aqui esse 0 1 2 3 eu vou chamar aqui de S4 S5 S6 s7 E aí eu já sei que podem acontecer S4 estável aqui eu vou passar uma linha aqui só para eu ficar mais visível o que que tá acontecendo tá com um e esse aqui é inalcançável O s5 assim esse é o inalcançável aqui com um o S6 aqui esse aqui não dá para alcançar um e esse aqui é o sete aqui não dá para alcançar aqui é um eu já sei que isso aqui vai aparecer ou pode aparecer se pode aparecer eu recomendo para você já coloca lá confia em mim é bem melhor você já enfiar você saber tudo que pode aparecer e ter que preencher essas coisas aqui que vai dar muito menos trabalho do que não saber você já parou para pensar que é muito mais é muito mais penoso você fazer alguma coisa sem saber quando termina do que fazer alguma coisa sabendo quando termina alguma coisa que é chata vamos chamar assim de fazer é bem pior de fazer quando você não sabe quando termina do que quando você sabe que termina quando termina Hã você já sabe Ah agora já sei tudo que tem que fazer que que tem que fazer aqui preencher todos os buraquinhos que não tem que tão tão em branco Tudo bem eu vou voltar do vou voltar do começo só para eu fazer a coisa mais sistemática o nome não interessa tá mas todo mundo pegou o racional tem que acontecer eu só quero agora mostrar os atalhos vamos lá esse aqui vai ser o s0 esse não dá para alcançar esse aqui vai seru S1 esse não dá para alcançar Esse vai ser o S2 esse não dá para alcançar aqui S3 aqui não dá para alcançar todo mundo bem com isso bem com isso essa tabela segue a segue todas as regras que eu dei até agora não segue cada linha só tem um estado estável cada linha só tem um estado estável cada linha os est não tipo a partir daquele estado estável só tem como eu alcançar os próximos mudando um bit só de cada vez por isso que eu marquei aqueles tracinhos que eu tô marcando a todas as situações que não não vão não preciso nem pensar que elas não vão acontecer é um equival é uma é um meio que um Don quer mas não bota dele não bota só o tracinho depois você junta ele esse tracinho quer dizer que você pode substituir ele por qualquer outra coisa tá e a gente vai fazer isso na segunda passada tem todas as saídas possíveis aqui para todas as combinações de entradas então tem todos os estados possíveis e sempre vai isso sempre vai acontecer se a máquina síncrona tem duas entradas sempre vai ter esses oito estados na na tabela primitiva esses aí ó sempre vai ter esses claro que dependendo do que a gente preencher nos Espaços que estão com buraco Pode ser que eu consiga Diminuir a quantidade de estados mas esses aí na tabela primitiva na Prim passada sempre vão existir esses exatamente esses se tiver três entradas se tiver três entradas quantas linhas aí vão ter hã 16 por quê ó se tem duas entradas eu tinha 2 elevado a 2 é 4 xes 2 porque tem duas saídas diferentes certo então deu 2 elevado a 2 x 2 que é 2 à Tera Então se tem duas entradas tem 2 à Terceira que é o se tem três entradas provavelmente vai ser 2 à Tera que é 8 x 2 16 se tem quatro entradas e uma saída tá cuidado caso de uma saída vão ser 2 elevado 4 mais 1 que é que é 16 x 2 32 para uma saída presta atenção comigo se tivesse duas entradas e duas saídas o q e o q barra por exemplo você concordam comigo que aqui vai aumentar ó porque eu posso ter 0 0 0 0 aí vai ter o caso do 0 1 0 1 0 0 aí depois vai ter mais quatro casos que é o 0 1 0 1 0 e depois mais quatro casos do 1 1 1 1 1 estão vendo todo mundo ok então quantas quantos estádios Total tem tem na tabela 2 elevado ao número de entradas vezes 2 elevado ao número de saídas sempre vai ser assim porque você precisa tratar todas as combinações de entradas e todas as combinações de saídas beleza todo mundo bem e repare Ó tem uma regra sistemática para você fazer esse preenchimento aqui ó da do do do começo da tabela pergunta para vocês se aqui tem n posições quantas já vem pré preenchidas aí segar essa regra pelo menos metade pelo menos a metade já vem pré-preenchida normalmente até mais da metade depende da quantidade de entrada você tem mas tem esse é o pior caso é o que menos tem coisa pré-preenchida tem pelo menos metade tem pelo menos metade das coisa que você não pode errar porque é sempre assim não precisa pensar e nas saídas nas saídas tá sempre pré-preenchida porque você precisa cobrir todos os casos aqui ó com todas as combinações de todos os estados então não tem nenhuma não tem nada para você pensar aqui nesse lado de cá todo mundo bem com isso então vamos fazer a parte que é a parte difícil a parte difícil é preencher o restante E aí presta bem presta bastante atenção vocês vão ver que é difícil mas não é tão difícil assim porque eu vou dar mais uma regra para uma regra que não é uma regra formal mas uma regra prática tá vamos lá ó se eu sair daqui para cá eu preciso preencher alguma coisa aqui quais são as possibilidades de coisas que eu posso botar aqui nessa nesse lugar eu posso botar s0 não eu posso botar S1 pode Pode posso botar S2 po posso botar S3 po vamos vamos do zero de novo S2 Calma eu posso botar s0 não não por quê Porque porque teria mais de um na mesma linha estável eu posso botar esse um Pode sim tem variação só de um bit não mas o os estados aqui a entrada tá vindo daqui para cá eu já tô travando só essa variação de um bit ah o próximo estado pode variar em princípio vários bits aqui nesse momento eu ainda não codifiquei os estados posso mudar pro S1 pode pode pode que vai ser o que a gente vai colocar mas pode ir pro S2 pode por que não pode é o caso Onde está travado se eu escreve S2 O que que significa isso significa que eu tô vindo daqui para essa situação certo na hora que a máquina calcular isso aqui que que eu tô que que ela vai fazer ela tá no estado s0 ela vai mudar pro S2 e a entrada que saiu daqui para cá a entrada tá nessa nessa condição aqui para ela ficar travada aqui o que que tem que aparecer aqui aparecer o S2 pode ter S2 aqui não não pode isso quer dizer que aqui não pode ter S2 se aqui não pode ter S2 que que vai acontecer com a máquina na hora que ela chegar aqui tiver um s Qualquer coisa vocês concordam comigo que ela vai ter que mudar de estado de novo e de novo e de novo e de você não quer que isso aconteça é mais uma disciplina que você tá impondo quando a máquina mudar de estado aqui na tabela primitiva ela tem que sair de um lugar e chegar no lugar que ela fica parada ah Professor eu podia ter botado aí uma um lugar que ela não fica parada você pode fazer o que você quiser você pode fazer o que você quiser só que no fundo você quer acertar essa parada na prova eu tô ensinando aluma coisa bem operacional aqui tudo bem então nessa tabela primitiva a máquina mudou de estado você leva ela para lugar onde ela para beleza para você poder respirar e pensar todo mundo ok aí Opa se eu vou seguir essa essa disciplina Quantas coisas eu posso botar aqui duas S1 ó S1 e S5 Ah tá pessoal Se você não souber o que colocar joga uma moeda se tirar cara S1 se tirar coro S5 a tua chance de acertar é muito maior do que você ficar punhetando e falar assim eu não sei o que colocar aqui tudo bem Eu tô mostrando para vocês que essa parada é na verdade é bem é bem mais fácil de de fazer na prática do que parece por qu porque não tem um trilhão de opções para fazer por que que a gente tá botando esse monte de disciplina na T tabela primitiva é pr não ter um trilhão de opções é para não ter um trilhão de opções é pr quantidade de opções de coisas que eu posso fazer ser muito limitada beleza aí então você tem que se perguntar eu saí daqui para cá lembra a gente sabe o que a gente tá fazendo Tá fazend fre flop D o cloque saiu de zero foi para um a entrada de dados está com zero é pro fop guardar Zero Certo então eu levo ela pro S1 ou pro S5 por quê Porque onde guarda o zero S1 tem outra opção para você botar aqui Não merda hein vamos lá próximo parece bem mais fácil agora né saindo daqui para cá o cloque saiu de zero e foi para zero é para eu é para eu mudar a saída não é para mudar a saída certo a saída Tá em quanto zer então é para eu ir para um lugar que a saída zero também onde que eu Quais são as opções que eu tenho S3 s7 qual deles é o certo por quê Porque a saída é zero que é o que eu quero que a minha máquina faa alguém vai errar isso aqui na prova não tem como errar isso aqui na prova não tem como tu errar isso aqui na prova na hora que você botou essa tabela desse jeito preencheu isso aqui entendeu que é isso aí que tem que acontecer acabou Até eu que sou burro consigo fazer vocês T que conseguir fazer beleza Vocês T que conseguir fazer se eu consigo Vocês conseguem Vocês estão vendo o tanto que eu sou eu só decorei mais coisas com vocês só essa diferença entre nós próximo eu tô aqui ó no S1 tô vindo para cá o clock saiu de um e foi para zero a gente tá fazendo flip flop D cuidado né porque o que você vai preencher Depende de qual máquina que você tá fazendo mas tem pouquinhas coisas você escolher o clo saiu de um foi para zero a saída tá em Zero Certo próxima saída é pr zero também né quais as opções que eu tenho s0 e S4 qual que eu vou colocar aqui s0 por porque a saída desse é zero e é isso que a máquina tem que fazer agora eu vou fazer ess aqui ó daqui para cá quais as opções que eu tenho S2 e S6 daqui para cá o clock tava um virou um é pra máquina guardar dado novo el continu hã ele continuou ele não virou ele saiu de um e virou um tem subida não tem borda de subida certo isso não tem borda de subida aqui né que é o que a gente tá tentando detectar sa é zer a saída que é zero tem que continuar zero para onde que eu vou então S2 por quê Porque a saída do S2 É zero que é para onde eu quero que minha máquina vá vocês estão vendo que se vocês tiverem mais opções você vai lá e olha qual a saída que você quer na máquina e leva para aquele lugar Oi não consegui pegar eu tô aqui eu tô no s eu tô aqui ó eu tô daqui vindo para cá certo olha o que tá acontecendo com as entradas e com as com o estado atual meu estado atual é Zero Certo Aqui tá zero Ó aqui tá zero meu F tá guardando zer o clock saiu de um e foi para um aconteceu a borda de subida aconteceu a borda de subida não aconteceu a próxima saída do fre flop tem que ser quanto zero por porque atual é zero aí eu só tenho duas opções só duas opções você entendeu só S2 e S6 aqui né Qual que você vai escolher S2 por porque a sair do S2 é zer que é para onde eu quero que minha máquina vá tu já pegou próximo agora você vai fazendo isso linha por linha daqui para cá daqui para cá eu tô com um e o clock virou um teve borda de subida não se eu tô com a saída zero agora tem que continuar zero qual é o estado que faz isso S1 porque eu só tenho S1 S5 para escolher naquela coluna próximo cara escolhi entre duas coisas agora o tempo todo daqui para cá eu vi uma borda de descida no cloque certo eu tô no estado zero a saída tá em zero é para ir para zero qual que eu escolho aqui quanto S3 por qu porque a saída tá em zero tem que ir para zero tranquilo até agora né Depois você vê esse aqui precisa ficar pensando e tal não sei que tranquilo V ou ou o que você precisa ficar pensando é bem mais localizado caso a caso vamos lá ó daqui para cá daqui não antes daqui para cá o cloque saiu de zero e foi para zero ó a saída atual é zero a próxima tem que continuar zero né qual o estado que eu boto ali só tem duas opções s0 e S4 qual que eu boto ali s0 s0 por quê Porque a saída do s0 é zero para onde eu quero que a máquina vá tá todo mundo entendendo isso quem não tá entendendo isso quem já ficou chateado pegou o celular e tá olhando Instagram é contigo mesmo você também eu tô de olho em vocês tô de olho em vocês cara todo mundo ok daqui para cá ô caramba daqui para cá paguei o bagulho daqui para cá o clo saiu de zero e foi para um Olha a borda de subida a borda de subida aconteceu certo é para eu guardar o dado o que tiver no dado né no d o d tá igual um aqui ó tanto aqui quanto aqui ó então a saída do tem que virar um Calma a saída do flip flop tem que virar um certo você tem Duas escolhas S2 e S6 Qual que você vai pegar S6 por porque o S2 sair da zer Você tá vendo que você quer sair da um você já entendeu você el alió você já entendeu Você já entendeu você eu não sei o que que tá faltando para aceitar Mas você já entendeu Você já entendeu você tá não é mais uma questão de entender de aceitar vocês já entenderam todos vocês já entenderam que vocês não estão ainda é aceitando que é isso aí vai vai É isso aí que você tem que fazer Bora continua aqui para dar tempo da gente terminar isso aqui eu vou fazer agora um pouco mais rápido para dar tempo de terminar Tá então vamos lá daqui para cá o clock saiu de zero foi para um é para eu mostrar o dado tá em zero então é para eu levar pro S1 sim D agora esse aqui ó esse caso aqui esse caso aqui o cloque sai de zero foi para zero meu estado atual é 1 eu vou jogar pro s7 que mantém a saída em um daqui para cá o cloque saiu de um e foi para zero Então vou manter a saída com a coisa atual que é um daqui para cá o cloque foi de um para um Então vou jogar pro S PR manter a saída daqui PR cá o cloque foi de um para um então jogar pro S5 para manter saída igual daqui para cá o clo foi de um para zero borda de descida não é o que eu tô tentando detectar tá então vou jogar pro s7 para manter a saída no no na mesma coisa que tá agora agora daqui para cá o cloque foi de zero para zero manha mesma saída daqui para cá o cloque foi de zero para um vocês estão vendo ó O cloque saiu de zero foi para um então é prelor mostrar o dado que tá no d o dado é um então é S6 todo mundo tá vendo belezinha preencheu tudo mas ali onde na linha do S4 aqui isso aqui aham porque ó eu tô vindo daqui para cá você concorda comigo que daqui para cá eu vi borda de subida na borda de subida não tem que mostrar o d o d igual a zer olha aqui ó zero e zero ó então joguei pro S1 que é onde a saída vira zero pegou do na mesma linha do S4 ali no no s7 beleza foi pro s7 só para continuar sa1 Exatamente esse caso aqui né que você tá apontando é só para esse então subida do que zero mant o que D tá jogando não é isso que o flip flop tem que fazer flip flop D que a gente tá projetando quando subir o clock é para ver o que tem no d e e a saída virar aquele o que tá no D qualquer outro caso é para manter a saída atual foi o que a gente fez aqui agora cuidado porque isso aí é a lógica do flip flop D se tiver fazendo outra máquina de estados aí é outra coisa já vou dar vários ó vários exemplos você fazer exercícios fazer em casa tá faz o flip flop D com a borda de sensível a borda de descida em vez de subida que é o que a gente tá fazendo isso aí vai dar um pouquinho diferente tem outro que é bem interessante se fazer faz o flipflop d que é sensível tanto a borda de subida quanto a borda de descida poderia entrar tá vai vai vai mudar aí esses vermelhinho que a gente preencheu aí no meio aí tranquilo todo mundo ok que que foi hã chut toque ch o toque toque foi chique o toque foi chique uma música muito bonita essa música aí chama tua imagem depois vocês procuram aí mas é coisa de velho eu já tô mais para lá do que para cá todo mundo ok com isso que que você faz agora que que você faz agora ó agora tudo que você vai fazer é puramente mecânico tá Cop past dá para enxergar desse tamanho Aí sim presta atenção comigo agora você vai fazer agora você vai fazer uma um passo de otimização você vai juntar o Estados redundantes para diminuir a quantidade de estados beleza Qual é o critério para você juntar dois estados um tem que ter a mesma saída então você não pode juntar esse nem nenhum desses com nenhum desses mesma saída dois o estado estável tem que continuar o mesmo na hora da junção TR Calma já vai já vou explicar o que que significa isso três isso aqui é um Don qu ele pode virar qualquer coisa beleza aí vai tentando presta atenção vamos tentar juntar esse estado com esse pode ser chamar tudo de s0 linha pode ser se eu se eu fizer isso ó esses dois são iguais Então pode juntar esses dois são iguais pode juntar Dom quer junta com qualquer coisa Dom quer junta com qualquer coisa pode juntar esses dois pode Beleza vai lá e junta Então vou chamar aqui ó s0 linha vai virar s0 linha s0 linha S2 em o s0 virou s0 linha e o S1 virou s0 linha Tô juntando eles dois num num num outra coisa e a saída aqui é zero beleza Vamos tentar juntar esse com esse pode ser esses Don junto com qualquer coisa Don ker junta com qualquer coisa S2 com S6 não pode então já não dá Calma Vamos tentar juntar esse com esse bloquinho que a gente fez aqui agora pode ser pode ser pode Don qu junta com qualquer coisa é tudo S1 aqui S2 S2 S2 com Don quer S3 S3 com Don Beleza então eu vou juntar aquele terceiro no s0 linha tá então vai ficar assim ó S zer linha s0 linha porque todos esses caras aqui vão ser o s0 linha então S1 virou s0 linha S2 virou s0 linha e o S3 é o S3 beleza todo mundo já deu tempo aí já de assimilar que que é que que é não calma Tô juntando s0 S1 S2 todos eles vão virar s0 linha beleza todo mundo bem a gente já viu que o S3 não junta com ninguém então só vou copiar ele s0 linha s0 virou s0 linha Don qu Don S6 S6 Talvez ele junte com outros e eu renome ele depois e o S3 é o próprio S3 você juntou cus dif não juntei eles porque eles são todos iguais nas colunas ó em todas as colunas eles são todos iguais aí eu posso juntar eles beleza vamos lá então vê comigo no de baixo se eu posso juntar doner com com com s7 e s7 com s7 S6 S5 com Don e S4 com donker pode juntar esses três logo na toada pode tá Ah Professor Por que você nem tá tentando juntar o S4 porque eu já sei que o S4 tem uma coisa que é daqui de cima e o daqui de cima não junto com de baixo que é o S1 ali ó tá vendo que foi o caso que aconteceu aqui com o S6 o S6 tá jogando para baixo o de baixo os de baixo não junto com os de cima por isso que ele não juntou então vai ficar assim ó S4 S4 S1 é o s0 linha certo Don care s7 vai virar Vamos dar um como é que vai Vou chamar isso aqui de sei lá S5 linha O s5 linha vai ser S4 S5 linha S5 linha S5 linha todo mundo ok gente bem com isso todo mundo bem com isso belezinha Professor tem algum problema aqui ter mais de um estado estável em cada linha não agora a gente já tá otimizando na primeira passada sim na segunda passada não a gente quer eventualmente isso aconteça tá Professor Quando eu fizer essa juntada aí sempre vai ter uma solução só não várias vezes tem mais de uma forma de diferente de juntar e enfim Às vezes tem formas melhores que a outras mas junta aí e não fica pensando demais nisso não tudo b não precisa ser o perfeito perfeito é sabe assim ninguém vai te pedir o perfeito melhor S ótima assim tal Hum uma boa solução tá OK Até porque rapidão até porque eventualmente você precisa aumentar o número de estados aqui para poder resolver alguns problemas que eu não sei dizer se nesse caso a gente vai precisa fazer mas tipo eventualmente Preciso aumentar qu o número de estados para corregir algumas alguns problemas precisa mudar só né S6 para S para o quê e não é o que tá aí Ah tá aqui ó S6 foi renomeado para S5 linha e só né pronto todo mundo bem todo mundo bem gente presta atenção então passo dois feito agora você vai fazer um entre aspas um diagrama de estados aqui para analisar para fazer a codificação de estados tá eu preciso dar um código para cada um desses estados que a gente tá criando beleza presta atenção tem quatro Estados aí né Tem quatro Estados Aí presta atenção comigo tá não é um diagrama de estados Completão você só vai fazer assim você vai conectar cada um dos Estados com o próximo com algum outro que ele pode alcançar Mas você não precisa indicar ele mesmo que que eu quero dizer ó o s0 o s0 linha ele pode ir pro s0 linha Deixa aí Ele pode ir pro S3 eu vou botar o S3 aqui ó ele pode ir pro S3 não precisa nem marcar setinha só tum Junta um no outro eu só quero ver quem é vizinho de quem tá só quero ver quem são os vizinhos o S3 pode ir pro s0 linha que já tem o traço lá ele pode ir pro S5 linha e pro S3 que cara éessa o próximo O s5 linha vamos Lar O s5 linha primeiro aqui ó que é a última linha da tabela ele pode ir para ele mesmo e ele pode ir pro S4 que tem que ser aqui e a linha do S4 ele pode ir pro S4 ele pode ir pro s0 e ele pode ir pro S5 linha Então esse aqui é o diagrama de conexão dos vizinhos beleza aí por que que a gente faz isso porque eu quero aqui criar gerar um código binário para cada um desses desses caras tá em princípio eu preciso de dois bits só que eu quero e aí para evitar a história do Glitch lá que o colega ficou pirado lá no começo da aula para evitar o que a gente vai chamar de risco dinâmico que é o que gera potenciais glitz lá na saída tá eu quero que na hora da mudança de estado Só mude um bit de cada vez porque se mudar mais de um bit quer dizer que eu tenho mais de um caminho concorrente no meu s S E é isso que produz eventuais glits lá no na coisa não só produz eventuais glits Como pode produzir um sistema instável um sistema que não chega em lugar nenhum você muda a entrada lá dele e aí ele não não consegue parar mais ele fica fica doido lá ele não consegue mais achar Para onde que ele tem que ir entendi essa ligação não não existe uma seta Porque o S3 consegue ir pro S5 barra mas o s você só quer saber quem é vizinho de quem você não precisa não é um diagrama de estados propriamente dito você só quer saber quem é vizinho de quem porque agora vamos codificar imagina que eu vou botar esse aqui zer zer aí o que que eu tô falando esse aqui não pode ser um porque muda mais de um bit de cada vez esse aqui não pode ser um porque muda mais de um bit de cada vez entendeu eu quero saber o que que eu não posso botar do lado de quem E aí eu vou tentando codificar aqui pode ser o 01 Você concorda aqui tem que ser um zero tem que ser um zer Porque não pode ser um o z0 um já usei o zer zer já usei aqui em princípio tem que ser um que é o último que sobrou E aí tem problema vamos olhar Ó daqui para cá só mudou um bit daqui para cá só mudou um bit Beleza daqui para cá só mudou um bit E aí você concorda comigo que se indo só muda um bit voltando só muda um bit por isso que não preciso de seta porque na hora que eu um deles já já um vizinho do outro já garantiu a volta também já tá garantida Então não precisa Olhar aquela seta amarela que eu acabei de fazer tá vendo Então daqui para cá só mudou um bit daqui para cá só mudou um bit Então tá todo mundo Ok só mudou um bit cada vez professor e se eventualmente mudasse mais de um bit não foi o caso mas imagina que aconteceu isso aqui ó imagina que aconteceu isso aqui aí você vai lá e coloca você 0 0 aí esse cara aqui se você botar um zer daqui para cá mudou mais de um bit não pode se você puser o um daqui para cá mudou mais um bit não pode não é para você fazer isso uai professor que que eu faço então coloca mais estados assíncrona síncrona você faz o que é o que é o que é síncrona não tem esse problema por quê Porque as saíd estabilizam antes da gente mudar de estado de novo no próximo sinal de sincronia isso aí é até um problema do ponto de vista prático tá porque se você não esperar esse timing na máquina síncrona ela desestabiliza também ela fica doidona lá tá a gente chama isso de setup time Hold time tem tem requisitos físicos que precisam acontecer que a gente não tá tratando nesse nível de detalhe com vocês Tá mas aqui é bem mais crítico porque eu não tenho um sinal de sincronia para ir lá e e e sincronizar tudo eu tenho que garantir que sempre a coisa dá certo se acontecer isso você falar assim não dá aí que que você faz quebra isso aqui o caminho cria um estado de passagem para aquele aquele caminho lá que tá dando problema Tudo bem pode falar e se nesse geros quatro Estados eu não tiver uma linha faltar uma dessas linhas tem quatro Estados três linhas assim isso ah aí você faz de jeito você quiser velho zer zer que pode ser um zer que é o um ô então tem problema de deu problema aí não então pronto todo mundo OK o problema que você pode enfrentar é esse de daqui para cá impede uma codificação daqui para cá impede a outra codificação aí que que você faz faz o caminho que tava aqui no meio você quebra ele bota um estado lá no meio e e vai fazendo mais passo a passo ah Professor Mas aí tem outro lugar que tá n problema quebra ele também e tal Beleza agora quando você colocar esse esse estado de passagem você precisa vir aqui na tabela S de passagem e escrever aqui o que que tá acontecendo Beleza então faça um exemplo disso aí resolvendo is é aquela coisa o pessoal fala de solução para ser melhor custo ou melhor performance não ISO isso aqui é para evitar riscos dinâmicos isso é necessário opção isso não é uma opção se você não faz isso seu sistema vai ter um bug lá e vai ter um bug e eventualmente ele vai dar merda quê Isso o quadra em algum tipo de não não ainda não mas tudo bem eu vou passar um pouquinho do horário mas quem precisar embora pode ir diga filho e essa questão da variação de dois bits de não poder MMO critério que o Senor US escolher a onde que fic mais ou menos você tá falando para eu escolher onde é que tava esses tracinho aqui esses tracinhos tinham a ver com a entrada não mudar mais de um bit esse caso aqui eu tô dizendo que o estado na hora que eu mudar de uma linha pra outra aqui ó não é para mudar mais de um bit de estado não tem mais a ver com as entradas entendeu não entendeu vamos aqui vamos botar uma codificação que eu sei que vai dar problema a eu te explico ó 0 ã eu vou botar aqui 1 o s o s0 linha é vizinho do S3 certo que a gente tá vendo aqui no diagrama tá presta atenção aqui eventualmente eu posso estar aqui ó nesse no estado s0 com essa combinação de entradas e aí as entradas mudaram aqui é 0 0 1 1 1 1 0 E aí eu vou vir daqui para cá a entrada mudou bit certo aí o que que tá acontecendo aqui em princípio do ponto de vista lógico essa coisa vai sair desse estado aqui e vi para cá Só que a gente tá operando numa condição de análise que é só muda um bit de cada vez então presta atenção vou imaginar que aqui é o 1 z0 e aqui é 0 1 se daqui para cá muda mais de um bit quer dizer que eu tenho mais de um caminho que que eu quer qu dizer com isso eu tenho que sair do 0 zer e chegar no 1 então eu posso vi pelo 0 para chegar no 1 1 e eu posso vir pelo 0 para chegar no 1 você tá vendo Então vamos olhar primeiro esse caminho aqui Quem que é o estado 0 é daqui para cá vocês concordam aí quando eu fiz esse estado aqui ele mudou pro S C linha cinco linha aqui aí ele vai parar aqui era aqui que eu queria que a máquina parasse não então quer dizer que olha aqui em cima nesse diagram não é isso aí que tá acontecendo aqui tá vindo pro estado 0 depois tá vindo pro estado 0 e parou no 0 agora vamos seguir essa seta aqui vim daqui para cá ele tá fal que eu vou pro estado 01 que é esse aqui certo e ele o estado 01 fala que o próximo é o S5 lin que é ele mesmo então daqui eu vim pro 01 e fiquei parado você tá vendo onde que eu queria chegar no um onde que eu cheguei nos dois casos onde que eu cheguei cheguei no 01 tá errado não tá por isso que você não quer fazer esse essa condição de risco dinâmico não é só uma questão de evitar o glitch lá na saída é uma questão de evitar que a máquina erre a conta que ela tem que fazer tudo bem nesse caso aqui nesse caso particular nessa condição a máquina sempre vai pro mesmo lugar e é ao mesmo lugar Então ela estabiliza e ela erra conta mas ela estabiliza pode ser que tenha um caminho que gera me leva pro Sei lá o S4 linha e outro caminho pro s0 linha Então eu tenho dois lugares errados e eu não sei qual que vai ser é uma condição ainda pior Tudo bem tu entendeu o problema Beleza então não não não deixa esse problema acontecer no seu circuito então bota a codificação que não tem esse problema ah 0 como é que a gente escolheu aqui 1 0 1 1 todo mundo bem até aí quem precisar a pode ir eu vou continuar aqui para eu terminar a completude e ficar na gravação completo Mas quem puder continuar continua aí Hã é foi até tá para ter um exemplo aí vocês estudarem de boa um exemplo completo né que senão vocês vão ficar se ferrando aqui fiz uma codificação agora a gente vai substituir dentro da tabela os nomes dos Estados pela codificação que a gente escolheu e a gente já fez uma codificação que não gera problemas dinâmicos pra gente então vamos lá isso aqui tudo é zer zer esse aqui também é 00 zer e esse aqui né ah vamos lá S3 tem aqui tem aqui e só então S3 é 0 01 o S4 tem aqui tem aqui e só né e o resto é s cinco linha esse aqui tá certo tá certo s0 tá certo esse aqui tá certo tá certo tá tudo certo então tá bom É tá certo é esse é porque eu tô olhando aqui esse caso tem muita simetria e ele tem que ter ess F flops normalmente ter muita simetria tá você vê é tipo que eu tô chamando de simetria tá vendo que apareceu um lzinho aqui aparece o lzinho aqui também o que aparecer aqui é tipo meio com bloquinho assim esse cara aqui ó no mesmo meio que no espelhado do outro tá vendo o Don Ket Ó tem muita simetria aqui mas não é sempre que tem esse monte de simetria tá Depende muito do C que tá fazendo todo mundo ok que que eu preciso fazer agora escrever as equações de próximo estado e as equações de saída Beleza então vamos lá vamos lá quantas variáveis de estado eu tenho variáveis duas variáveis de estado a do lado esquerdo ou do lado direito quantas saídas eu tenho duas ô não só tem uma saída né uma saída um bit de saída Então vamos lá pro parts vamos lá pro P eu vou escrever com uma com os mapa de carn porque eu tô mais acostumado a fazer com os mapas de carn mas você podia fazer uma tabela verdade podia fazer do jeito que você quiser porque agora virou lógic combinacional tá o que precisa acontecer aqui então vamos lá ó eu eu primeira variável de estada do lado esquerdo eu tenho eu quero fazer uma função que tem o estado atual e as entradas então tem duas variáveis de estado e duas entradas ão quatro entradas certo eu quero fazer a função que descreve o bit da esquerda aqui ó tá em todos em todas o bit da esquerda vai ser uma equação ele depende do qu o bit da esquerda Depende do estado atual que são duas variáveis dois bits e das entradas que são dois bits Então são quatro variáveis uma função de quatro variáveis todo mundo tá vendo aqui eu vou escrever d e c para seguir a mesma ordem que tá lá no lá em cima na tabela facilita e aqui eu vou escrever Q1 q0 que é o estado atual e aqui vai ser a equação do Q1 Beleza então vamos lá 0 0 1 1 1 1 0 0 0 quê posso Não entendi é do que1 estrela isso que1 estrela vamos lá eu eu vou fazer tudo uma vez só tá vai ter uma dessa aí igual pro bit da direita certo que é o q0 estrela e eu preciso de uma equação de saída que só depende do Estado então se eu fizesse mapa é um mapin de dois assim ó duas variáveis beleza Podemos até fazer aqui Q1 q0 ou não é Q1 e q0 pode ser Q1 é o bit da esquerda q0 é o bit da direita tá vamos preencher o da saída primeiro porque eu acho que é mais rápido quando for zero e zero é para ser zero quando for 1 1 0 que é essa linha aqui é para ser um todo mundo se localizou quando o Q1 é o bit da esquerda for 1 e o q0 que é o bit da direita for zero eu tô nesse estado certo a saída tem que ser um então próximo quando for z0 e 1 é Aqui é zero quando for um em um é esse caso aqui dá um aqui vou chamar de q né saída é qxe Ficou um monte de q como é que é isso aqui isso aqui é o Q1 Pronto agora do lado de cá presta bem atenção aqui porque esse aqui normalmente é onde vocês confundem esse bit aqui ele tá na posição zer zer nas entradas zer zer no estado é aqui certo só ir colando né Hã só ir colando só ir colocando aí cuidado porque a tabela não tá na mesma ordem do do do do do mapa de carnor ele tá na mesma ordem das colunas mas não tá na mesma ordem das Linhas presta atenção na H que tiver fazendo isso aí é bem comum de vocês errarem tá então vamos lá ó zero e zero então Aqui é zero Aqui é zero você estão vendo Então vamos lá eu não vou nem escrever o z zer 0 então aparece aqui ó próxima linha do 01 que é aqui né então vai ser 0 Don que Dom que 1 0 a próxima linha ali é dessa linha aqui do mapa de carn então tem lá ó 0 00 Don qu 1 1 próxima linha é essa linha do mapa de carn é 1 0 1 1 1 1 1 1 certo agora você lê esse troço aí ah você pode pegar assim que é DC barra você pode pegar presta atenção comigo hein esse aqui que é C q0 precisa pegar aquele Don qu que sobrou não presta atenção agora no fenômeno aqui porque precisa fazer mais uma coisa Essa é a equação mínima só que vocês estão vendo que tem um bloquinho aqui separado do outro aqui toda vez que acontecer isso aqui nesse na hora de de otimizar isso tá aqui pode produzir um Ness uma transição aqui ó daqui para cá pode produzir um glit daqui pode produzir um glit Então você precisa tratar esse caso também a gente vai de propósito incluir aqui deixa eu marcar de outra cor tá muito ruim de ver aqui ó você precisa tratar esses casos aí de riscos estáticos esse azul aí é d q0 o azul tá a mais do que a equação mínima por que eu tô botando ela porque ela é para corrigir riscos estáticos o m deve ter mencionado o que que é isso todo mundo ok aí beleza do lado de do lado esquerdo posso fazer esse cara aqui esse cara aqui é Q1 q0 posso fazer esse cara aqui que é ã C barrado Q1 posso fazer esse cara aqui que é C q0 Ok tem problema de risco estático aqui nessa nessa solução não que sem querer eu já cobri né Eu pensei eu podia ter feito esse mais esse aqui só e não precisava daquele que eu comecei né É se eu tivesse feito isso aqui aí eu Obrigatoriamente teria que colocar Opa aqui ficou horrível essa Obrigatoriamente eu colocaria esse aqui que foi o primeiro que eu fiz sem querer para poder resolver a questão dos riscos estáticos nesse circuito então tem essas duas equações tem três equações tem as equações você escreve agora você faz o circuito presta atenção agora eu tenho entrada D ten entrada C entrada D ten entrada C Eu tenho um sinal aí que é o Q1 e o q0 que é o estado atual que não é entrada que vem de fora é o próprio circuito que produz eu vou botar aqui e aí a gente produz ela dentro do circuito tá então eu tenho ó lá primeira equação ali a do Q1 estrela Q1 q0 Q1 q0 Q1 q0 C bar Q1 C bar Q1 C q0 faz o produto soma esse sinal aqui é o Q1 isso quer dizer que na real tem um fio ligando dali para lá tudo bem Por enquanto não vou desenhar aqui para não bagunçar o meu negócio próximo ali ó equação do lado direito ô caramba para sai daqui DC Barra d c barra C q0 opa não c q0 próximo d q0 d q0 multipliquei somei esse aqui é o q0 é o bit estado do lado direito lá da tabela quem que é a saída a saída é o Q1 Tá daqui ó então isso aqui é a saída do circuito é o q beleza e aí Perceba o q0 é esse sinal aqui ó tá vendo a realimentação aí agora né Eu posso fazer a mesma coisa calma hã pode fazer como você quiser mas faz organizado B beleza e aí presta atenção ó Q1 e q0 eles não vêm de fora eles são sinais internos lá ó que são produzidos dentro no próprio circuito que é onde a memória é implementada tá vendo tem aa história da realimentação aí ó Cadê a realimentação professor Uai eu tô pegando Q1 q0 e usando para calcular o Q1 q0 você estão vendo que o Q1 q0 entra aqui o Q1 q0 entra aqui ó eu uso eles para calcular eles mesmos tá é esquema da realimentação aí acontecendo quem é d e c eles vem de fora do circuito SOS doas entradas do circuito é o dado e o clock no caso foi flob D e a saída saída esse qer aqui tudo bem ponto acabou aí uma pergunta para vocês que tem que parar e pensar para responder tá o flip flop D é d tá aqui as duas entradas tem uma saída e normalmente a gente tá fazendo um que barrado também né aí uma pergunta para vocês pensarem em fazer em casa tá pensa e faz em casa professor se eu pegar esse aqui é o q barrado Pensa aí faz em casa eu não tô nem dizendo que se nem que não a real é que eu não sei tá a real que eu não sei não olhando assim mas você tem duas soluções para resolver isso a primeira que a mais óbvia é volta lá no começo e aí aqui você vai ter q e um outro sinal que é o que barrar faz toda a tabela faz Tod cois de novo vai dobrar o tamanho da tabela né como a gente viu tá vai ter bem mais casos aqui agora vai lá faz inclusive um excelente treino para você fazer isso outra coisa que você pode fazer é mas o q o q barrado tem que ser sempre ao contrário do q você concordam comigo que o eu posso pegar ele daqui o que barrado esse pedacinho do lado de cá é onde o negócio é zero vocês concordam tudo bem Hã Como assim o q0 preencheu os Don cares que Don falando desse aqui não se você não precisou deixa ele lembra que Don não existe o que existe é aqui eu escoli ele sendo zero aqui eu escolhi ele sendo um todo mundo ok com isso bem sistemático aqui ó lista todas as entradas lista todas as combinações de saída aí você já vai ter o tamanho da tabela gera todos os estados possíveis aqui seguindo essa regra cada linha só pode ter um estado estável para cada saída cada combinação de saída aí se pré preenche a tabela um montão de coisa já vai est pré-preenchida aí tudo que não estiver pré preenchido você vai lá e vai preenchendo a partir da lógica que você quer implementar terminou Isso aqui faz a tabela reduzida junta o que der para juntar entre os Estados fez essa juntada faz esse entre aço diagrama de estado simplificado para ver os as vizinhanças E aí codificar os estados E aí se precisar fazer estados de passagem faz lá o Estados de passagem para arrumar a codificação na codificação a regra é só pode mudar um bit de cada vez nos estados que são vizinhos uns do outros uns dos outros fez isso transporta isso paraa tabela eventualmente você pode acabar criando estados tá esse tá estados passagem eventualmente cria ele tá transporto paraa tabela E aí da tabela escreve as equações das equações faz o circuito alguma alguma dificuldade nisso bem sistemático vocês viram Tá qual que é a parte mais difícil preencher essa as coisas os estados Unos que a gente preencheu de vermelho porque a única hora que você precisa pensar porque aqui você precisa pensar tipo a máquina que eu tô fazendo nesse caso o que que ela tem que fazer naquele caso que ela tem que fazer caso naquele tem que fazer o resto é só ir fazendo bem não precisa pensar é bem mecânico o restante todo mundo bem bom descanso para vocês quarta-feira o min tá aí pessoal abraço