Anda di halaman 1dari 33

Escola Superior de Tecnologia e Gestão

Instituto Politécnico de Beja

Curso de Engenharia Informática

Arquitectura de computadores

Outubro de 2000
Problemas de Arquitectura de Computadores
Escola Superior de Tecnologia e Gestão
1º Semestre, 2000, Engenharia Informática

1. Represente as tabelas de verdade para as seguinte funções:

(
a) f (a, b, c ) = a b + c b + c )( )
(
b) f (a, b, c, d ) = a b + c b + d ( ))
c) f (a, b, c ) = ac + bc

2. Simplifique algebricamente as seguintes funções:

a) f (a, b, c, d ) = abcd + abc d + abc d + abc d + a bc d + a b c d


b) f (a, b, c ) = a + abc + b
c) f (a, b, c, d ) = ab + dabc + ab
d) f (a, b, c ) = a bc + bc + ac
e) f (a, b, c ) = (a ⊕ b )c + a(b ⊕ c )

3. Através de manipulação algébrica verifique as seguinte igualdades:

( )(
a) a + b + ab a + b ab = 0 )
( ) (
b) ab d + dc + a + dac b = b )
( )
c) b + c a + cd = cd b + c a + cd ( )
( )
d) (a + b ) a + c (b + c ) = (a + b ) a + c ( )
e) ac + ab + bc = ac + bc
f) a ⊕ b ⊕ (ab ) = a + b
g) a = a ⊕1

4. Mostre que:

a) Se a ⊕ b = 0 então a = b
b) Se a ⊕ b = a ⊕ c então b = c

5. Represente os números decimais 36; 542 e 37524 em código binário, BCD,


octal e hexadecimal.

6. Represente em hexadecimal e em BCD o número, na base octal, 573.

7. Represente em binário e decimal o número, na base hexadecimal, AF7B.

1
8. Desenhe o logigrama das seguintes funções:

( )
a) f (a, b, c, d ) = a c ⊕ d + ab + a cd + ac d
b) f (a, b, c, d ) = a b cd + abc + abc + a cd + cd + abc + ac d
( )
c) f (a, b, c, d ) = a c b ⊕ d + ab d + abd + abcd + ac d
d) f (a, b, c, d ) = abc + a c(c + d ) + a + b + d
( )(
e) f (a, b, c, d ) = a + b c + d a + c b + d )( )( )
9. Dados os seguintes logigramas, estabeleça a expressão analítica da variável
de saída em função das entradas.

a a
f b
b
c c
f
d
e

a) b)

a a
b b
c
d c
f
f
d
e

c) d)

10. Simplifique as seguintes funções utilizando mapas de Karnaugh e desenhe


os logigramas correspondentes

a) ( ( )) (
f (a, b, c, d ) = a b + (c ⊕ d ) a + b + abc + b c ⊕ d )
b) f (a, b, c, d ) = (a + b )(c + d )(a + b )(a + d )
c) f (a, b, c, d ) = (a + b + c )(c + d )(a ⊕ d )
d) f = ∑ (0,2,3, 4,5,6,7,8,10,12,13)
e) f = ∑ (0,2,6,8,9,10,12 ) , com indiferenças nas posições (1,3,4,11,13,14 )
f) f = ∑ (1,3,5,6,9,12,17,19,22,27,28,30 ) , com indiferenças nas posições
(4,11,14,20,21,25)

2
11. Implemente um circuito lógico mais simples, se possível, e apenas com
portas "nand", com a mesma função de saída que o circuito seguinte:

'1'
a

b f
c

12. Implemente um circuito lógico mais simples, se possível, e apenas com


portas "nor", com a mesma função de saída que o circuito seguinte:

a
b
c f

13. Sintetize e desenhe um circuito que realize a função


f (a , b, c ) = abc + abc + abc + a bc com o mínimo de circuitos lógicos. Desenhe as
formas de onda nos diversos pontos do circuito obtido quando as entradas
passam de abc=011 para abc=010, considerando um tempo de atraso das gates
de 10 nS. Como deve ter verificado, o circuito não se comporta como sería
desejável; sintetize e desenhe um circuito que realize a mesma função mas que
não apresente o problema anterior.

14. Desenhe o logigrama de transformação de um flip-flop JK num flip-flop T e


D.

15. Desenhe o logigrama de transformação de um flip-flop D num flip-flop T e


JK.

16. Usando um latch RS, construa um latch com entradas X e Y com a seguinte
tabela de transições:

X Y Q tn+1
0 0 Q tn
0 1 1
1 0 0
1 1 Q tn

3
17. Desenhe as formas de onda nos pontos Q1, Q2 e Z, para cinco períodos do
relógio, CLK

Z
Q1 Q2
'1' J Q D Q
CLK
CLK
CLK
K Q Q

18. Desenhe as formas de onda nos pontos Q1, Q2 e Z, para cinco períodos do
relógio, CLK

Q1 Q2 Z
'1' J J
Q Q
CLK
CLK CLK
‘1’
K Q K Q

19. Projecte e desenhe um contador síncrono utilizando flip-flops JK com


módulo de contagem 8 ou 6, conforme o valor de uma variável de controlo, C,
seja '1' ou '0', respectivamente.

20. Projecte e desenhe um circuito contador síncrono utilizando flip-flops do


tipo D, cujas saídas sejam ciclicamente (0,3,4,5,1,7,2,6) se a variável de
entrada, X, for 1, e (2,7,1,3,0,4,6,5) se X for 0.

21. Mostre qual a sequência de contagem do contador seguinte (Q2Q1Q0):

Q0 Q1 Q2
J Q D Q D Q
CLK
CLK
CLK CLK
K Q Q Q

4
22. Projecte um registo de quatro bits e um registo auxiliar de um bit, com duas
variáveis de controlo, C1 e C0, que tenha o seguinte funcionamento:

