Buscar

Relatório SAP1_FINAL

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

UNIVERSIDADE FEDERAL DE SÃO CARLOS 
CENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA 
DEPARTAMENTO DE COMPUTAÇÃO 
 
 
 
 
 
IMPLEMENTAÇÃO 
E SIMULAÇÃO DO SAP-1 
 
Laboratório de Arquitetura e Organização de Computadores 1 
Professor Edilson Reis Rodrigues Kato 
 
 
 
 
 
 
Bruno Katekawa RA: 278017 
Caio César Viel RA: 278092 
Relatório SAP-1 Página 1 
 
 
ÍNDICE 
 
 
1. Introdução .................................................................................................. 2 
2. Conjunto de Instruções ............................................................................................. 3 
3. Blocos Funcionais ....................................................................................................... 5 
3.1. Acumulador ........................................................................................................ 5 
3.2. Barramento W ................................................................................................... 7 
3.3. Contador de Programa ................................................................................... 7 
3.4. Contador em Anel ............................................................................................ 8 
3.5. Controlador Seqüencial ................................................................................. 10 
3.6. Eliminador de Trepidação ............................................................................ 14 
3.7. RAM ........................................................................................................................ 15 
3.8. Registrador B ..................................................................................................... 18 
3.9. Registrador de Saída ....................................................................................... 18 
3.10. REM ........................................................................................................................ 19 
3.11. Registrador de Instruções ............................................................................ 20 
3.12. Somador-Subtrator ......................................................................................... 21 
4. Programando o SAP-1 ............................................................................................... 25 
5. Simulação do SAP-1 ................................................................................................... 27 
6. Conclusões ..................................................................................................................... 29 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Relatório SAP-1 Página 2 
 
 
1- INTRODUÇÃO 
 
 O SAP-1 implementado este semestre pelos alunos da disciplina de Laboratório de 
Arquitetura e Organização de Computadores 1 da Universidade Federal de São Carlos (UFSCar) 
é uma espécie de computador primitivo com um conjunto de instruções limitada e capacidade 
de memória e número de bits reduzido. 
 
 Mesmo com todas estas limitações, SAP-1 contém vários elementos usados das 
construções de processares como microprogramação, máquinas de estado finito, unidades 
lógicas aritméticas, contador de programa, barramentos de dados e muitos outros blocos 
funcionais estudados na matéria teórica referente a este laboratório (Arquitetura e 
Organização de Computadores 1). 
 
 O trabalho aqui apresentado é um relatório mostrando os elementos fundamentais da 
implementação e simulação do SAP-1 realizada no software Quartus II© da ALTERA 
Corporation®. 
 
 Este trabalho descreve como foram implementados os blocos funcionais além de 
explicar como operar o SAP-1 além de mostrar um exemplo de programação e simulação 
completo do SAP-1. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Relatório SAP-1 Página 3 
 
 
2- CONJUNTO DE INSTRUÇÕES 
 
 
 Nesta seção serão explicadas as instruções básicas que o SAP-1 pode executar. 
 
LDA: 
 Significa “carregar o acumulador” (Load the Accumulator). Uma instrução LDA 
completa inclui o endereço hexadecimal dos dados a serem carregados. LDA 8H, por exemplo, 
significa “carregar o acumulador com o conteúdo do local 8H da memória”. Portanto, temos: 
 
�� � 1111 0000 
 
a execução de LDA 8H resulta em: 
 
� � 1111 0000 
 
 Similarmente, LDA AH significa “carregar o acumulador com o conteúdo do local AH da 
memória”, LDA FH significa “carregar o acumulador com o conteúdo do local FH da memória”. 
 
 
ADD: 
 Uma instrução ADD completa inclui o endereço da palavra a ser acrescentada. Por 
exemplo, ADD 9H significa “acrescentar o conteúdo do local 9H da memória ao conteúdo do 
acumulador”; a soma substitui o conteúdo original do acumulador. 
 
 Um exemplo: suponhamos que o decimal 2 esteja armazenado no acumulador e que o 
decimal 3 esteja armazenado no local 9H da memória. Temos: 
 
� � 0000 0010 
�� � 0000 0011 
 
Durante a execução de ADD 9H, acontece o seguinte: primeiro R9 é carregada no 
registrador B para se obter: 
	 � 0000 0011 
 
e quase que instantaneamente o somador-subtrator forma a soma de A com B. 
 
��� � 0000 0101 
 
 Depois, esta soma é carregada no acumulador para se obter: 
 
� � 0000 0101 
 
 A rotina precedente é usada em todas as instruções ADD. A palavra RAM endereçada 
vai ao registrador B e a saída do somador-subtrator vai ao acumulador. Isto ocorre porque a 
execução de ADD 9H acrescenta R9 ao conteúdo do acumulador, a execução de ADD FH 
acrescenta RF ao conteúdo do acumulador e etc. 
 
 
 
Relatório SAP-1 Página 4 
 
SUB: 
 Uma instrução SUB completa inclui o endereço da palavra a ser subtraída. Por 
exemplo, SUB CH significa “subtrair o conteúdo do local CH da memória do conteúdo do 
acumulador”; a diferença para fora do somador-subtrator depois substitui o conteúdo do 
acumulador. 
 
 Um exemplo: suponha que o decimal 7 esteja no acumulador e que o decimal 3 no 
local CH da memória. Temos: 
� � 0000 0111 
�
 � 0000 0011 
 
 A execução de SUB CH ocorre como segue. Primeiro RC é carregada no registrador B 
para se obter: 
	 � 0000 0011 
 
e quase que instantaneamente o somador-subtrator forma a diferença de A com B: 
 
�������� � 0000 0100 
 
Logo depois, esta diferença é carregada dentro do acumulador e 
 
� � 0000 0100 
 
 A rotina precedente aplica-se a todas as instruções SUB; a palavra RAM endereçada vai 
ao registrador B e a saída do somador-subtrator vai ao acumulador. Isto ocorre porque a 
execução de SUB CH subtrai RC do conteúdo do acumulador, a execução SUB EH subtrai RE do 
acumulador e etc. 
 
 
OUT: 
 A instrução OUT diz ao computador SAP-1 para transferir o conteúdo do acumulador 
para a porta de saída. Depois de OUT ter sido executada, podemos ver a resposta ao problema 
que está sendo resolvido. 
 
 OUT é completa por si própria, isto é, não temos de incluir nenhum endereço quando 
usamos esta instrução, pois ela não envolve dados na memória. 
 
 
HLT: 
 HLT significa para (halt). Esta instrução diz ao computador para parar o processamento 
de dados. HLT assinala o fim de um programa, similar à maneira com que um ponto assinala o 
fim de uma frase ou sentença. Devemos usar uma instrução HLT no fim de cada programa do 
SAP-1; do contrário, obtemos refugos (trash) no computador (respostas sem significado 
causadas pelo processamento descontrolado). 
 
HLT é completa por si própria; não temos de incluir nenhuma palavra de RAM ao 
usarmos essa instrução, pois ela não envolve a memória. 
 
 
 
Relatório SAP-1 Página 5 
 
3- BLOCOS FUNCIONAIS 
 
 
 Nesta seção mostraremos todos os blocos funcionais que desenvolvemos para criamos 
o SAP-1. 
 
3.1- Acumulador: 
 
O acumulador é um registrador de memória intermediáriaque armazena respostas 
intermediárias durante um processamento no computador, ou seja, é onde estão acumuladas 
as respostas às operações lógicas e aritméticas. O acumulador apresenta duas saídas: 
 
1. De dois estados que vai diretamente ao somador-subtrator; 
2. De três estados que vai ao barramento W. 
 
Portanto, a palavra do acumulador de 8 bits continuamente comanda o somador-
subtrator; e a mesma palavra aparece no barramento W quando EA está alto. 
 
Sem um registrador como um acumulador, seria necessário escrever o resultado de 
cada operação (adição, multiplicação, deslocamento, etc.) na memória principal, e que talvez 
fosse lido novamente para o uso na operação seguinte. O acesso à memória principal é mais 
lento do que o acesso a um registrador como um acumulador, pois a tecnologia utilizada para 
a grande memória principal é mais (mas mais barata) do que àquela utilizada num registrador. 
Fig. 3.1.1 – Esquemático do Acumulador. 
 
 
Relatório SAP-1 Página 6 
 
Simulação: 
 A simulação realizada foi gerada pelo software Quartus II© da ALTERA Corporation® 
mostra os diagramas de forma de onda. A simulação é como a de um registrador de 8 bits. A 
entradas utilizadas foram 1 (0000 0001bin), 2 (0000 0010 bin), 3 (0000 0011 bin) e 5 (0000 0101 
bin). A figura abaixo mostra a simulação realizada quando o sinal de controle LR está em alto: 
 
Fig. 3.1.2 – Diagrama de Simulação com LR em alto. 
 
 Percebemos que quando LR está em alto nenhuma das entradas que colocamos 
aparece nas saídas (mais significativo apresenta índice 7 e menos significativo apresenta índice 
0). A próxima figura abaixo apresenta a simulação feita com LR em baixo: 
 
Fig. 3.1.3 – Diagrama de Simulação com LR em baixo. 
Relatório SAP-1 Página 7 
 
 Percebemos que quando LR está em baixo, as entradas que colocamos aparecem nas 
saídas. 
 
3.2- Barramento W: 
 
O barramento W é um caminho comum de dados utilizados por vários componentes 
dos SAP 1. Ele existe para facilitar o transmissão de informações entre os componentes dentro 
do SAP 1. 
 
Os componentes: Contador de programa, REM, RAM, Registrador de Instruções, 
Acumulador, Somador-Subtrator, Registrador B e Registrador de Saída são os componentes 
que recebem ou enviam informações para o barramento W. 
 
Para que os sinais de um componente não interfiram em outro, todos os componentes 
que enviam dados para o barramento W têm tri-states em suas saídas, sendo assim, somente 
um componente de cada vez envia os dados, os demais somente enviam alta-impedância para 
o barramento. 
 
Da mesma forma, os componentes que recebem dados do barramento são todos 
síncronos e possuem um sinal específico para receber os dados do barramento no momento 
correto, senão poderia acontecer de um componente receber dados que eram endereçados a 
outro componente. 
 
3.3- Contador de Programa: 
 
Originalmente, pelos diagramas apresentados pelo livro texto da disciplina, o contador 
de programa era um contador módulo 16 assíncrono implementado com macro funções, 
entretanto, mesmo funcionando perfeitamente sozinho, o delay para mudar seus bits quando 
utilizado em conjunto com o SAP 1 nos motivou para redesenhá-lo, porém desta vez o 
implementamos com flip-flops JK e síncrono. Ou seja, agora seus bits mudam sempre ao 
mesmo tempo (vide fig. 3.3.1 – Esquemático do Contador de Programa). 
 
A função do contador de programa dentro do SAP 1 é fornecer (durante a etapa de 
execução) o endereço da instrução a ser executada. Uma vez que limparmos o contador dando 
sinal baixo na entrada CLR’, zeramos o contador e, quando tivermos um sinal CP alto e uma 
borda de decida do CLK’, ele vai contar 1. Esta combinação de sinais só ocorre no primeiro ciclo 
de cada uma das instruções. 
 
Em outras palavras, ele passa o endereço 0H para o barramento W (que a REM irá 
receber no ciclo seguinte), quando terminar a instrução e formos para outra, ela passa 1H, 
depois 2H até que o programa seja terminado. 
 
As saídas do contador contem tri-states, se faz necessário uma vez que ele vai para o 
barramento W, sendo assim, temos mais uma entrada de controle chamada EP, quanto EP for 
alto, o sinal do contador vai para o barramento W. 
 
Relatório SAP-1 Página 8 
 
 
Fig. 3.3.1 – Esquemático do Contador de Programa. 
 
Simulação: 
 
 A simulação realizada foi gerada pelo software Quartus II© da ALTERA Corporation® 
mostrando os diagramas de forma de onda. A simulação mostra o funcionamento de um 
contador módulo 16. As entradas de controle foram alternas durante o processo para mostrar 
as saídas mostradas pelo contador. 
 
 A figura abaixo mostra a simulação realizada. 
 
Fig. 3.3.2 – Diagrama de Simulação do Contador de Programa. 
 
 Percebemos que quando CLK’ se encontra em uma borda de decida e CP esta em alto, 
temos uma mudança nas saídas do contador, quando CLR’ fica em baixo, setamos todos os 
valores do contador para 0. A saída S fica em alta-impedância quando EP esta em baixo. 
Percebemos também que o contador conta corretamente. 
 
3.4- Contador em Anel: 
 
Apesar deste nome, este componente funcional é na verdade um Registrador de 
Deslocamento em Anel. Este tipo de circuito combinatório tem a seguinte propriedade. A cada 
Relatório SAP-1 Página 9 
 
pulso do clock, o flip-flop i passa deu estado interno para o flip-flop i+1, e adquiri o estado 
interno do flip-flop i-1. Caso este flip-flop seja o primeiro, ele recebe o estado interno do 
último. Em outras palavras, eles ficam alternando seus sinais entre si infinitamente. 
 
O Contador em Anel implementado com circuitos 74107 possui 6 flip-flops do tipo JK e 
foi montado para que após um sinal baixo de Clear’ seu primeiro flip-flop tivesse valor 1 e os 
demais valor 0. Sendo assim, este valor 1 seria passado entre seus flip-flops (vide fig. 3.4.1 – 
Contador em Anel). 
 
Este componente faz parte do Controlador Seqüencial, que é responsável por 
determinar os sinais de controle que serão enviados para cada um dos demais componentes, a 
função do contador em anel é informar ao controlador seqüencial em qual clico de execução 
da instrução esta sendo executado no momento. 
 
Inicialmente, somente o primeiro flip-flop tem valor alto, o que significa que estamos 
no primeiro ciclo de instrução. Após uma borda de subida do clock, apenas o segundo flip-flop 
tem valor alto, mais uma borda e apenas o terceiro flip-flop tem borda alta e assim 
sucessivamente ele indica em qual ciclo de execução estamos. 
 
Nosso registrador de deslocamento tem 6 flip-flops porque as instruções do SAP 1 
podem levar no máximo 6 ciclos, ou seja, um flip-flop por ciclo. 
 
 
Fig. 3.4.1 – Esquemático do Contador em Anel 
 
Simulação: 
 
 A simulação realizada foi gerada pelo software Quartus II© da ALTERA Corporation® 
mostrando os diagramas de forma de onda. A simulação mostra o funcionamento de um 
Registrador de Deslocamento de 6 bits. Basicamente deixamos o contador funcionar, depois 
demos um sinal de Clear’ baixo e o deixamos funcionar novamente. 
 
 A figura abaixo mostra a simulação realizada. 
 
Relatório SAP-1 Página 10 
 
 
Fig. 3.4.2 – Diagrama de Simulação do Contador em Anel. 
 
 Observamos que as mudanças ocorrem na borda de subida do clock, quando Clear’ vai 
para baixo voltamos ao inicio da contagem e que os sinais se propagam da forma que 
deveriam acontecer. 
 
3.5- Controlador Seqüencial: 
 
