You are on page 1of 68

Departamento de Ciências e Tecnologias da Informação

Fundamentos de Arquitectura de
Computadores

Caderno de Exercı́cios

13 de Setembro de 2013
Capı́tulo 1

Representação da Informação

1.1 Escreva todos os números . . .

a) ... entre (5)8 e (11)8 .


b) ... entre (3)5 e (11)5 .
c) ... entre (0)2 e (101)2 .
d) ... entre (9)16 e (12)16 .

1.2 Considere as bases 2, 5, 8 e 16.

a) Qual a representação do maior número com 2 dı́gitos em cada uma das bases?
b) Qual a representação do número seguinte em cada uma das bases?
c) Qual a representação do número anterior a 101 em cada uma das bases?

1.3 Qual é a representação do número anterior a 1000, caso este esteja representado . . .
a) . . . em base 2?
b) . . . em base 8?
c) . . . em base 16?

1.4 Converta para base 10 (basta indicar a expressão)


a) (1001001)2 c) (10FD)16 e) (31.73)8
b) (1506)8 d) (110.001)2 f) (A.C)16

1.5 Complete as seguintes tabelas

Octal Binário Hexadecimal Binário


0 000 0 0000
1 001 1 0001
2 010 2 0010
... ... ... ...
7 111 F 1111

1
1.6 Complete a seguinte tabela

n 2n
1 2
2 4
3 8
... ...
10 1024

1.7 Obtenha o valor dos seguintes números inteiros representados em binário:

a) 1000 c) 1 0000 0001 e) 1 0010


b) 1 1111 d) 1111 1110 f) 1 1101

1.8 Obtenha a representação em binário dos seguintes números inteiros:

a) 256 c) 34 e) 1022
b) 255 d) 510 f) 515

1.9 Quantos bits são necessários para representar cada um dos seguintes números?

a) 25 d) 112 g) 999
b) 33 e) 350 h) 1032
c) 65 f) 520

1.10 Complete a seguinte tabela:

Decimal Binário
100 64 + 32 + 4 26 + 25 + 22 1100100
1011
80
128 + 32 + 1
27 + 25 + 24 + 21

1.11 Converta de decimal para binário:

a) 25 d) 300 g) 98.75
b) 75 e) 2004 h) 31.6875
c) 513 f) 2.375 i) 0.1

2
1.12 Converta de decimal para octal
a) 5 d) 510 g) 2.75
b) 88 e) 2012 h) 3.125
c) 120 f) 1024 i) 100.3125

1.13 Converta de decimal para hexadecimal


a) 53 d) 256 g) 254.9375
b) 127 e) 426 h) 428.5
c) 128 f) 56797 i) 0.65

1.14 Converta os seguintes números de octal para binário


a) 103 c) 1775 e) 273.2
b) 310 d) 5.45 f) 23761.5

1.15 Converta os seguintes números de binário para octal


a) 1001001 c) 111101110 e) 0.01
b) 11101101 d) 111.111 f) 11001.110111

1.16 Converta os seguintes números de hexadecimal para binário


a) 10 c) 1CB e) FE.FF
b) 3A d) ABC.35 f) 2A.1A

1.17 Converta os seguintes números de binário para hexadecimal


a) 10001 c) 111100111 e) 11011.101
b) 1001101 d) 1010101.01011 f) 1000001.001

1.18 Complete as seguintes conversões


a) ( 100111 )2 = ( )8 = ( )16
b) ( )2 = ( 1234 )8 = ( )16
c) ( )2 = ( )8 = ( 1AD )16

1.19 Converta os seguintes números para decimal


a) (11010)2 d) (4321)5 g) (A98)16
b) (10111.101)2 e) (1007)8 h) (120B)16
c) (12012)3 f) (1.5)8 i) (0.B)16

3
1.20 Converta o número 10.3 para decimal, admitindo que este se encontra representado . . .
a) . . . em base 5. c) . . . em base 8.
b) . . . em base 6. d) . . . em hexadecimal.

1.21 Converta o número (2004)10 para cada uma das seguintes bases
a) Base 8 c) Base 5
b) Base 16

1.22 Converta o número (103.25)10 para cada uma das seguintes bases
a) Base 2
b) Base 8
c) Base 16
d) Será possı́vel representar correctamente este número na base 5? Justifique.

1.23 Efectue as seguintes operações em binário


a) 110010 + 1011 d) 1111 − 1001
b) 111111 + 1 e) 1101011 − 101
c) 1010.01 + 10101.011 f) 100100 − 10111

1.24 Efectua as seguintes operações em octal:


a) 5 + 1, 5 + 2, 5 + 3 e) 1333.45 + 654.073
b) 15 + 1, 15 + 5, 15 + 12, 15 + 16 f) 375 − 123
c) 123 + 55 g) 1723 − 372
d) 10777 + 1 h) 100100 − 10111

1.25 Efectue as seguintes operações em hexadecimal


a) 8 + 1, 8 + 2, 8 + 3, 8 + 7 f) DEF.23 + 222.ABC
b) B + 1, B + 2, B + 4, B + 6, B + 7 g) ABC − 123
c) 8 + B, 18 + B, B + B, F + E
d) ABC + 101 h) 1723 − 372
e) ABC + ABC i) 100100 − 10111

1.26 Calcule o resultado das seguintes operações:


a) (1562)8 + (733)8 e) (1000101)2 + (110)2 i) (1506)16 − (723)16
b) (3377)8 + (737)8 f) (101110)2 + (10111)2 j) (10FD)16 − (DEF)16
c) (1562)16 + (733)16 g) (1576)8 − (723)8 k) (1001001)2 − (110)2
d) (10FD)16 + (ABC)16 h) (1506)8 − (737)8 l) (100000)2 − (10111)2

4
1.27 Utilizando 8 bits e notação em complemento para 2, escreva uma representação binária
para os seguintes valores inteiros:
a) −1 c) −128 e) −39
b) −2 d) −18 f) −124

1.28 Seria possı́vel representar o número 130 nas condições do exercı́cio anterior? Justifique
a sua resposta.

1.29 Utilizando 5 bits e notação em complemento para 2, calcule o resultado das seguintes
operações. (Faça as operações sobre as representações em binário dos números e para
cada uma delas indique se existe overflow )
a) −8 + 6 c) 3 − 5 e) 7 − 5
b) −13 − 5 d) 8 + 8

1.30 Um aluno escreveu um programa e, para seu espanto, quando o estava a testar verificou
que a operação 125 + 4 deu como resultado −127 . . .
Explique o que se terá passado.

1.31 Indique o valor dos seguintes números, admitindo que estes são inteiros com sinal,
representados em complemento para 2 num sistema de 8 bits:
a) 0101 1000 c) 1000 0000 e) 1111 1111
b) 0000 1110 d) 1001 1100

1.32 Obtenha a representação dos seguintes números, em complemento para 2 num sistema
de 4 bits.
a) 3 c) 0 e) −1
b) 6 d) −2 f) −8

1.33 Obtenha a representação dos seguintes números, em complemento para 2 num sistema
de 8 bits.
a) 8 d) 101 g) −3
b) 33 e) 0 h) −96
c) 64 f) −1 i) −128

1.34 Calcule o resultado das seguintes operações, num sistema de 8 bits que usa representação
em complemento para 2. Confirme, convertendo os operandos e o resultado para
decimal.
a) 0000 1110 + 1001 1100
b) 0101 1000 + 1111 1111
c) 0101 1000 + 0100 0100

5
1.35 Transforme os seguintes números inteiros, representados num sistema de 8 bits que usa
representação em magnitude, para um sistema idêntico com 16 bits.
a) 0011 0101
b) 1100 0001

1.36 Transforme os seguintes números inteiros, representados num sistema de 8 bits que
usa representação em magnitude, para um sistema de 8 bits que usa representação em
complemento para 2.
a) 1011 0100
b) 1100 0001

1.37 Transforme os seguintes números inteiros, representados num sistema de 8 bits que usa
representação em complemento para 2, para um sistema idêntico com 16 bits.
a) 0011 0101
b) 1100 0001

1.38 Considere a tabela do código ASCII:


B6B5B4
B3B2B1B0 000 001 010 011 100 101 110 111
0000 NULL DLE SP 0 @ P ` p
0001 SOH DC1 ! 1 A Q a q
0010 STX DC2 “ 2 B R b r
0011 ETX DC3 # 3 C S c s
0100 EOT DC4 $ 4 D T d t
0101 ENQ NAK % 5 E U e u
0110 ACK SYN & 6 F V f v
0111 BEL ETB ‘ 7 G W g w
1000 BS CAN ( 8 H X h x
1001 HT EM ) 9 I Y i y
1010 LF SUB * : J Z j z
1011 VT ESC + ; K [ k {
1100 FF FS , < L \ l |
1101 CR GS - = M ] m }
1110 SO RS . > N ^ n ~
1111 SI US / ? O _ o DEL

a) Sabendo que o código ASCII do C maiúsculo é 1000011 qual será o código ASCII
das letras maiúsculas A, B e F?
b) Qual o código ASCII das mesmas letras em decimal?
c) Quais os últimos quatro bits do código ASCII do algarismo 5?
d) Indique qual a diferença entre o código ASCII de uma letra maiúscula e minúscula.
e) Coloque por ordem (de codificação) os seguintes caracteres: AbC$0%B.

1.39 Escreva o seu primeiro nome usando o código ASCII.

6
Capı́tulo 2

Funções Lógicas

2.1 Tendo em conta os circuitos, construa as respectivas tabelas de verdade.


(Inclua todas as variáveis assinaladas).
a) A c) A
X Y
B
B X
b) A
X
B

2.2 Utilizando tabelas de verdade, mostre que:


a) x + y = x y b) x + y z = (x + y) (x + z)

2.3 Escreva a tabela de verdade correspondente a cada uma das seguintes funções lógicas:

a) f = x + y d) f = x(y + z) + x y
b) f = x + y + z e) f = (x + w) (x + y)
c) f = x + y + z

2.4 Obtenha as expressões algébricas correspondentes aos seguintes circuitos:


a) A c) A
X
B X
B
C

b) A d) X
F
X Y
B Z

2.5 Desenhe o circuito correspondente às seguintes funções lógicas:


a) f =x+y e) f = (x + w) (x + y)
b) f =x+y+z f) x = ab + bc + abc
c) f =x+y+z g) x = (a + b) (b + c)
d) f = x(y + z) + x y h) f = xyz + x + w · xy
7
2.6 Calcule e simplifique.
a) x + 1 para ambos os valores de x.
b) x · 1 para ambos os valores de x.
c) x · x̄ para ambos os valores de x.
d) x + x̄ para ambos os valores de x.

2.7 Simplifique:
a) x + 1 d) x (x + 0) g) x + 1 + x
b) x y + 1 e) x + x y
c) x + 0 + x f) (x y + 1) · z

2.8 Sabendo que a b = 0 e que a = b, quais serão os valores lógicos de a e b?

2.9 Usando as propriedades da álgebra de Boole, mostre que:


a) a b c + a = a g) y + xz + xy = x + y + z
b) x (x y) + x y = x h) xy + yz = y + xz
c) a b + a b = a b + a b i) x + y + z + x y (x + z) = x + y z
d) a b c + a b c = a c j) (a + a b)(a + b) = a
e) a (b + c) + b c = a + b k) xy + xz + yz = xy + xz
f) a b + b c + a b + b c = 1 l) xy + yz + xz = xy + yz + xz

2.10 Mostre que (x + y) (x + z) (y + z) = (x + y) (x + z),


a) utilizando tabelas de verdade.
b) utilizando manipulações algébricas.

2.11 Utilizando manipulações algébricas e sabendo que a b = 0 e a + b = 1, mostre que


a) a(c + b c + b c) + b c = c
b) a c + a b + b c = b + c
c) b(a c + c) + a(b c + c) + a c + b c = 1

2.12 Considere o seguinte circuito:

A
B

 
a) Indique a função lógica correspondente a f , extraı́da directamente a partir do cir-
cuito.
b) Simplifique a função anterior recorrendo às propriedades da álgebra de Boole.

8
c) Desenhe o esquema do circuito correspondente à simplificação da alı́nea anterior.

2.13 Indique a tabela de verdade e o circuito correspondentes a cada uma das seguintes
funções
a) f = x y z + x y z + x y z
b) f = x y z + x y z + x y z + x y z
c) f = w x y z + w x y z + w x y z + w x y z

2.14 Considere uma função lógica de 3 variáveis x, y e z.


a) Quantos termos mı́nimos existem nessa função?
b) Quantos termos mı́nimos contêm apenas uma variável negada?
c) Quais os termos mı́nimos incluı́dos na expressão x z?
d) Quais os termos mı́nimos incluı́dos na expressão y?

2.15 Indique uma expressão algébrica correspondente a uma função de 3 variáveis que:
a) tome o valor lógico 1 para as combinações de entrada 0 0 0, 0 1 0 e 1 1 1 (e 0 nos
restantes casos).
b) tome o valor lógico 1 quando duas ou mais variáveis de entrada tomam o valor lógico
1, e 0 caso contrário.
c) Simplifique as expressões obtidas nas alı́neas anteriores.

2.16 Consoante os casos, complete a tabela de verdade ou então escreva a expressão da soma
de termos mı́nimos correspondente.
a) x = ab + ab c) x= e) x=

a b x a b x a b x
0 0 0 0 0 0 0 1
0 1 0 1 1 0 1 1
1 0 1 0 1 1 0 0
1 1 1 1 0 1 1 1

b) f = x y z + x y z + x y z d) f= f) f = x y z + x y z + x y z

x y z f x y z f x y z f
0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 1 1 0 0 1
0 1 0 0 1 0 0 0 1 0
0 1 1 0 1 1 0 0 1 1
1 0 0 1 0 0 1 1 0 0
1 0 1 1 0 1 1 1 0 1
1 1 0 1 1 0 0 1 1 0
1 1 1 1 1 1 0 1 1 1

9
2.17 A partir dos seguintes mapas de Karnaugh, obtenha uma expressão simplificada para
a função lógica correspondente.
a) BC d) BC g) BC
A 00 01 11 10 A 00 01 11 10 A 00 01 11 10
0 1 0 1 1 0 1 1 1 1
1 1 1 1 1 1 1 1 1

b) CD e) CD h) YZ
AB 00 01 11 10 AB 00 01 11 10 WX 00 01 11 10
00 1 1 00 1 1 00

01 1 1 01 1 1 1 1 01 1

11 1 11 11 1 1 1 1

10 10 1 1 10 1 1 1

 
CD f) i) YZ
c) ZW
WX 00 01 11 10
AB 00 01 11 10 XY 00 01 11 10
00 1 1 1 00 1 1 1
00 1 1 1 1
01 1 1 1 01 1 1 1 1 01 1 1

11 1 1 11 1 11 1 1

10 1 1 10 10 1

   

2.18 Indique os termos mı́nimos correspondentes ao valor lógico 1 do seguinte mapa de


Karnaugh:
CD
AB 00 01 11 10
00 1

01 1

11 1

10 1

2.19 Para cada um dos seguintes mapas


YZ YZ YZ
WX 00 01 11 10 WX 00 01 11 10 WX 00 01 11 10
00 00 00 1

01 1 01 1 1 01

11 1 1 11 1 1 11 1 1

10 10 10 1

   
a) Indique os termos mı́nimos correspondentes aos ’1’s do mapa.
b) Indique o(s) termo(s) produto correspondente(s) à simplificação do mapa.
c) Obtenha o(s) mesmo(s) termo(s) produto através de uma simplificação algébrica.

10
2.20 Assinale num mapa de Karnaugh com 4 variáveis (x, y, z, w)
a) Todos os termos mı́nimos contendo z w.
b) Todos os termos mı́nimos contendo x.
c) Todos os termos mı́nimos contendo x y z.

2.21 Considere a seguinte função:

f (x, y, z) = x y z + x y z + x z

a) Simplifique a função usando um mapa de Karnaugh.


b) Obtenha o mesmo resultado algebricamente.

2.22 Obtenha as funções simplificadas a partir dos seguintes mapas de Karnaugh, onde ×
representa uma saı́da não especificada (indiferença):
a) BC c) CD e) CD
A 00 01 11 10 AB 00 01 11 10 AB 00 01 11 10
0 x 1 00 1 00 x 1
1 x 1 x 01 1 1 x 01 1 x x
  11 x 1 11 x
10 1 10 x 1

b) CD d) CD
AB 00 01 11 10 AB 00 01 11 10
00 x 1 00
01 x 1 x 01 x x 1 1
11 1 x 1 1 11 x x 1
10 1 10 x x
 

2.23 Dado o seguinte mapa de Karnaugh, obtenha a função lógica correspondente.


ZW
XY 00 01 11 10
00 1 1

01 1 1 1

11 1 1 1

10 1

 
2.24 Simplifique as seguintes funções, expressas como soma de termos mı́nimos, recorrendo
a um mapa de Karnaugh:

a) f (a, b, c) = m(0, 2, 4, 6, 7)

b) f (a, b, c, d) = m(0, 2, 4, 6, 8, 10, 11, 12, 14, 15)

c) f (x, y, z, w) = m(0, 1, 5, 8, 9, 10, 11, 13, 15)

11
Capı́tulo 3

Circuitos Combinatórios

3.1 Pretende-se projectar um circuito com o seguinte comportamento:


• Saı́da a 1 para combinações x y z contendo apenas um 1 (ex: 100, 010)
• Saı́da a 0 para combinações x y z contendo apenas um 0 (ex: 110, 011)

a) Projecte o circuito admitindo que nos restantes casos a saı́da assume o valor lógico 0.
b) Projecte o circuito admitindo que nos restantes casos é indiferente o valor lógico da
saı́da.

3.2 Projecte um circuito com dois pares de entradas, de 2 bits cada uma, representando
dois números A e B. A saı́da do circuito deverá assinalar 1 no caso do valor de A ser
maior ou igual ao número B.

3.3 Projecte um circuito no qual a saı́da toma o valor lógico 1 sempre que à entrada seja
apresentada uma representação em binário de um múltiplo de 2 ou de 3. O número
máximo que pode ser apresentado à entrada é o 15.

3.4 Elabore um circuito combinatório que calcule a soma de um par de números de 2 bits.
Tenha em atenção que o resultado vem representado em 3 bits.

3.5 Com base na tabela de verdade do XOR, simplifique as seguintes expressões:


a) x ⊕ 0 c) x ⊕ x
b) x ⊕ 1 d) x ⊕ x

3.6 Através de uma tabela de verdade e confirmando depois por manipulações algébricas,
verifique a seguinte relação:
x y ⊕ x + y = x ⊕ y.

3.7 Dispondo apenas de portas NAND de duas entradas e portas NOT, desenhe um circuito
que seja equivalente a:
a) uma porta lógica OR de 3 entradas. c) uma porta lógica XNOR.
b) uma porta lógica AND de 3 entradas.

13
3.8 Utilizando propriedades e teoremas da álgebra de Boole, demonstre as seguintes igual-
dades:
a) (x + y) ⊕ (x + z) = x (y ⊕ z)
b) (a ⊕ b) a + a b = a b
c) (a ⊕ c) b + b c + a c = a b + c

d) f (a, b, c) = (a + b)c + (a ⊕ c) a b = m(3, 5, 6, 7)
e) (y + z) (x ⊕ y) + x + y z = x + y z)

3.9 Considere o seguinte circuito:

A
B
F

 
a) Qual a função lógica correspondente a este circuito?
b) Utilizando manipulações algébricas, simplifique a função obtida na alı́nea anterior,
de modo a transformá-la numa soma de produtos.

3.10 Considere o seguinte circuito:


Vcc

Vcc

A
F
B

GND
 
a) Construa a tabela de verdade de F em função das variáveis lógicas A e B. Nota: a
Vcc corresponde o valor lógico 1 e a GND o valor lógico 0.
b) Utilizando propriedades e teoremas da álgebra de Boole, simplifique o circuito e
confirme o resultado da alı́nea anterior.

3.11 Quantas linhas de entrada terá . . .


a) . . . um multiplexer com 4 selectores?
b) . . . um descodificador com 32 saı́das?
c) . . . um codificador com 3 saı́das?

14
3.12 Desenhe o esquema interno de
a) Um multiplexer 2–1.
b) Um multiplexer 2–1 com linha de enable.
c) Um codificador 8/3.

3.13 Escreva uma expressão para a função lógica correspondente à saı́da de . . .


a) . . . um multiplexer 2–1.
b) . . . um multiplexer 4–1.

3.14 Considere um descodificador 2/4 com uma linha de enable.


a) Desenhe um possı́vel esquema eléctrico deste descodificador.
b) Utilizando descodificadores deste tipo e portas NOT, elabore um esquema equivalente
a um descodificador 3/8.

3.15 Considere o seguinte circuito:

C
B S
A

a) Complete a tabela de verdade da função S.


b) Mostre que T = AB + AC + BC e complete a sua tabela de verdade.
c) Implemente T utilizando um descodificador 3/8 e portas OR.
d) Implemente S usando um multiplexer 4–1 e portas NOT.

3.16 Considere a seguinte função:



f (a, b, c) = m(0, 1, 3, 4).

a) Elabore o esquema de um circuito que realize a função f , utilizando apenas um


descodificador 3/8 e portas lógicas OR.
b) Elabore o esquema de um circuito que realize a função f utilizando apenas um
multiplexer 8–1.
c) Elabore o esquema de um circuito que realize a função f utilizando apenas um
multiplexer 4–1 e portas lógicas NOT.
d) Elabore o esquema de um circuito que realize a função f utilizando apenas descodi-
ficadores 2/4, portas lógicas OR e multiplexers 2–1.

15
3.17 Considere o seguinte circuito:

DEC 2/4

X A0 D0
Y A1 D1 F
D2
D3
G

a) Escreva as tabelas de verdade correspondentes a F e G, em função das variáveis de


entrada X e Y.
b) Elabore um circuito equivalente utilizando apenas 2 multiplexers 4–1.

3.18 Utilizando multiplexers 2–1, proponha um circuito equivalente a um multiplexer 4–1.

3.19 Dispondo apenas de um descodificador 2/4, 4 multiplexers 2–1, e lógica adicional à sua
escolha, projecte um circuito equivalente a um multiplexer 8–1.

3.20 Qual a função lógica desempenhada pelo seguinte circuito?

MUX 4-1

A S0
S1
B
D0 Y F
C D1
D2
D D3

3.21 Considere o seguinte circuito e os tempos de propagação indicados ao lado:

A
tpd
B X NOT 3ns
C AND–2 5ns
OR–3 6ns
D

a) Quanto tempo demora a saı́da X a responder a cada uma das seguintes variações nas
entradas (as combinações estão indicadas usando a ordem A B C D):
•0000→0001
•0100→1100
•0010→0110
b) Qual o pior caso de propagação?
c) Transforme o circuito num outro que só contenha portas lógicas NAND (com quais-
quer número de entradas).

16
3.22 Considere o seguinte circuito e as especificações temporais referentes às várias portas
lógicas:

Y tpLH tpHL
AND 21ns 23ns
X W
NAND 18ns 18ns
Z NOT 7ns 8ns

Tendo em conta a forma de onda na entrada X, trace os diagramas temporais referentes


aos nı́veis lógicos em Y, Z e W. Para simplificar, considere que as variações de sinal são
sempre na vertical.

1
X
0

20 50 t (ns)

 
3.23 Considere os seguintes circuitos:
X
X
F F
Y
Y Z
   

X
F
Y

 
a) Elabore uma tabela de verdade para cada um dos circuitos.
b) Determine, para cada um dos circuitos, o pior caso de atraso de propagação das
entradas para a saı́da, dadas as seguintes caracterı́sticas temporais das portas NAND:
(indique também uma situação em que ocorra o pior caso)
i) tpd = tpLH = tpHL = 10ns;
ii) tpLH = 9ns; tpHL = 10ns.

3.24 Considere o seguinte circuito:


A
F
B

a) Indique a expressão lógica de F e mostre (algebricamente) que este circuito é equi-


valente a uma porta XOR.
b) Considerando que cada porta lógica tem um tempo de propagação de 5 ns, qual será
o pior caso de propagação do circuito? Identifique uma situação onde se aplique esse
caso.

17
3.25 Considere o seguinte circuito:

MUX 4-1

X S0
Y S1
tpLH tpHL

D0
MUX (selectores ⇒ saı́da) 21ns 23ns
Y F
Z D1
MUX (entradas ⇒ saı́da) 18ns 18ns
D2 NOT 7ns 8ns
Vcc
D3

a) Construa a tabela de verdade correspondente a F em função das entradas X Y e Z.


b) Escreva uma expressão lógica para F.
c) Tendo em conta a tabela, qual o pior tempo de propagação deste circuito? Em que
situação é que acontece o pior caso?

3.26 Considere o seguinte circuito e as especificações temporais dadas pela tabela (considere
tpLH = tpHL para todas as portas lógicas):

tpd
A Y
B AND 9ns
Z
OR 15ns
C
NOT 5ns
D X

 
a) Suponha que todas variáveis se encontram com o valor lógico 0. Se o circuito se
encontrar estabilizado, qual será o valor lógico na saı́da Z?
b) Nas condições da alı́nea anterior, mudou-se o nı́vel lógico da variável B para 1.
Quanto tempo demorará até que a saı́da varie?
c) Suponha novamente que todas as variáveis se encontram a 0 e o circuito se encontra
estabilizado. Trace um diagrama temporal das formas de onda nos pontos X, Y e Z,
supondo que em t = 0 a variável C vai a 1, descendo novamente para 0 em t = 40ns.
d) Para este circuito, indique uma situação em que ocorra o pior caso de propagação.
Quanto tempo de atraso corresponde ao pior caso? Qual o caminho crı́tico?

3.27 Considere a seguinte função, dada por uma soma de termos mı́nimos

F(X, Y, Z, W) = m(0, 2, 4, 6, 9, 14),

com indiferenças em m1 , m8 e m12 .


a) Obtenha uma expressão para F utilizando um mapa de Karnaugh.
b) Elabore um esquema do circuito resultante, tendo em conta o material existente no
laboratório.
c) Qual o pior caso de propagação do circuito? (utilize os valores máximos dos tempos
de propagação dados no catálogo)
d) Obtenha um circuito equivalente utilizando apenas portas NAND e NOT.

18
e) Qual o pior caso de propagação do novo circuito?
Compare com o obtido na alı́nea c) e comente.

3.28 Pretende-se projectar um circuito que calcule o valor do bit de paridade numa sequência
de 3 bits. (O bit de paridade toma o valor lógico 1 quando o número de 1’s na sequência
for ı́mpar, e 0 caso contrário.)

a) Projecte o circuito, admitindo que tem o seguinte funcionamento: são apresentados


os 3 bits à entrada; a saı́da será 1 no caso do número de 1s apresentados à entrada
ser par, e será 0 caso contrário.
Sugestão: manipule algebricamente a expressão resultante do mapa de Karnaugh.
b) Qual o pior caso de propagação do seu circuito? Utilize os tempos de propagação
máximos definidos no catálogo dos circuitos integrados.

19
Capı́tulo 4

Circuitos Sequenciais

4.1 Considere o seguinte circuito sequencial:


A
B Y

 
a) Tendo em conta as formas de onda representadas para A e B, esboce a forma de onda
correspondente à saı́da Y. Assinale as eventuais situações em que não se possa prever
teoricamente qual o valor de Y.

Y
t

b) A este circuito  corresponde um dos latches estudados nas aulas da disciplina. Qual
será esse latch? Indique também a que correspondem os sinais A, B e Y.

4.2 O Zé fez a demonstração da montagem de um circuito ao professor. Ao fazer a de-


monstração, colocou às entradas do circuito uma sequência de valores lógicos, obtendo
os resultados sintetizados na seguinte tabela:

Entradas Saı́da
0 0 1
0 1 0
1 1 0
0 1 1
0 0 1
Justificando com base na tabela, indique se o circuito montado pelo Zé é combinatório
ou sequencial
21
4.3 Explique qual a diferença de funcionamento entre um latch S R e um latch S R.

4.4 Considere o seguinte circuito:

A
Y

Z
C
 
a) Complete a seguinte tabela, supondo que às entradas A, B e C é apresentada a
sequência de valores lógicos, tenha em conta que podem existir situações que não
consegue prever teoricamente.

A B C Y Z
0 1 1 0 1
0 1 0
0 0 0
1 0 0
1 1 0
1 1 1
1 0 1

b) A este circuito corresponde um dos latches estudados. Qual?


c) Quais as designações que daria a A, B, C, Y, e Z?

4.5 Pretende-se projectar um circuito que se comporta como um elevador de 4 andares (em
que cada andar é representado por um estado). A direcção do elevador é controlada
por uma variável A: A = 0 desce, A = 1 sobe.

a) Desenhe um diagrama de transição de estados que corresponda a este problema.


b) A partir do diagrama, obtenha a tabela de transição de estados.
c) Obtenha as expressões lógicas das entradas dos flip–flops, assumindo que se usam
flip–flops do tipo D.
d) Desenhe o esquema do circuito.

4.6 Um dado circuito sequencial utiliza dois flip–flops do tipo D (FFA e FFB ). O referido
circuito contém ainda duas entradas X e Y, e uma saı́da Z. As equações que definem
este circuito são dadas por:

DA = X Y + X A DB = X B + X A Z = X B,

em que DA e DB correspondem às entradas dos flip–flops; A e B definem o estado


actual.

22
a) Este circuito seguirá o modelo de Moore ou o de Mealy ? Justifique.
b) Desenhe o esquema eléctrico deste circuito.
c) Obtenha a tabela de transição de estados.
d) A partir da tabela, desenhe o diagrama de estados.

4.7 Considere o seguinte circuito sequencial:

X Y

D D

C C

CLK

X é a entrada deste circuito e Y é a sua saı́da.


a) Justifique a afirmação: este circuito segue o modelo de Mealy.
b) A partir do circuito obtenha a tabela de transição de estados.
c) Com base na tabela de transição de estados, obtenha o diagrama de estados.

4.8 Utilizando flip–flops D e lógica adicional, construa um circuito que implemente o


seguinte diagrama de estados:

1/0
1/1

A B

0/1

0/0
0/1 1/1

23
4.9 Considere o seguinte diagrama de estados:

A/00 B/11
0 0
1

1
C/01 0 F/01 1

0,1
1
D/11 E/00
0 0

 
a) Este diagrama segue o modelo de Mealy, ou o de Moore?
b) Quantas entradas e quantas saı́das terá o circuito sequencial correspondente a este
diagrama de estados?
c) Quantos flip–flops serão necessários para construir o circuito? Justifique.
d) Projecte um circuito correspondente a este diagrama de estados.
e) Suponha que os tempos de propagação de cada porta lógica e os tempos tı́picos de
cada flip–flops são os dados na seguinte tabela. Qual será a frequência máxima
do sinal de relógio para a qual o circuito projectado ainda funciona correctamente?

tpd (portas lógicas) 8ns


tpd (flip–flops) 10ns
tS (setup) 4ns
tH (hold ) 3ns

4.10 Um circuito sequencial com uma entrada X comporta-se do seguinte modo: quando
X se encontra a 1, o circuito segue a sequência de estados 00 10 11 01 00 10 11. . .
Quando X se encontra a 0, o circuito permanece no estado em que se encontra nessa
altura.
a) Projecte este circuito.
b) Calcule a frequência máxima do sinal de relógio para o circuito projectado, assu-
mindo as temporizações dadas no exercı́cio anterior.

4.11 Pretende-se projectar um circuito com uma variável de entrada X e com o seguinte
comportamento:
• se X se encontra a 0, efectua uma contagem ascendente de 0 a 7, voltando depois
a 0 e repetindo.
• se X se encontra a 1 efectua uma contagem descendente de 7 a 0, voltando depois
a 7 e repetindo.
Os valores das saı́das deverão depender apenas das variáveis de estado.

24
4.12 Pretende-se projectar um circuito sequencial que compare dois números inteiros. O
circuito deverá ter duas entradas X e Y onde surgem, em série, os bits dos 2 números
a ser comparados (os bits de menor peso surgem em primeiro lugar). As saı́das do
circuito deverão indicar, em cada instante, se X > Y, X = Y, ou X < Y.

4.13 Projecte um circuito sequencial sı́ncrono que seja capaz de detectar erros num protocolo
de comunicação do tipo Handshake. Neste protocolo de comunicação existem duas
linhas designadas Request (R), utilizada pele emissor, e Acknowledge (A), utilizada pelo
receptor. Numa comunicação sem erros passa-se a seguinte sequência de acções:
1. O emissor activa a linha de Request;
2. O receptor responde activando a linha de Acknowledge;
3. O emissor desactiva a linha de Request;
4. O receptor desactiva a linha de Acknowledge.
Uma situação de erro no protocolo ocorre quando esta sequência não é seguida. Na
figura ilustram-se as formas de onda correspondentes à situação normal e uma das
possı́veis situações de erro. Mal um erro seja detectado, a saı́da deverá imediata-
mente ser activada, permanecendo nesse estado até ser feita uma inicialização (Reset)
à máquina.

CLK

Erro
 
4.14 Projecte um circuito sequencial com uma entrada série por onde vão aparecendo os
bits de um dado número inteiro (com um número arbitrário de bits), entrando o de
menor peso em primeiro lugar. O circuito deverá calcular o complemento para 2 desse
número, apresentando os seus bits numa saı́da série (com o de menor peso primeiro).
Assuma que tanto os bits de entrada como os de saı́da encontram-se sincronizados com
o sinal de relógio.

4.15 A partir de um registo de 4 bits com carregamento sı́ncrono, elabore o esquema de um


circuito que permita efectuar as seguintes operações:
•Carregamento em paralelo do registo.
•Complementar os dados armazenados no registo.
•Deslocamento para a direita.
•Clear sı́ncrono.
Utilize adicionalmente circuitos combinatórios à sua escolha.

4.16 A partir de um registo de 8 bits, e outros circuitos à sua escolha, elabore o esquema de
um circuito que permita o carregamento sı́ncrono do registo, e efectuar multiplicações

25
do número armazenado por 4, 8 e 16 (suponha que o número a carregar é composto
por 4 bits).

4.17 Utilizando registos e os circuitos combinatórios que desejar, elabore o projecto de um


sistema com 3 registos de 4 bits — A, B e C —, controlados por 3 variáveis S2 , S1 e S0 ,
que efectuam as operações descritas na tabela:

S2 S1 S0 Operação
0 0 0 Divisão inteira do conteúdo de A por 2
0 0 1 Multiplicar o conteúdo de A por 2
0 1 0 Guardar os valores de A + B em C
0 1 1 Copiar o valor de A para B
1 0 0 Clear dos registos
1 0 1 Carregamento paralelo de A
1 1 0 Carregamento paralelo de B
1 1 1 Carregamento paralelo de C
Nota: faça as assunções que entender em relação aos registos utilizados.

4.18 A partir de um contador binário de 4 bits com carregamento sı́ncrono e lógica adicional,
elabore o esquema de um circuito correspondente um contador BCD.

4.19 Utilizando flip–flops D edge–triggered e portas lógicas adicionais, projecte um con-


tador binário de 3 bits.

4.20 Utilizando como base um contador binário de 3 bits com carregamento sı́ncrono, pro-
jecte um circuito correspondente ao seguinte diagrama de estados:

X/00 X/01
0 1 2

0/01 1/00 1/00 X/10

5 4 3
X/10 0/11
 

26
4.21 Considere o seguinte diagrama de transição de estados:

1
0
01/0
00/1
1
0

1
11/1

a) Partindo do estado 00 e mantendo a entrada do circuito a 0, faça um diagrama


temporal que mostre a evolução do estado e da(s) saı́da(s) ao longo de 3 ciclos do
relógio.
b) Projecte um circuito que corresponda a este diagrama de transição de estados. Tome
as opções que entender e explique o raciocı́nio sempre que achar conveniente.

4.22 Considere o seguinte diagrama de transição de estados:

0 1 1

a) O diagrama apresentado está muito incompleto. Complete-o sabendo que:


• se a entrada estiver a 0 no momento em que há um estı́mulo do sinal de relógio,
o circuito complementa o estado;
• o circuito tem uma saı́da que dá 1 quando o valor apresentado na entrada é
igual ao valor do estado em que o circuito se encontra, e 0 caso contrário.
b) Utilizando flip–flops do tipo D, projecte um circuito com uma entrada A e uma
saı́da S, que corresponda ao diagrama que completou na alı́nea anterior.

4.23 Considere a seguinte tabela de transição de estados, referente a um circuito sequencial


com uma entrada A, duas variáveis de estado, Q1 e Q0 , e uma saı́da S.

Q1 Q0 A Q′1 Q′0 S
0 0 0 1 0 1
0 0 1 1 1 0
0 1 0 × × ×
0 1 1 × × ×
1 0 0 0 0 1
1 0 1 1 1 0
1 1 0 0 0 1
1 1 1 1 1 1

27
a) Com base na tabela de transição de estados, justifique que o circuito segue o modelo
de Mealy.
b) Desenhe o diagrama de transição de estados do circuito.
c) Utilizando flip–flops do tipo D, projecte um circuito que corresponda à tabela de
transição de estados anterior.
d) Considere as temporizações indicadas na seguinte tabela:

tPD portas lógicas NOT 5ns


tPD portas lógicas de 2 entradas 10ns
tPD portas lógicas de 3 ou mais entradas 15ns
tPD flip–flops 20ns
tSetup flip–flops 5ns
tHold flip–flops 5ns

Com base nessas temporizações, calcule, para o circuito que desenhou na questão
anterior:
i) O pior atraso desde o momento em que ocorre uma transição do sinal de relógio
até à actualização da saı́da S (assumindo que o valor de A está estável).
ii) A frequência máxima de funcionamento do circuito.

4.24 Considere o seguinte contador binário de 3 bits:

Ctr-3
P2 Q2
P1 Q1
P0 Q0

LD
CE TC
SR
Clock

O contador tem a possibilidade de realizar carregamento paralelo (LD) e reset (SR)


sı́ncronos, em que SR prevalece sobre LD no caso de ambos os sinais estarem activos.
Possui também uma entrada de count enable (CE), que possibilita contar ou manter o
estado, e uma saı́da terminal count (TC) que assinala o último estado da sequência de
contagem.
a) Explique qual diferença entre sinais de controlo sı́ncronos e assı́ncronos.
b) Acrescentando um mı́nimo de portas lógicas na figura do contador em cima, apre-
sente o esquema de um circuito que siga a sequência de estados 0→1→2→3→6→7,
permanecendo depois em 7 até que seja feito um reset manual.
c) No circuito desenhado na questão anterior, qual seria a sequência de estados seguida
no caso do contador se auto-inicializar no estado 4?

28
4.25 Considere um circuito sequencial com 3 estados (A a C), uma entrada T e uma saı́da S,
que tem o seguinte comportamento:

• se T = 0, o circuito vai para o estado A;

• se T = 1, o circuito vai ficar a alternar entre os estados B e C, ficando um ciclo


de relógio em cada estado;

• a saı́da S toma o valor lógico 1 quando o circuito está no estado C; e 0 caso


contrário.

a) Desenhe um diagrama de transição de estados que corresponda a este circuito.


b) Projecte o circuito.

4.26 Considere o contador binário de 3 bits com carregamento paralelo (LD) representado na
figura. Mantendo a possibilidade de fazer load, sugira uma forma de acrescentar a pos-
sibilidade de também fazer reset. Pode utilizar os circuitos combinatórios que entender.

Ctr-3
P2 Q2
P1 Q1
P0 Q0

LD
Clock

4.27 Considere as seguintes formas de onda, obtidas num circuito sequencial com uma en-
trada A e uma saı́da S. T0 a T2 são os primeiros 3 ciclos do sinal de relógio.

T0 T1 T2
Clock

 
a) Encontre nas formas de onda uma situação em que se evidencie que este circuito
segue o modelo de Mealy. Justifique.
b) Sabe-se que o circuito está nos estados E0 , E1 e E2 nos intervalos de tempo T0 , T1
e T2 , respectivamente. Sendo assim, complete os valores em falta nas ligações do
seguinte diagrama de transição de estados, tendo em conta as formas de onda.

29
E1

1/1
E0

E2
1/0

 
4.28 Considere o seguinte circuito, construı́do a partir de um contador de 4 bits, com carre-
gamento paralelo (load) e reset, ambos sı́ncronos com o sinal de relógio:

CTR-4
Vcc
P3 Q3
P2 Q2
P1 Q1
P0 Q0

Load
Reset
Clock

a) O que entende por carregamento paralelo sı́ncrono?


b) Partindo do estado “0000”, indique a sequência de estados seguida por este circuito,
explicando o que sucede sempre que achar apropriado.

4.29 Projecte um circuito que implemente o seguinte diagrama de transição de estados:

1
00 01
0
1
0

0 10
1

30
4.30 As seguintes formas de onda dizem respeito à evolução temporal das entradas A e B,
bem como da saı́da F, de um determinado circuito em teste.

A
B

F
T1 T2 T3 T4 T5

Com base nas formas de onda justifique a afirmação:


“O circuito em teste é um circuito sequencial.”

4.31 Suponha que tem à sua disposição um contador de 4 bits com carregamento paralelo e
reset sı́ncronos com o sinal do relógio.

CTR-4
P3 Q3
P2 Q2 RS PL Operação
P1 Q1
1 × Reset
P0 Q0
0 1 Carregamento paralelo
PL 0 0 Contar normalmente
RS

Com base num contador deste tipo e lógica adicional que ache necessária, projecte um
circuito que segue a sequência de estados . . . 0, 1, 2, 3, 9, 10, 11, 12, 0, 1, 2, . . .
Note que a contagem “salta” do 3 para o 9 e que depois do 12 volta a 0.

4.32 Considere o seguinte circuito sequencial:

X D0 Q0 D1 Q1

Clock
 
a) Escreva as equações de entrada nos flip-flops e a equação de saı́da do circuito.
b) Apresente a tabela de transição de estados, assim como o diagrama de estados.

31
c) Qual a função do sinal de relógio no circuito sequencial representado na figura? Re-
presente num diagrama temporal as variáveis de estado Q1 e Q0 e a saı́da Y quando
a entrada X tem o seguinte comportamento:

Clock
X 1
Q 1 0

Q1 0
Y
 

32
Capı́tulo 5

Memórias

5.1 Indique as principais diferenças entre uma memória do tipo ROM e uma memória do
tipo RAM.

5.2 Justifique a seguinte afirmação:


“Uma memória ROM pura é um circuito combinatório.”

5.3 Quantos Bytes estarão armazenados numa memória ROM, . . .


a) indexada através de 16 linhas de endereçamento e com 4 linhas de dados de saı́da?
b) indexada através de 8 linhas de endereçamento e com 8 linhas de dados de saı́da?
c) indexada através de 10 linhas de endereçamento e 16 linhas de dados de saı́da?

5.4 Projecte uma memória ROM com o seguinte conteúdo:


Endereço Conteúdo
0 01
1 00
2 11
3 10

a) Utilize apenas um descodificador e portas OR.


b) Utilize apenas multiplexers.
c) Utilize apenas portas lógicas.

5.5 Com base nos tempos de propagação definidos no catálogos dos circuitos integrados,
calcule o tempo de acesso à memória projectada em cada uma das alı́neas do exercı́cio
anterior.

5.6 Utilizando o material que achar adequado, projecte uma memória ROM com o seguinte
conteúdo:

33
Endereço Conteúdo
0 011
1 101
2 000
3 110
4 111
5 101
6 100
7 110

5.7 Discuta as vantagens/desvantagens em utilizar uma memória do tipo EEPROM num


sistema onde são efectuadas operações de escrita e leitura na memória.

5.8 Em que consiste uma memória EPROM? Indique os passos necessários para reprogra-
mar uma memória deste tipo.

5.9 Classifique cada um tipos de memória quanto aos factores listados.

Tipos de memória:
• RAM
• ROM
• PROM
• Flash EEPROM
Factores:
• Possibilidade de escrita rápida.
• Possibilidade de leitura rápida.
• Possibilidade de múltiplas re-escritas.
• Possibilidade de apagar o conteúdo através de circuitos eléctricos.
• Volatibilidade.

5.10 Pretendem-se implementar as seguintes funções lógicas utilizando apenas uma ROM
8 × 4 bits.

F0 =A+B
F1 = AC
F2 =A⊕C
F3 =B+C

Indique o esquema de ligações a efectuar, bem como o conteúdo da ROM utilizada.

5.11 Calcule:
a) O número de palavras que uma memória com 12 linhas para endereçamento consegue
armazenar.

34
b) Qual o número de endereços numa memória com 10 linhas de endereço.
c) A capacidade (em bytes) de uma memória com 12 linhas para endereçamento e
8 linhas de dados.
d) A capacidade de uma memória com 10 linhas de endereço e 16 linhas de dados.
e) Qual o número total de endereços numa memória com uma capacidade de 16 KBytes
e palavras de 16bits.
f) O número de bits para especificar endereços numa memória com uma capacidade de
32KBytes, organizada segundo palavras de 4 Bytes.

5.12 Utilizando como base circuitos de memórias SRAM 1K × 8 bits, com sinais R/W, CS, e
saı́das tri-state, elabore o esquema de um sistema de memória com:
a) 1K × 16 bits
b) 4K × 8 bits
c) 4K × 16 bits

5.13 Uma dada RAM tem as seguintes caracterı́sticas temporais:


Tacesso/leitura = 8 ns
Tescrita = 10 ns
Supondo que o relógio do sistema tem uma frequência de 333MHz, quantos ciclos de
relógio serão necessários para efectuar uma leitura? E uma escrita?

5.14 Elabore uma comparação entre uma RAM estática e uma RAM dinâmica, atendendo
aos seguintes factores de comparação:

a) Constituição das células de memória;


b) Preço (para a mesma capacidade);
c) Dimensão fı́sica (para a mesma capacidade);
d) Rapidez de acesso para leitura e escrita;
e) Utilização tı́pica.

5.15 É comum encontrar buffers tri–state nas saı́das de dados (e também entradas) das
memórias. Explique a utilidade deste tipo de portas lógicas.

5.16 O João comprou para o seu computador uma memória DRAM com 2GBytes.
a) Indique o número mı́nimo de linhas de endereços necessárias para indexar correcta-
mente esta memória, sabendo que em cada endereço são guardados 64 bits.
b) Sabendo que no computador do João já existiam 2 memórias DRAM com capacidade
de 1GByte cada uma, elabore um possı́vel esquema da organização da memória no
computador do João, após a ligação da nova memória.

5.17 Num dado sistema, os barramentos contém 32 linhas de dados e 24 de endereços. Um


microprocessador utiliza-os para comunicar com a memória RAM. Qual poderá ser a
dimensão máxima (em bytes) dessa RAM?

35
5.18 Pretende-se projectar um banco de memória para um brinquedo. Tanto o barramento
de endereços como o de dados possuem 8 linhas. O espaço de endereçamento deverá
ser projectado atendendo às seguintes condições:
• No inı́cio do espaço de endereçamento deverá ficar situada uma ROM com uma
dimensão de 64Bytes. A ROM possui um sinal de output enable activo a HIGH.
• A partir do endereço 0x80 deverá estar um bloco de RAM com 96Bytes. Possuem-
se circuitos RAM de 32×8 bits com entrada chip select activa a LOW.

5.19 Projecte um banco de memória para um pequeno sistema com um barramento de


endereços de 12 bits e um barramento de dados de 8 bits. O seu projecto deverá
obedecer às seguintes caracterı́sticas:
• a primeira metade do espaço total de endereçamento fı́sico deverá corresponder
à memória RAM;
• a memória ROM deverá estar situada entre os endereços 0xC00 e 0xFFF;
• o sistema deverá ainda activar uma linha de erro caso o processador tente aceder
a um endereço inválido (i.e., um endereço que não corresponde nem à RAM nem
à ROM).
Dispõe apenas de chips RAM 1K×8 e ROM 1K×8, todos com uma entrada CS (chip
select) activa a 0. Pode utilizar quaisquer circuitos combinatórios à sua escolha. Elabore
todos os esquemas que achar conveniente.

5.20 Um microprocessador comunica com o exterior através de barramentos com 16 linhas


de endereços e 8 linhas de dados. Pretende-se ligar a esse barramento um banco de
memória ROM e outro de memória RAM.
• A RAM deverá possuir 12KBytes e deverá estar situada a partir do endereço
0×8000.
• A ROM está dividida em duas zonas: uma zona com 8K no inı́cio do espaço de
endereçamento; e uma zona de 4K a partir do endereço 0×C000.

a) Dispondo de RAMs e ROMs 4K×8 (com entradas chip select / output enable activos
a HIGH), elabore o esquema destes bancos de memória.
b) Substitua toda a lógica combinatória referente à descodificação de endereços da
alı́nea anterior por uma PROM cuja dimensão, estruturação e conteúdo será total-
mente especificada por si.

36
Capı́tulo 6

Arquitectura Básica
de um Processador

6.1 Considere que tem à sua disposição 2 registos (R1 e R2) com carregamento paralelo e
clear sı́ncronos, assim como os blocos de lógica combinatória que entender.

a) Apresente um esquema para um circuito capaz de efectuar as seguintes operações:


• Inicializar R2 ← 0, R1 ← 0
• Carregar R1 ← Din (Din vem de um Bus de dados externo)
• Transferir R2 ← R1
• Somar R2 ← R2 + R1
b) Suponha que as operações são controladas
através de duas variáveis de controlo, X1 e X0 , Operação X1 X0
de acordo com a tabela representada ao lado.
Inicializar 0 0
Projecte um circuito combinatório que, a partir
Carregar 0 1
dos valores de X1 e X0 , gera os sinais a aplicar aos
Transferir 1 0
componentes de modo a que sejam feitas cada
Somar 1 1
uma das operações pretendidas.

6.2 Considere o seguinte esquema, no qual os registos bidireccionais R0 a R2 estão ligados


a um Bus comum. Para cada registo, o controlo do fluxo de dados é feito através das
entradas load (carregar dados do Bus) e enable (colocar dados no Bus).

a) Indique uma sequência de sinais a aplicar aos re-


gistos, de modo a trocar o conteúdo de R0 com
o conteúdo de R1, usando R2 para guardar dados L0 Load
R0
temporários. E0 Enable

b) Com base num contador com count enable, projecte L1 Load


um circuito sequencial que permita efectuar essa R1
E1 Enable
troca quando se activa uma variável T. Admita que
o circuito parte de um estado NOP, que não faz nada, L2 Load
e que volta para esse estado depois de fazer a troca R2
E2 Enable
(admita que uma vez iniciada, a troca se processa
até ser finalizada).  
37
6.3 Considere o seguinte esquema de um datapath:

LE RB0
RB1

S1 S 0
Load
R0 0 BUS B
1 MUX-­‐B
2
DEC-D 3
Load
0
R1
1
2
A0 A1 3 Load
R2
0
1
BUS A
RD0 RD1
2 MUX-­‐A
Load
R3 3
S1 S 0

RA1
RA0

Endereços

Data out

F
Deslocamento H
E
ALU

0 1
MD MF S MUX-F

BUS D 0
MUX-D Data in
1

 
Funcionamento da ALU: Funcionamento do bloco de deslocamento:
Operação F2 F1 F0 Operação H1 H0
A |B 0 0 0 B 0 0
A ⊕B 0 0 1 B >> 1 0 1
A &B 0 1 0 B << 1 1 0
A 0 1 1 B << 2 1 1
A 1 0 0
A +1 1 0 1 Sinais de controlo para acesso à memória:
A +B 1 1 0 ME — activação da memória
A −B 1 1 1 RW — 0 para leitura; 1 para escrita
Formato de uma palavra de controlo:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

RD RB RA LE F H MF MD ME RW

38
a) Qual será a finalidade dos seguintes componentes?
1. Multiplexers MUX-A e MUX-B
2. Descodificador DEC-D
3. Multiplexer MUX-F
4. Multiplexer MUX-D
b) Indique uma palavra de controlo que corresponda a cada uma das seguintes operações:
1. R1 ← R0 + R2
2. R3 ← R2 << 1
3. R3 ← M[R2]
4. M[R1] ← R2
c) Indique qual a operação correspondente a cada uma das seguintes palavras de con-
trolo (representadas em hexadecimal):
1. Ox5FC0
2. Ox2343
d) Proponha alterações ao esquema de forma a possibilitar a implementação de operações
do tipo:
1. Rk ← (Ri + Rj ) << 1
2. M[Rk ] ← Ri + Rj
e) Considere os seguintes tempos de atraso associados a cada componente do esquema:
• Descodificador 2/4: 10 ns
• Multiplexer 4–1: 10ns; Multiplexer 2–1: 7.5 ns
• ALU: 15 ns; Bloco de deslocamento: 10 ns
• Tacesso à memória = 20ns
• Portas lógica AND: 5ns
• Registo: 10ns
Com base nestes tempos de atraso, calcule o intervalo de tempo mı́nimo que deverá
demorar cada ciclo do sinal de relógio, de modo a assegurar que as operações são
feitas correctamente.

39
6.4 Considere a seguinte unidade aritmética. Pretende-se implementar as operações indi-
cadas na tabela.

A
?

0 1 2 3
S1 F1
MUX
S0 F0
Z

OP A OPB
F1 F0 Operação
Somador de n bits Cin ? 0 0 A+B
Σ 0 1 A+1
1 0 A−1
R 1 1 A−B

a) Que ligações devem ser feitas nas entradas de dados do bloco de multiplexagem?
b) Qual será o valor do transporte inicial, Cin , para cada um dos casos?
c) Qual a relação entre o transporte inicial e as variáveis de controlo?

6.5 As operações lógicas bit-a-bit permitem implementar máscaras, que servem para ma-
nipular ou extrair bits especı́ficos de dados ou instruções, que estejam guardadas num
registo. Considere o seguinte exemplo:

R1 ← R0 & 0x001F.

A micro-instrução anterior, fazendo uso da operação binária AND, carrega no registo R1


o valor correspondente aos 5 bits menos significativos do registo R0.
Na resolução das alı́neas que se seguem, assuma que os registos são de 16 bits e que tem à
sua disposição as operações lógicas e as operações de deslocamento que atender.
a) Carregar o registo R1 com o valor correspondente aos 7 bits menos significativos do
registo R0.
b) Colocar a 1 os 5 bits mais significativos do registo R0, mantendo os restantes inalte-
rados.
c) Carregar em R1 o valor que é dado pelos bits R0[4...7] (bits de ordem 4 a 7 do
registo R0) — é necessário utilizar também um deslocamento.
d) Negar os 6 bits mais significativos do registo R0, mantendo os restantes inalterados.
e) Carregar os 8 bits mais significativos de R1 com os 8 bits menos significativos de R0,
mantendo os restantes bits inalterados.

40
6.6 Considere o seguinte datapath, que é controlado por uma unidade multi-ciclo micropro-
gramada. Admita que as palavras são de 16 bits.
LE RD RB RA
3 3 3
MEMÓRIA

(0) PC BUS A 0:
1:
(1) IR
Din 2:
(2) AC 3:
Endereços 4:
(3) SP
5:
(4) TMPA Dout 6:
8:
(5) TMPB
9:
(6) 0x0FFF 10:
...
(7) 0x00FF

0 1
BUS B MUX SA ME RW

3
F
ALU N
Z

Na tabela seguinte resumem-se as operações realizadas na ALU:

Operação F
A & B 000
A | B 001
A 010
∼A 011
A + B 100
A + 1 101
A << 1 110
A >> 1 111

As palavras de controlo têm a seguinte estrutura:


1 1 1 1 3 3 3 3
ME RW SA LE F RD RB RA

Considere que as micro-instruções encontram-se armazenadas numa ROM com 256


palavras, contendo as sequências de micro-instruções necessárias para cada instrução.

41
Na tabela seguinte, representa-se o conteúdo (incompleto) da referida ROM:

Endereço Conteúdo
(hex) ME RW SA LE F RD RB RA Micro-instrução
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
0x08

a) Preencha a tabela com uma sequência de micro-instruções que corresponda ao fetch


de uma instrução. Recorde que o fetch deixa no registo IR uma instrução armazenada
na posição de memória indicada por PC, e incrementa posteriormente valor de PC.
Admita que o fetch se encontra na ROM a partir do endereço 0x00.
b) A partir da posição de memória 0x02, determine uma sequência de micro-instruções
que realize a instrução
incr addr,
que incrementa o conteúdo de memória indicado pela posição addr. Admita que o
OPCODE da instrução são 4 bits, e que a instrução já se encontra carregada no
registo IR.
c) Qual a dimensão máxima da memória que esta arquitectura permite?
d) Se a limitação vier da instrução da alı́nea b), qual é agora a dimensão máxima para
esta arquitectura?

42
Capı́tulo 7

Programação em assembly
do MAC1-Pro

7.1 Indique o conteúdo da posição de memória x após a execução do seguinte programa:


jump main
x: 7
y : 13
main : lodd x
subd y
stod x
halt

7.2 Complete o seguinte programa por forma a trocar os valores guardados em x e y.

jump main
x: 7
y: 9
main : ...

7.3 Considere o seguinte programa:

jump main
i: 0
main : loco 1
addd i
stod i
loco 4 # PONTO 1
subd i
jnze main
halt

a) Quantas vezes passa no “Ponto 1”?


b) Qual o valor de i em cada passagem?
c) Escreva um possı́vel código equivalente a este programa (em Java por exemplo).

43
7.4 Escreva um programa em assembly correspondente ao seguinte pseudo-código:

int x =6 , y =2 , f =0 , g =0 , h =0;

f = x - y;
g = -y ;
h = 2 * y + x;

7.5 Considere o seguinte programa:

int x =2 , y =3;
int m =0;

if ( y < x )
m = y;
else
m = x;

a) O que faz este programa?


b) Escreva um programa equivalente em assembly e teste com outros valores de x e y.

7.6 Considere o seguinte programa, que calcula m = a × b pelo método das adições suces-
sivas:
int a =2 , b =3;
int m =0 , i =0;

while ( i < b )
{
m = m + a;
i = i + 1;
}

Escreva um programa equivalente em assembly. Repare que a implementação do ciclo


while requer a utilização de instruções de salto. Projecte o programa de modo a que
m fique guardado no acumulador quando o programa termina.

7.7 Considere o seguinte programa:

jump main
x: 5
y: 2
main : lodd x
push
lodd y
stod x
pop
stod y
halt

Observando o código, descubra o que faz este programa.

44
7.8 Considere o seguinte programa:

jump main

a: 3
b: 2

main : lodd a
push
lodd b
push # ponto 1
call func
insp 2
push
push # ponto 2
call func
insp 2
halt

func : lodl 1 # ponto 3


addl 2
retn

Faça uma representação dos valores que estão na pilha logo após serem executadas as
instruções assinaladas com “ponto 1, 2 e 3”. Note que o programa passa 2 vezes pelo
“ponto 3” — represente os valores na pilha para ambas as situações.

7.9 Pretende-se desenvolver um pequeno procedimento, chamado esc alg, que recebe por
argumento um valor inteiro entre 0 e 9 e escreve o algarismo correspondente no ecrã.

a) Escreva o código assembly de esc alg.


b) Teste esc alg, fazendo um programa que escreva no ecrã todos os algarismos entre
0 e 9.

7.10 Considere a função maximo, que devolve o valor máximo entre dois inteiros x e y:

int maximo ( int x , int y )


{
if ( y > x )
return y ;

return x ;
}

a) Escreva uma função equivalente em assembly.


b) Teste a função, escrevendo um programa equivalente ao seguinte:

45
main ()
{
int M = maximo (3 ,5);
esc_alg ( M );
}

onde esc alg é a função desenvolvida no problema 7.9.

7.11 Considere o seguinte pseudo-código, que diz respeito a uma função que calcula o resto
da divisão inteira entre dois inteiros positivos, a e b:

int resto ( int a , int b )


{
int r = a ;
while ( r >= b )
{
r = r - b;
}
return r ;
}

Escreva uma função equivalente em assembly.

7.12 Escreva uma função mult que calcula o produto de dois números inteiros positivos,
passados nos argumentos.

7.13 Escreva uma função, chamada fact, que calcula o factorial de um número n ≥ 0.

7.14 Considere o seguinte programa escrito na linguagem assembly do processador Mac1-Pro:

main : loco u
push
pshi # ponto 1
loco 1
addl 1
popi # ponto 2
loco 2
addl 0
pshi # ponto 3
lodl 1
popi # ponto 4
insp 1
halt

u: 5 6 7 # vector u - começa na posiç~


a o de memória 13

Sem implementar o programa, indique os valores que estão na pilha, no acumulador


e guardados no vector ‘u’, logo após serem executadas as instruções assinaladas nos
pontos 1, 2, 3 e 4 do programa.

46
7.15 Faça uma função que recebe um vector de inteiros, e calcula a média (inteira) dos seus
valores. A função recebe como argumentos a referência (endereço) para o inı́cio do
vector, e o comprimento do mesmo.

7.16 Implemente um procedimento chamado show str que mostra no ecrã uma string.
Assume-se que uma string é termina pelo caracter ASCII 0. O argumento da função é
uma referência para o inı́cio da string, tal como é feito no seguinte exemplo:

jump main

str1 : .string " Uma coisa qualquer "


0

main : loco str1


push
call show_str
insp 1
halt

show_str : ...

7.17 Com base no procedimento da alı́nea anterior, implemente uma função que conta o
número de ocorrências de um dado carácter numa string. A função recebe por argu-
mentos uma referência para a string e o carácter a procurar.

7.18 Implemente uma função chamada power que calcula np de acordo com a seguinte re-
corrência: {
1, p = 0
power(n, p) =
n × power(n − 1, p), n > 0

7.19 Pretende-se implementar um método que escreva no ecrã qualquer número inteiro po-
sitivo n. Para tal é necessário separar e enviar para o écrã os vários algarismos que
compõem esse inteiro, o que pode ser resolvido através do seguinte método recursivo:

void show_number ( int n )


{
if (n >=10)
show_number ( n /10);

system . out ( n %10);


}

Os sı́mbolos ‘%’ e ‘/’ designam “resto” e “quociente” da divisão inteira, respectivamente.


Escreva em assembly o método show number.
Nota: o resto da divisão inteira pode ser calculado recorrendo à instrução modl e o
quociente à instrução divl.

47
Instrução Efeito Descrição
loco n AC ← n load constant
lodd addr AC ← M[addr] load direct
stod addr M[addr] ← AC store direct
addd addr AC ← AC + M[addr] addd direct
subd addr AC ← AC - M[addr] subtract direct
jpos P if AC ≥ 0 then PC ← P jump if positive
jneg P if AC < 0 then PC ← P jump if negative
jzer P if AC == 0 then PC ← P jump if zero
jnze P if AC != 0 then PC ← P jump if not zero
jump P PC ← P unconditional jump
lodl idx AC ← M[SP + idx] load local
stol idx M[SP + idx] ← AC store local
addl idx AC ← AC + M[SP + idx] add local
subl idx AC ← AC - M[SP + idx] subtract local
mull idx AC ← AC × M[SP + idx] multiply local
divl idx AC ← AC / M[SP + idx] divide local
modl idx AC ← AC mod M[SP + idx] module local
incl idx M[SP + idx] ← M[SP + idx] + 1 increment local
decl idx M[SP + idx] ← M[SP + idx] - 1 decrement local
call f SP ← SP - 1 call function
M[SP] ← PC
PC ← f
retn PC ← M[SP] return
SP ← SP + 1
push SP ← SP - 1 push
M[SP] ← AC
pop AC ← M[SP] pop
SP ← SP + 1
insp n SP ← SP + n increment stack pointer
desp n SP ← SP - n decrement stack pointer
pshi SP ← SP - 1 push indirect
M[SP] ← M[AC]
popi M[AC] ← M[SP] pop indirect
SP ← SP + 1
halt — halt

48
Soluções
1.1 a) 5,6,7,10,11 1.6
b) 3,4,10,11 n 2n
c) 0,1,10,11,100,101 1 2
d) 9,A,B,C,D,E,F,10,11,12 2 4
3 8
4 16
1.2 a) 11,44,88,FF 5 32
b) 100,100,100,100 6 64
7 128
c) 100 em todas 8 256
9 512
1.3 a) 0111 10 1024
b) 888
c) FFF 1.7 a) 8
b) 31
1.4 a) 73 c) 257
b) 838 d) 254
c) 4349 e) 18
d) 6.125 f) 29
e) 25.921875
f) 10.75
1.8 a) 1 0000 0000
1.5 b) 1111 1111
c) 10 0010
Octal Binário d) 1 1111 1110
0 000
e) 11 1111 1110
1 001 f) 10 0000 0011
2 010
3 011
4 100
5 101 1.9 a) 5
6 110 b) 6
7 111
c) 7
d) 7
Hexadecimal Binário
e) 9
0 0000
1 0001 f) 10
2 0010 g) 10
3 011
4 0100
h) 11
5 0101
6 0110
7 111 1.10
8 1000
9 1001 11 8+2+1 23 + 21 + 20 1011
A 1010
B 1011 80 64+16 26 + 24 1010000
C 1100
161 128+32+1 27 + 25 + 20 10100001
D 1101
E 1110 178 128+32+16+2 27 + 25 + 24 + 21 10110010
F 1111
1.11 a) 11001
b) 100 1011

49
c) 10 0000 0001 b) 0001 1100 1011
d) 1 0010 1100 c) 1010 1011 1100.00110101
e) 111 1101 0100 d) 1111 1110.11111111
f) 10.011 f) 10 1010 0001.0001101
g) 1100010.11
h) 11111.1011
i) 0.0001100110011. . . 1.17 d) 11
a) 4D
b) 1E7
1.12 a) 5 c) 55.58
b) 130 e) 1B.A
c) 170 f) 21.2
d) 2000
e) 776
1.18 a) ( 100111 )2 = ( 47 )8 = ( 27 )16
f) 3734
b) ( 1010011100 )2 = ( 1234 )8 =
g) 2.6
( 29C )16
h) 3.1
c) ( 110101101 )2 = ( 655 )8 =
i) 144.24
( 1AD )16

1.13 a) 35
1.19 a) 26
b) 7F
b) 23.625
c) 80
c) 140
d) 1AA
d) 586
e) 598
e) 519
f) DDDD
f) 1.625
h) FE.F
g) 2712
g) 1AC.5
h) 4619
i) 0.A66. . .
i) 0.6875

1.14 a) 1000011
1.20 a) 5.6
b) 11001000
b) 6.5
c) 1111111101
c) 8.375
d) 101.100101
d) 16.1875
e) 10111011.01
f) 10011110001.101
1.21 a) 3724
b) 7D4
1.15 a) 111
c) 31004
b) 355
c) 756
d) 7.7 1.22 a) 1100111.01
e) 0.2 b) 147.1
f) 31.67 c) 67.4
d) Não
1.16 e) 10000
a) 0011 1010

50
1.23 a) 111101 f) 1000 0100
b) 1000000
c) 11111.101
1.28 Não.
d) 110
e) 1100110 1.29 a) 11110
f) 1101 b) 01100 (overflow )
c) 11110
d) 10000 (overflow )
1.24 a) 6,7,10
e) 00010
b) 16,22,27,33
c) 200
d) 11000 1.30 O aluno está a usar uma repre-
e) 2207.543 sentação em complemento para 2 com 8 bits,
f) 252 e nessa representação, o maior número posi-
g) 1331 tivo que pode ser representado é 127.
h) 67767
1.31 a) 88
b) 14
1.25 a) 9,A,B,F c) −128
b) C,D,F,11,12 d) −100
c) 13,23,16,D e) −1
d) BBD
e) 1578
f) 1011.CEC 1.32 a) 0011
g) 999 b) 0110
h) 13B1 c) 0000
i) EFFEF d) 1110
e) 1111
f) 1000
1.26 a) 2515
b) 4336
c) 1C95 1.33 a) 0000 1000
d) 1BB9 b) 0010 0001
e) 1001011 c) 0100 0000
f) 1000101 d) 0110 0101
g) 653 e) 0000 0000
h) 547 f) 1111 1111
i) DE3 g) 1111 1101
j) 30E h) 1010 0000
k) 1000011 i) 1000 0000
l) 1001
1.34 a) 1010 1010
1.27 a) 1111 1111 b) 0101 0111
b) 1111 1110 c) 1001 1100
c) 1000 0000
d) 1110 1110 a) 0000 0000 00110101
1.35
e) 1101 1001 b) 1000 0000 01000001

51
b) x y z x + yz (x + y)(x + z)
1.36 a) 1100 1100 0 0 0 0 0
b) 1011 1111 0 0 1 0 0
0 1 0 0 0
0 1 1 1 1
1.37 a) 0000 0000 0011 0101 1 0 0 1 1
b) 1111 1111 1100 0001 1 0 1 1 1
1 1 0 1 1
1 1 1 1 1
1.38 a) A=1000001,B=1000010,F=1000110
b) A=65,B=66,F=70 2.3 a) x y f
c) 0101
d) Minuscula=32+Maiuscula 0 0 1
0 1 1
e) $%0ABCb
1 0 0
1 1 1
2.1 a) A B X b) x y z f
0 0 0 0 0 0 1
0 1 1 0 0 1 0
1 0 0 0 1 0 0
1 1 0 0 1 1 0
b) 1 0 0 1
A B X 1 0 1 1
0 0 1 1 1 0 1
0 1 0 1 1 1 1
1 0 1
c) x y z f
1 1 1
c) 0 0 0 0
A B X Y 0 0 1 0
0 0 0 0 0 1 0 0
0 1 0 0 0 1 1 0
1 0 0 1 1 0 0 0
1 1 1 1 1 0 1 0
1 1 0 1
2.2 a) 1 1 1 0
x y x+y x+y x y xy
0 0 0 1 1 1 1 d) x y z f
0 1 1 0 1 0 0
0 0 0 0
1 0 1 0 0 1 0
0 0 1 1
1 1 1 0 0 0 0
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 1

52
e) x y w f d) x
e) x
0 0 0 0
f) z
0 0 1 0
0 1 0 0 g) 1
0 1 1 1 a = 1, b = 0
2.8
1 0 0 1
1 0 1 1
1 1 0 1 2.10 a)
1 1 1 1

2.4 a) X = A + B x y z (x + y)(x + z)(y + z) (x + y)(x + z)


b) X = A B + A B
0 0 0 0 0
c) X = (A + B) B C 0 0 1 0 0
a) 0 1 0 1 1
2.5 x 0 1 1 1 1
f
y 1 0 0 0 0
1 0 1 1 1
b) 1 1 0 0 0
x
f 1 1 1 1 1

y
2.12 a) F = (A B + A + C) (A + C)
z
b) F = AB C
c) c)
x A
y B

f F
z C

d) x 2.13 a) x y z f
y
0 0 0 0
z f
0 0 1 1
0 1 0 1
0 1 1 0
e) 1 0 0 0
y 1 0 1 1
x 1 1 0 0
f 1 1 1 0

z x

2.6 a) 1
b) x y
f
c) 0
d) 1
z
2.7 a) 1
b) 1
c) x

53
b) x y z f w

0 0 0 1
0 0 1 1
0 1 0 0 x
0 1 1 0
f
1 0 0 1
1 0 1 0
1 1 0 0 y
1 1 1 1

x
z

2.14 a) 8
y
b) 3
f c) x y z, xyz
d) xyz, xy z, x yz, x y z
z
2.15 a) f = x y z + xyz + x y z
b) f = xy z + xyz + x yz + x y z
c) alı́nea a) f = x z + x y z,
alı́nea b) f = x y + xy z + xyz
c) w x y z f
2.16 a) x = ab + ab
0 0 0 0 1
0 0 0 1 0 a b x
0 0 1 0 0 0 0 0
0 0 1 1 0 0 1 1
0 1 0 0 0 1 0 0
0 1 0 1 0 1 1 1
0 1 1 0 0
0 1 1 1 0
1 0 0 0 1 b) f = x y z + x y z + x y z
1 0 0 1 0
1 0 1 0 0 x y z f
1 0 1 1 0 0 0 0 0
1 1 0 0 1 0 0 1 1
1 1 0 1 0 0 1 0 1
1 1 1 0 0 0 1 1 0
1 1 1 1 1 1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 0

54
c) x = ab + ab 2.18 m0 = A B C D, m5 = A B C D,
m9 = A B C D, m14 = A B C D
a b x
0 0 0 2.19 a) m(7, 13, 15), m(5, 7, 13, 15)
0 1 1 e m(2, 10, 12, 14)
1 0 1 b) x y z + w xy z, x z, w x z + x y z
1 1 0
2.20 a) zw
xy 00 01 11 10
d) x = ab c + a bc + a b c 00 0 0 0 0
01 0 0 0 0
a b c x
11 0 1 1 0
0 0 0 0
0 0 1 1 10 0 1 1 0
0 1 0 0
0 1 1 0 b) zw
1 0 0 1 xy 00 01 11 10
1 0 1 1 00 1 1 1 1
1 1 0 0 01 0 0 0 0
1 1 1 0
11 0 0 0 0
10 1 1 1 1
e) x = ab + a b + a b

a b x c) zw
xy 00 01 11 10
0 0 1 00 0 0 0 0
0 1 1
1 0 0 01 0 1 0 0
1 1 1 11 0 1 0 0
10 0 0 0 0
f) f = x y z + x y z + x y z

x y z f 2.21 a) f = xy + x z
0 0 0 0 2.22 a) f = BC
0 0 1 1 b) f = AB + C D
0 1 0 1
c) f = C D + A BC
0 1 1 0
1 0 0 0 d) f = A B + BD
1 0 1 1 e) f = AD + B D
1 1 0 0
1 1 1 0 2.23 f = zw + z y + x y z

2.24 a) f = c + a b
2.17 a) f = BC + AC
b) f = d + a c
b) f = ABD + ABC + BCD
c) f = y z + zw + x w + xy
c) f = D + AB + AC
d) f = AC + AB 3.5 a) x
e) f = BD + AB b) x
f) f = XY + XZ + XW + YZW c) 0
g) f =A+C d) 1
h) f = W X + W Y + X Y Z + W Z,
i) f = Y Z + W X Z + WX Z + W XY Z

55
3.6 x y xy ⊕ x + y x⊕y 3.12 a) S0

0 0 0 0
0 1 1 1
I0
1 0 1 1
F
1 1 0 0
I1
3.7 a)
A b) S0
B f

C
I0
b) F

A I1
B f
EN
C

c) c) I1
D0
A
I2
I3 D1
f
I4
I5
B I6 D2
I7

3.13 a) F = S0 A + S0 B
3.9 a) F = (A ⊕ B) A C
b) F = S1 S0 I0 + S1 S0 I1 + S1 S0 I2 +
b) F = A B + A B C
+S1 S0 I3

3.14 a) S1
3.10 a)
A B F
S0 D0
0 0 0
0 1 0
1 0 1
D1
1 1 0

b) F = A B D2

3.11 a) 16
b) 5 D3
c) 8
EN

56
b) d)
DEC 2/4 MUX 4-1

B S0
S0 A0 D0 D0
A S1
S1 A1 D1 D1
D2 D2 C D0 Y S
D1
S2 EN D3 D3
D2
D3

DEC 2/4

A0 D0 D4 3.16 a)
A1 D1 D5 DEC 3/8

D2 D6 c A0 D0
EN D3 D7 b A1 D1
a A2 D2
D3 f

D4
3.15 a) D5
D6
A B C S D7

0 0 0 0
0 0 1 1 b) MUX 8-1
0 1 0 1
c S0
0 1 1 0
b S1
1 0 0 1
a S2
1 0 1 0 VCC
D0
1 1 0 0
D1
1 1 1 1
D2 Y f
D3
b) D4
D5
A B C T D6
D7
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1 c)
MUX 4-1
1 0 0 0 b S0
1 0 1 1 a S1
1 1 0 1 VCC
D0 Y f
1 1 1 1
c D1
D2
c) D3
DEC 3/8

C A0 D0
B A1 D1
A A2 D2
D3
D4
D5
T
D6
D7

57
d) 3.19 DEC 2/4

S1 A0 D0
DEC 2/4
S2 A1 D1
A0 D0 S0 D2
A1 D1 D3

D2
MUX 2-1 MUX 2-1
D3
S0 S0
DEC 2/4 D0 D0
D0 Y f Y
A0 D0 D1 D1 D1
A1 D2
D1 EN
D3
D2
D4 MUX 2-1
c D3
D5
b S0
D6
a D7 D0 Y
D1

3.17 a) EN
F
X Y F G
MUX 2-1

0 0 1 0 S0
0 1 0 1 D0 Y
1 0 1 0 D1

1 1 1 1 EN

MUX 2-1

b) MUX 4-1 S0

S0 D0 Y
S1 D1
VCC
D0 Y F EN
D1
D2
D3

3.20 F = AD + ABC
MUX 4-1

Y S0
X S1
3.21 a) 6ns; 11ns; 14ns
D0 Y G
D1 b) 14ns
D2
D3
c)
A
X
B

S1
C
3.18
S0
D
MUX 2-1

S0
3.22
MUX 2-1
D0 D0 Y
D1 D1 S0 23
23
D2 Z
D0 Y F
D3 8 8
MUX 2-1 D1

S0 18 18
D0 Y X
D1
20 50 t (ns)

58
3.23 a)
x y F
3.26 a) 0
0 0 1 b) 39 ns
1) 0 1 0 c)
1 0 1
1 1 1
Z
x y z F
Y
0 0 0 1
0 0 1 1 X
0 1 0 1
2) 0 1 1 1 20 50 80 t (ns)
1 0 0 1
1 0 1 1 d) Passar de A = B = C = D = 0
1 1 0 1 a A = B = D = 0 a C = 1 com tempo de
1 1 1 0 propagação de 45 ns.

x y F 3.27 a) F = Y Z + X W + Y W
b)
0 0 0
3) 0 1 1
X

F
1 0 0 W
1 1 1
Y

b) Para circuito 1) Pior atraso ao passar Z

de 01 a 11 com tempos de (i) 20 ns, (ii) 19


ns. Para circuito 2) Pior atraso ao passar de c) Passar de X = Y = W = 0, Z = 1
111 a 110 com tempos de (i) 30 ns, (ii) 29 ns. a X = Z = 1, Y = W = 0 com tempo de
Para circuito 3) Pior atraso ao passar de 10 a propagação de 74ns.
11 com tempos de (i) 20 ns, (ii) 19 ns. d)
X

F
3.24 a) F = A B A A B B W

b) 15 ns, por exemplo ao passar de


Y
A = B = 1 a A = 1, B = 0
Z

3.25 a)
x y z f e) Passar de X = Y = W = 0, Z = 1
0 0 0 0 a X = Z = 1, Y = W = 0 com tempo de
0 0 1 0 propagação de 65ns.
0 1 0 1
0 1 1 0 3.28 a)
1 0 0 0
1 0 1 1
A2 F
1 1 0 1
A1
1 1 1 1 A0

b) F = X Z + Y Z
F = A2 (A1 ⊕ A0 ) + A2 (A1 ⊕ A0 )
c) O pior tempo de propagação é
b) 75ns, por exemplo quando passa de
49 ns. Acontece por exemplo ao passar do
A2 = A1 = A0 = 0 a A2 = A1 = 0, A0 = 1.
X = Y = 1, Z = 0 a X = Z = 1, Y = 0.

59
4.1 a) 4.6 a) Mealy
c)
A X Y A B DA DB Z
B 0 0 0 0 0 0 0
Y 0 1 0 0 1 0 0
1 0 0 0 0 0 0
1 1 0 0 0 0 0
b) Latch SR, R = A, S = B, Y = Q 0 0 0 1 0 1 0
0 1 0 1 1 1 0
4.2 a) Sequencial
1 0 0 1 0 0 1
4.4 a) 1 1 0 1 0 0 1
0 0 1 0 0 0 0
A B C Y Z 0 1 1 0 1 0 0
0 1 1 0 1 1 0 1 0 1 1 0
0 1 0 0 1 1 1 1 0 1 1 0
0 0 0 0 1 0 0 1 1 0 1 0
1 0 0 0 1 0 1 1 1 1 1 0
1 1 0 1 0 1 0 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 0 1 Indefinido d)
1x/1
b) Corresponde a um latch SR com
00/0
sinal de activação onde A = S, B =sinal ac- 1x/0 S0 S1 00/0

tivação, C = R, Z = Q,Y = Q
01/0
00/0 01/0
4.5 a) 00/0

0 0 0
S2 S3 01/0
01/0
0 S0 S1 S2 S3 1x/1
1
1x/0
1 1 1

b) 4.7 b)
A Q1 Q0 Q′1 Q′0 X A B Q′A Q′B
0 0 0 0 0 0 0 0 0 1
1 0 0 0 1 1 0 0 0 0
0 0 1 0 0 0 0 1 1 0
1 0 1 1 0 1 0 1 1 1
0 1 0 0 1 0 1 0 0 0
1 1 0 1 1 1 1 0 0 1
0 1 1 1 0 0 1 1 1 1
1 1 1 1 1 1 1 1 1 0

c) Q′0 = Q1 Q0 + A Q1 + A Q0 , c)
Q′1 = A Q0 + A Q1 + Q1 Q0 0/1

1/1 S0 S2

1/0
0/0 1/1
0/1

S1 S3
0/0

1/0

60
4.8 Tabela de transição de estados: X Q1 Q0 Q′1 Q′0
X Q1 Q0 Q′1 Q′0 Z 0 0 0 0 0
1 0 0 1 0
0 0 0 0 1 1
0 0 1 0 1
1 0 0 0 0 0
1 0 1 0 0
0 0 1 1 0 0
0 1 0 1 0
1 0 1 0 0 1
1 1 0 1 1
0 1 0 0 0 1
0 1 1 1 1
1 1 0 0 1 1
1 1 1 0 1
Q′0 = X Q1 Q0 + X Q1 Q0 ,
Q′0 = X Q0 + X Q1 ,
Q′1 = X Q1 Q0 ,
Q′1 = XQ1 + X Q0
Z = X Q1 Q0 + X Q1 Q0 + Q1 Q0
b) 33.33 MHz
4.9 a) Moore
b) Entradas: 1, Saı́das: 2
4.11 Tabela de transição de estados:
c) 3 Flips-flops
d) Tabela de transição de estados: X Q2 Q1 Q0 Q′2 Q′1 Q′0

X Q2 Q1 Q0 Q′2 Q′1 Q′0 Y Z 0 0 0 0 0 0 1


1 0 0 0 1 1 1
0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0
1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0
0 0 0 1 1 0 1 1 1 0 0 1 0 0 1 1
1 0 0 1 0 0 0 1 1 1 0 1 0 0 0 1
0 0 1 0 1 0 0 0 1 0 0 1 1 1 0 0
1 0 1 0 0 0 1 0 1 1 0 1 1 0 1 0
0 0 1 1 1 0 0 1 1 0 1 0 0 1 0 1
1 0 1 1 0 1 0 1 1 1 1 0 0 0 1 1
0 1 0 0 0 1 1 0 0 0 1 0 1 1 1 0
1 1 0 0 0 1 1 0 0 1 1 0 1 1 0 0
0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 1
1 1 0 1 1 0 1 0 1 1 1 1 0 1 0 1

Q′0 = X Q1 Q0 + Q2 Q1 + X Q2 Q0 , Q0 = Q0 ,

Q1 = XQ2 Q1 Q0 +X Q1 Q0 +Q2 Q1 Q0 +X Q2 Q1 , Q′1 = X (Q1 ⊕ Q0 ) + X (Q1 Q0 + Q1 Q0 ),
Q′2 = X Q2 Q0 + X Q2 Q1 + X Q2 Q1 Q0 , Q′2 = X Q2 Q1 + X Q2 Q1 Q0 + X Q2 (Q0 + Q1 ) +
Y = Q0 Q2 , Q1 Q0 Q2 + X Q2 Q1 Q0
Z = Q1 Q0 + Q2 Q1
4.12
e) 30 MHz
10/01
00,11/00
11,00,
S0 S1
10/01
4.10 a) Tabela de transição de estados:

10/01 01/10
01/10

S2

61
Tabela de transição de estados: 4.14
ai bi Q1 Q0 Q′1 Q′0 Z2 Z1 0/0 S0 S1 0/1
1/0

0 0 0 0 0 0 0 0 1/1

0 1 0 0 1 0 1 0
1 0 0 0 0 1 0 1 Tabela de transição de estados:
1 1 0 0 0 0 0 0 X Q0 Q′0 Z
0 0 0 1 0 1 0 1
0 0 0 0
0 1 0 1 1 0 1 0
1 0 1 1
1 0 0 1 0 1 0 1 0 1 1 1
1 1 0 1 0 1 0 1 1 1 1 0
0 0 1 0 1 0 1 0
0 1 1 0 1 0 1 0 Q′0 = Q0 + ai ,
1 0 1 0 0 1 0 1 Zi = ai ⊕ Q0
1 1 1 0 1 0 1 0 4.15
Q′0 = ai bi Q0 + ai Q1 Q0 + ai bi Q1 Q0 ,
M1 M0 Operação
Q′1 = ai bi Q1 + ai Q1 Q0 + bi Q1 Q0 ,
Z2 = Q′1 , 0 0 Carregamento paralelo
Z1 = Q′0 0 1 Complementar o estado
1 0 Deslocamento para a direita
1 1 Reset sı́ncrono
4.13 Tabela de transição de estados:
R A Q1 Q0 Q′1 Q′0 Z MUX 4-1
M0 S0
M1 S1
0 0 0 0 0 0 0
D0 D0 Y
0 1 0 0 0 0 1 D1
1 0 0 0 0 1 0 D2
D3
1 1 0 0 0 0 1
0 0 0 1 0 1 1 MUX 4-1
S0
0 1 0 1 0 1 1 S1
1 0 0 1 0 1 1 D1 D0 Y
1 1 0 1 1 0 0 D1
D2
0 0 1 0 1 0 1 D3
0 1 1 0 1 1 0
MUX 4-1
1 0 1 0 1 0 1 S0
1 1 1 0 1 0 0 S1

0 0 1 1 0 0 0 D2 D0 Y
D1
0 1 1 1 1 1 1 D2
1 0 1 1 1 1 1 D3

1 1 1 1 1 1 1 MUX 4-1
S0
00/0 00/0 S1
x1/1 01,1x/1
D3 D0 Y
S0 S3 D1
D2
D3
10/0 01/0
VCC D3 D2 D1 D0
Load
REG 4
S1 S2 CLK Q3 Q2 Q1 Q0

x0,01/1 11/0
11/0
x0/1

62
4.19 Tabela de transição de estados: 5.10 Ligam-se as variáveis A, B e C aos en-
dereços A2 , A1 e A0 ; as saı́das da memória
EN Q2 Q1 Q0 Q′2 Q′1 Q′0
correspondem às funções D0 = F0 , D1 = F1 ,
0 0 0 0 0 0 0 D2 = F2 e D3 = F3 .
1 0 0 0 0 0 1
0 0 0 1 0 0 1 Endereços Conteúdo
1 0 0 1 0 1 0 A2 A1 A0 D0 D1 D2 D3
0 0 1 0 0 1 0
1 0 1 0 0 1 1 0 0 0 0 0 0 1
0 0 1 1 0 1 1 0 0 1 0 0 1 1
1 0 1 1 1 0 0 0 1 0 1 0 0 0
0 1 0 0 1 0 0 0 1 1 1 0 1 1
1 1 0 0 1 0 1 1 0 0 1 0 1 1
0 1 0 1 1 0 1 1 0 1 1 1 0 1
1 1 0 1 1 1 0 1 1 0 1 0 1 0
0 1 1 0 1 1 0 1 1 1 1 1 0 1
1 1 1 0 1 1 1
0 1 1 1 1 1 1 5.11 a) 4K
1 1 1 1 0 0 0 b) 1K
c) 4KB (bytes)
Q′0 = EN ⊕ Q0 , d) 16Kb (bits)
Q′1 = Q1 ⊕ (Q0 EN ), e) 8K
Q′2 = Q2 ⊕ (Q1 Q0 EN ), f) 13 bits
4.20 Entrada: x, Saı́das: 5.12 a)
Y = x Q2 Q1 + Q0 (Q2 ⊕ Q1 ), 10
A0...A9
Z = x Q2 Q0 + Q1 Q0 (x + Q2 ),
1Kx8 RAM 1Kx8 RAM
Addr Addr

4.26 R/W R/W


CS CS
P0
R/W
CS
P1 CTR3

P0 Q0
D0...D7 D8...D15
P1 Q1
P2
P2 Q2
b)
LD
Clear
1Kx8 RAM
LD 10
A0...A9 Addr
CLK
R/W
CS

4.28 b) 0, 1, 2, 3, 9, 10, 11, 12, 0, 1, 2, . . . 1Kx8 RAM


Addr
2/4
5.4 a)
A10 A0 0 R/W

DEC 2/4 A11 A1 1 CS


2
A0 A0 D0 CS EN 3 1Kx8 RAM
A1 A1 Addr
D1
D2
R/W
D3
CS

1Kx8 RAM
Addr
8
D0...D7
R/W R/W
CS
D1 D0

63
6.1 a) 6.3 a)
Din

1. Selecção dos registos fonte dados para


L1 Load
R1 o Bus A e Bus B.
C1 Clear

2. Selecção do registo destino onde se vão


guardar os dados que estão no Bus D.
Adder

3. Selecção do tipo de resultado da


I0 I1
S Sel Mux 2-1 operação realizada na unidade funcio-
nal: operação aritmética-lógica (ALU)
L2 Load
ou operação de deslocamento.
R2
C2 Clear
4. Selecção do tipo de dados a escrever
b)  
nos registos: dados externos (vindos da
memória) ou dados de saı́da da unidade
Operação X1 X0 L1 C1 L2 C2 S funcional (resultados das operações).
Inicializar 0 0 × 1 × 1 ×
Carregar 0 1 1 0 0 0 × b)
Transferir 1 0 0 0 1 0 0
Somar 1 1 0 0 1 0 1 1. R1 ← R0 + R2
C1 0100 1011 10×× 000× Ox4B80
2/4
O0 C2
X0 A0
2. R3 ← R2 << 1
O1 L1
X1 A1
O2 1110 ××1× ××10 100× OxE228
O3 S
L2 3. R3 ← M[R2]
  11×× 101× ×××× ×110 OxCA06
6.2 a)
4. M[R1] ← R2
Operação L0 E0 L1 E1 L2 E2 ××10 010× ×××× ××11 Ox2403
R2 ← R1 0 0 0 1 1 0
R1 ← R0 0 1 1 0 0 0 c)
R0 ← R2 1 0 0 0 0 1

1. Ox5FC0 R1 ← R3 − R1
b)
2. Ox2343 M[R0] ← R2, R0 ← R0 + 1
T=1
T=0

NOP 1 2 3
d)

R2 R1 R1 R0 R0 R2 1. Colocar o bloco de deslocamento em


  série com a ALU.
Ctr-2
2/4 0
Q0 A0
2. Acrescentar um barramento dedicado
1 L2, E1
Q1 A1 para os endereços (bem como o respec-
CE 2 L1, E0
T tivo multiplexer e ligações) e colocar a
3 L0, E2
ligação da saı́da “Data out” depois da
Clk
unidade funcional.
 
64
e) Pretende-se contabilizar o tempo de pro- End. Conteúdo Micro-instrução
pagação associado ao caminho crı́tico que é se- 0x00 1011010001×××000 IR ← M[PC]
guido pelos dados, desde o momento em que 0x01 0×01101000×××000 PC ← PC+1
chega uma palavra de controlo ao datapath até
0x02 0×01000100110001 TMPA ← IR&0x0FFF
que se carregue o registo destino com o resul-
0x03 1011101101×××100 TMPB ← M[TMPA]+1
tado da operação pretendida. 0x04 11×0××××××101100 M[TMPA] ← TMPB
c) 216 = 64K.
Tmin = TMux 4–1 + TMux 2–1 + TRegisto + d) Se considerarmos a instrução incr,
+ max(TALU + TMux 2–1 ; TMEM ) o operando tem dimensão 12 bits, pelo que
= 10 + 7.5 × 2 + 15 + 10 = 50ns apenas é possı́vel endereçar 212 = 4K.
⇒ fmax = 1/50ns = 20MHz 7.1 −6
7.2
Notas:
jump main
x: 7
• O tempo de propagação associado ao y: 9
descodificador e portas AND decorre em tmp : 0
paralelo com o tempo indicado em cima, main : lodd x
daı́ não ser contabilizado; stod tmp
lodd y
stod x
• O tempo de propagação associado ao lodd tmp
bloco de deslocamento decorre em para- stod y
lelo com o tempo da ALU, logo também halt
não é contabilizado;
7.3 a) 4
• O acesso à memória decorre em para- b) 1, 2, 3, 4.
lelo com o tempo da unidade funcional c)
(TALU + TMux 2–1 ), logo contabiliza-se o
mais lento. Neste caso a unidade funci- int i = 0;
do {
onal é mais lenta (22.5ns contra os 20ns
i = i + 1;
da memória). } while ( i != 4);

6.4 a) Entrada 0: B; entrada 1: GND (8 7.4


bits); entrada 2:Vcc (8 bits) e entrada 3: ∼ B.
jump main
c) Cin = F0 . x: 7
y: 9
6.5 a) R1 ← R0 & 0x007F
tmp : 0
b) R0 ← R0 | 0xF800 main : lodd x
c) R1 ← (R0 >> 4) & 0x000F stod tmp
d) R0 ← R0 ⊕ 0xFC00 lodd y
e) R1 ← [(R0 << 8 ) & 0xFF00)] | stod x
(R1 & 0x00FF) lodd tmp
stod y
6.6 a) e b) halt

65
7.5 a) Guarda na variável m o menor dos 7.9 a)
valores guardados em x e y. esc_alg : loco '0 '
b) addl 1
stod 4094
jump main halt
x: 2 b)
y: 3
m: 0 main : loco 0
main : lodd y push # i = 0
subd x ciclo : lodl 0 # do ...
jpos else push
lodd y call esc_alg # esc_alg ( i )
stod m insp 1
jump fimif incl 0 # i = i + 1
else : lodd x loco 9
stod m subl 0
fimif : halt jpos ciclo # while (i <=9)
insp 1
halt
7.6
7.14 Ver no simulador MAC1-Pro.
jump main 7.15
x: 6
media : loco 0
y: 2
push # soma = 0
f: 0
push # i = 0
g: 0
ciclo : lodl 0
h: 0
subl 3
main : lodd x
jpos fimciclo
subd y
lodl 4
stod f # f = x - y
addl 0 # AC = endereco v [ i ]
loco 0
pshi
subd y
pop # AC = v [ i ]
stod g # g = -y
addl 1 # AC = v [ i ] + soma
lodd y
stol 1 # soma = soma + v [ i ]
addd y
incl 0
addd x
jump ciclomediaint
stod h # h = 2* y + x
fimciclo : lodl 1
halt
divl 3 # AC = soma / n
insp 2
retn
7.8 Ver no simulador MAC1-Pro.

66

You might also like