Projete um registrador de quatro bits com duas entradas de controle s1 e s0, quatro entradas de dados X3, X2, X1 e X0, e quatro saídas de dados Q3, Q2, Q1 e Q0. Quando \mathrm{s} 1 \mathrm{~s} 0=00, o registrador mantém o seu valor. Quando \mathrm{s} 1 \mathrm{~s} 0=01, o registrador carrega o valor correspondente ao seu conteúdo multiplicado por 4. Quando \mathrm{s} 1 \mathrm{~s} 0=10, o registrador é carregado com o resultado da subtração X3X2X1X0-Q3Q2Q1Q0 se X3X2X1X0 > Q3Q2Q1Q0 ou Q3Q2Q1Q0 - X3X2X1X0 se X3X2X1X0 \leq Q3Q2Q1Q0. Quando \mathrm{s} 1 \mathrm{~s} 0=11, o registrador faz uma carga paralela. Neste projeto você deverá projetar também os blocos que forem necessários, tais como, por exemplo, comparadores e subtratores. Considere que os números representados por X3X2X1X0 e Q3Q2Q1Q0 são positivos. Não é necessário mostrar o circuito interno de multiplexadores e Flip-Flops. (6 pontos)
Passo 1
O problema pede um registrador de 4 bits com entradas de controle \mathrm{s}_1,\mathrm{s}_0, entradas de dados X_3X_2X_1X_0 e saídas Q_3Q_2Q_1Q_0. O comportamento é:
\mathrm{s}_1\mathrm{s}_0=00: mantém o valor (hold).
\mathrm{s}_1\mathrm{s}_0=01: carrega o conteúdo atual multiplicado por 4.
\mathrm{s}_1\mathrm{s}_0=10: carrega a diferença absoluta entre X e Q.
\mathrm{s}_1\mathrm{s}_0=11: carga paralela de X.
Para resolver, vamos usar os blocos: registrador de 4 flip-flops, multiplexador 4-para-1 de 4 bits, bloco de shift-left (multiplicador \times 4), comparador de magnitude e subtrator absoluto.
Passo 2
Descrevemos as quatro possíveis entradas ao registrador, todas selecionadas por um multiplexador 4-para-1 de 4 bits cujo controle é \mathrm{s}_1\mathrm{s}_0: 1. Se \mathrm{s}_1\mathrm{s}_0=00, a entrada do registro deve ser o feedback dos próprios bits Q_3Q_2Q_1Q_0. 2. Se \mathrm{s}_1\mathrm{s}_0=01, a entrada deve ser o shift-left de Q em 2 posições, ou seja, Q\times4. 3. Se \mathrm{s}_1\mathrm{s}_0=10, a entrada deve ser o valor absoluto de X - Q, implementado por um comparador que decide quem é maior e um subtrator. 4. Se \mathrm{s}_1\mathrm{s}_0=11, a entrada deve ser diretamente X_3X_2X_1X_0 (carga paralela).
Passo 3
Projeto do bloco multiplicador por 4 (shift-left):
\text{ShiftLeft2}(Q_3Q_2Q_1Q_0) = Q_1Q_0\,0\,0
Esse bloco recebe os 4 bits de Q e desloca tudo duas posições para a esquerda, preenchendo os 2 LSB com zero.
Passo 4
Projeto do bloco de diferença absoluta:
1\). O **comparador de magnitude** recebe \(X_3X_2X_1X_0\) e \(Q_3Q_2Q_1Q_0\), produz um sinal de controle \(M\) tal que
\[M = \begin{cases} 1, & \text{se }X > Q,\\\\ 0, & \text{caso contrário.} \end{cases}
2\]. O **subtrator de \(4 bits** recebe as mesmas entradas, mas troca a ordem conforme M:
Se M=1, calcula X-Q.
Se M=0, calcula Q-X.
O resultado é a diferença absoluta\bigl\lvert X - Q\bigr\rvert.
Passo 5
Diagrama geral de blocos: 1. Registrador de 4 bits (4 flip-flops) produz Q_3Q_2Q_1Q_0. 2. Saídas Q vão para:
o bloco ShiftLeft2 (multiplicador \times 4),
o feedback direto ao multiplexador,
o subtrator (e comparador). 3. Entradas X_3X_2X_1X_0 vão para:
o subtrator (e comparador),
a entrada paralela do multiplexador. 4. O comparador controla o subtrator para gerar \lvert X - Q\rvert. 5. Um multiplexador 4-para-1 de 4 bits tem entradas:
D_0 = Q (hold),
D_1 = \text{ShiftLeft2}(Q),
D_2 = \lvert X - Q\rvert,
D_3 = X.
O select é \mathrm{s}_1\mathrm{s}_0. 6. A saída do multiplexador vai para as entradas D dos flip-flops do registrador.
Resposta
Blocos necessários e conexões:
Registrador de 4 flip-flops produz Q.
Bloco ShiftLeft2 recebe Q e produz Q\times4.
Comparador de magnitude em X,Q produz M.
Subtrator absoluto seleciona X-Q ou Q-X conforme M, entregando \lvert X-Q\rvert.