Este provavelmente é o mais complexo e importante no SAP 1. Ele é responsável por 
decodificar as instruções armazenas no registrador de instruções e enviar para cada um dos 
demais componentes os sinais de controle corretos para que o SAP 1 funcione. 
 
As entradas deste complexo componente são um Clock, um Clear e os quatro bits mais 
significativos do Registrador deInstruções (que são o código da instrução a ser executada). 
Com estes quatro bits mais os bits gerados pelo contador em anel (que servem para se 
determinar em qual ciclo de instrução estamos), o controlador Seqüencial gera as micro-
instruções necessárias para se executar as macro-instruções. Os sinais de controle 
decodificado pelo Controlador Seqüencial são e suas tarefas são resumidas na tabela 3.5.1. 
 
Sinal Componente Destino O que faz 
CP Contador de Programa Faz contador mudar para o próximo estado. 
EP Contador de Programa Permite a saída do contador ir para o barramento W. 
LM REM Grava os bits vindos do barramento W no registrador interno 
da REM. 
CE’ RAM Sinal de Leitura para a RAM enviar dados para o Barramento W 
LI Registrador de Instrução Faz o Registrador de Instruções gravar os dados vindos do 
barramento W. 
EI Registrador de Instrução Permite que o Registrador de Instruções envie dados para o 
barramento W. 
LA Acumulador Faz o Acumulador gravar os dados vindos do barramento W. 
EA Acumulador Permite que o Acumulador envie dados para o barramento W. 
SU Somador-Subtrator Indica se a operação a ser realizada é Soma (SU baixo) ou 
Subtração (SU alto). 
EU Somador-Subtrator Permite que o Somador-Subtrator envie dados para o 
barramento W. 
LB Registrador B Faz o Registrador B gravar os dados vindos do barramento W. 
LO Registrador de Saída Faz o Registrador de Saída gravar os dados vindos do 
barramento W. 
HLT’ Eliminador de Trepidação Sinal que para a execução do SAP 1. 
Tabela 3.5.1 – Sinais de Controle do Controlador Seqüencial 
 
Relatório SAP-1 Página 11 
 
 Os sinais do Controlador seqüencial são gerados por uma matriz de controle (lógica 
combinatória complexa) que informa quando cada sinal deve ser enviado (vide fig. 3.5.1 - 
Controlador Seqüencial). 
 
 
Fig. 3.5.1 – Esquemático do Controlador Seqüencial 
Relatório SAP-1 Página 12 
 
Simulação: 
 
 A simulação realizada foi gerada pelo software Quartus II© da ALTERA Corporation® 
mostrando os diagramas de forma de onda. A simulação mostra o funcionamento de um 
Controlador Seqüencial para cada uma das 5 instruções disponíveis no SAP 1. LDA, ADD, SUB, 
OUT, HLT. 
 
 A figura abaixo mostra a simulação realizada para LDA (instrução 0000). 
 
 
Fig. 3.5.2 – Diagrama de Simulação do Controlador Seqüencial para a instrução LDA. 
 
 A figura abaixo mostra a simulação realizada para ADD (instrução 0001). 
 
 
Fig. 3.5.3 – Diagrama de Simulação do Controlador Seqüencial para a instrução ADD. 
 
 A figura abaixo mostra a simulação realizada para SUB (instrução 0010). 
 
Relatório SAP-1 Página 13 
 
 
Fig. 3.5.4 – Diagrama de Simulação do Controlador Seqüencial para a instrução SUB. 
 
 A figura abaixo mostra a simulação realizada para OUT (instrução 1110). 
 
 
Fig. 3.5.5 – Diagrama de Simulação do Controlador Seqüencial para a instrução OUT. 
 
 A figura abaixo mostra a simulação realizada para HLT (instrução 1111). 
 
Relatório SAP-1 Página 14 
 
 
Fig. 3.5.6 – Diagrama de Simulação do Controlador Seqüencial para a instrução HLT. 
 
 Observamos que as mudanças ocorrem na borda de subida do clock e que os sinais 
gerados pelo controlador são compatíveis com os necessários para o funcionamento do SAP 1. 
 
3.6- Eliminador de Trepidação: 
 
Este componente tem a principal função de eliminar o ruído dos sinais das chaves 
enviados pelo programador do SAP 1. Sem o eliminador, o SAP provavelmente não seria 
operacionável, pois os sinais teriam muito ruído e impossibilitariam o seu uso (vide fig. 3.6.1 – 
Eliminador de Trepidação). 
 
Este componente também é responsável por gerar o CLK e CLK’ usado pelos demais 
componentes do SAP 1. Entramos com o pulso do relógio, e através de um circuito semelhante 
a um LATCH o Eliminador de Trepidação divide a freqüência e elimina o ruído deste sinal. 
 
Ele também recebe o sinal para Limpar/Iniciar para gerar CLR e CLR’, sinas que limpam 
os componentes para iniciar a execução. Além disso, existe outra chave, a Auto/Manual que 
faz com que seja possível escolher entre o clock fornecido pela entrada clock (provavelmente 
um gerador de freqüência ou um circuito gerador de clock) ou pela chave Etapa Única, um 
clock manual que podemos usar para depurar o funcionamento do SAP 1. 
 
