Questão 02 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:
- (a) Explicar o princípio de funcionamento de um contador Up/Down síncrono de 3 bits, respondendo:
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.
iii) Por que são necessárias portas lógicas adicionais além dos flip-flops. - (b) Preencher a tabela de estados para um contador de 3 bits que parte de
(home) e recebe a sequência de pulsos indicada (pulsos 1 a 8) com mudanças de direção nos pulsos 5–6 e depois volta a subir nos pulsos 7–8. Pergunta final: qual é a posição final do eixo?
Informações dadas:
- Contador síncrono Up/Down de 3 bits (bits chamados
(MSB), , (LSB),). - Partida em
(decimal ). - Pulsos 1–4: modo Up.
- Pulsos 5–6: modo Down.
- Pulsos 7–8: modo Up.
- O encoder gera um pulso por passo; cada pulso provoca uma transição síncrona (todos os FFs são acionados pelo mesmo clock).
Passo 2
Breve aula sobre o flip-flop JK (o “motor” deste contador).
- Um flip-flop JK tem duas entradas
e , e saídas e . - A tabela de funcionamento (no pulso de clock, assumindo operação sem condições de corrida) é:
-
manter o estado (hold). -
forçar (set). -
forçar (reset). -
toggling: (inverte).
-
- Usar
é a forma mais simples de pedir que o bit “troque” no próximo clock; então um contador normalmente gera para cada FF um sinal que põe exatamente quando aquele bit precisa ser invertido no pulso. - Papel de
e : essas duas saídas providenciam tanto o valor direto do bit quanto seu complemento. As portas lógicas externas usam e para detectar padrões (por exemplo, “todos os bits inferiores valem 1” ou “todos valem 0”), e assim decidir se cada flip-flop deve togglar. Ou seja, detecta 1s e detecta 0s.
Passo 3
Princípio do contador síncrono Up/Down (visão prática e fórmulas).
- Em contagem binária:
- O bit menos significativo
troca (toggle) a cada pulso de clock — ele sempre alterna entre 0 e 1. Portanto para ele definimos . - O bit
deve trocar quando todos os bits com peso menor do que ele satisfizerem uma certa condição: - No modo Up:
toggla quando (ou seja, quando o LSB passa de 1 para 0 com carry). - No modo Down:
toggla quando (borrowing, quando ao decrementar o LSB é 0).
- No modo Up:
- O bit
(MSB) toggla quando os dois bits inferiores estiverem em condição que cause carry/borrow: - No modo Up: quando
e . - No modo Down: quando
e .
- No modo Up: quando
- O bit menos significativo
- Introduzindo um sinal de direção
: defina para Up e para Down. Então as condições de toggle (que colocam ) podem ser escritas: - Para
: - Para
: (Se usa-se ; se usa-se .) - Para
: (No modo Up detecta-se , no modo Down detecta-se .)
- Para
- Explicação da forma: onde aparece
entende-se (AND). Onde aparece é AND dos complementos (detecta ambos iguais a zero). A soma é OR lógico (multiplexagem controlada por ).
Passo 4
Como o sinal de controle
atua no circuito (intuitivo):
-
funciona como um seletor (multiplexador) nas portas que geram os sinais e . Ele escolhe entre usar sinais que detectam “todos os bits inferiores são 1” (caso Up) ou “todos são 0” (caso Down). - Fisicamente
entra em ANDs/ORs que combinam e para formar as condições de toggle do modo desejado. Por exemplo, para o circuito pode ser: - Um AND que gera
. - Um AND que gera
. - Um multiplexador controlado por
que seleciona quando ou quando ; a saída desse mux vai para e .
- Um AND que gera
- Como todos os FFs recebem o mesmo clock (síncrono), as decisões são calculadas antes do clock e aplicadas simultaneamente quando o pulso de clock chega.
Passo 5
Por que são necessárias portas lógicas adicionais (além dos FFs)?
- Os flip-flops fornecem apenas seus sinais
e . Para decidir se um FF deve togglar é preciso detectar padrões complexos (ex.: ou ), o que exige ANDs, ORs e inversores. Assim: - São necessárias portas AND para detectar que vários bits inferiores estão todos em 1 (ou todos em 0 usando
). - É preciso uma porta OR para combinar as condições do modo Up e do modo Down (multiplexagem baseada em
). - Sem essas portas não há como derivar os sinais
e corretos a partir das saídas dos flip-flops.
- São necessárias portas AND para detectar que vários bits inferiores estão todos em 1 (ou todos em 0 usando
- Além disso, essas portas permitem evitar problemas de ripple (no contador síncrono não há ripple porque a lógica é avaliada antes do clock), e ajudam a respeitar tempos de setup/hold: calcula-se a condição e em seguida o clock atualiza todos os FFs ao mesmo tempo.
Passo 6
Método de preenchimento da tabela: cada pulso atualiza os bits de acordo com o modo naquele pulso. Vou computar estado por estado (mostrando por que cada bit muda).
Estado inicial (home): (decimal
) — já dado na tabela.
Estado inicial (home):
Passo 7
Pulso 1 — modo Up (
).
- Incrementa
. - Raciocínio: LSB
sempre toggle. não toggle porque em Up ele toggla só se (antes do pulso ). também não. - Resultado:
. Posição decimal .
Passo 8
Pulso 2 — modo Up.
- Incrementa
. - Raciocínio:
toggle . Como era 1, deve toggle . não (porque agora antes do pulso era ). - Resultado:
. Posição decimal .
Passo 9
Pulso 3 — modo Up.
- Incrementa
. - Raciocínio:
toggle . não toggle porque em Up toggla só quando era 1 antes do clock (aqui era 0). não. - Resultado:
. Posição decimal .
Passo 10
Pulso 4 — modo Up.
- Incrementa
. - Raciocínio:
toggle . Como era 1, toggle . E como antes do pulso era , também toggle . Resultado do carry: . - Resultado:
. Posição decimal .
Passo 11
Pulso 5 — modo Down (
).
- Agora começamos a decrementar: decrementa
. - Raciocínio: No modo Down, o LSB
também sempre toggle (pois J_A=K_A=1). Quando decrementando um número em binário, se LSB antes do pulso era 0, o próximo será 1 e ocorre borrow que faz toggle nos bits superiores quando necessário. Mais diretamente: . - Antes do pulso:
, então em Down isso causa toggle em (porque em Down toggla se , ou seja ). - E como ambos os bits inferiores antes do pulso eram
e , isso fará com que toggla também (em Down detectamos ).
- Antes do pulso:
- Resultado:
. Posição decimal .
Passo 12
Pulso 6 — modo Down.
- Decrementa
. - Raciocínio:
toggle . Em Down, toggla quando antes do pulso — aqui antes (pois o estado atual é o que acabou de ser obtido no passo anterior), então não toggla agora. não toggla. - Resultado:
. Posição decimal .
Passo 13
Pulso 7 — modo Up (voltou a avançar).
- Incrementa
. - Raciocínio: Em Up,
toggle . Como era 0, não toggle agora. não. - Resultado:
. Posição decimal .
Passo 14
Pulso 8 — modo Up.
- Incrementa
. - Raciocínio: Igual ao passo 10:
toggle ; toggle ; e toggle porque antes do pulso era . - Resultado final:
. Posição decimal .
Resposta
(a)(i) A diferença entre contagem crescente e decrescente está nas condições que fazem cada flip-flop JK togglar: no modo Up as portas testam padrões de
(por exemplo
,
) enquanto no modo Down usam os complementos
(por exemplo
,
); as saídas
e
fornecem, respectivamente, o valor do bit e seu complemento para essas detecções.
(a)(ii) O sinal de controle é (por exemplo
para Up e
para Down); ele atua como seletor nas portas lógicas que geram
e
, escolhendo entre as condições “bits inferiores = 1” (modo Up) ou “bits inferiores = 0” (modo Down).
(a)(iii) São necessárias portas lógicas adicionais (AND, OR, inversores / multiplexadores) para detectar padrões em vários bits inferiores e multiplexar entre as condições Up/Down, produzindo os sinais e
corretos para cada flip-flop.
(b) Estado final: , posição decimal
.
(a)(ii) O sinal de controle é
(a)(iii) São necessárias portas lógicas adicionais (AND, OR, inversores / multiplexadores) para detectar padrões em vários bits inferiores e multiplexar entre as condições Up/Down, produzindo os sinais
(b) Estado final: