Está en la página 1de 63

1)

ai ci Si Ci+1
0 0 0 0 an an-1 …..ai a2 a1
0 1 1 0
1 0 1 0
1 1 0 1

ai a2 a1
an

ci C2 C1=1
Cn

ci+1 C3 C2
Cn+1

Si S2 S1
Sn
2)

Sólo se dispone de resgistros de 4 bits, por ello:

FORMULA A UTILIZAR PARA CALCULO DEL REGISTRO:


[–2n-1 , 2n-1-1]; donde n= número de bits  TAMAÑO REGISTRO
El rango de valores con los uqe se puede trabajar internamente es [-8, 7 ], por lo tanto los valores máximo y mínimo de
A y B deberán estar comprendidos en ese rango.Como A y B deben ser positivos, el valor máximo deberá ser 7, es decir
el bit de mayor peso de la entrada será 0.
A3 A2 A1 A0 B3 B2 B1 B0

Complementador
I4 I3 I2 I1
Cout
7483 Cin

R4 R3 R2 R1 R0

Corrector

Signo Rc3 Rc2 Rc1 Rc0


Complementador

Complementar a 2 es invertir y sumar 1. La suma de 1 la introducimos por la entrada de acarreo del 7483.
Los bits de B se invierten:

B3 B2 B1 B0

I4 I3 I2 I1
7483 1

Corrector

Si Cout= R4= 1 entonces el resultado es negativo y hay que complementar para obtener la magnitud.

Los valores máximos y mínimos del resultado será:


Rmax= 7-0= 7
Rmin= 0-7 = -7

Los valores negativos tendrán el R3= 1 En ese caso hay que invertir el resultado y activar la salida signo. Si R3= 0 se deja
pasar la R tal cual.

R3 R2 R1 R0
R3 Ri Rci
Corrector
0 0 0
0 1 1
1 0 1 Signo Rc3 Rc2 Rc1 Rc0
1 1 0

R3 R2 R1 R0

Signo
RC3 RC2 RC1 RC0
3) En este caso A y B pueden se ser positivos o negativos:

El rango de valores a introducir es [-8, 7 ]. Como puede realizarse la operación A+B o A-B los valores a obtener en el
resultado serán :

-8-(+8) = -16
8+8= 16

Con un registro de 5 bits podemos obtener el resultado., excepto para el valor 16.
Entonces utilizando la salida Cout del sumador podemos corregir el resultado.

Valor máximo a
A3A2 A1 A0 B3 B2 B1 B0
introducir : 8

Signo A +o- +o- Signo B


I4 I3 I2 I1

Complementador Operación

M4 M3 M2 M1
Cout
7483 Cin

R4 R3 R2 R1 R0

Corrector

Signo Rc3 Rc2 Rc1 Rc0

Signo A = 1, entonces A será negativo y habrá que invertir y sumar 1.


Signo B = 1, entonces B será negativo y habrá que invertir y sumar 1.
Operación = 1 = será A-B, entonces habrá que invertir y sumar 1 a B.
+0-

Signo Bi Ini
0 0 0
0 1 1
1 0 1
1 1 0

Signo
B3 B2 B1 B0

In3 In2 In1 In0

7483

I3 I2 I1 I0

Complementador

Si operación = 1 entonces hay que invertir, sino nada. Por lo tanto es igual que el anterior

Operción
BI I2 I1 I0

M3 M2 M1 M0
Cout
7483

R5 R4 R3 R2 R1 R0
Corrector

Si Cout= R4= 1 entonces el resultado es negativo y hay que complementar para obtener la magnitud. Excepto si el
resultado fuese 16, es decir 10000.

R4 R3 R2 R1 R0

Es 16? Complementar?
16
Comp

Complementador

Signo Rc4Rc3 Rc2 Rc1 RC0

Si 16 = 1 no es 16 por lo tanto es un número negativo y hay que complementar.


Si 16= 0 es el 16 y no hay que complementar. Tampoco habrá que hacerlo si R4=0
Si comp = 1 hay que complementar y signo 1, sino no.

Es 16?

Complementar?

16 R5 Comp
0 0 0
0 1 1
1 0 0
1 1 0

Complementador

Igual que el ejercicio anterior


4)
an an-1 an-2 …………..ai ……………………a3 a2 a1
1 0 1
cI+1 CI
an an-1 an-2 …………..ai ……………………a3 a2 a1
0 0 0 0 0 0 0 0 0
an an-1 an-2 ………………. …..…ai-2 …… ………. a2 a1
Rn+3 Rn+2 Rn+1 Rn Rn-1 Rn-2 ………… Ri ……………… R4 R3 R2 R1
Rn+3 Rn+2 Rn+1 Rn Rn-1 Rn-2 ………… Ri ……………… R4 R3 a2 a1

ci

Ri
ai
ai-2 ci+1
5) a) Número máximo: 3 X 3 = 9  4 bits
A B C D F1 F2 F3 F4
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
A BC D
0 0 1 0 0 0 0 0
0 0 1 1 0 0 0 0
0 1 0 0 0 0 0 0
0 1 0 1 0 0 0 1
0 1 1 0 0 0 1 0
0 1 1 1 0 0 1 1
1 0 0 0 0 0 0 0
F1 F2 F3 F4 1 0 0 1 0 0 1 0
1 0 1 0 0 1 0 0
1 0 1 1 0 1 1 0
1 1 0 0 0 0 0 0
1 1 0 1 0 0 1 1
1 1 1 0 0 1 1 0
1 1 1 1 1 0 0 1

Otra forma:

a1 a0 b1 b0

R3 R2 R1 R0

a1 a0
b1 b0
a1 b0 b0 a0
a1 b1 a0 b1
R3 R2 R1 R0 AND

C2 c1

Sumador
Completo