Quando Limpar vai para alto, resetamos os componentes do SAP 1, quando vai para 
baixo, podemos então começar a execução do programa. Auto/Manual em alto usa a entrada 
clock para gerar CLK e CLK’, em baixo, usa o clock manual de etapa única. 
 
 
 
 
Relatório SAP-1 Página 15 
 
 
Fig. 3.6.1 – Esquemático do Eliminador de Trepidação. 
 
3.7- RAM: 
 
A RAM é o circuito que utilizamos para armazenar os dados e as instruções durante a 
fase de programação e de onde retiramos os mesmos dados e instruções durante a fase de 
execução do programa. Em outras palavras, a RAM é a nossa Memória de Dados e Instruções. 
Entretanto, devido as limitações do SAP 1, estas memórias devem ser separadas. Os primeiros 
endereços devem ser utilizamos para instruções (uma vez que o Contador de Programa inicia 
em 0H) e os dados devem estar contidos nos últimos endereços para que não haja confusão 
com alguma instrução. 
 
A implementação original da RAM proposta pelo livro texto da disciplina teve que ser 
abandonada pelo fato de que não dispúnhamos das macro-funções indicadas no software que 
utilizamos. Tivemos então que desenvolver nossa própria RAM. 
 
A RAM pode ser lida nos primeiros ciclos de cada instrução se determinar qual 
instrução será realizada, e ainda pode ser lida outra vez em instruções de ADD, SUB e LDA, 
instruções estas que utilizam dados contidos na RAM para executar determinadas tarefas. 
Além disso, a RAM deve ser escrita durante a fase de programação do SAP 1. 
 
A RAM que projetamos possui 16 palavras de 8 bits cada. Cada uma das palavras é 
representada por um Registrador de 8 bits (vide fig. 3.7.1 – Registrador de 8 bits). 
 
 Este feito com flip-flops do tipo D tem suas saídas ligadas em tri-states, que permitem 
ou não a saída do dado. Além disso, temos a entrada dos dados de cada um dos bits, um clk e 
uma chave de Enable que permite ou não a gravação dos flip-flops. 
 
Relatório SAP-1 Página 16 
 
 
Fig. 3.7.1 – Esquemático do Registrador de 8 bits. 
 
 Para selecionarmos em qual dos endereços da memória vamos Ler ou Escrever, 
enviamos os dados que vem da REM (que contém o endereço onde vamos efetuar as 
operações) para dois decodificadores. Um deles é o Decodificador de Escrita, que quando 
temos o sinal Escrita’ baixo, envia o sinal de Enable’ baixo para o registrador a ser escrito. 
Todos os registradores recebem os dados a serem escritos, porém, somente o endereço 
decodificado por esse decodificador é que têm Enable’ em baixo para permitir a gravação (vide 
fig. 3.7.2 – Decodificador de Escrita). 
Fig. 3.7.2 – Esquemático Simplificado do Decodificador de Escrita. Note que as demais saídas 
do decodificador de escrita e os dados vão para os demais registradores não mostrados nesta 
figura. 
Relatório SAP-1 Página 17 
 
 De forma análoga, utilizamos outro decodificador para sabermos qual registrador 
devemos Ler. O Decodificador de Leitura também recebe e decodifica o sinal da REM, 
enviando um EnableSaida’ baixo somente para o endereço decodificado quando tivermos um 
Leitura’ baixo. Os demais registradores recebem EnableSaida’ alto, fazendo com que suas 
saídas sejam alta-impedância, enquanto o que recebeu o sinal envia os seus dados. As saídas 
de cada um dos registradores para um dos bits é ligada em curto, e seu sinal é a saída da RAM 
(vide fig. 3.7.3 – Decodificador de Leitura). 
 
 
Fig. 3.7.3 – Esquemático Simplificado do Decodificador de Leitura. Note que as demais saídasdo decodificador de leitura vão para os demais registradores e que a saída do registrador vai 
para a saída da RAM não mostrados nesta figura. 
 
 A entrada Program da RAM é utilizada como um clock para os registradores. Esta RAM 
implementada é síncrona para a Escrita, porém é assíncrona para a leitura. Assim sendo, 
depois de enviarmos o endereço e o dado a ser gravado, devemos dar um “clock” Program 
para habilitar a escrita nos registradores. Quando utilizamos apenas a Leitura, Program não é 
útil. 
 
Simulação: 
 A simulação realizada foi gerada pelo software Quartus II© da ALTERA Corporation® 
mostrando os diagramas de forma de onda. A simulação mostra o funcionamento de um 
contador da RAM. Primeiro escrevemos no endereço 0h, o dado FFH. Em seguida escrevemos 
no endereço AH, o dado 55H e por fim escrevemos em 1H, o dado 0FH. Depois de escrito os 
dados, lemos o quê existia nos endereços 0H, AH e 1H respectivamente. A fig. 3.7.4 - Diagrama 
de Simulação da RAM mostra a simulação realizada. 
 
 Percebemos que inicialmente que quando o sinal de Leitura’ esta em alto, a saída D 
apresenta alta-impedância, porém, quando passamos o sinal para baixo e lemos os mesmos 
endereços que gravamos, a saída D apresenta exatamente os dados que gravamos. 
 
