Sequenciadores A utilização de elementos de memória como as ROM’s permitem realizar a implementção de circuitos combinatórios: Endereços = IN’S ROM Dados = OUT’S Se num circuito sequêncial as saídas são a descodificação directa dos estados (admitindo sempre máquina de Moore), então, a utilização de um contador binário e uma ROM permite realizar um circuito sequêncial muito simples a que damos o nome de sequenciador. Neste circuito, as saídas são programadas na ROM com os valores pretendidos nos endereços correspondentes aos estados da máquina, ou seja, os valores da contagem do contador. Contador ROM Saídas Clk Os sequenciadores têm várias limitações: • Os estados evoluem segundo a contagem • Não permite realizar decisões a partir de variáveis de entrada Um exemplo típico para os sequenciadores é o efeito “Kit” - bit passeante. A ROM sería ligada a um contador de 4 bits (16 estados) com os seguintes dados a partir da posição/endereço 0H: 01H, 02H, 04H, 08H, 10H, 20H, 40H, 80H, 80H, 40H, 20H, 10H, 08H, 04H, 02H, 01H. Controladores Com contador As limitações dos sequenciadores não lhes permitem implementar máquinas de estado com decisões. Para resolver essa limitação introduziu-se as seguintes alterações ao circuito dos seguenciadores: • Usa-se as entradas de “Paralell Load” e “Load” do contador que se ligam aos bits de dados das saídas da ROM. Neste caso ficamos com um menor número de bits para as saídas da máquina, mas permitimo-nos a realizar saltos. • Utiliza-se um multiplexor com as entradas ligadas às variáveis de teste e as entradas de selecção ligadas a mais bits da ROM. Contador ROM Saídas Clk Estados seguintes “Load” Mux Selecção Entradas “1” Funcionamento: • As saídas funcionam como no sequenciador • A entrada “Load” é carregado com o valor “1” (inactivo) através da linha de selecção que vem da ROM, se no estado presente não existir teste - o estado seguinte vai ser a sequencia da contagem. Se no estado presente existir um teste a uma variável, então a linha de selecção é activada de modo a que o MUX carrega a entrada de “Load” com o valor da variável. No cado de “Load” ficar activo, então o estado seguinte será o especificado nas linhas da ROM respectivas. Com Latch Os Controladores com contadores possuem a seguinte limitação: • A codificação de estados fica limitada pela sequência de contagem do contador, i. é., no caso sem teste, o estado seguinte só pode ser “estado presente + 1” (caso seja um contador “UP”). • As entradas das variáveis de teste no MUX poderão em certos casos de ser nas suas duas formas: verdadeira e falsa (directa e negada). Estas limitações obrigam a manipulações no fluxograma que podem não ter solução simples: é necessário incluir estados redundantes, trocar codificações previamente realizadas, etc. Latch ROM Saídas Clk Mux 2:1 ES ES0 e ES1 Estados seguintes Selecção Mux N bits 1 Entradas Sincronizadas Os controladores com Latch vêm resolver estes problemas à custa da inclusão de mais um MUX e utilização de mais bits de saída da ROM. O formato dos dados na ROM será o seguinte: Saídas da máquina Estado Seguinte a “0” Estado Seguinte a “1” Teste (N bits) Funcionamento: • No caso de não existir teste, ES0 = ES1, pois seja qual for a saída do MUX das entradas, será sempre carregado ES0 ou ES1 que são iguais. • No caso de existir teste, o campo “Teste” da ROM selecciona a variável a testar. Consoante esta tenha o valor “1” ou “0” assim será seleccionado ES1 ou ES0. Algumas características destes circuitos • As entradas terão de ser sincronizadas como em qualquer outro circuito sequencial. • Só pode ser realizado o teste a apenas uma variável em cada estado, pelo que o fluxograma terá de ser modificado para levar esse pormenor em conta. Essa variável, no entanto, poderá ser uma função combinatória de um conjunto de outras variáveis. • Para um circuito típico implementado com integrados do mercado correntes: • até 16 estados • até 8 entradas para teste • até 5 saídas de controle • Integrados: 2xROM 8 bits, 2 latch (um deles para sincronização das entradas), um MUX 8:1 para as entradas (74xx157) e um MUX 4x2:1 (74xx151) para a selecção do estado seguinte = 6 integrados. • Existem dispositivos programáveis com arquitecturas semelhantes (incluindo EPROM) que permitem implementar circuitos sequenciais apenas num integrado. • É possível usar uma simpes PAL (Dispositivo Lógico Programável) para implementar um circuito com esta arquitectura com algumas limitações. • É possível escrever um programa de computador que faça a programação automática em PAL.