C1 C0 Função
0 0 Desloca o registo1 bit para a direita
0 1 Desloca o registo circularmente 1 bit
para a esquerda
1 0 Carrega 4 bits no registo
1 1 Desloca o registo 1 bit para a direita,
colocando o bit menos significativo
no registo auxiliar, e o conteúdo
prévio deste no bit mais significativo
(deslocamento circular pelo registo
auxiliar)

Diga como poderia utilizar este circuito para detectar se um número de quatro
bits é par ou ímpar.

23. Construa um registo de quatro bits capaz de carregar um valor em paralelo


do exterior, fazer o seu reset, executar um deslocamento circular para a
esquerda e direita, consoante o valor de duas variáveis de controlo, C1 e C0:

C1 C0 Função
0 0 Faz o reset do registo
0 1 Desloca o registo circularmente 1 bit
para a esquerda
1 0 Desloca o registo circularmente 1 bit
para a direita
1 1 Carrega 4 bits no registo

24. Construa dois registos de quatro bits (A e B) que executem as funções


descritas na tabela seguinte (função das variáveis de controlo C1 e C0):

C1 C0 Função
0 0 Passa o conteúdo de A para B
0 1 Passa o conteúdo de B para A
1 0 Troca conteúdos de A e B
1 1 Carrega em paralelo valores para os
registos

5
25. Dado o logigrama seguinte de uma máquina de estados elabore:
a) o diagrama de estados
b) o diagrama temporal da saída S, desde o momento em que a máquina se
encontra no estado Q2Q1Q0=110 até atingir o estado Q2Q1Q0=100.

Q0 Q1 Q2
D Q D Q D Q

CL K CL K CL K
Q Q Q S
CL K

26. Analise o circuito sequencial seguinte e represente o seu diagrama de


estados.

Q0 Q1
J Q J Q

CL K CL K
X
'1'
K Q K Q

CL K

Sintetize um circuito sequencial síncrono com a mesma função que o anterior,


mas utilizando flip-flops do tipo D.

27. Projecte e sintetize uma máquina sequencial síncrona que recebe em série
quatro bits de dados na linha DIN , validados no flanco ascendente de CLK. No
flanco ascendente de CLK seguinte ignora a linha DIN e coloca na saída, P, a
paridade daqueles quatro bits de dados. Esta paridade deve ser par ou impar
consoante o valor da variável de entrada P_SEL seja '1' ou '0', respectivamente.
No próximo flanco ascendente do relógio volta ao início, recebendo dados pela
linha DIN. A máquina mantém sempre o valor do último bit de paridade
calculado na linha P.

6
28. Projecte e sintetize uma máquina sequencial síncrona que recebe dados em
série pela linha DIN, validados no flanco ascendente de CLK. A máquina deve
analisar a sequência recebida e colocar a linha OUT a '1' sempre que a
sequência '011001' seja detectada, colocando OUT a '0' no próximo flanco
ascendente do relógio (desde que não seja detectada a sequência indicada, a
linha OUT deve estar a '0').

29. Considere a tabela de transições de um circuito sequencial síncrono:

Estado Estado seguinte


actual X=0 X=1 Z
A A B 0
B C E 0
C F D 1
D A C 1
E E A 1
F F B 0

em que X é a entrada do circuito e Z a saída. Implemente um circuito


sequencial síncrono que realize o funcionamento especificado pela tabela de
transições.

Simplifique a tabela e volte a implementar um circuito que a realize.

30. Indique como poderia implementar uma RAM de 8K×8 a partir de circuitos
RAM de 8K×4.

31. Projecte um circuito que funcione como uma RAM de 16K×16, utilizando
elementos de memória RAM de 4K×8.

32. Considere um sistema com um bus de endereços de 16 bits (A0 a A15), um


bus de dados de 8 bits (D0 a D7) e bus de controlo, com linhas RD , WR ,
activas a zeros para ler e escrever na memória RAM, respectivamente, e ainda
PSEN , activa a zero, para ler memória ROM. Pretende-se que o sistema tenha
uma capacidade de memória ROM de 16Kbytes, com endereço inicial em 0h, e
de memória RAM de 4Kbytes, com endereço inicial em 5000h. Dispõe de
elementos de memória ROM de 4K×8 e de memória RAM de 2K×4. Faça o
logigrama de ligações entre os diversos circuitos, as linhas de endereços, dados
e controlo do sistema, e os circuitos lógicos que achar necessários, de modo a
cumprir as especificações do sistema.

7
33. Considere as funções ( )( )(
f (a, b, c, d ) = a + b + c c + d a ⊕ d e)
( ( ))
g (a, b, c, d ) = a b + c b + d . Desenhe o logigrama de um circuito que as realize
utilizando apenas uma ROM. Indique qual o tipo de ROM necessária à
realização do circuito e qual deve ser o seu conteúdo.

34. Pretende-se construir um gerador de sequências pseudo-aleatório. A figura


seguinte ilustra um desses geradores em que, por cada ciclo de relógio, os bits
do registo são deslocados para a direita, e a saída X realimentada à entrada, i.e.,
b i = b i −1 , i ≠ 0 e b 0 = X . Escreva um programa em assembly que implemente este
gerador, escrevendo o bit de saída no ecrã.

Nota: O estado inicial do registo não pode ser nulo.

X
+ +

b0 b1 b2 b3 b4 b5 b6 b7 b8 b9

35. Projecte e sintetize um circuito com funcionamento idêntico ao do


problema 34, utilizando circuitos lógicos.

8
Problemas de Arquitectura de Computadores
(Microprocessador 8086)

Para realizar os programas pretendidos, tem disponível algumas rotinas de


entrada e saída de caracteres no teclado e monitor, respectivamente, no ficheiro
rotinas.asm:

Para ter acesso a estas rotinas no seu programa deverá incluir a directiva de
compilação:
include rotinas.asm
no início do segmento de programa. O código seguinte é um exemplo de
modelo de programa a ser utilizado quando se pretenda construir um novo
exemplo.

dados segment
dados ends

pilha segment
dw 100h dup(0)
topo label word
pilha ends

programa segment
assume cs:programa, ds:dados,ss:pilha

include rotinas.asm

begin: mov ax,dados


mov ds,dados
mov es,ax
mov ax,pilha,
mov ss,ax
lea sp,topo

código do programa

call Terminate
programa ends

end begin

9
Problemas 8086

1. Escreva um programa em assembly para o 8086 que copie o conteúdo de um


array para outro (ambos definidos na memória e com 50 bytes). Repita o
mesmo problema executando uma operação de permuta e não de cópia.

2. Escreva um programa em assembly para o 8086 que leia um caracter pelo


teclado e escreva o número de '1''s presentes no código ascii do caracter
introduzido.

3. Escreva um programa em assembly para o 8086 que leia um número em


hexadecimal pelo teclado com valor máximo de 9999d (270Fh) e escreva o seu
correspondente decimal para o ecrã.

4. Escreva um programa em assembly para o 8086 que funcione como um


alarme: deverá inicialmente ler a hora presente no computador e escrevê-la;
seguidamente solicita ao utilizador a hora, minuto e segundo a que pretende
uma mensagem de alarme, e espera que essa hora seja atingida,. Nesta altura
deverá enviar para o ecrã a mensagem pretendida.
5. Escreva uma rotina em assembly que faça um teste a uma zona de memória
pré definida, constituída por 500 bytes. Para tal deve escrever naquelas
posições de memória o byte "55h", lendo-as de seguida, e verificando se se
encontra o valor escrito. Se não houver erros retorna a flag de carry a '0'. Se
houver erros retorna a flag de carry a '1'. O conteúdo daquela zona de memória
não deve ser alterado.

6. Pretende-se um programa em assembly do 8086 que envie continuamente


para o ecrã a sequência de caracteres:

"The Quick Brown Fox Jumps Over The Lazy Dog 1234567890 DE". O
programa deverá enviar esta sequência de caracteres até que o utilizador tenha
carregado em alguma tecla; nesta altura essa tecla deve ser testada e se
corresponder ao caracter 'x', a sequência de caracteres a enviar para o ecrã
deverá ser modificada, fazendo uma operação de xor de cada caracter da
sequência com a constante "26h". Esta nova sequência deve ser enviada
continuamente até que o utilizador volte a pressionar a tecla 'x', repondo o
funcionamento anterior (envio da sequência sem operação de xor). Deverá
testar se o utilizador introduziu o caracter ESC (27d), que faz com que o
programa termine.

7. Pretende-se um programa em assembly do 8086 que faça uma contagem de


ocorrência de caracteres de um texto. Este texto é introduzido pelo utilizador,
sendo o seu fim indicado pelo caracter ESC (caracter 27d). Após introdução do
texto deve ser apresentado no ecrã o número de ocorrências de cada caracter de
'a' a 'z'. Os caracteres de espaço, ENTER e pontuação não devem ser

10
contabilizados. Quando for introduzido o caracter ENTER (caracter 13d)
deverá ser enviado para o ecrã o caracter adicional de LINE-FEED (caracter
10d).
Considere o seguinte texto de exemplo:

pretende-se um programa em assemblyESC

após receber o caracter ESC deve aparecer no ecrã o seguinte

03 caracteres a
01 caracteres b
00 caracteres c
…..
00 caracteres z

8. Pretende-se um programa em assembly do 8086 que receba caracteres de 'a' a


'z' e proceda a uma operação de encriptação, enviando para o ecrã o seu
resultado.
A operação de encriptação consiste em trocar pares de caracteres, e, fazendo
um equivalência directa das letras 'a' a 'z' com os números 1 a 26, deverão ser
trocados os seguintes pares:
(1,3); (2,16); (4,14); (5,19); (6,24); (7,15); (8,18); (9,17); (10,20); (11,23);
(12,21); (13,22); (25,26).

Por exemplo, a palavra "teste" corresponde à sequência de números


20,5,19,20,5; feita aquela permuta de pares obtém-se a sequência 10,19,5,10,19
a que correspondem os caracteres "jsejs". Note-se que com este processo de
encriptação, a introdução desta nova palavra volta a produzir a palavra inicial.
O programa deverá ler caracteres introduzidos pelo utilizador, calcular o novo
caracter após a permuta dada e enviá-lo para o ecrã. Deverá testar se o caracter
introduzido é um espaço ou a tecla de ENTER (caracter 13d); se for qualquer
destes deve enviá-los para o ecrã sem nenhuma encriptação e, no caso do
caracter ENTER, enviar ainda o caracter LINE-FEED (caracter 10d) para
mudança de linha.
O programa termina quando o utilizador carregar na tecla de ESC (caracter
27d).

9. Pretende-se a realização de um programa de interacção com um utilizador,


devendo este descobrir um número gerado pelo microprocessador entre 1 e 59.

11
O microprocessador envia para o ecrã os limites em que se encontra do número
gerado, na forma:

0 < X < 60

e aguarda que o utilizador envie dois caracteres indicando a sua estimativa.


Deve então analisar se o número é igual ao gerado ou não. Se o utilizador
acertar deve enviar a mensagem Correcto, e inicia nova sessão. Se o número
for diferente deve verificar se é maior ou menor que o número gerado,
enviando via porto série os novos limites da estimativa. De seguida mostra-se
uma possível sequência em que o número gerado é 22 (em itálico encontra-se
os dados introduzidos pelo utilizador, e a "bold" os dados enviados pelo
microcontrolador):

0 < X < 60
30
0 < X < 30
15
15 < X < 30
25
15 < X < 25
20
20 < X < 25
22
Correcto