Relatório SAP-1 Página 18 
 
 
Fig. 3.7.4 – Diagrama de Simulação da RAM. 
 
3.8- Registrador B: 
 
 O registrador B é outro registrador de memória intermediária. É utilizado em 
operações aritméticas e serve para armazenar os dados a serem adicionados ou subtraídos do 
acumulador. Um baixo LB e um clock positivo carregam a palavra do barramento W dentro do 
registrador B. A saída de dois estados do registrador B comanda o somador-subtrator, 
fornecendo o número a ser adicionado ou subtraído do conteúdo do acumulador. 
 
 Como o registrador B é um registrador de memória intermediária como o Acumulador, 
seu esquemático é idêntico (vide Fig. 3.1.1 – Esquemático do Acumulador). 
 
Simulação: 
 
 Pelo fato do registrador B ser um registrador de memória intermediária sua simulação 
pode ser feita de modo idêntico ao do Acumulador (vide Acumulador, seção Simulação e 
figuras: Fig. 3.1.2 – Diagrama de Simulação com LR em alto; Fig. 3.1.2 – Diagrama de Simulação 
com LR em baixo). 
 
3.9- Registrador de Saída: 
 
 Precisamos transferir as repostas que obtemos do SAP-1 para o mundo exterior. Isto é 
onde é utilizado o registrador de saída. Quando EA for alto e Lo for baixo, um clock positivo 
carregará a palavra do acumulador no registrador de saída. 
 
 O registrador de saída muitas vezes é chamado de “porta de saída” porque os dados 
processados podem sair do computador através deste registrador. Em microcomputadores as 
portas de saída são conectadas aos circuitos de interface que comandam dispositivos 
periféricos como as impressoras, os monitores, o áudio e etc. (Um circuito de interface prepara 
os dados para comandar cada dispositivo.) 
 
Como o registrador de saída é um registrador de memória intermediária como o 
Acumulador e o registrador B, seu esquemático é idêntico ao dos dois (vide Fig. 3.1.1 – 
Esquemático do Acumulador). 
 
Relatório SAP-1 Página 19 
 
Simulação: 
 
 Pelo fato do registrador de saída ser um registrador de memória intermediária sua 
simulação pode ser feita de modo idêntico ao do Acumulador e do registrador B (vide 
Acumulador, seção Simulação e figuras: Fig. 3.1.2 – Diagrama de Simulação com LR em alto; 
Fig. 3.1.3 – Diagrama de Simulação com LR em baixo). 
 
3.10- REM: 
 
A REM é um circuito utilizado para ajudar a controlar a RAM. O endereço que a RAM 
irá será fornecido pela REM. Pela forma que funciona o SAP 1, o endereço lido pelo RAM pode 
ser de três tipos: 
 
1. O endereço de uma instrução a ser executado vindo do contador de programa; 
2. O endereço de um dado utilizado em uma instrução de LDA, ADD ou SUB; ou 
3. O endereço onde está sendo gravado um determinado dado ou instrução durante a 
faze de programação do SAP 1. 
 
Os dois primeiros tipos estarão disponíveis no barramento W, enquanto o terceiro dado 
o programador do SAP 1 fornecerá através de chaves. 
 
O que a REM faz basicamente é atual como um Multiplexador de 2-1 de 4 bits. Quando a 
chave Select está em baixa, a REM deixa passar os endereços fornecidos pelo programador do 
SAP 1, quando Select está em alta, deixa passar os sinais vindos do barramento W. 
 
A implementação da REM foi feita utilizando um registrador (74173) de quatro bits que 
armazena os dados vindos do barramento numa borda de subida do CLK quando o sinal LM’ 
esta em baixo, e um MUX 2-1 de 4 bits (74157) que seleciona qual dos endereços deve ser 
enviado para a RAM. 
 
Simulação: 
 
 A simulação realizada foi gerada pelo software Quartus II© da ALTERA Corporation® 
mostrando os diagramas de forma de onda. A simulação mostra o funcionamento de um 
contador módulo 16. Enviamos o endereço AH pelas chaves que viriam do usuário e o 
endereço 6H pelos sinais que viriam do barramento W. Alternamos o sinal de Select para ver 
qual saída era indicada. A figura 3.10.2 mostra a simulação realizada. 
 
 Observamos na simulação que antes de dar o clock para o registrador interno da REM 
receber o endereço 6H, a saída é 0, em quando temos o clock a saída é 6H. Depois de trocar a 
chave Select, temos a saída AH como esperado. 
 
 
 
Relatório SAP-1 Página 20 
 
 
Fig. 3.10.1 – Esquemático da REM. 
 
 
Fig. 3.10.2 – Diagrama de Simulação da REM. 
 
 
3.11- Registrador de Instruções: 
 
O Registrador de Instruções armazena a instruções que esta sendo realizada no 
momento para que outros componentes (como o controlador seqüencial, por exemplo) 
decodifiquem e realizem as instruções. 
 
A entrada do registrador de Instruções vem do barramento W (depois da instrução ser 
lida da RAM). Suas saídas se dividem em duas partes: 
 
Relatório SAP-1 Página 21 
 