b)
Habrá que obtener el módulo de 2bitsX6 bits
1) Ver cuántas salidas habría
2) Ir viendo de dónde se obtienen

 Produce C2
 Produce C3

 Produce C4

 Produce C5

 Nunca se va a producir acarreo


Un multiplicador de 4X4 comercial:
6) BCD_1 BCD_2

BCD_I MAXIMO= 9
Salida máximo = 9 + 9 = 18
S_BCD

1 8

Disponemos de sumadores binarios naturales (SBN) (7483) que al hacer 9 + 9 darán 18 en binario = 10010 pero lo que
necesitamos es convertir ese número binario en BCD, es decir, 0001 1000.

BCD_1 BCD_2

Cout
7483

B3 B2 B1 B0
CORRECTOR
BN A BCD

C S3 S2 S1 S0

Sólo hay que diseñar el corrector. Para ello estudiamos la función que debe cumplir, es decir, analizamos las salidas
obtenidas en SBN y las correspondientes deseadas:

BN Cout B3 B2 B1 B0 C S3 S2 S1 S0 BN
0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 0 0 0 0 1 1
… … … … … … … … … …
… … … … … … … … … … … …
9 0 1 0 0 1 0 1 0 0 1 9
10 0 1 0 1 1 1 0 0 0 0 10
11 1 0 0 0 1 11
… … … … … … … … … …
… … … … … … … … … … … …
18 1 0 0 1 0 1 1 0 0 0 18
19 X X X X X X X X X X X
… … … … … … … … … … …
… … … … … … … … … … … …
31 X X X X X X X X X X X

A partir del 18 nunca aparecerán.


Se observa que del 0-10 el corrector no debe hacer nada. Sin embargo, del 10 al 18 debe sumar 6.
Por lo tanto habrá q ue diseñar un circuito que detecte cuándo la salida del 7483 es menor que 10. En ese caso suma
cero y en caso que sea mayor que 10 suma seis.
Cout B3 B2 B1 B0

 10?

f>10
+6
O
+0

C S3 S2 S1 S0
1) Diseño del bloque >10?

Cout
B1B0 B1B0
B3B2 c 00 01 11 10 B3B2 c 00 01 11 10
1 Cout
00 0 1 3 2 00 10 1 1 X 3 2

01 01 X X X X 6
4 5 7 6 4 5 7

11 1 12
1 13 1 15 1 14 11 X 12 X 13 X 15 X 14

1 1 X X
10 8 9 11 10 10 8 X 9 X 11 10

B3B2
B3B1
2) Diseño de +6 o +0.

Si f>10= 1 entonces +6 === 0 1 1 0 0 f>10 f>10 0


Si f>10= 0 entonces +0 === 0 0 0 0

f>10
B3 B2 B1 B0

7483
7)

A3 A2 A1 A0 C3 C2 C1 C0
C0  A0
0 0 0 0 1 0 0 1
0 0 0 1 1 0 0 0 C1  A1
0 0 1 0 0 1 1 1
0 0 1 1 0 1 1 0
C2  A2  A1
0 1 0 0 0 1 0 1 C3  A3 A2 A1
0 1 0 1 0 1 0 0
0 1 1 0 0 0 1 1
0 1 1 1 0 0 1 0
1 0 0 0 0 0 0 1
1 0 0 1 0 0 0 0
1 0 1 0 X X X X
1 0 1 1 X X X X
1 1 0 0 X X X X
1 1 0 1 X X X X
1 1 1 0 X X X X
1 1 1 1 X X X X
8)

BCD+3_1 BCD+3_2

BCD+3_MAXIMO= 9 en BCD+3= 12 = 1100


Salida máximo = 9 + 9 = 1100 + 1100 = 11000
S_BCD Salida mínima = 0 + 0 = 0011 + 0011 = 0110

1 8

Disponemos de sumadores binarios naturales (SBN) (7483) que al hacer 9 + 9 darán 24 en binario = 11000 pero lo que
necesitamos es convertir ese número binario en BCD+3, es decir, 18 en BCD+3= 0100 1100.

BCD_1 BCD_2

Cout
7483

B3 B2 B1 B0
CORRECTOR
BN A BCD+3

C3 C2 C1 C0 S3 S2 S1 S0

Sólo hay que diseñar el corrector. Para ello estudiamos la función que debe cumplir, es decir, analizamos las salidas
obtenidas en SBN y las correspondientes deseadas:
BN Cout B3 B2 B1 B0 C3 C2 C1 C0 S3 S2 S1 S0 +3 BN
6 0 0 1 1 0 0 0 0 0 0 0 1 1 0 3
7 0 0 1 1 1 0 0 0 0 0 1 0 0 1 4
8 0 1 0 0 0 0 0 0 0 0 1 0 1 2 5
9 0 1 0 0 1 0 0 0 0 0 1 1 0 3 6
10 0 1 0 1 0 -3 0 0 0 0 0 1 1 1 4 7
11 0 1 0 1 1 0 0 0 0 1 0 0 0 5 8
12 0 1 1 0 0 0 0 0 0 1 0 0 1 6 9
13 0 1 1 0 1 0 0 0 0 1 0 1 0 7 10
14 0 1 1 1 0 0 0 0 0 1 0 1 1 8 11
15 0 1 1 1 1 0 0 0 0 1 1 0 0 9 12
16 1 0 0 0 0 0 1 0 0 0 0 1 1 10 19
17 1 0 0 0 1 0 1 0 0 0 1 0 0 11 20
18 1 0 0 1 0 0 1 0 0 0 1 0 1 12 21
19 1 0 0 1 1 +3 0 1 0 0 0 1 1 0 13 22
20 1 0 1 0 0 0 1 0 0 0 1 1 1 14 23
21 1 0 1 0 1 0 1 0 0 1 0 0 0 15 24
22 1 0 1 1 0 0 1 0 0 1 0 0 1 16 25
23 1 0 1 1 1 0 1 0 0 1 0 1 0 17 26
24 1 1 0 0 0 0 1 0 0 1 0 1 1 18 27