Nota: Para gerar o número aleatório pode chamar a rotina "GetTime", que
retorna a hora do computador, utilizando como número aleatório o valor dos
segundos.

12
Arquitectura de Computadores
Para realização dos diversos programas pretendidos, tem disponível
algumas rotinas de entrada e saída da caracteres no teclado e
monitor, respectivamente, no ficheiro "rotinas.asm"

;--------------------------------------------------------------------
; ROTINAS DE USO GERAL
;--------------------------------------------------------------------
;--------------------------------------------------------------------
; Rotina que termina programa
;--------------------------------------------------------------------
Terminate:
mov ax,4c00h
int 21h
ret
;--------------------------------------------------------------------
; Rotina que lê um caracter e coloca-o no registo AL (ecoa o
;caracter)
;--------------------------------------------------------------------
ReadChar:
mov ah,01h
int 21h
ret
;--------------------------------------------------------------------
; Rotina que lê um caracter e coloca-o no registo AL (nao ecoa o
;caracter)
;--------------------------------------------------------------------
ReadCharNoecho:
mov ah,07h
int 21h
ret
;--------------------------------------------------------------------
; Rotina que escreve um caracter no ecran. Entrada do caracter em AL
;--------------------------------------------------------------------
WriteChar:
push dx
push ax
mov ah,02h
mov dl,al
int 21h
pop ax
pop dx
ret
;--------------------------------------------------------------------
; Rotina que testa se existe caracter disponível.
; Se houver caracter disponível C=1, caso contrário C=0
;--------------------------------------------------------------------
Keypressed:
push ax
mov ah,0bh
int 21h
rcr al,1
pop ax
ret
;--------------------------------------------------------------------
; Rotina que faz o clear do ecran
;--------------------------------------------------------------------
Clrscr:
push ax
push bx
push cx
push dx
mov ax,0600h

13
mov bh,07h
mov cx,0000h
mov dx,184fh
int 10h
xor ax,ax
call GotoXY
pop dx
pop cx
pop bx
pop ax
ret
;--------------------------------------------------------------------
; Rotina que põe o cursor no ponto definido por (AH,AL). (Início em
;(0,0)).
;--------------------------------------------------------------------
GotoXY:
push ax
push bx
push dx
mov dx,ax
mov bh,00h
mov ah,02h
int 10h
pop dx
pop bx
pop ax
ret
;--------------------------------------------------------------------
; Rotina que escreve uma string (terminada pelo caracter '$') no
;ecran.
; O endereço da string deve estar no registo DX
;--------------------------------------------------------------------
WriteString:
push ax
mov ah,09h
int 21h
pop ax
ret
;--------------------------------------------------------------------
; Rotina que lê o valor do relógio do computador. Retorna a seguinte
;informação:
;
; CH : hora
; CL : minuto
; DH : segundo
; DL : centésimas de segundo
;--------------------------------------------------------------------
GetTime:
push ax
mov ah,2ch
int 21h
pop ax
ret
;--------------------------------------------------------------------

14
Modelo a utilizar na elaboração de novos programas
;
; Declaração do segmento de dados
;
dados segment
;
; Declaração das variáveis do programa
;
dados ends

;
; Declaração do segmento de stack
;
pilha segment
dw 100h dup(?)
topo label word
pilha ends

;
; Declaração do segmento de programa
;
programa segment

assume cs:programa, ds:dados, ss:pilha

; Ficheiro com rotinas de uso geral

include rotinas.asm

;--------------------------------------------------------------------
; Rotinas específicas do programa
;--------------------------------------------------------------------

;--------------------------------------------------------------------
; Código do programa
;--------------------------------------------------------------------

begin:
mov ax,dados
mov ds,ax
mov es,ax
mov ax,pilha
mov ss,ax
lea sp,topo

;--------------------------------------------------------------------
; Código do utilizador
;--------------------------------------------------------------------

;--------------------------------------------------------------------
; Fim do programa
;--------------------------------------------------------------------

call Terminate

programa ends

end begin

15
Arquitectura de Computadores

Trabalhos Laboratoriais

16
Normas para elaboração dos relatórios dos trabalhos de
laboratório da disciplina de Arquitectura de Computadores

Capa do Trabalho

Os trabalhos a entregar deverão ter na folha de capa a seguinte


informação:

• Instituto Politécnico
• Escola
• Nome da disciplina
• Referência do trabalho
• Nome do docente a que se destina
• Identificação dos alunos (Nome e Número)

Não deverão apresentar qualquer motivo gráfico na capa.

Qualquer trabalho que não cumpra as especificações anteriores será


considerado como não entregue, com correspondente classificação de
Não Satisfaz.

Conteúdo

Os relatórios deverão ter uma secção inicial introdutória onde se


descreverá os objectivos do trabalho realizado.

As secções seguintes seguirão a estrutura dos enunciados dos trabalhos de


laboratório, sendo aí respondidas às questões colocadas, e descrito todo o
procedimento seguido para a resolução de cada problema.

Finalmente, deverá constar uma secção onde serão descritas as conclusões


do trabalho realizado, nomeadamente se todas as suas componentes foram
realizadas com sucesso, problemas surgidos com algumas questões, etc.

17
Arquitectura de Computadores

1º Trabalho

1. Objectivo

Trata-se de um trabalho orientado para a adaptação ao laboratório.


Levar-se-á a cabo, inicialmente, como forma de adaptação, a verificação de
operações lógicas elementares. Seguidamente procede-se à verificação de uma
das leis de De Morgan.
O trabalho finaliza com a utilização de portas elementares para a
elaboração de um circuito digital simples.

2. Verificação de algumas funções lógicas

Utilize o pacote de software diglog para realização das montagens


seguintes.

2.1 Verificação prática da negação (74LS04).

A S
A S Z
0
A Z
1

2.2 Verificação prática da porta AND (74LS08).

