Baixe o app para aproveitar ainda mais
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.
Compartilhar