El dígito de mayor peso en BCD+3 no se ha escrito en BCD+3 sino en BCD para hacer la diferencia más sencilla. Habrá
que corregir después esta “trampa”.
Se observa que del 6-15 el corrector debe restar tres. Sin embargo, del 16 al 24 debe sumar tres.
Si se hubiera reflejado en la tabla los valores de 0 y 1 en BCD+3 la operación sería del 6-15 el corrector debe sumar 45.
Sin embargo, del 16 al 24 debe sumar 51.
Optamos por la opción de la “trampa”.
Por lo tanto habrá que diseñar un circuito que detecte cuándo la salida del 7483 es menor que 16. Se observa que esa
función la realiza el Cout por lo tanto no hay necesidad de diseño de circuito.
En ese caso suma cero y en caso que sea mayor que 10 suma seis.

Cout B3 B2 B1 B0

 15?

f>15
+3
O
-3

S3 S2 S1 S0
1) Diseño de +3 o -3.

Si f>15= 0 entonces -3 === 1 1 0 1


Si f>15= 1 entonces +3 === 0 0 1 1
f>15

Vcc B3 B2 B1 B0

7483

S3 S2 S1 S0

2) Corrección del dígito de mayor peso en BCD+3

Si Cout = 0 = C3 C2 C1 C0 =0 0 1 1
Si Cout = 1 = C3 C2 C1 C0 =0 1 0 0
9)
10)
EN A1 A0

Dec 2-4

Entradas Salidas y 0  A1 A0 E
E A1 A0 0123 y1  A1 A0 E
1 0 0 1000 y 2  A1 A0 E
1 0 1 0100 y 3  A1 A0 E
1 1 0 0010
1 1 1 0001
0 0 0 0000
A3 A2 A1 A0

Dec 4-16
15 210
................

Entradas Salidas
A3 A2 A1 A0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 0 0 1000000000 0 0 0 0 0 0
0 0 0 1 0100000000 0 0 0 0 0 0
0 0 1 0 0010000000 0 0 0 0 0 0
0 0 1 1 0001000000 0 0 0 0 0 0
0 1 0 0 0000100000 0 0 0 0 0 0
0 1 0 1 0000010000 0 0 0 0 0 0
0 1 1 0 0000001000 0 0 0 0 0 0
0 1 1 1 0000000100 0 0 0 0 0 0
1 0 0 0 0000000010 0 0 0 0 0 0
1 0 0 1 0000000001 0 0 0 0 0 0
1 0 1 0 0000000000 1 0 0 0 0 0
1 0 1 1 0000000000 0 1 0 0 0 0
1 1 0 0 0000000000 0 0 1 0 0 0
1 1 0 1 0000000000 0 0 0 1 0 0
1 1 1 0 0000000000 0 0 0 0 1 0
1 0 0 1 0000000000 0 0 0 0 0 1

En función de A3A2 se activa uno u otro bloque.


0 0
1
1
A0 Dec

A1 2 2
3
3
A2

A3
0
0 4
1
1 5
Dec
Dec
2
2 6
3
Vcc 3 7

0 8
1 9
Dec
2 10
3 11

0 12
13
1
Dec
2 14
3 15
11)

Se desea diseñar

74150

74150

74150
12)

S0 = A
S1 = B
S2 = C

Y  D0 S 2 S1 S0  D1 S 2 S1S0  D2 S 2 S1 S0  D3 S 2 S1S0 
D4 S2 S 1 S 0  D5S2 S 1S0  D6 S2 S1 S 0  D7 S2 S1S0
m0 m2 m3
f ( X 2 X 1 X 0 )  1. X 2 X 1 S0  0. X 2 X 1 X 0  1. X 2 X 1 X 0  1. X 2 X 1 X 0 
X0 = A
0. X 2 X 1 X 0  1. X 2 X 1 X 0  0. X 2 X 1 X 0  0. X 2 X 1 X 0 X1 = B
m5 X2 = C

D0 = 1 D1 = 0 D2 = 1 D3 = 1
D4 = 0 D5 = 1 D6 = 0 D7 = O
13)
b
F
c
0
Vcc
a
a

F (a, b, c)  abc  abc  abc  abc  m1  m5  m6  m7 


0.abc  1.abc  0.abc  0.abc  0.abc  1.abc  1.abc  1.abc
c = S0 b = S1

F (a, b, c)  0.aS1 S0  1.aS1S0  0.aS1 S0  0.aS1S0 


 0.aS1 S0  1.aS1S0  1.aS1 S0  1.aS1S0
Y  D0 S1 S0  D1 S1S0  D2 S1 S0  D3S1S0

D0 = 0 D1 = 1 D2 = a D3 = a
14)

S0 = A
S1 = B
S2 = C

Y  D0 S 2 S1 S0  D1 S 2 S1S0  D2 S 2 S1 S0  D3 S 2 S1S0 
D4 S2 S 1 S 0  D5S2 S 1S0  D6 S2 S1 S 0  D7 S2 S1S0
f ( X 3 X 2 X 1 X 0 )  1. X 3 X 2 X 1 S0  1. X 3 X 2 X 1 X 0  1. X 3 X 2 X 1 X 0  1. X 3 X 2 X 1 X 0 
1. X 3 X 2 X 1 X 0  0. X 3 X 2 X 1 X 0  0. X 3 X 2 X 1 X 0  0. X 3 X 2 X 1 X 0 
0. X 3 X 2 X 1 X 0  1. X 3 X 2 X 1 X 0  0. X 3 X 2 X 1 X 0  0. X 3 X 2 X 1 X 0 
0. X 3 X 2 X 1 X 0  1. X 3 X 2 X 1 X 0  1. X 3 X 2 X 1 X 0  1. X 3 X 2 X 1 X 0