A A B S
S
B
0 0
0 1
1 0
1 1

A
B
Z
C
D

18
A 0000000011111111
B 0000111100001111
C 0011001100110011
D 0101010101010101
Z

2.3 Verificação prática da porta OR (74LS32).

A
S
A B S
B 0 0
0 1
1 0
1 1

2.4 Verificação prática da porta XOR (74LS86).

A
S A B S
B
0 0
0 1
1 0
1 1

2.5 Verificação prática da porta NAND (74LS00).

A A B S
S
B 0 0
0 1
1 0
1 1

3. Verificação de uma das leis de De Morgan

Faça as duas montagens seguintes e conclua qual a relação entre as


saídas S e Z.

19
A
S
B A B S Z
0 0
A
0 1
Z 1 0
1 1
B

4. Circuito lógico com portas elementares e tempos de propagação

Monte o seguinte circuito:

A D

E
B
Z
C

4.1 Verifique a tabela de verdade de Z.

4.2 Consulte o catálogo em anexo, para obter os tempos de atraso (típico e


máximo) de cada uma das portas que usou nesta parte do trabalho. Não se
esqueça de anotar os tempos para as transições de '1' para '0' e de '0' para '1'.

4.3 Suponha que as entradas estão estáveis até um determinado instante de


tempo, no qual uma das entradas muda abruptamente. Pergunta-se:

4.3.1 O tempo necessário desde esse instante até que a saída Z apresente o
valor correcto (tempo de propagação do circuito) é sempre o mesmo qualquer
que seja a entrada a mudar (A, B ou C)? Justifique.