1. Os 4 bits mais significativos vão para o Controlador Seqüencial para que este 
decodifique a instrução; e 
2. Os 4 bits menos significativos vão para o barramento W para que em 
instruções de LDA, ADD ou SUB se a REM pegue o endereço a ser lido da RAM 
e jogue novamente no barramento W. 
 
 Além destas entradas, temos ainda três entradas. A CLEAR, usada para limpar o 
registrador de programa. EI que habilita a saída di Registrador de Instruções a sair no 
barramento W e LI, que faz o Registrador de Instruções gravar os dados fornecidos pelo 
barramento W (vide a fig. 3.11.1 – Registrador de Instruções). 
 
 
Fig. 3.11.1 – Esquemático do Registrador de Instruções. 
 
 Não realizamos simulação uma vez que este circuito é praticamente idêntico a outros 
registradores já testados como o Acumulador, por exemplo, (vide Fig 3.1.2 e 3.1.2). 
 
3.12- Somador-Subtrator: 
 
 Um somador-subtrator é uma associação de dois componentes em essencial: Somador 
Completo e portas XOR. (vide fig. 3.12.1 – Esquemático do Somador-Subtrator.) É utilizado 
para realizar operações aritméticas de soma e subtração. 
 
 O SAP-1 utiliza um somador-subtrator de complemento de 2. Quando o SU for baixo, o 
somador-subtrator irá realizar a operação de soma. 
 
 � � � 	 
 
 Quando SU for alto, será realizada a operação de subtração. 
 
 � � � 	� 
 
Relatório SAP-1 Página 22 
 
 
Fig. 3.12.1 – Esquemático do Somador-Subtrator. 
 
 O somador-subtrator é assíncrono (não sincronizado); isto significa que seu conteúdo 
pode variar logo que as palavras de entradas variarem. Quando EU for alto, estes conteúdos 
aparecerão no barramento W. 
 
Simulação: 
 
A simulação realizada foi gerada pelo software Quartus II© da ALTERA Corporation® 
mostra os diagramas de forma de onda. 
 
No diagrama da figura Fig. 3.12.2, foram realizadas as seguintes somas simples: 3 + 3, 2 
+ 1 e 2 + 2. 
 
No diagrama dafigura Fig. 3.12.3 foram realizadas as seguintes subtrações simples: 4 - 
3, 1 - 1 e 5 – 2. 
 
 
 
 
 
 
Relatório SAP-1 Página 23 
 
 
Fig. 3.12.2 – Diagrama de Simulação das Somas. Repare que há rápidos picos nas saídas devido 
ao atraso do sinal. 
Relatório SAP-1 Página 24 
 
 
Fig. 3.12.3 – Diagrama de Simulação das Subtrações. Repare que há rápidos picos nas saídas 
devido ao atraso do sinal. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Relatório SAP-1 Página 25 
 
4- Programando o SAP-1 
 
 
 Realizar a programação do SAP 1 é uma tarefa relativamente simples. Basta setarmos 
as chaves de controle corretamente e programarmos as instruções que desejamos executar. 
Depois, modificamos as chaves de controle para iniciarmos a execução. Uma vez que a 
execução começou, temos apenas que esperar, pois o SAP 1 é automático uma vez que está 
programado. 
 
 O algoritmo para programação do SAP 1 é o seguinte. 
 
1. A chave Select é deixada em nível baixo para podermos programar o SAP 1; 
2. Enviamos um sinal alto para na chave Limpar/Iniciar, depois voltamos para baixo (estamos 
limpando os componentes do SAP 1 para começar um programa); 
3. Nas chaves A0-3 colocamos o endereço da instrução ou dado que desejamos gravar na 
RAM; 
4. Nas chaves D0-7 colocamos a instrução ou dado que desejamos gravar; 
5. Damos um sinal de “clock” na chave Program; 
6. Repetimos os passos 3, 4 e 5 até programarmos todas as instruções e dados desejados; 
7. Se desejarmos usar o clock automático, levamos Auto/Manual para nível alto, se 
desejarmos usar o clock Etapa Única, levamos Auto/Manual para nível baixo; e 
8. A chave Select é deixada em nível alto para iniciarmos a execução do SAP 1. 
 
 Uma vez que o SAP 1 foi programado, só temos que esperar até todas as instruções 
sejam executadas automaticamente (ou dando o clock do Etapa Única) para termos nossa 
saída. 
 
Exemplo de Programação: 
 
 Vamos programar a seguinte seqüência de instruções: 
 
Endereço Instruções 
0H LDA 9H 
1H ADD AH 
2H ADD BH 
3H SUB CH 
4H OUT 
5H HLT 
Tabela 4.1 – Instruções a serem programadas. 
 
 Vamos também setar alguns dados nas posições usadas pelas instruções. Temos os 
seguintes dados então: 
 
Endereço Dados 
9H 10H 
AH 14H 
BH 18H 
CH 20H 
Tabela 4.2 – Dados a serem inseridos. 
 
 
Relatório SAP-1 Página 26 
 
 
 Temos então que programar estas instruções e inserir estes dados. Primeiramente 
damos um sinal de LIMPAR/INICIAR alto, depois voltamos para baixo. Colocamos a chave 
Select em baixo. 
 
 Colocamos 9H (1001bin) nas chaves A e 10H (00010000bin) em D e damos um clock em 