D0 = X3 D1 = 1 D2 = D3 =
D4 = X3 D5 = X3 D6 = X3 D7 = X3
15) ALU

S3 S2 S1 S0 Operacion a
Las operaciones a realizar son realizar
0 0 0 0 A+B + 0
0 0 0 1 A + 1111 + 0
A+B + 0 0 0 1 0 A + 0000+ 0
A+B+1 0 0 1 1 A + BC1 + 0
A-1 = A + 1111 + 0 0 1 0 0 AND
A + 0 = A + 0000+ 0 0 1 0 1 OR
A + 1 = A + 0000 + 1 0 1 1 0 NOT A
A – B = A + BC1 + 0 0 1 1 1 A XOR B
A – B = A + BC1 + 1 1 0 0 0 A+B+1
1 0 0 1 A + 1111 + 0
Son todo parejas de mismas operaciones únicamente se 1 0 1 0 A + 0000 + 1
diferencian en el acarreo. 1 0 1 1 A + BC1 + 1
Hay 7 operaciones aritméticas y 4 lógicas  necesitamos 4 bits 1 1 0 0 X
para diferenciarlas. 1 1 0 1 X
S3S2S1S0, se toma S2 para diferenciar operaciones aritméticas o 1 1 1 0 X
lógicas. Se toma S3 para definir el acarreo. 1 1 1 1 X

1) Diseño de la unidad aritmética

Las operaciones aritméticas siempre son sumas de números de 4 bits. Se utiliza un sumador 7483. Uno de los sumandos
siempre es A, es otro es variable:

B3 B2 B1 B0
S0
Y-GEN
S1
A3 A2 A1 A0 Y3 Y2 Y1 Y0

COUT S3
7483

S3 S2 S1 S0
i
Diseño de Y-GEN_i, es decir para cada bit de entrada su circuito Y-GEN

S1 S0 BI Y1
0 0 0 1
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 0

2) Diseño de la unidad lógica

S1 S0 Ai Bi FLi
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 1
0 1 0 0 0
0 1 0 1 1
0 1 1 0 1
0 1 1 1 1
1 0 0 0 1
1 0 0 1 1
1 0 1 0 0
1 0 1 1 0
1 1 0 0 0
1 1 0 1 1
1 1 1 0 1
1 1 1 1 0
3) Circuito completo
A3 A2 A1 A0 B3 B2 B1 B0

A 3 B 3 A2 B 2 A1 B 1 A0 B 0

S0
S1
FL3 FL2 FL1 FL0 Y3 Y2 Y1 Y0

7483 S3

S3 S2 S1 S0

S2
74157

COUT
F3 F2 F1 F0
16) ALU

S3 S2 S1 S0 S4 =0 S4 =1
Las operaciones a realizar son 0 0 0 0 A+B + 0 A+B+1
0 0 0 1 A + BC1 + 0 A + BC1 + 1
0 0 1 0 A + 0000+ 0 A + 0000 + 1
A+B + 0 0 0 1 1 A + 1111 + 0 A + 1111 + 1
A+B+1 0 1 0 0 0000 + BC1 + 0 0000 + BC1 + 1
0 1 0 1 A+A+0
A – B = A + BC1 + 0
0 1 1 0 0000 + 1111 + 0 0000 + 1111 + 1
A – B = A + BC1 + 1
0 1 1 1
A + 1 = A + 0000 + 1
1 0 0 0 AND
A-1 = A + 1111 + 0
1 0 0 1 OR
A + 0 = A + 0000+ 0
1 0 1 0 NOT A
A + 0 = A + 1111 + 1
1 0 1 1 NOT B
0000 + BC1 + 0
1 1 0 0 A XOR B
0000 + BC1 + 1
1 1 0 1 NAND
1 1 1 0 NOR
A+A
1 1 1 1

0000 + 1111 + 0
0000 + 1111 + 1 = 0 + 0

Son casi todo parejas de mismas operaciones únicamente se diferencian en el acarreo. Por ello, en realidad
hay 7 operaciones aritméticas. Por lo tanto, se necesitan 3 bits de selección de operación.
Como lógicas hay 7 son necesarios, también, 3 bits.
Otro bit necesario para la selección de aritmético-lógica (S3 ) y otro para marcar la necesidad de acarreo inicial
(S4 )
S4 S3 S2 S1 S0,.
1) Diseño de la unidad aritmética
Las operaciones aritméticas siempre son sumas de números de 4 bits. Se utiliza un sumador 7483. En Este ejercicio los
dos sumandos pueden variar
A3 A 2 A1 A0 B3 B2 B1 B0

3
S0
X-GEN Y-GEN S1
S2
X3 X2 X1 X0 Y3 Y2 Y1 Y0

COUT S4
7483

S3 S2 S1 S0
Diseño de Y-GEN_i, es decir para cada bit de entrada su circuito Y-GEN
Diseño de X-GEN_i, es decir para cada bit de entrada su circuito X-GEN

Ai Bi S2 S1 S0 Xi Yi Ai Bi S2 S1 S0 Xi Yi
0 0 0 0 0 0 0 1 0 0 0 0 1 0
0 0 0 0 1 0 1 1 0 0 0 1 1 1
0 0 0 1 0 0 0 1 0 0 1 0 1 0
0 0 0 1 1 0 1 1 0 0 1 1 1 1
0 0 1 0 0 0 1 1 0 1 0 0 0 1
0 0 1 0 1 0 0 1 0 1 0 1 1 1
0 0 1 1 0 0 1 1 0 1 1 0 0 1
0 0 1 1 1 X X 1 0 1 1 1 X X
0 1 0 0 0 0 1 1 1 0 0 0 1 1
0 1 0 0 1 0 0 1 1 0 0 1 1 0
0 1 0 1 0 0 0 1 1 0 1 0 1 0
0 1 0 1 1 0 1 1 1 0 1 1 1 1
0 1 1 0 0 0 0 1 1 1 0 0 0 0
0 1 1 0 1 0 0 1 1 1 0 1 1 1
0 1 1 1 0 0 1 1 1 1 1 0 0 1
0 1 1 1 1 X X 1 1 1 1 1 X X
2) Diseño de la unidad lógica
Se diseña a partir de la tabla de verdad cuya cabecera es:

S2 S1 S0 Ai Bi FLi

3) Circuito completo
A3 A2 A1 A0 B3 B2 B1 B0

A 3 B 3 A2 B 2 A1 B 1 A0 B 0

S0
S1
FL3 FL2 FL1 FL0 X3 X2 X1 X0 Y3 Y2 Y1 Y0 S2

7483 S4

S3 S2 S1 S0

1 0 S3
74157

COUT
F3 F2 F1 F0
17)
18)
19)

a) Diagrama de Bloques

Dinero introducido Go Chi Re Pi

Código del producto.


1. bloque

Cod

Valor del producto C2.


2. bloque

B A

Suma
3. bloque

Correcor
4. bloque
Rc

BIN-BCD
5. bloque

Sd Su

BCD-7seg Dec BCD-7seg Dec


6. bloque 7. bloque
7 7

Recibir No hay
producto sufiente
dinero

Tamaño del registro: Cantidad máxima a introducir /precio  15  n = 4 +


Se deben restar cantidades  + signo  + n = 1  n = 5
Entradas : Cantidad introducida  [0, 15]
Go, Chi, Re, Pi  0 Activa; 1 Inactiva
Salidas : Cod : Código binario asociado a cada producto [0,3]
A: Cantidad en C2 asociada al coste de cada producto [-12, 0]
R : Resultado de la resta [-12, 15]
Rc : Resultado de la resta en positivo [0, 15]

b) Diseño óptimo de cada bloque

Bloque 1: 74348 : codificador con prioridad.

Vcc Go Chi Re Pi

EI 0 1 2 3 4 5 6 7

A2 A1 A0

Cod1 Cod0

Bloque 2: Tabla de Verdad


Cod1 Cod0
Cod1 Cod0 A4 A3 A2 A1 A0
0 0 1 0 1 0 0 Circuito
0 1 1 1 0 1 1 Combinacional
1 0 1 1 1 0 1
1 1 1 1 1 1 0
A4 A3 A2 A1 A0
Bloque 3: Suma dos número de 4 bits:

B4 A4 B3 B2 B1 B0 A3 A2 A1 A0

7483 7483

R4 R3 R2 R1 R0

R4 R3 R2 R1 R0
Bloque 4: Circuito combinacional + 7483

R4 Ri Ii
0 0 0 CC
0 1 1 I4 I3 I2 I1
1 0 1 7483
1 1 0

Rc3 Rc2 Rc1 Rc0


Bloque 5. Convertidor de BIN-BCD.
Rc: [0, 15]

BIN-BCD
5

Sd: [0, 1] Su: [0, 9]

Bloque 6. Consultar en los apuntes y ejercicios anteriores.


20)
Teclado 1 Teclado 2 Aforo max. en S1 S2 R Ver aforo max o
binario sitios libres
F: [0-25]

Codificador +1 o -1
Codificador G: [0-31]
B: [0-9]
A: [0-9]
Si correcto,: [4-8]
A Mayor que 4 y
par? A/2
C2
C: [2-4] Añadimos bit
Si = 1 de signo
Abre P1
Sitios libres:F+Gc2= F-G
C-2 C+2
D: [0-2] E: [4-6]

B  [D-E]? Es cero el resultado? H: [0-25]

Si = 1
No = 1
Selecciona aforo o sitios

J: [0-25]
Abre P2
Convertidor bin/BCD

R= ZU Z: [0-2] U: [0-9]
Deco. Deco.
Abre P3

P1 P2 P3 Displays
Codificador: 0123456789

74147

D C B A =a3 a2 a1 a0 ; b3 b2 b1 b0

A Mayor que 4 y par? P1 = m4+m6+m8

a3 a2 a1 a0
A/2

c2 c1 c0

C+2 c2 c1 c0 0010

7483

C-2
c2 c1 c0 1110

7483

D Beti positiboa

E B
B  [D-E]? D B .

A B
A B A =B 7485
A =B 7485
B=A A>B
B=A B>A
OR
OR AND

Las entradas en cascada, A = B a Vcc y las otras a tierra

Abre P2, será una puerta AND


+ 1 o -1 usamos el contador que se propone en el ejercicio.

C2 de G, invertimos todos los bits que componen G y añadimos el bit de signo, que será el sexto y lo ponemos a Vcc.

0 0 0 f4 1 1g5c2 g4c2 f3 f2 f1 f0 g3c2 g2c2 g1c2 g0c2


F+Gc2

7483 7483
H Beti positiboa

h4 h3 h2 h1 h0

Es cero el resultado?

Puerta OR.

Abre P3

Puerta AND

Selecciona Aforo o sitios

0 0 0 f4 0 0 0 h4 f3 f2 f1 f0 h3 h2 h1 h0

Aforo = 0
A B A B
74157 74157

j4 j3 j2 j1 j0

Convertidor de Binario a BCD

Cuando J  [0-9], la salida del convertidor es igual a la entrada. R = J + 0


Cuando J  [10-19], la salida del convertidor es la entrada más seis: R = J + 6
Cuando J  [20-25], la salida del convertidor es la entrada más doce. R = J + 12
Se diseña una función de dos variables que diferencie los tres bloques.

m1mo Tramo m1 = f (j4 j3 j2 j1 j0) =  (20, 21, 22, 23, 24, 25) + K(26-31)
0 0 J  [0-9] m0 = f (j4 j3 j2 j1 j0) =  (10, 11, 12, 13, 14, 15, 16, 17, 18, 19) + K(26-31)
0 1 J  [10-19]
1 0 J  [20-25]

