Em braços robóticos e sistemas CNC (Comando Numérico Computadorizado), a posição angular de um eixo é rastreada por um encoder incremental. O encoder gera pulsos digitais: ao girar no sentido horário, o controlador incrementa o contador; ao girar no sentido anti-horário, o contador é decrementado. O valor acumulado representa a posição absoluta do eixo em relação a um ponto de referência (home). Um contador Up/Down síncrono de 3 bits é utilizado nesse sistema.
(a) Explique o princípio de funcionamento do contador Up/Down:
(i) O que diferencia a contagem crescente da decrescente no nível dos flip-flops JK? Mencione o papel das saídas
e
.
(ii) Qual sinal de controle seleciona o modo de operação? Como ele atua no circuito para alternar entre os dois modos?
(iii) Por que é necessário usar portas lógicas adicionais (além dos FFs ) nesse tipo de contador?
(b) Complete a tabela de estados do contador Up/Down de 3 bits conforme a sequência de operações descrita. O eixo robótico parte do ponto de referência (home
):
Evento
Modo
Posição (decimal)
Inicial (home)
-
0
0
0
0
Pulso 1
Up
Pulso 2
Up
Pulso 3
Up
Pulso 4
Up
Pulso 5
Down
Pulso 6
Down
Pulso 7
Up
Pulso 8
Up
O eixo mudou de direção nos pulsos 5-6 e voltou a avançar nos pulsos 7-8. Qual é a posição final do eixo?
(a) Explique o princípio de funcionamento do contador Up/Down:
(i) O que diferencia a contagem crescente da decrescente no nível dos flip-flops JK? Mencione o papel das saídas
(ii) Qual sinal de controle seleciona o modo de operação? Como ele atua no circuito para alternar entre os dois modos?
(iii) Por que é necessário usar portas lógicas adicionais (além dos FFs ) nesse tipo de contador?
(b) Complete a tabela de estados do contador Up/Down de 3 bits conforme a sequência de operações descrita. O eixo robótico parte do ponto de referência (home
| Evento | Modo |
|
|
|
Posição (decimal) |
| Inicial (home) | - | 0 | 0 | 0 | 0 |
| Pulso 1 | Up | ||||
| Pulso 2 | Up | ||||
| Pulso 3 | Up | ||||
| Pulso 4 | Up | ||||
| Pulso 5 | Down | ||||
| Pulso 6 | Down | ||||
| Pulso 7 | Up | ||||
| Pulso 8 | Up |
Passo 1
O enunciado pede duas coisas principais e dá as seguintes informações:
- Pedido (a): explicar o princípio de funcionamento de um contador Up/Down síncrono de 3 bits, dividindo a explicação em três pontos:
(i) o que diferencia a contagem crescente da decrescente no nível dos flip-flops JK, mencionando o papel das saídase ;
(ii) qual sinal de controle seleciona o modo de operação e como ele atua no circuito para alternar entre os modos Up e Down;
(iii) por que é necessário usar portas lógicas adicionais além dos flip-flops. - Pedido (b): completar a tabela de estados do contador síncrono de 3 bits, partindo de
(home), seguindo a sequência de pulsos: Pulso 1 a 4 em modo Up, Pulso 5 e 6 em modo Down (mudança de direção), Pulso 7 e 8 voltam a Up. Deve-se listar e a posição em decimal após cada pulso, e informar a posição final.
Informações dadas/assumidas:
- O contador é síncrono (todos os flip-flops recebem o mesmo clock).
- São usados flip-flops do tipo JK.
- Bit mais significativo é
, bit menos significativo é . - Inicial:
(posição decimal ). - Modos: Up (incrementa a cada pulso) e Down (decrementa a cada pulso).
Passo 2
Entendendo o comportamento do flip-flop JK (o “motorzinho” do contador).
- O flip-flop JK tem duas entradas de controle chamadas
e , e duas saídas: e (complemento de ). O papel de é guardar o estado atual do bit; é a negação desse estado e é útil para formar lógica que detecta zeros ou uns. - Tabela de funcionamento do JK (excutada na borda de clock, comportamento síncrono):
-
mantém o estado (não muda): . -
seta: . -
reseta: . -
toggle: (inverte o bit).
-
- Como usamos isso no contador:
- Para um bit que deve “mudar de valor a cada pulso” (por exemplo o LSB em um contador binário), colocamos
— assim ele sempre toggla a cada clock. - Para bits mais significativos, escolhemos
e de modo que fiquem em (toggle) somente quando as condições das bits menos significativos exigem uma “propagação” (por exemplo, em contagem crescente o próximo bit muda só quando todos os bits menos significativos estão em 1).
- Para um bit que deve “mudar de valor a cada pulso” (por exemplo o LSB em um contador binário), colocamos
Explicação do papel de
e
:
-
expressa o valor atual do bit (0 ou 1). -
facilita detecção de condição “todas zeros” sem inverter explicitamente com portas extras, porque muitas portas lógicas usam diretamente e para formar termos como “todas iguais a 1” ( ) ou “todas iguais a 0” ( ). - Em resumo: as saídas
e são usadas pelos blocos combinacionais que decidem os sinais e para cada flip-flop.
Passo 3
Qual sinal seleciona o modo Up/Down e como ele atua (descrição prática do circuito síncrono).
- Introduzimos um sinal de controle
(por exemplo): para modo Up e para modo Down. - Ideia de projeto para um contador síncrono de 3 bits (bits
= LSB, = meio, = MSB): - Sempre que chegar um pulso de clock,
deve togglar independentemente do modo (porque LSB muda em todo incremento ou decremento). Assim: - O bit
deve togglar quando, na contagem Up, (pois ao passar de para o muda), e, na contagem Down, quando (pois ao passar de para o muda). Isso pode ser descrito por uma expressão que escolhe entre e conforme : - Se
(Up) a expressão vira — então toggla quando . - Se
(Down) a expressão vira — então toggla quando .
- Se
- O bit
deve togglar quando, na contagem Up, e (ou seja, quando os dois menos significativos são 1), e, na contagem Down, quando e . Assim: - Se
(Up) a expressão é — toggla quando . - Se
(Down) a expressão é — toggla quando .
- Se
- Sempre que chegar um pulso de clock,
- Em palavras: o sinal
atua como um seletor (multiplexador) na lógica que decide se a condição de toggle do próximo bit deve ser a condição “todos os menos significativos = 1” (caso Up) ou “todos os menos significativos = 0” (caso Down). Essa seleção é feita combinando termos AND e OR com e .
Observação didática rápida sobre por que as expressões usam
(toggle): colocar
no momento do clock inverte o bit; então em cada flip-flop colocamos
e
iguais a uma expressão booleana que é 1 exatamente quando o bit deve inverter naquele clock.
Passo 4
Por que são necessárias portas lógicas adicionais (além dos flip-flops)?
- Os flip-flops JK apenas guardam um bit e permitem set/reset/toggle condicionado por suas entradas
e . Eles não calculam por si só “quando” um bit mais significativo deve mudar — isso é decisão combinacional sobre os estados atuais dos bits menos significativos e sobre o sinal . - Para detectar condições como “todos os bits menos significativos são 1” ou “todos são 0” e para multiplexar entre essas condições conforme
, são necessárias portas lógicas (AND para detectar conjuntos de 1s, AND sobre para detectar zeros, OR para combinar termos, e possivelmente inversores). Portanto usa-se um bloco combinacional (portas AND/OR/NOT) que gera os sinais e para cada flip-flop a partir de , e . - Além disso, em implementações práticas, o uso de portas reduz problemas de tempo (no contador síncrono todas as decisões são feitas antes da borda e aplicadas simultaneamente), evitando os glitches e atrasos dos contadores assíncronos.
Passo 5
Resumo prático das fórmulas usadas no projeto (para referência rápida):
Essas expressões mostram explicitamente o uso de
e
e onde entram portas AND/OR/NOT.
Passo 6
Agora vamos completar a tabela de estados passo a passo. Lembrando: inicial
(posição
). Contagem binária natural para Up e Down com 3 bits (módulo
).
Tabela inicial fornecida:
Preenchendo cada pulso:
- Pulso 1, modo Up: incrementa de
para . Portanto . Posição decimal . - Pulso 2, modo Up: incrementa
. Portanto . Posição decimal . - Pulso 3, modo Up: incrementa
. Portanto . Posição decimal . - Pulso 4, modo Up: incrementa
. Portanto . Posição decimal . - Pulso 5, modo Down: agora decrementar
. Portanto . Posição decimal . - Pulso 6, modo Down: decrementar
. Portanto . Posição decimal . - Pulso 7, modo Up: voltar a Up e incrementar
. Portanto . Posição decimal . - Pulso 8, modo Up: incrementar
. Portanto . Posição decimal .
Agora apresento a tabela completa com as linhas pedidas.
Passo 7
Tabela completa finalizada (cada linha é o estado após o pulso correspondente):