Program. Agora colocamos AH (1010bin) em A e 14H (00010100bin) em D e damos um clock 
em Program. Repetimos o processo colocando os seguintes dados em A e D, e depois 
dando o clock: 
 
1. BH (1011bin) em A e 18H (00011000bin) em D; 
2. CH (1100bin) em A e 20H (00100000bin) em D; 
3. 0H (0000bin) em A e 09H (00001001bin) em D; LDA 9H 
4. 1H (0001bin) em A e 1AH (00011010bin) em D; ADD AH 
5. 2H (0010bin) em A e 1BH (00011011bin) em D; ADD BH 
6. 3H (0011bin) em A e 2CH (00101100bin) em D; SUB CH 
7. 4H (0100bin) em A e EXH (1110XXXXbin) em D; e OUT 
8. 5H (0101bin) em A e FXH (1111XXXXbin) em D; HLT 
 
A figura abaixo mostra como foi montada a programação usada neste exemplo no 
software Quartus II© da ALTERA Corporation®. 
 
 
 Fig. 4.1 – Programação do Exemplo no Quartus. 
 
 
Relatório SAP-1 Página 27 
 
5- Simulação do SAP-1 
 
 
 Após montar todos os componentes funcionais do SAP 1, utilizamos software Quartus 
II© da ALTERA Corporation® para realizar simulações do funcionamento do SAP 1. Utilizamos 
o exemplo de programa cedido pelo livro texto. Ficamos com o seguinte programa. 
 
1. LDA 9H 
2. ADD AH 
3. ADD BH 
4. SUB CH 
5. OUT 
6. HLT 
 
 No primeiro comando ele carrega o valor contido no endereço 9H da RAM no 
Acumulador. 
 
���������� � ����9 !; 
 
 No segundo comando, ele carrega o valor contido no endereço AH da RAM no 
registrador B, realizamos a soma através do Somador-Subtrator dos valores do registrador B 
com o Acumulador e gravamos este valor no acumulador. 
 
�#$%&'����� 	 � ����� !; 
���������� � ���������� � �#$%&'����� 	; 
 
 No terceiro comando, gravamos o que estiver na posição BH da RAM no registrador B 
e realizamos a soma através do Somador-Subtrator do valor contido no registrador B com o 
valor do Acumulador e grava o resultado no Acumulador. 
 
�#$%&'����� 	 � ����	 !; 
���������� � ���������� � �#$%&'����� 	; 
 
 O quarto comando carrega o valor da posição CH da memória no registrador B e 
realizar uma subtração através do Somador-Subtrator do valor contido no registrador B no 
Acumulador e grava o resultado no Acumulador. 
 
�#$%&'����� 	 � ����( !; 
���������� � ���������� ) �#$%&'����� 	; 
 
 O quinto comando carrega o valor do Acumulador no Registrador de Saída. 
 
�#$%&'����� �# 
�� � ����������; 
 
 O sexto e último comando é usado para parar a execução do SAP 1. 
 
 Depois de programar o SAP 1 e inserir os dados nas posições citadas (vide o tópico 
Programação do SAP 1 para mais detalhes), mudamos Select para 1, ligamos o entrada clock 
em um circuito gerador de clock (ou um gerador de freqüência), setamos AUTO/MANUAL para 
1, e colocamos LIMPAR/INICIAR em 0. 
Relatório SAP-1 Página 28 
 
 
 Realizamos a simulação do Quartus com o arquivo de formato de ondas criado na 
etapa de programação do SAP 1. O resultado obtido (omitindo a parte de programação já 
mostrada em tópicos anteriores) é mostrado na figura abaixo. 
 
 
Fig. 5.1 – Diagrama de Simulação do SAP 1. 
 
 Observamos que o saída clockREAL tem metade de freqüência do clock, isto era 
esperado, pois clockREAL é o clock fornecido pelo Eliminador de Trepidação, que atua como 
um divisor de freqüência. 
 
 Também notamos que após a execução da última instrução (HLT), o clockREAL pára. O 
que também era esperado, pois o este comando deveria parar a execução do SAP 1. 
 
 O valor mostrado pelas Saídas do SAP 1 é 1CH, Este valor é o resultado das operações 
realizadas pelo SAP 1. As operações foram: 
 
10 � 14 � 24 
24 � 18 � 3( 
3( ) 20 � 1( 
 
 Portanto, o resultado obtido pelo SAP 1 também era esperado. Portanto, podemos 
dizer que a simulação foi um sucesso. 
 
 
 
 
 
 
 
 
 
 
 
 
Relatório SAP-1 Página 29 
 
6- CONCLUSÕES 
 
 Apesar de relativamente simples comparado com arquiteturas comerciais, o SAP-1 
demandou bastante tempo e trabalho para ser implementado e entendido. Além disso, ele 
apresenta muito dos fundamentos que estas mesmas arquiteturas comerciais utilizam, porém 
obviamente em escalas bem mais simples e compreensíveis. 
 
 Concluímos por fim que a construção e simulação do SAP-1 foi uma tarefa interessante 
de ser executada, e colaborou muito em nossa formação como Engenheiros da Computação.

Outros materiais