j4 j3 j2 j1 j0

m1 m0
+0, +6, +12 j3 j2 j1 j0

7483

z1 z0 r3 r2 r1 r0 = u3 u2 u1 u0

Decodificadores: Utilizamos el 7448. Para la supresión del cero del dígito de mayor peso conectamos su RBI a cero.
21)

a) Diagrama de bloques
F E D C B A T N/P
X = 1, Si T = 1 Cambia el
resultadoa
1. Bloque N/P = 0 número
Votos a favor
S
[0, 6]

2. Bloque S–3= 3. Bloque


0?
S-3 > 0?
L
F L = 1 empate
F = 1 Si

1 (SI) 0 (NO)

MSB MUX 4-1 (4. Bloque) 0

V = 1 Si V

Cambiar o no el
5.5. Bloque resultado
Blokea
R R = 1 SI

S
6. Bloque Decodficador que
6.
genera SI o NO Dec BCD/7
blokea (dependiendo de R)
7. Bloque
seg
L= l7l6 ... l1 N= n7n6 ... n1
H= h7h6 ... h1
7 L=IoO 7
H=SoN

Dependiendo de N/P y T elige I/O o M


7
El número (8. Bloque) Selector
9. Bloque

7
Pasar letro o nada D1
10. Bloque

7 D2
1. Bloque

F E D C B A

b a Cn b a Cn

74183 74183

Cn+1 E Cn+1 E

B4 B3 B2 B1 A4 A3 A2 A1

7483 C0
E4 E3 E2 E1

S (E4 0 será siempre)

2. Bloque Vcc
S

B4 B3 B2 B1 A4 A3 A2 A1

7483 C0

E4 E3 E2 E1

F
3. Bloque
S
3

NOR

atea
L

4. Bloque A
1 (SI) 0 (NO)

L C3 C2 C1 C0
A
74352
B G
F
Y

V
5. Bloque
V T

X-OR
puerta

6. Bloque

R Letra a b c d e f g
1 S 0 1 0 0 1 0 0
0 N 0 0 0 1 0 0 1
1 I 1 1 1 1 0 0 1
0 O 0 0 0 0 0 0 1 R

S
o 1 I
N o
O

H7g h6f h5e h4d h3c h2b h1a L7g L6f L5e L4d L3c L2b L1a

7 Bloque
S3 S2 S1 S0

D C B A
1 RBI 7447
LT
g f e d c b a

N
8. Bloque
M=1 letra
B = letra
A = numero
L7g L6f L5e Ng Nf Ne L4d L3c L2b L1a Nd Nc Nb Na

B4 B3 B2 B1 A4 A3 A2 A1 B4 B3 B2 B1 A4 A3 A2 A1
74157 74157
G S G S M
M
Y4 Y3 Y2 Y1 Y4 Y3 Y2 Y1

D1
9. Bloque
T N/P

puertas OR

M
10. Bloque
M
h7g h6f h5e h4d h3c h2b h1a

puertas di=M+hi’

D2
22)

Teclado Teclado

10 10

Codificador Codificador
con prioridad con prioridad
Decimal/binar Decimal/binar
io io

4 4

Circuito sumador y multiplicador

5 (max 18) 7 (max 81)

MUX (seleccionar el resultado de la suma o de la multiplicación)

Conversor de binario a BCDnat

4 MSB 4 LSB

Decodificador Decodificador
BCD/7 BCD/7
segmentos segmentos

7 MSB 7 LSB

Display de 7 Display de 7
segmentos segmentos
23)

a) 11 operaciones  4 variables s3s2s1s0


A, B = BACD Nat  [0, 9]  nº max = 9 + 9 =18 = 10010 Registro de 6
Nº min = -9
S2 = aritméticas
s2s1s0 s3
000 A+1 FA=A + 0 + 1= 00a3a2a1a0 + 000000 + 1
A+0 FA=A + 0 + 0= 00a3a2a1a0 + 000000 + 0
001 A+B FA=A + B + 0 = 00a3a2a1a0 + 00b3b2b1b0 + 0
010 A*2 FA=A + A = 00a3a2a1a0 + 00a3a2a1a0 + 0
011 A-B FA=A + Bc1= 00a3a2a1a0 + 11b´3b´2b´1b´0 + 0
100 A+B fli=ai +bi 0
A + B´ fli=ai +b´i 1
101 AB fli=ai bi 0
A  B´ fli=ai b´i 1
110 B´ fli=b´i 0
111 A.B fli=ai .bi 0

Unidad Aritmética
B A

S1 S0 B A a3 a2 a 1 a0
S1 S0
4
S0
B´, B, A, 0 S1
1, 0
g1 g0 mi

7483 S3
7483

S [-9, 18]

Corrector del resultado para leer en C1

Nº en C1 o corregido
H

Obtención del módulo 1 Hace C1 o pasa

FA

[-9, 18]

fA4 fA3 fA2 fA1 fA0

Signo
Corrector del resultado para leer en C1
Si hay Overflow(7º bit), hay que sumar 1 al resultado.
s6 s5 s4 s3 s2 s1 s0

7483 7483

h5 h4 h3 h2 h1 h0

Obtención del módulo 1 Hace C1 o pasa

Si h5 = 1  C1
Si h5 = 0  pasa

h5 hi FAi h5 hi
0 0 0
0 1 1
1 0 1
1 1 0
FAi

Módulo que genera 0 o 1 dependiendo de s1s0


s1 s0
S1 S0 g1 g0
0 0 0 0
0 1 0 0
1 0 0 0
1 1 1 1

g1 g0
Módulo que genera b,b´,a o 0 dependiendo de s1s0