4.3.2 Qual a situação em que o tempo de propagação é maior ("worst-case


propagation delay")?

4.3.3 Faça um diagrama temporal de acordo com a situação referida em 4.3.2,


de modo a serem observáveis os tempos de atraso. Preencha, para tal a figura
seguinte.

20
A

A seguir ilustra-se um exemplo dum diagrama temporal para o caso de


aplicarmos uma transição de '1' para '0' na entrada A, mantendo a entrada B a
'0', do circuito abaixo indicado.

A 1-> 0 C 0-> 1
D 0-> 1
B 1

G1→ tPLH = 5 ns
G2→ tPLH = 7 ns

5 nS 7 nS

21
Arquitectura de Computadores

2º Trabalho

1. Objectivo

Este trabalho tem como objectivo a síntese e simplificação de funções


lógicas, e a verificação de circuitos lógicos para o caso de lógica combinatória.
Para isso realiza-se um circuito de descodificação de hexadecimal/sete-
segmentos, que permite a visualização, num "display" de sete segmentos, os
valores lógicos colocados à entrada do circuito.

2. Circuito a realizar

Deve realizar um circuito lógico de quatro entradas que forneça 7 saídas


para activação dos sete segmentos de um "display". Deve-se poder visualizar as
16 combinações possíveis das variáveis de entrada, conforme se indica na
figura 1.

Nota: deve utilizar o menor número possível de portas lógicas.

a
f b
g
e c
d
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Fig. 1 - Configuração do "display" de sete segmentos

22
Arquitectura de Computadores

3º Trabalho

1. Objectivo

Este trabalho tem como objectivo a realização de elementos de memória,


nomeadamente "latches" e "flip-flops". Sintetiza-se um "latch" RS simples,
analisando o seu funcionamento, e posterior alargamento do circuito de forma a
construir diversos tipos de "flips-flops".

1. "Latch" RS

Realize um circuito "latch" do tipo R S , como indicado na figura


seguinte e obtenha a sua tabela de transições.

S
Q

Q
R

2. "Flip-flops"

2.1 Com base no circuito anterior, construa um "flip-flop D edge-triggered"


positivo, como indicado na figura seguinte. Explique o funcionamento do
circuito e obtenha a sua tabela de transições.

S
Q

CLK

Q
R

23
2.2 Indique como modificar o circuito anterior de forma a que possua sinais de
"set" e "reset" assíncronos. Faça esta modificação no circuito e verifique o seu
funcionamento.

2.3. Modifique o circuito obtido em 2.2 de modo a obter um "flip-flop JK edge-


triggered" positivo, indicando as modificações a realizar. Obtenha a sua tabela
de transições.

2.4. Modifique o circuito obtido em 2.2 de modo a obter um "flip-flop T edge-


triggered" positivo, indicando as modificações a realizar. Obtenha a sua tabela
de transições.

2.5. Ligue a entrada T do circuito obtido em 2.4 a '1'. Desenhe as formas de


onda do sinal de relógio à entrada e à saída, durante seis transições positivas do
sinal de relógio. Qual lhe parece ser a função do circuito obtido?

24
Arquitectura de Computadores

4º Trabalho

1. Objectivo

Este trabalho tem como objectivo o projecto e implementação de


circuitos contadores com diversos módulos de contagem e registos de
deslocamento. Pretende ainda a síntese de um registo capaz de executar
algumas funções mediante uma palavra de código seleccionável.

2. Contadores

Em todos os circuitos realizados, ligue sempre todos os sinais de "reset"


dos "flip-flops" a um ponto comum, de modo a poder colocar a zero o estado
inicial dos contadores.

2.1 Contador síncrono

2.1.1 Monte o circuito da figura seguinte, que é um circuito contador síncrono


com módulo de contagem igual a 16. Analise o seu funcionamento,
apresentando para tal um diagrama temporal dos sinais CLK, Q0, Q1, Q2 e Q3
durante 16 ciclos do relógio do circuito, CLK.

'1' Q0 Q1 Q2 Q3
J Q J Q J Q J Q

CL K CL K CL K CL K

K Q K Q K Q K Q

CLK

2.1.2 Como pode verificar, o número de entradas da porta AND necessária para
obter o sinal de entrada de cada "flip-flop" aumenta linearmente com o número
de "flip-flops" utilizado. Desenhe um circuito alternativo em que tal não
aconteça. Qual a desvantagem deste novo circuito face ao anterior?

2.2 Contador assíncrono

25
2.2.1 Monte o circuito da figura seguinte, que é um circuito contador
assíncrono com módulo de contagem igual a 16. Verifique o seu funcionamento
e apresente um diagrama temporal justificativo.
'1' '1' '1' '1'
Q0 Q1 Q2 Q3
J Q J Q J Q J Q
CL K
CL K CL K CL K CL K

K Q K Q K Q K Q

2.2.2 Quais as diferenças mais significativas entre os dois tipos de contadores


realizados (síncrono e assíncrono)?

3. Registos de deslocamento

3.1 Monte o circuito da figura seguinte (registo de deslocamento à direita de 4


bits). Descreva o seu funcionamento e teste-o, desenhando um diagrama
temporal dos sinais CLK, A, B, C e D, durante 5 ciclos do relógio CLK, com a
entrada DIN ligada a '1'.

DIN Q0 Q1 Q2 Q3
D Q D Q D Q D Q

CLK CLK CL K CL K
Q Q Q Q

3.2 Modifique o circuito anterior de modo a obter um registo de deslocamento


circular à direita, que permita o carregamento em paralelo de um valor de
quatro bits. Verifique o funcionamento do circuito, carregando inicialmente o
registo com um valor à sua escolha, e representado um diagrama temporal dos
sinais CLK, A, B, C e D durante 8 ciclos do relógio.

4. Registo multi-funções

26
Pretende-se construir um registo de quatro bits capaz de realizar as
funções seguintes, consoante os sinais de controlo C2, C1 e C0:

C2 C1 C0 Função
0 0 0 "reset" do contador
0 0 1 carregamento em paralelo de uma
palavra de 4 bits
0 1 0 deslocamento à direita
0 1 1 deslocamento à esquerda
1 0 0 deslocamento circular à direita
1 0 1 deslocamento circular à esquerda
1 1 0 não utilizado
1 1 1 não utilizado

Projecte um circuito que satisfaça os requisitos pretendidos. Monte-o e


verifique o seu correcto funcionamento.

27
Arquitectura de Computadores

5º Trabalho

1. Objectivo

Pretende-se, neste trabalho a introdução à síntese e análise de circuitos


sequenciais síncronos.

2. Especificação do funcionamento do circuito

Pretende-se construir uma máquina sequencial síncrona que funcione


como um detector da sequência "01101". O circuito deverá ter uma entrada de
dados série, DIN, um sinal de relógio, CLK, e o sinal de saída, OUT. Este sinal
OUT deverá apresentar o nível lógico '1' quando for detectada a sequência
indicada, e durante um ciclo de relógio; em qualquer outro caso este sinal deve
apresentar o nível lógico '0'.
Projecte e monte um circuito que realize as especificações anteriores e
verifique o seu funcionamento. Tente utilizar o menor número possível de
circuitos.

28
Arquitectura de Computadores

6º Trabalho

1. Objectivo

Pretende-se, neste trabalho a síntese de um circuito controlador de uma


cancela de uma garagem, utilizando uma máquina sequencial síncrona.

2. Especificação do funcionamento do sistema

Pretende-se construir uma máquina sequencial síncrona que faça o


controlo de uma cancela numa garagem. A figura seguinte ilustra o sistema a
controlar:

TICKET Cancela Sensor 1

O bloco TICKET aceita do utente um bilhete de acesso à garagem,


colocando um sinal T a '1' quando o bilhete é introduzido. Noutra situação o
sinal T é colocado a '0'.
O sensor 1 detecta a passagem de objectos, sendo constituído por um
circuito com um feixe de infravermelhos, que quando interrompido coloca um
sinal S1 no nível lógico '1' (caso contrário este sinal é colocado no nível '0').
O circuito a realizar deve receber estes sinais e actuar o mecanismo de
controlo da cancela, erguendo-a ou baixando-a nas alturas convenientes: espera
impulso em T → ergue cancela → espera duas actuações em S1 → baixa
cancela.
Projecte uma máquina síncrona que satisfaça os requisitos especificados,
em que os sinais provenientes dos sensores são simulados com auxílio a
interruptores ON/OFF, e a cancela através de um "led" que deve se encontrar
aceso quando se ergue a cancela e apagado quando se a baixa.

29
Arquitectura de Computadores

7º Trabalho

Elaboração do problema 8 da série de problemas do 8086.

8º Trabalho

Elaboração do problema 9 da série de problemas do 8086.

30
Formulário da disciplina de Arquitectura de Computadores

Propriedades algébricas Tabelas de verdade Tabelas de transição


das funções fundamentais de Flip-flops e Latches
A +1 = 1 Função NOT Flip-flop JK
A+0= A J K Q n+1 SET

A ⋅1 = A a a
0 0
J Q
Qn
A ⋅0 = 0 0
1
1
0 0 1 0
clk

A+A = A 1
1
0
1
1
K CLR Q
A ⋅A = A Função AND
Qn

A+ A =1 a b a.b
Flip-Flop D
0 0 0
A⋅A = 0 0 1 0 D
SET
Q
D
A + A⋅B = A + B 1 0 0 Qn +1
1 1 1 clk
0 0
Leis de DeMorgan Função OR 1 1 CLR
Q

a b a+b
A + B + C + K = A ⋅ B ⋅ C ⋅K 0 0 0
Flip-flop T

A ⋅ B ⋅ C ⋅K = A + B + C + K
0 1 1 SET
T Q n +1 D
T Q
1 0 1
1 1 1 0 Qn clk
1
Função XOR Qn CLR
Q
a b a⊕b
0 0 0 Latch R, S
0 1 1 R Q n +1
S
1 0 1 S Q
1 1 0
0 0 
0 1 0
1 0 1
Processador 8086 1 1 Qn R Q

Organização dos registos Latch RS


R S Q n +1 R Q
AX AH AL 0 0 Qn
BX BH BL Dados 0 1 1
CX CH CL 1 0 0 S Q
DX DH DL 1 1 

SP ES
BP Apontadores CS Segmentos
SI e índices DS Flags
DI SS FlagsH FlagsL
IP
X X X X OF DF IF TF SF ZF X AF X PF X CF
Overflow
Modos de Endereçamento Direcção
Valor Segmento Interrupções
Imediato Dado Nenhum Trace
Registo Registo Nenhum Sinal
Directo endereço DS Zero
Carry Aux
INDIRECTOS Paridade
Deslocamento Registo Base Registo Índice Segmento Carry
Registo - BX - DS
- BP - SS
- - SI ou DI DS Instruções
Baseado -128 a +127 BX - DS

Indexado
-128 a +127
-128 a +127
BP
-
-
SI ou DI
SS
DS
Flags: ×, 0 ou 1; U indefinida; - Inalterada
Baseado + - BX SI ou DI DS Aritméticas Descrição FLAGS
Indexado - BP SI ou DI SS
Baseado + -128 a +127 BX SI ou DI DS O D I T S Z A P C
Indexado + ADD Destino,origem Destino←destino+origem × - - - × × × × ×
Deslocamento -128 a +127 BP SI ou DI SS
Strings - - SI DS ADC Destino,origem destino←destino+origem+CF × - - - × × × × ×
DI ES SUB Destino,origem Destino←destino-origem × - - - × × × × ×
Instruções SBB Destino,origem destino←destino-origem-CF × - - - × × × × ×

Movimentação de dados Descrição FLAGS INC Destino destino←destino+1 × - - - × × × × ×

O D I T S Z A P C
DEC Destino destino←destino-1 × - - - × × × × ×
MOV Destino,origem Destino ← origem - - - - - - - - -
NEG Destino destino←0-destino × - - - × × × × *
XCHG Destino,origem Destino ↔ origem - - - - - - - - -

LAHF AH ← FlagsL - - - - - - - - -
CMP Destino Destino-origem × - - - × × × × ×

SAHF FlagsL ← AH - - - - × × × × ×
MUL origem Multiplicação sem sinal × - - - U U U U ×
Se origem é um byte:
AX←AL*origem
IN Acumulador,porto AX(AL) ← porto - - - - - - - - - Se origem é uma word:
DX:AX←AX*origem
OUT Porto,acumulador Porto ← AX(AL) - - - - - - - - - IMUL origem Multiplicação com sinal × - - - U U U U ×
Se origem é um byte:
LEA Destino,origem Destino ← endereço de - - - - - - - - - AX←AL*origem
origem Se origem é uma word:
LDS Destino,origem Destino ← [origem] - - - - - - - - - DX:AX←AX*origem
DS ← [origem+2]
DIV origem Divisão sem sinal × - - - U U U U ×
Se origem é um byte:
LES Destino,origem Destino ← [origem] - - - - - - - - - AL←AX/origem
ES ← [origem+2] AH←resto
XLAT AL ← [BX+AL] - - - - - - - - - Se origem é uma word:
AX←DX:AX/origem
DX←resto
Rotações e deslocamentos Descrição FLAGS IDIV origem Divisão com sinal U - - - U U U U U
Se origem é um byte:
O D I T S Z A P C AL←AX/origem
SAL,SHL Destino,n × - - - - - - - × AH←resto
Se origem é uma word:
0
AX←DX:AX/origem
SAR Destino,n × - - - × × U × × DX←resto
DAA Ajusta AL para dois números × - - - × × × × ×
BCD depois de adição
DAS Ajusta AL para dois números U - - - × × × × ×
SHR Destino,n × - - - - - - - × BCD depois de subtracção
0
AAA Ajusta AL para um número U - - - U U × U ×
RCL Destino,n × - - - - - - - × BCD depois de adição.
Incrementa AH
AAS Ajusta AL para um número U - - - U U × U ×
BCD depois de subtracção.
RCR Destino,n × - - - - - - - × Decrementa AH
AAM Converte o resultado duma U - - - × × U × U
multiplicação em AL para dois
ROL Destino,n × - - - - - - - × números BCD em AH e AL
AAD Antes duma divisão converte os U - - - × × U × U
dois números BCD em AX num
ROR Destino,n × - - - - - - - × número binário em AL. AH=0
CBW Estende o bit de sinal de AL - - - - - - - - -
para AH
Nota: para valores de n CWD Estende o bit de sinal de AX - - - - - - - - -
superiores a 1 deve-se para DX
utilizar o registo CL * 1. Se operando igual a zero, então CF = 0.
Operações Booleanas Descrição FLAGS
Push/Pop Descrição FLAGS
O D I T S Z A P C
O D I T S Z A P C
NOT Destino Destino ← not(destino) - - - - - - - - -
PUSH Origem Coloca origem no topo do stack - - - - - - - - -
AND Destino,origem Destino ← destino⋅origem 0 - - - × × U × 0
POP Destino Lê para destino o topo do stack - - - - - - - - -
OR Destino,origem Destino ← destino+origem 0 - - - × × U × 0
PUSHF Coloca o registo das flags no - - - - - - - - -
topo do stack
XOR Destino,origem Destino ← destino⊕origem 0 - - - × × U × 0
POPF Lê para o registo das flags o x x x x x x x x X
topo do stack
TEST Destino,origem destino⋅origem 0 - - - × × U × 0

Interrupções Descrição FLAGS

O D I T S Z A P C
INT n Invoca interrupção n - - 0 0 - - - - -
Ciclos Descrição FLAGS
INT0 Se OF=1 gera interrupção 4 - - 0 0 - - - - -
O D I T S Z A P C
LOOP destino CX=CX-1; salta se CX=0 - - - - - - - - - IRET Retorna da rotina de serviço de x x x x x X x x x
interrupção
LOOPE/ destino CX=CX-1; salta se CX≠0 e - - - - - - - - -
LOOPZ ZF=1
LOOPNE/ destino CX=CX-1; salta se CX≠0 e - - - - - - - - - Controlo do processador Descrição FLAGS
LOOPNZ ZF=0
O D I T S Z A P C
STC CF←1 - - - - - - - - 1

CLC CF←0 - - - - - - - - 0
Saltos incondicionais Descrição FLAGS
CMC CF←not(CF) - - - - - - - - X
O D I T S Z A P C
STD DF←1 - 1 - - - - - - -
JMP Destino Salta para destino - - - - - - - - -
CLD DF←0 - 0 - - - - - - -

STI IF←1 (permite interrupções) - - 1 - - - - - -

CLI IF←0 (inibe interrupções) - - 0 - - - - - -


Saltos condicionais testando Descrição FLAGS
números com sinal HLT Pára o processador - - - - - - - - -
O D I T S Z A P C
WAIT Entra em estado de espera se - - - - - - - - -
JG/JNLE destino Salta se maior - - - - - - - - - linha TEST=1
LOCK Instrução Põe linha LOCK a 0 enquanto - - - - - - - - -
JGE/JNL destino Salta se maior ou igual - - - - - - - - - executa instrução
NOP Não faz nada - - - - - - - - -
JL/JNGE destino Salta se menor - - - - - - - - -
ESC N,origem Coloca o valor em origem no - - - - - - - - -
JLE/JNG Destino Salta se menor ou igual - - - - - - - - - bus de dados e o coprocessador
executa operação n
JO Destino Salta se OF=1 - - - - - - - - -

JS Destino Salta se SF=1 (negativo) - - - - - - - - -


Invocação de rotinas Descrição FLAGS
JNO Destino Salta se OF = 0 - - - - - - - - -
O D I T S Z A P C

JNS destino Salta se SF=1 (positivo) - - - - - - - - -


CALL Destino Invoca rotina destino - - - - - - - - -

RET n Retorna de rotina e liberta n - - - - - - - - -


posições do stack.
Saltos condicionais testando Descrição FLAGS
números sem sinal
O D I T S Z A P C
JA/JNBE

JAE/JNB
destino

destino
Salta se maior

Salta se maior ou igual


-

-
-

-
-

-
-

-
-

-
-

-
-

-
-

-
-

-
Arquitectura Interna do 8086
JB/JNAE destino Salta se menor - - - - - - - - -

JBE/JNA Destino Salta se menor ou igual - - - - - - - - - Bus de Bus de


Endereços Dados

Saltos condicionais testando Descrição FLAGS


todos os números
O D I T S Z A P C
JC destino Salta se CF=1 - - - - - - - - -
Geração de
JE/JZ destino Salta se ZF=1 - - - - - - - - - Endereços e
JP/JPE destino Salta se PF=1 - - - - - - - - - controlo de bus
JNC Destino Salta se CF=0 - - - - - - - - -

JNE/JNZ Destino Salta se ZF=0 - - - - - - - - -

JNP/JPO Destino Salta se PF=0 - - - - - - - - -

JCXZ Destino Salta se CX = 0 - - - - - - - - -

Registos Gerais ∑
Manipulação de cadeias de Descrição FLAGS AH AL AX 6
bytes/words
O D I T S Z A P C BH BL BX 5
STOSB ES:[DI]←AL, - - - - - - - - - Fila de
Se DF=0, DI←DI+1 CH CL CX Instruções 4
Se DF=1, DI←DI-1
STOSW ES:[DI]←AL,ES:[DI+1] ←AH - - - - - - - - - CS
Se DF=0, DI←DI+2
DH DL DX 3
Se DF=1, DI←DI-2 ES
LODSB AL←ES:[SI], - - - - - - - - -
BP 2
Se DF=0, SI←SI+1 SS
Se DF=1, SI←SI-1 DI Registos de 1
LODSW AL←ES:[DI],AH←ES:[DI+1] - - - - - - - - - DS Segmento
Se DF=0, SI←SI+2 SI
Se DF=1, SI←SI-2 Apontador de
MOVSB ES:[DI]←DS:[SI] - - - - - - - - - SP Instrução (IP)
Se DF=0, DI←DI+1 e SI←SI+1
Se DF=1, DI←DI-1 e SI←SI-1
MOVSW ES:[DI]←DS:[SI], - - - - - - - - -
ES:[DI+1]←DS:[SI+1]
Se DF=0, DI←DI+2 e SI←SI+2
Se DF=1, DI←DI-2 e SI←SI-2
SCASB AL-ES:[DI] x - - - x x x x X Bus de dados interno
Se DF=0, DI←DI+2
Se DF=1, DI←DI-2
SCASW AX-ES:[DI+1,DI] x - - - x x x x X
Se DF=0, DI←DI+2
Se DF=1, DI←DI-2
CMPSB DS:[SI]-ES[DI] x - - - x x x x X
Se DF=0, DI←DI+1 e SI←SI+1
Se DF=1, DI←DI-1 e SI←SI-1
CMPSW DS[SI+1,SI]-ES:[DI+1,DI] x - - - x x x x X
Se DF=0, DI←DI+2 e SI←SI+2 ALU
Se DF=1, DI←DI-2 e SI←SI-2
REP Instrução Executa instrução, CX←CX-1. - - - - - - - - -
Repete se CX≠0.
REPE/
REPZ
Instrução Executa instrução, CX←CX-1. - - - - - - - - - Flags
Repete se CX≠0 e ZF=1.
REPNE/ Instrução Executa instrução, CX←CX-1. - - - - - - - - -
REPNZ Repete se CX≠0 e ZF=0.

Unidade de Execução Unidade de Interface de bus