S1 S0 ai bi mi
0 0 0 0 0 mi = s1´s0bi + s1s0´ai + s1s0bi
0 0 0 1 0
0 0 1 0 0 b3 a3 b2 a2 b1 a1 b0 a0
0 0 1 1 0 s1 s0
0 1 0 0 0
0 1 0 1 1
0 1 1 0 0
0 1 1 1 1
1 0 0 0 0
1 0 0 1 0
1 0 1 0 1
1 0 1 1 1 m3 m2 m1 m0
1 1 0 0 1
1 1 0 1 0
1 1 1 0 1
1 1 1 1 0

Unidad lógica

b3 a3 b2 a2 b1 a1 b0 a0

s0

s1

s2

fl3 fl2 fl1 fl0


Bloque i

ai bi

S3

bi o b´i
S3 S1 S0 operación
0 0 0 A+B yi
0 0 1 AB
0 1 0 B´
0 1 1 A.B
1 0 0 A+B´ C3 C2 C1 C0
1 0 1 AB´ 74153 A s0
1 1 0 X G B s1
1 1 1 X

fli

Bloque que genera bi o b´i

S3 bi yi
0 0 0
0 1 1 yi = S3  bi
1 0 1
1 1 0
ALU completa

b3 b2 b1 b0 a3 a2 a1 a0

B A B A
s0
U.L. U.A. s1
s3
3

fl3 fl2 fl1 fl0


fa4 fa3 fa2 fa1 fa0

B42 B32 B22 B12 B41 B31 B21 B11 A42 A32 A22 A12 A41 A31 A21 A11
s2
2 MUX 157 select
strobe
y02 y31 y21 y11 y01

f4 f3 f2 f1 f0
signo Aritmético
lógico
b)

S2 f4 f3 f2 f1 f0

Convertidor de
BIN/BCD
D = [0,18]
RBI
7448 Vcc
LT
RBI
Vcc 7448
LT 7

7
g f e d c b a

g f e d c b a

A42 A32 A22 A12 A41 A31 A21 A11 B42 B32 B22 B12 B41 B31 B21 B11
S2
2 MUX 157 select
strobe
y22 y12 y02 y31 y21 y11 y01

g f e d c b a

7
24)
A) BLOQUES Ai. DISEÑAMOS UNO.

v5 v4 v3 v2 v1

. R0
Ai R1
Vi( asambleistas) = 1 voto a favor R2
Ri = resultado en binario.

Utilizando sumadores completos, donde: A


S
Cin A B Cout S Número B SC
votantes Cout
0 0 0 0 0 0 Cin
0 0 1 0 1 1
0 1 0 0 1 1
0 1 1 1 0 2
1 0 0 0 1 1
1 0 1 1 0 2
1 1 0 1 0 2
1 1 1 1 1 3

La salida del SC nos da el numero de votos positivos en binario natural. Por lo tanto:
v1 v2 v3 v4 v5

SC SC

Cout S Cout S

7483

R2 R1 R0

Como el número máximo a obtener es 5, la salida de mayor peso del sumador y la salida de carry no se
utilizarán.

Notas
El uso exclusivo de 7483 para este diseño no es el más apropiado.
El realizarlo todo mediante puertas se da por bueno siempre y cuando las funciones de salida se hayan simplificado
correctamente y lo máximo posible y se hayan definido las variables tanto de entrada como de salida.
B) Sumador BCD diseñado en ejercicios anteriores y en teoría.
C) El tipo de display a utilizar es de ánodo común porque las salidas del decodificador son activas a nivel bajo.
El decodificador correspondiente al dígito de mayor peso deberá tener las entradas D y C conectadas a tierra, LT a
H y RBI a L. El de menor peso LT y RBI a H.
25)
Si se utilizan códigos Hammnig para 4 bits de datos se necesitan 3 bits de paridad. Si se quieren detectar dobles
errores hay que añadir un bit de paridad más. Por lo tanto los bits que llegan al receptor son:

Bits de datos : D0 D1 D2 D3 en las posiciones 3,5,6,7  D3,D5,D2,D7


Bits de paridad: P0,P1, P2, P3 en las posiciones 1,2,4,8. P1,P2,P4,P8

Posición 1 2 3 4 5 6 7 8
Palabra P1 P2 D3 P4 D5 D6 D7 P8

Los bits de paridad hacen referencia a los siguientes conjuntos:

P1 = D3,D5,D7 P2 = D3,D6,D7 P4 = D5,D6,D7


P8 = P1,P2,D3,P4,D5,D6,D7

A) (0,5 puntos + 0,25 puntos de explicaciones)


A1)Diagrama de bloques del detector y corrector de errores

8 C8
(1)
P1 (5)
P2 D7,D5,D3,P1 Doble error. DR
C1
(2)
D3
P4 D7,D6,D3,P2 C2
(3)
D5
D6 D7,D6,D5,P4 C4
(4)
D7
P8 Di i= 3,5,6,7
Corrector (7)
4
4 Dc= D7c D6c D5c D3c
Dc= D3c D2c D1c D0c
Línea errónea (6)
CDi i= 3,5,6,7

C1,C2,C4
A2) Diagrama de bloques de la parte aritmética.
Si DR = 1  Salida = Dc (bits corregidos)
Si DR = 0  Salida  Dc  Si Dc  [7,15]  Salida = Dc - 4
Si Dc  [7,15]  Salida = Dc + 5
El resultado siempre será positivo. El número mínimo es el 3 y el máximo el 11.
DR
Dc

Dc3 = D0c f N
Dc5 = D1c Dc [7,15] -4 o +5
S R
Dc2 = D2c (8) (9)
Dc7= D3c Pasa
7483 el
oper
ació
no
Dc
(10)

B
B1) El desarrollo del detector y corrector de errores.

Los bloques (1), (2), (3), (4) son sumas exclusivas negadas, ya que es paridad impar y, por lo tanto, si el número de
unos es impar la salida debe ser cero. Su desarrollo para paridad par puede consultarse en los apuntes. Para la impar
sólo debe complementarse la salida.
Los desarrollos de los bloques (6), (7) pueden consultarse en los apuntes de clase.

B2) Desarrollo de la parte aritmética


Bloque (8)

Si Dc  [7,15]  f = 1  f   7,8,9,10,11,12,13,14,15  D3c  D2c D1c D0c

Bloque (9)
Si f = 1  1100 (-4 = 4 en C2)
 N = N3N2N1N0 = f 1 0 f
Si f = 0  0101 (+5)

Bloque (10) Utilizando el cuádruple multiplexor.

D3c D2c D1c D0c S3 S2 S1 S0

DR 1 0
MUX

R3 R2 R1 R0
C)
Como R  [3,11]  Hay que convertir a BCD  2 displays.
Consultar en los apuntes el convertidor BIN/BCD y la supresión del cero.
26)

a) Si los sensores detectan entre –20 y 30  [-2n, 2n-1]  n = 6  1 bit de signo y 5 de magnitud.

Salida Sensor Carne Salida Sensor Vino

6 6

Bloque 1 Bloque 2
Alarma Carne Alarma Vino

Ac Av

Bloque 3 Bloque 4
Si alarma  cero Si alarma  cero

C 6 V 6

Bloque 5 S
Secciona Ver Carne o Vino

R 6

Bloque 6
C2 o Pasa

Signo 5 M : Magnitud

Bloque 7 Ac Av
BIN/BCD

D 4 4 U
RBI1 Bloque 8
Bloque 9 Controlador de ceros en
BCD/7segmentos los Display
RBI2
7 7

Bloque 10
Displays
Bloque 1-2: Entradas : 6 bits [-20, 30] ; Salida : 1 bit : Ac = 1 alarma por fuera de rango.
Bloque 3: Entradas : 6 bits de temperatura + 1 bit de alarma. Salida: 6 bits entre [-3, 4]: Si está fuera de rango genera
ceros si está dentro pasa la temperatura.
Bloque 4: Entradas : 6 bits de temperatura + 1 bit de alarma. Salida: 6 bits entre [14, 17]: Si está fuera de rango
genera ceros si está dentro pasa la temperatura.

Bloque 5: Entradas: 6 bits, temperaturas de la carne y el vino (si está fuera de rango será cero) + bit de selección : 1
carne 0 vino. Salidas : 6 bits entre [-3, 17], selecciona la temperatura a visualizar en el display
Bloque 6: Entradas : 6 bits de temperatura seleccionada. Salidas: 1 bit para el signo y 5 bits para la magnitud entre
[0, 17].
Bloque 7: Entradas: 5 bits entre [0, 17]. Salidas: 8 bits: 4 par alas unidades (0-9) y 4 para las decenas (0-1).
Bloque 8: Entradas: S, Ac, Av. Salidas: RBI1, RBI2 . Controla la generación de ceros en el display: 00 (por fuera de
rango), 0 (que la temperatura sea cero), 10 (que la temperatura sea 10).
27)

a)
A B
3 3
Compara
AyB

¿A>B?
A B A B
3 3 3 3

Selecciona el Selecciona el
menor de A, B C Mayor de A, B
C
L
l 3 3 3 3

Compara Compara
lyC LyC

¿L>C?
¿l <C?
l C
L C
3 3
3 3
Selecciona el
menor de l, C Selecciona el
Mayor de L, C
C m 3
M 3
3

C  [2,5] f Genera  m

m´ 4

Suma M + ( m )

R 4
R 0 siempre
R max= 14
Rmin= 0
b)

Obtención de M y m

Los circuitos comparadores serán los 7485 con las entradas de cascada conectadas correctamente. Los bits de mayor
peso a 0.

Los circuitos seleccionadores serán los 74157: cuádruple mux de 2-1. Los bits de mayor peso a 0.

Obtención de R

Circuito generador de f. F será 1 para los valores 2,3,4,5 


f  c2c1  c2 c1  c2  c1
Circuito M  m

M + m= M + m0
M - m = M + m 1

El circuito Generador de  m pasa m o la complementa bit a bit dependiendo de f 

f mi mi´
0 0 0 mi  f mi  f mi  f  mi
0 1 1
1 0 1
i = 0,1,2
1 1 0
m3 = f ya que será el bit de signo.

Circuito M  m con el 7483

m 3

Genera mi o m i
M
C
3
f
7483 C  [2,5]

R
c)
R  [0, 14]  siempre positivo y dos displays.

R 4

Convertidor de BIN
a BCD
D
1 U 4 Digito de menor peso

RBI = L Decod. Decod. RBI = H


LT = H BCD/7seg. BCD/7seg. LT = H

7 7

Display de Display de

ánodo común ánodo común

Convertidor

Bin R3 R2 R1 R0 D0 U3 U2 U1 U0 BCD Bin


0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 1 1 1
2 0 0 1 0 0 0 0 1 0 2 2
3 0 0 1 1 0 0 0 1 1 3 3
4 0 1 0 0 0 0 1 0 0 4 4
5 0 1 0 1 0 0 1 0 1 5 5
6 0 1 1 0 0 0 1 1 0 6 6
7 0 1 1 1 0 0 1 1 1 7 7
8 1 0 0 0 0 1 0 0 0 8 8
9 1 0 0 1 0 1 0 0 1 9 9
10 1 0 1 0 1 0 0 0 0 10 16
11 1 0 1 1 1 0 0 0 1 11 17
12 1 1 0 0 1 0 0 1 0 12 18
13 1 1 0 1 1 0 0 1 1 13 19
14 1 1 1 0 1 0 1 0 0 14 20

Comparando la lectura binaria:


R [0,9]  R = U ; R  [10-14]  U = R + 6

R 4 R 4

Detecta 7483
R  [10-14]

D0 U 4

También podría gustarte