Relatorio 02 - Sap-1
September 21, 2022 | Author: Anonymous | Category: N/A
Short Description
Download Relatorio 02 - Sap-1...
Description
UNIVERSIDADE FEDERAL DE SÃO CARLOS CENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA DEPARTAMENTO DE COMPUTAÇÃO
Relatório 02
MICROPROCESSADOR SAP-1
LABORATÓRIO DE ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES Professor Edílson Reis Rodrigues Kato
BCC 2007 Carlos Eduardo Barbosa 298565 César Roberto de Souza 298603 Paulo Eduardo Papotti 298425
Junho – 2008
Índice Analítico 1. OBJETIVOS......................................... OBJETIVOS................................................................. ........................................ ................ 3 2. INTRODUÇÃO TEÓRICA.................... TEÓRICA ............................................ ........................................ ................ 4 A. B.
MICROPROCESSADORES ...............................................................................4 MICROPROCESSADOR “SIMPLES QUANTO POSSÍVEL” ....................... ......................................5 ...............5 i. Visão geral............... geral......................................... .................................................... ................................................... ........................... ..5 5 ii. Caracterí Características...................... sticas................................................ ................................................... ........................................6 ...............6 iii. Conjunto de Instruçõ Instruções...................................... es................................................................ .....................................7 ...........7 iv. Layout......................... Layout................................................... .................................................... ..................................................8 ........................8 C. PLATAFORMAS DE DESENVOLVIMENTO ...........................................................9 i. Altera FLEX 10K (FPGA)......................................... (FPGA)................................................................... ...............................9 .....9 ii. Altera Quartus II Web Edition Edition ......................... .................................................. ......................................10 .............10
3. MATERIAL UTILIZADO............................................ UTILIZADO............................................................. ................. 11 11 4. MONTAGEM DOS BLOCOS........................ BLOCOS ............................................... ............................. ...... 12 A. B. C. D. E. F. G. H. I. J.
BLOCO 01 –– CONTADOR DE PROGRAMA .......................................................13 BLOCO 02 –– REGISTRADOR DE ENDEREÇOS DE MEMÓRIA .............................16 BLOCO 03 –– MEMÓRIA ................................................................................18 BLOCO 04 –– REGISTRADOR DE INSTRUÇÕES.................................................22 BLOCO 05 –– CONTROLADOR-SEQÜENCIALIZADOR .........................................25 BLOCO 06 –– ACUMULADOR..........................................................................28 BLOCO 07 –– SOMADOR-SUBTRATOR ............................................................30 BLOCO 08 –– REGISTRADOR B......................................................................32 BLOCO 09 –– REGISTRADOR DE SAÍDA...........................................................34 BLOCO 10 –– INDICADOR VISUAL EM HEXADECIMAL (DISPLAY).........................35 ).........................35
5. MONTAGEM DO SAP-1 .............................................. ............................................................ .............. 38 A. B. C. D.
ESQUEMÁTICO ............................................................................................38 PROGRAMAÇÃO ..........................................................................................40 SIMULAÇÃO ...................... ................................................ .................................................... ................................................42 ......................42 OBSERVAÇÕES...........................................................................................46 ...........................................................................................46
6. CONCLUSÃO ............................................... ....................................................................... ............................. ..... 47 7. REFERÊNCIAS BIBLIOGRÁFICAS......................................... BIBLIOGRÁFICAS........................................... 48 8. LISTAGEM DE TABELAS E FIGURAS .................................... .................................... 49
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
2
1. Objetivos Neste segundo e último relatório da disciplina de Laboratório de Arquitetura e Organização de Computadores implementaremos o microprocessador SAP-1 (Simple-As-Possible ) utilizando todos conceitos adquiridos durante o andamento da disciplina e as ferramentas à nós disponibilizadas pelo laboratório. O SAP-1 é uma criação dos autores do livro “Digital Computer Electronics ””,, Albert Paul Malvino e Jerald Brown , como uma maneira de apresentar o funcionamento interno de um microprocessador a partir de um modelo didático simples, mas funcional. A construção do microprocessador se dará por partes, iniciando sua construção a partir de seus blocos básicos, como memória , unidade aritmética , acumuladores e registradores , prosseguindo para a montagem e teste finais assim que todos os blocos estiverem totalmente prontos e testados. Seguindo os passos fornecidos no livro-texto de Malvino , e contando com a vantagem de podermos utilizar a plataforma Altera Quartus II para para montar e testar nosso projeto, imaginamos que este será um processo bastante simples e direto.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
3
2. Introdução Introdu ção Teórica a. Microprocessadores O microprocessador é um circuito integrado para controle das funções aritméticas e de tomadas de decisões em um computador. Todo computador precisa de um processador, sendo considerado o cérebro do mesmo. Ele é o principal elemento que compõe a Unidade Central de Processamento (CPU - Central Processing Unit ). ). Processadores trabalham apenas com linguagem de máquina (instruções binárias), podendo realizar diversas tarefas. Tais tarefas consistem em operações matemáticas e lógicas, além de operações de busca, leitura e gravação de dados. Uma vez que haja informações na memória, o processador pode executar programas e processar dados ali contidos.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
4
b. Microprocessador “Simples Quanto Possível” i. Visão geral O microprocessador SAP (da expressão na língua inglesa: “Simple-As- Possible ” – Simples quanto possível) é um processador projetado especificamente para propósito acadêmico e não tem nenhum valor comercial (exceto pelo valor intelectual). Possui uma arquitetura de 8-bits e contém uma memória 16x8, ou seja, 16 posições de memória capaz de armazenar 8 bits cada. Assim, são necessárias somente 4 linhas de endereçamento provenientes de seu contador de programa (em sua fase de funcionamento) ou de suas linhas de programação manuais, utilizadas para inserção de dados e programas em sua memória (em sua fase de programação). Todas suas instruções (somente 5) são armazenadas nesta memória, juntamente com c om os dados. É notável, portanto, que o SAP não consegue armazenar um programa que contenha mais do que 16 instruções. O microprocessador SAP consegue apenas realizar operações de adição e subtração e nenhum tipo de operação lógica. Tais operações são realizadas por uma unidade aritmética somadora-subtratora de de 8 bits. Há um registrador de propósito geral ( Registrador B ) utilizado para armazenar um operando de operação aritmética enquanto o outro é armazenado pelo registrador acumulador . Em adição, no desenho original existem 8 LEDs como unidade de saída conectados à seu registrador de saída . Toda atividade e movimento de dados são coordenados pelo controlador/seqüencializador do SAP-1.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
5
ii. Características O microprocessador SAP-1 original é caracterizado por possuir:
Um dispositivo de saída (8 LEDs); Memória de 16 bytes, somente para leitura; Apenas 5 Instruções; o 3 com 1 operando; o 2 com operadores implícitos;
Arquitetura de Acumulador: o Acumulador; o Registrador de Saída;
o
Registrador B; Registrador de Endereços de Memória; o Registrador de Instrução;
o
Barramento “W” de 8-bits; Contador de programa de 4-bits somente crescente; Registrador de Endereços de Memória de 4-bits; Memória 16x8-bits; Registrador de instruções de 8-bits; Controlador de 6 ciclos com palavra de microinstrução de 12-bits; Acumulador de 8-bits; Registrador B de 8-bits; Somador-subtrator de 8-bits; Registrador de saída de 8-bits;
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
6
iii. Conjunto de Instruções O conjunto de instruções do SAP-1 é bastante simples. Com apenas 5 instruções, sendo duas aritméticas, duas de deslocamento de dados e uma de parada, não há instrução de comparação lógica, instruções de branch ou ou de jump . Assim, torna-se bem fácil entender o funcionamento básico de um processador sem se aprofundar demasiadamente em detalhes que, apesar de importantes, ofuscariam o real objetivo deste modelo que é justamente a compreensão da estrutura fundamentalmente básica na concepção de um computador. Assim, o quadro de instruções é apresentado a seguir, seguido de seus op-codes, ou seja, as palavras binárias que podem ser armazenadas em memória para denotar uma instrução específica.
Mnemônicos
Operação
Código Op
LDA
Carrega os dados da RAM no acumulador
0000
ADD
Soma os dados da RAM com o acumulador
0001
SUB
Subtrai os dados da RAM do acumulador
0010
OUT
Carrega os dados do acumulador no registrador de saída
1110
HLT
Para o processamento
1111
Table 1: Tabela 1: Tabela de mnemônicos e de instruções para o microprocessador SAP-1.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
7
iv. Layout O SAP-1 é organizado em blocos, todos se comunicando entre si por um barramento central denominado “W “W”.
Figure 2.1: Diagrama 2.1: Diagrama representativo para o Microprocessador SAP-1.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
8
c. Plataformas de Desenvolvimento i. Altera FLEX 10K (FPGA) A família Altera FLEX 10K de dispositivos embarcados de lógica programável provê a flexibilidade da lógica programável tradicional com a eficiência e densidade de gate arrays embarcados. Com sua implementação de estrutura lógica dupla – a array embarcada e a array lógica – a família FLEX10K trouxe a lógica programável ao principal mercado de gate arrays.
Figure 2.2: Diagrama 2.2: Diagrama esquemático representativo do Altera FLEX10K .
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
9
ii. Altera Quartus IIII Web Edition O Altera Quartus II é um software destinado ao desenho e programação de dispositivos lógicos programáveis, contando com uma implementação das linguagens VHDL, AHDL e Verilog para descrição de hardware, bem como uma representação simbólica (diagrama esquemático) de relativo fácil uso, permitindo a edição visual e simulação de circuitos lógicos.
Figure 2.3: Ambiente 2.3: Ambiente de desenvolvimento Altera Quartus II Web Edition v7.2 .
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
10
3. Material Utilizado Altera Quartus II Web Edition v7.2
•
Dispositivo programador para circuitos lógicos Altera Altera FLEX 10K
• •
Porta paralela
•
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
11
4. Montagem dos Blocos Os blocos a seguir foram implementados utilizando a plataforma de desenvolvimento Altera Quartus II , um dispositivo programador uma placa de testes acoplados numa mesma placa de circuito impresso Tal placa conta com diversos dispositivos de entrada (pushbuttons , chaves DIP, comunicação digital) e de saída (LEDs, displays, serial ), ), podendo programar tanto chips removíveis, como o MAX7000S, quanto um chip fixo, o tal como o FLEX10K, que é o que utilizaremos em todos os blocos seguintes neste relatório. Como convenção, utilizaremos, durante todo o relatório, a letra “ n ” procedendo uma entrada, saída ou sinal lógico para indicar que tal sinal está negado. Assim, nCLR nCLR será equivalente à CLR’ CLR’.. Os níveis lógicos também serão indicados por HIGH ee LOW para para verdadeiro e e falso , ou 1 e 0 , respectivamente.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
12
a. Bloco 01 – Contador de Programa No microprocessador SAP-1, os programas são armazenados em memória de maneira seqüencial, sendo a primeira instrução armazenada na posição 0000, a segunda em 0001 e assim por diante. Assim, para caminhar pela memória faz-se necessário um dispositivo capaz de contar de 0000 0000 até até 1111 1111,, percorrendo todas as instruções que possam estar ali armazenadas. Antes de cada processamento do computador, o contador de programa é resetado (voltando ao seu estado inicial, 0000 0000), ), e assim a primeira instrução é lida. Ao final do ciclo de busca e execução desta instrução, o contador é então acrescido de 1; e passa a contar 0001 0001,, apontando, portanto, para a próxima instrução. Para construirmos o bloco contador de programa no software Altera Quartus II , utilizamos 4 flip-flops JK oriundos do circuito integrado 74107 conforme apresentado no livro-texto de Malvino . Notamos, no entanto, que estes poderiam ser substituídos por flip-flops do tipo T já que a organização externa utilizada (alimentando J e K com a mesma entrada) é nada mais do que a simplificação utilizada pelo tipo T. Lembramos ainda que, como o bloco se comunicará com o barramento W, este deverá ter sua saída em tri- state , afim de não perturbar o fluxo de dados enquanto sua saída for desnecessária.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
13
A seguir, apresentamos o diagrama esquemático para o bloco contador de programa do microprocessador SAP-1 desenvolvido no software Quartus II .
Figure 4.1: Diagrama 4.1: Diagrama esquemático do bloco Contador de Programa do do SAP-1.
Como podemos observar, as entradas Cp Cp e Ep Ep são responsáveis, respectivamente, por acrescentar o contador no próximo ciclo de clock e e por habilitar suas saídas, comunicando-se com o barramento. O restabelecimento do estado inicial ( reset ) é ajustado pela entrada nCLR nCLR..
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
14
A seguir, apresentamos a simulação do bloco, operando como esperado:
Figure 4.2: Diagrama 4.2: Diagrama de ondas (simulação) do bloco Contador de Programa .
Novamente, como podemos ver, a contagem em binário ocorre sempre que Cp está Cp está em HIGH ee o ciclo de clock é completado. Sempre que a entrada Ep Ep estiver em LOW , as saídas entram no terceiro estado (de alta impedância). Vale ressaltar, ainda, que a desabilitação das saídas não interfere na contagem interna, que continua normalmente. Observando, podemos também confirmar que, quando Cp Cp está em LOW o contador não é adicionado, mas suas saídas se mantêm constantes no último valor armazenado.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
15
b. Bloco 02 – Registrador de Endereços de Memória Após implementar e testar o contador de programa, iniciamos a construção do bloco registrador de endereços de memória (REM). Tal bloco é responsável por armazenar o endereço de memória apontado pelo contador de programa ou pela instrução aritmética sendo executada. No próximo ciclo de clock , o REM aplica este endereço de 4 bits à RAM, onde uma operação de leitura será realizada.
(REM). Figure 4.3: Diagrama 4.3: Diagrama esquemático do Registrador de Endereço de Memória (REM).
No esquemático acima, os 4 bits de endereço de memória (A (A0, A1, A2, A3) são armazenados no registrador sempre que suas entradas estiverem habilitadas, ou seja, sempre que nG1, nG2 estiverem em LOW , o que é controlado pela entrada nLM nLM (Load M emory emory ). ). As saídas do Registrador de Endereços de Memória estão sempre habilitadas, já que não se comunicam com o barramento e não necessitam entrar no terceiro estado. Assim, podemos com segurança fixar nM nM e nN nN,, que controlam a habilitação da saída, em GND .
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
16
Finalizando a montagem, partimos para a simulação do bloco, que fora efetuada com sucesso.
Figure 4.4: Diagrama 4.4: Diagrama de ondas (simulação) do Registrador de Endereço de Memória (REM).
No diagrama de ondas acima apresentado, vemos que o Registrador de Endereços de Memória armazena armazena corretamente a informação contida em A3, A2, A1, A0 sempre que nLM nLM está está em LOW , e a mantêm sempre nLM nLM esteja esteja em HIGH , não importando o que esteja passando em suas entradas.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
17
c. Bloco 03 – Memória O bloco de memória é uma RAM TTL estática de 16x8 (o que significa que é possível armazenar 8 bits em cada uma das 16 posições de memória). Durante um processamento do computador, a RAM recebe endereços de 4 bits fornecidos pelo Registrador de Endereços de Memória e no próximo ciclo de clock é executada uma operação de leitura. Assim, a instrução ou palavra de dados armazenadas na posição determinada deve ser colocada no barramento W para uso pelos outros componentes do computador.
Figure 4.5: Detalhamento 4.5: Detalhamento de um dos 16 componentes memória de 8 bits presentes presentes no bloco de memória de 16x8 bits .
No esquemático acima apresentado, para lermos um valor deste componente de memória, devemos fornecer LOW a entrada Ce00, HIGH a entrada Write00, e aguardarmos a descida do clock (a lógica está invertida). Para escrevermos, basta repetir o processo, mas invertendo Write00 e fornecendo algum dado às entradas D7, D6, D5, D4, D3, D2, D1 e D0.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
18
Assim, notamos que para criar o bloco de memória com 16 componentes basta utilizarmos dois multiplexadores (4 para 16) que, fornecidos o endereço de 4 bits A3A2A1A0, ativará corretamente componente escolhido para operações de leitura ou escrita.
Figure 4.6: Visão 4.6: Visão parcial do bloco de Memória (16x8) (16x8) para o microprocessador SAP-1. No diagrama acima as conexões estão simplificadas para evitar o sobrecarregamento da imagem, dificultando seu entendimento. O software Altera Quartus II suporta suporta e interpreta corretamente este tipo de implícito de conexão.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
19
Figure 4.7: Visão 4.7: Visão geral do bloco de memória, exibindo a composição de suas 16 memórias de 8 bits.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
20
Após construir a memória, prosseguimos com sua simulação. Em nosso teste, decidimos armazenar alguns valores aleatórios nas posições 0000 e 0001, carregando-as posteriormente, intercaladamente.
Figure 4.8: Diagrama 4.8: Diagrama de ondas (simulação) do bloco de Memória do do Sap-1.
Como podemos observar, a memória fora escrita sempre que nWrite nWrite e o sinal de clock permaneceram em LOW . Invertendo nWrite nWrite,, vemos que a saída fornecida ainda representa o valor armazenado na primeira escrita. A seguir, trocando a posição para 0001 e armazenando outro valor qualquer nos fornece o mesmo resultado, mesmo que tenhamos lido a posição 0000 novamente entre a operação de escrita e leitura da posição 0001. Com isso, verificamos a independência dos componentes da memória. Como nCE permaneceu ativo durante a maior parte do tempo da simulação, nCE permaneceu pudemos verificar o que estava sendo armazenado em memória a cada passo. No final da simulação, setamos nCE nCE em HIGH e verificamos que a memória entra no terceiro estado, não prejudicando o funcionamento do barramento, ocorrendo o mesmo quando o sinal de clock está está em HIGH .
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
21
d. Bloco 04 – Registrador de Instruções O registrador de instrução é a parte da CPU que armazena a instrução que atualmente está sendo executada. Nos processadores simples, cada instrução para ser executada é carregada no registrador de instrução, e permanece enquanto a instrução é decodificada. Este processo pode levar diversos passos. Já nos processadores mais complexos, usa-se o conceito de pipeline , podendo executar mais de uma instrução no mesmo ciclo de processamento. No SAP-1, quando é preciso buscar uma determinada instrução, é preciso que aconteça uma operação de leitura de memória, para que seja colocado no registrador de instruções o o endereço da instrução a ser executada. Desta forma, o processador realiza uma operação de leitura de memória e coloca o conteúdo buscado no barramento W. Ao mesmo tempo, o registrador de é preparado para carregamento na próxima transição positiva de instruções é clock .
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
22
Para implementar o bloco Registrador de Instruções, são necessários dois flip-flops do tipo D para armazenarem a informação inserida através das entradas A7, A6, A5, A4, A3, A2, A1 e A0.
Figure 4.9: Diagrama 4.9: Diagrama esquemático do bloco Registrador de Instruções do do Sap-1.
O conteúdo do registrador de instruções é dividido em dois meios-bytes, denominados nibbles . O nibble superior, superior, indicado pelas saídas I7I6I5I4 é uma saída de dois estados que vai diretamente ao bloco Controlador- inferior é uma saída de três estados conectada Seqüencializador . Já o nibble inferior ao barramento W, indicada por S3S2S1S0 e habilitada somente quando necessário.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
23
Como a saída do nibble superior superior possui apenas dois estados, podemos com segurança aterrar as entradas nM nM e nN nN do registrador da parte inferior do diagrama em GND , deixando sua saída sempre habilitada. Já para o outro registrador, conectamos sua entrada à entrada nEi nEi do bloco. O carregamento de ambos registradores ocorrerá através da ativação da entrada nLi nLi,, conectada à nG1 nG1 e e nG2 nG2 dos dos dois circuitos. Uma vez finalizado, prosseguimos com a simulação do bloco registrador de instruções.
Figure 4.10: Diagrama 4.10: Diagrama de ondas (simulação) do Registrador de Iinstruções .
Para efetuar sua simulação, armazenamos valores aleatórios no registrador e verificamos sempre suas saídas. Como vemos, a informação é armazenada somente se nLi nLi está LOW , e caso esteja em HIGH , sua informação mantida. Ao ligarmos nEi nEi,, vemos que somente as saídas direcionadas ao barramento (S3S2S1S0) entram no terceiro estado, conforme o esperado.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
24
e. Bloco 05 – Controlador-Seqüencializador Para operar corretamente, o microprocessador precisa sincronizar toda ação que está fazendo. Para gerenciar esta sincronização, existe um bloco denominado Controlador-Seqüencializador responsável por interpretar as instruções e gerar os sinais de controle apropriado a cada unidade que forma nossa CPU. Assim, os 12 bits que vêm para fora do Controlador-Seqüencializador formam uma palavra que controla o resto do computador (como um supervisor que diz aos outros o que fazer). Os 12 fios que transportam a palavra de controle são chamados barramento de controle . A palavra de controle tem o formato de
Esta palavra determina como os registradores reagirão à próxima transição positiva de relógio (CLK). Por exemplo, um Ep Ep em HIGH e um nLm nLm em LOW significam que o conteúdo do contador de programa será retido no Registrador de Endereços de Memória na próxima transição positiva de relógio. Subseqüentemente, um LOW nCE e um LOW nLa significam que a nCE e nLa significam palavra da RAM cujo endereço está armazenado no Registrador de Endereços de Memória será transferida para o acumulador na próxima transição positiva de clock .
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
25
Para implementarmos o bloco Controlador-Seqüencializador , necessitamos de um contador em anel e uma matriz de controle. O contador em anel se faz necessário, pois cada instrução lida deve efetuar um número finito de passagens seqüenciais sincronizadas. No caso do SAP-1, o máximo de passos que uma de suas instruções pode realizar são apenas seis, logo precisamos de um contador em anel de apenas 6 passos.
Figure 4.11: Diagrama 4.11: Diagrama esquemático para o bloco Controlador-Seqüencializador .
Como vemos, o controlador-seqüencializador nada mais é do que uma máquina de estados dependente da instrução e do sinal de clock fornecidos. Cada estado determina uma palavra de controle enviada através das 12 saídas existentes neste bloco.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
26
Uma vez implementado, iniciamos sua simulação fornecendo opcodes (instruções) e observando as saídas geradas a cada ciclo de execução.
Figure 4.12: Diagrama 4.12: Diagrama de ondas (simulação) do bloco Controlador-Seqüencializador .
Como podemos observar, fornecendo as instruções LDA (0000 ), ), ADD (0001), SUB (0010 )),, OUT (1110 ) e HLT (1111) o Controlador- Seqüencializador se comporta exatamente como previsto, originando os sinais necessários tal como descrito por Malvino .
Figure 4.13: Diagrama 4.13: Diagrama de temporização esperado de busca e execução da instrução LDA.
Figure 4.14: Diagrama 4.14: Diagrama de temporização esperado de busca e execução da instrução ADD. ADD.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
27
f. Bloco 06 – Acumulador O Acumulador (A) (A) é um registrador de memória intermediária que armazena respostas intermediárias durante um processamento no computador. O acumulador tem duas saídas. A saída de dois estados vai diretamente ao somador-subtrator . A saída de três estados vai ao barramento W. Portanto, a palavra do acumulador de 8 bits continuamente comanda o somador- subtrator ; e esta mesma palavra também aparece no barramento W quando Ea está Ea está em HIGH .
Figure 4.15: Diagrama 4.15: Diagrama esquemático para o bloco Acumulador do do Microprocessador SAP-1.
Para implementarmos a saída tri-state, utilizamos um CI 74244 que nada mais é do que um circuito composto de 8 tri-state buffers que serve ao nosso propósito de maneira bastante adequada. Contudo, como suas entradas de habilitação n1G n1G e e n2G n2G são são barradas, tivemos de acrescentar uma porta lógica NOT NOT à à linha ENABLE ENABLE a a fim de manter compatibilidade com o restante de nosso esquema.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
28
Uma vez montado, iniciamos a simulação de nosso circuito que nada mais é do que um registrador com saída dupla, uma com três estados e outra com apenas dois que refletem sempre a mesma palavra.
Figure 4.16: Diagrama 4.16: Diagrama de ondas (simulação) do bloco Acumulador do do SAP-1.
Como vemos, nosso acumulador registrou adequadamente os dados que lhe foram passados, desabilitando a saída tri-state sempre sempre que ENABLE ENABLE estiver em LOW . O circuito armazena as informações somente se nLOAD nLOAD também estiver em LOW , retendo as informações caso contrário.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
29
g. Bloco 07 – Somador-Subtrator O SAP-1 utiliza um somador-subtrator completo de 8 bits de complemento de 2. Quando Su Su estiver estiver em LOW , a soma fora do somador-subtrator será: será: S = A + B
E quando Su estiver em HIGH , aparecerá a diferença: Su estiver S = A + B’
O somador-subtrator éé assíncrono (não-sincronizado); isto significa que seu conteúdo pode variar assim que as palavras de entrada variem. Quando Eu Eu for alto, estes conteúdos aparecerão no barramento W.
Figure 4.17: Diagrama 4.17: Diagrama esquemática do bloco Somador-Subtrator do do SAP-1.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
30
Uma vez montado, prosseguimos para sua simulação. Para simular, efetuamos diversos cálculos utilizando soma e subtração, bem como testamos se, ao ativar Eu Eu (ENABLE ENABLE)) a saída entrava no estado de alta impedância.
Figure 4.18: Diagrama 4.18: Diagrama de ondas (simulação) do bloco Somador-Subtrator .
Como podemos observar, o circuito opera conforme o esperado. No diagrama de ondas acima, podemos ver que a unidade efetua corretamente as operações de adição e subtração, bem como desativa suas saídas sempre que ENABLE ENABLE estiver estiver em nível lógico baixo. Podemos notar também um tipo de ripple nas nas transições de Su Su,, mas que felizmente não alterou o desempenho de nosso circuito final.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
31
h. Bloco 08 – Registrador B O Registrador B é é outro registrador de memória intermediária. Ele é usado em operações aritméticas. Quando nLb nLb está em LOW e ocorre uma transição positiva de clock , a palavra atual localizada no barramento W é armazenada dentro do Registrador B . A saída de dois estados do Registrador B comandará comandará o somador-subtrator , fornecendo o número a ser adicionado ou subtraído do conteúdo do acumulador.
Figure 4.19: Diagrama 4.19: Diagrama esquemático para o bloco Registrador do do Microprocessador SAP-1.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
32
Uma vez montado o circuito e compilado, prosseguimos pro sseguimos para sua simulação.
Figure 4.20: Diagrama 4.20: Diagrama de ondas (simulação) do bloco Registrador .
Pode-se notar que o Registrador B armazenada armazenada adequadamente o conteúdo do barramento W (fornecido pelas entradas A7A6A5A4A3A2A1A0) para dentro de si, liberando sua saída constantemente já que esta nunca entra em tri- state . É possível observar, também, que o registrador mantém este comportamento se, e somente se, sua entrada nLOAD nLOAD encontra-se em LOW , conforme era de se esperar.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
33
i. Bloco 09 – Registrador de Saída O Registrador de Saída , ou porta de saída, é o caminho por onde os dados processados podem ser armazenados para serem exibidos ao usuário através de algum dispositivo de saída, tal como um monitor, uma impressora, ou, em nosso caso, um display de LEDs. O Registrador de Saída nada nada mais é do que o mesmo registrador montado no bloco Registrador B . Portanto, utilizaremos o mesmo bloco na montagem final de nosso circuito.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
34
j. Bloco 10 – Indicador Visual em Hexadecimal (Display) O indicador visual em hexadecimal é uma fileira de dois displays de sete segmentos. Portanto, depois de termos transferido uma resposta do Acumulador para o Registrador de Saída , podemos ver a resposta em sua forma hexadecimal. Para tanto, criamos um circuito decodificador binário para sete segmentos capaz de exibir conjuntos de 4 bits em sua forma hexadecimal. Como o dispositivo onde emulamos o circuito geralmente apresenta a lógica de saída invertida (exibindo LEDs acesos indicando nível lógico baixo), incluímos também uma entrada capaz de inverter a saída de nosso bloco decodificador.
displa y de sete segmentos. Figure 4.21: Representação 4.21: Representação hexadecimal em um display
Como exercício, implementamos o decodificador em código AHDL, a linguagem de representação de Hardware proprietária da Altera Corporation , com função similar (mas aparência distinta) ao VHDL. Nosso código será apresentado na página seguinte.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
35
Figure 4.22: Código 4.22: Código AHDL para o bloco decodificador hexadecimal . Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
36
Uma vez codificado e compilado, iniciamos a simulação do bloco.
Figure 4.23: Diagrama 4.23: Diagrama de ondas (simulação) para o bloco decodificador hexadecimal .
Como podemos observar, a simulação ocorreu conforme o esperado, já que utilizamos a própria tabela verdade do decodificador o que diminui a chance de erros geralmente causados pela ligação errada ou junção de nós sem intenção. Ao inserir o valor 15 15,, observamos que são ativados os segmentos a, e, f, g do display, o que correspondem à letra F, conforme podemos observar na figura ao lado. O mesmo ocorre com o valor 0, quando são ativados os segmentos a, b, c, d, e, f e com o valor 10 10,, quando são ativados os segmentos a, b, c, e, f, g, indicando a letra A. Modificando a entrada N para HIGH, vemos que a saída é realmente invertida, como podemos observar na exibição do número 1 no instante t=500 µ µ s s .
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
37
5. Montagem do SAP-1 a. Esquemático Munidos de todos os blocos fundamentais constituintes do SAP-1, a única tarefa restante a ser realizada era agrupar e conectar todos os blocos, entradas e saídas num único circuito. Para tanto, iniciamos desenhando o barramento W e conectando cada bloco à medida que estes fossem adicionados ao esquemático. A seguir, conectamos as linhas de controle, os sinais de clock e e as entradas CLR . Como circuitos adicionais, implementamos a unidade de entrada (responsável pela inserção de dados diretamente na memória), o controlador de clock (responsável (responsável pela seleção da fonte, automática ou manual do clock ) e os eliminadores de ruído para as chaves seletoras.
O resultado final será apresentado na página seguinte.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
38
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
39
b. Programação Uma vez montado, iniciamos a fase de testes. Para tanto, executaremos o programa-exemplo 10-1 listado em Malvino , a fim de resolver o problema aritmético 16 + 20 + 24 - 32. 32 . O resultado, obviamente, deve ser igual a 28 28.. O programa-exemplo é reproduzido a seguir.
Figure 5.1: Programa-exemplo 5.1: Programa-exemplo em linguagem de montagem.
Traduziremos, pois, o programa para linguagem de máquina, utilizada para programar diretamente a memória de nosso microprocessador SAP-1.
Figure 5.2: Programa-exemplo 5.2: Programa-exemplo em linguagem de máquina.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
40
Assim, podemos iniciar a preparação para a simulação através da inserção do programa-exemplo na memória de nosso microprocessador SAP-1. Para isso, no início de nossa simulação em diagrama de ondas, habilitamos a entrada WRITE WRITE,, setamos o clock para manual deixando a entrada EnableClockAuto em LOW e habilitamos a especificação manual de EnableClockAuto endereços de memória deixando entrada EnableAutoAddressing EnableAutoAddressing também em LOW.
Figure 5.3: Detalhamento 5.3: Detalhamento da programação do SAP-1, em forma de diagrama de ondas. ondas.
Após este cuidado, basta selecionar o endereço desejado para a instrução através das entradas A3A2A1A0 e inserir a instrução em si através das entradas D7D6D5D4D3D2D1D0, o que também já foi feito conforme é exibido na figura acima.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
41
c. Simulação Agora que o programa já está pronto para ser “inserido” na memória do SAP-1, tudo que temos de fazer é iniciar seu funcionamento. Para tanto, devemos desligar a entrada WRITE WRITE (colocando em LOW ), ), habilitar o clock automático colocando EnableClockAuto EnableClockAuto em HIGH , e em seguida fornecer um pulso CLEAR CLEAR afim de restabelecer o estado inicial do contador de programa , do controlador-seqüencializador e dos registradores do processador. Após este pulso de CLEAR, o processador deverá entrar em seu funcionamento normal, lendo as instruções e as executando uma-auma. A página seguinte mostra o diagrama de execução do programa-exemplo de Malvino ocultando o funcionamento interno do SAP-1, mostrando apenas sua saída final.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
42
Figure 5.4: Diagrama 5.4: Diagrama de ondas (simulação) do Microprocessador SAP-1. Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
43
Neste diagrama, é possível observar que após a execução do programa foram ativadas as saídas a, d, e, f do primeiro display e as saídas b, c do segundo display.
Figure 5.5: Saída 5.5: Saída do microprocessador SAP-1 após execução do programa-exemplo para cálculo da expressão aritmética 16 + 20 + 24 – 32. 32.
Assim, a saída produzida fora o número hexadecimal 1C 1C,, que, em números decimais, representa o número 28 28,, que era a resposta esperada para este problema. A simulação fora, portanto, efetuada com sucesso.
A seguir, apresentamos o diagrama de ondas completo da execução de nosso programa, contendo todas as palavras de microinstrução geradas durante o processamento.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
44
Figure 5.6: Diagrama 5.6: Diagrama de ondas (simulação) do Microprocessador SAP-1, incluindo todos sinais de controle e sinal de clock interno.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
45
d. Observações Ao final desta seção, temos algumas observações a comentar. O processo de montagem e teste deste microprocessador se mostrou muito mais trabalhoso do que esperávamos. Apesar de termos chego a um resultado positivo, inúmeros problemas tiveram de ser trabalhados e repensados para que tudo funcionasse conforme o planejado. Um dos piores problemas encontrados fora a determinação do melhor tempo de clock para utilizarmos na simulação. De início, inadvertidamente utilizamos um período de clock muito baixo, resultando num comportamento completamente imprevisível de nosso experimento. Até notarmos este fato, um longo período se passou. Encontramos um valor aceitável para o clock em torno de 500µs, ou 2 kHz. Porém, o software Altera Quartus II continuou continuou gerando warnings mesmo mesmo após esta correção. Como medida de segurança, efetuamos os testes aqui presentes utilizando um clock de 4ms (250 Hz), que, apesar de grande, garantiu que os demais problemas encontrados em nossa simulação não fossem oriundos da rapidez da transição do sinal de clock . Outro problema comumente enfrentado fora o sobrecarregamento de fios em nossos diagramas. Sem perceber, acabávamos por causar curto-circuito no esquemático juntando dois nós distintos por acaso ao movimentar blocos e realizar novas conexões. Para resolver este problema, optamos por deixar implícita a ligação entre o bloco controlador-seqüencializador e os demais componentes do circuito, apenas nomeando os nós com uma identificação comum. O software Altera Quartus II consegue interpretar este tipo de conexão corretamente.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
46
6. Conclusão Após a conclusão do experimento pudemos verificar que houve grande evolução de aprendizado durante o decorrer da disciplina. No início, não sabíamos o real funcionamento de um processador, apenas tínhamos vagas noções de como um processador funcionava. Pode-se analisar como é a arquitetura de um processador, que um processador é composto de vários blocos e que cada um dos blocos tem uma função específica, em que juntos formam um conjunto extremamente harmônico e funcional.
Confirmamos que a realização de um projeto de um processador não é uma tarefa simples, onde tudo que é feito tem que ser feito com muita atenção e conhecimento teórico para a montagem de todos os circuitos que compõe um processador. Houve muita dificuldade para a junção dos blocos e testes do processador, uma vez que pequenos detalhes que passaram despercebidos mudaram toda a execução do circuito. Felizmente, os erros que haviam foram discutidos com todo o grupo e juntos conseguimos corrigi-los e entendemos suas causas e conseqüências, em que no final o projeto funcionou perfeitamente como o esperado. A disciplina de Laboratório de Arquitetura e Organização de Computadores contribuiu muito para o desenvolvimento de nossos conhecimentos e, portanto, nossa avaliação da disciplina, bem como os conhecimentos obtidos, foi tida como muito satisfatória.
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
47
7. Referências Referências Bibliográficas MALVINO, Albert Paul; LEACH, Donald P.. Eletrônica digital: princípios e aplicações. Carlos Richards Júnior (Trad.). São Paulo: McGraw-Hill, c1988. v.2. 356-684 p. MALVINO, Albert Paul; BROWN, Jerald A.. Digital Computer Electronics, Third Edition, McGraw Hill, New York, NY, 1993 (imprint 1997). Stephen Brown and Jonathan Rose, "Architecture of FPGAs and CPLDs: A Tutorial," IEEE Design and Test of Computers, Vol. 13, No. 2, pp. 42-57, 1996. ALTERA, Corporation; http://www.altera.com
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
48
8. Listagem de Tabelas e Figuras SAP-1. 1. ......... .............. ......... ......... ....... TABLE 1: TABELA DE MNEMÔNICOS E DE D E INSTRUÇÕES PARA O MICROPROCESSADOR SAPFIGURE 2.1: DIAGRAMA REPRESENTATIVO PARA O
7
MICROPROCESSADOR SAP-1. ............................ ......................................... ............. 8
7.2 .2...............................10 FIGURE 2.3: AMBIENTE DE DESENVOLVIMENTO A LTERA QUARTUS II W EB EB E DITION V 7 ONTADOR DE P ROGRAMA DO SAP-1..............................14 FIGURE 4.1: DIAGRAMA ESQUEMÁTICO DO BLOCO C ONTADOR FIGURE 4.2: DIAGRAMA DE ONDAS (SIMULAÇÃO) DO BLOCO C ONTADOR ONTADOR DE P ROGRAMA...............................15 FIGURE 4.3: DIAGRAMA ESQUEMÁTICO DO REGISTRADOR DE E NDEREÇO DE M EMÓRIA EMÓRIA (REM).....................16 FIGURE 4.4: DIAGRAMA DE ONDAS (SIMULAÇÃO) DO REGISTRADOR DE ENDEREÇO DE MEMÓRIA (REM)...17
............................ .......................... ............. 9 FIGURE 2.2: DIAGRAMA ESQUEMÁTICO REPRESENTATIVO DO A LTERA FLEX10K . ...............
FIGURE 4.5: DETALHAMENTO DE UM DOS 16 COMPONENTES MEMÓRIA DE 8 BITS BITS PRESENTES PRESENTES NO BLOCO DE
MEMÓRIA DE 16 X 8 8 BITS BITS . ........................... ......................................... ............................. ............................. ........................... ........................... ............................. ........................18 .........18 FIGURE 4.6:
EMÓRIA (16X8) PARA O MICROPROCESSA MICROPROCESSADOR DOR SAP-1. .............19 VISÃO PARCIAL DO BLOCO DE M EMÓRIA .............19
NSTRUÇÕES DO DO SAP-1.........................23 FIGURE 4.9: DIAGRAMA ESQUEMÁTICO DO BLOCO REGISTRADOR DE I INSTRUÇÕES ..................................24 ..................................24 FIGURE 4.10: DIAGRAMA DE ONDAS (SIMULAÇÃO) DO REGISTRADOR DE I FIGURE 4.11: DIAGRAMA ESQUEMÁTICO PARA O BLOCO C ONTROLADOR ONTROLADOR-S EQÜENCIALIZADOR EQÜENCIALIZADOR. ............... .....................26 ......26 ONTROLADOR-S EQÜENCIALIZADOR EQÜENCIALIZADOR..............27 FIGURE 4.12: DIAGRAMA DE ONDAS (SIMULAÇÃO) DO BLOCO C ONTROLADOR FIGURE 4.13: DIAGRAMA DE TEMPORIZAÇÃO ESPERADO DE BUSCA E EXECUÇÃO DA INSTRUÇÃO LDA........27 ......27 FIGURE 4.14: DIAGRAMA DE TEMPORIZAÇÃO ESPERADO DE BUSCA E EXECUÇÃO DA INSTRUÇÃO ADD. ......27 SAP-1. 1. ...28 ...28 FIGURE 4.15: DIAGRAMA ESQUEMÁTICO PARA O BLOCO ACUMULADOR DO MICROPROCESSADOR SAPFIGURE 4.16: DIAGRAMA DE ONDAS (SIMULAÇÃO) DO BLOCO ACUMULADOR DO SAP-1...............................29 ................................30 .....30 FIGURE 4.17: DIAGRAMA ESQUEMÁTICA DO BLOCO S OMADOR OMADOR-S UBTRATOR UBTRATOR DO SAP-1. ........................... FIGURE 4.18: DIAGRAMA DE ONDAS (SIMULAÇÃO) DO BLOCO S OMADOR OMADOR-S UBTRATOR UBTRATOR...................................31 FIGURE 4.19: DIAGRAMA ESQUEMÁTICO PARA O BLOCO REGISTRADOR DO MICROPROCESSADOR SAP-1.....32 FIGURE 4.20: DIAGRAMA DE ONDAS (SIMULAÇÃO) DO BLOCO REGISTRADOR................................................33 FIGURE 4.22: REPRESENTAÇÃO HEXADECIMAL EM UM DISPLAY DE SETE SEGMENTOS..................................35 ............................ ........................... ..................36 .....36 FIGURE 4.23: CÓDIGO AHDL PARA O BLOCO DECODIFICADOR HEXADECIMAL. .............. FIGURE 4.24: DIAGRAMA DE ONDAS (SIMULAÇÃO) PARA O BLOCO DECODIFICADOR HEXADECIMAL..............37 ............................ ............................. ........................... ..................40 .....40 FIGURE 5.1: PROGRAMA-EXEMPLO EM LINGUAGEM DE MONTAGEM. ............. FIGURE 5.2: PROGRAMA-EXEMPLO EM LINGUAGEM DE MÁQUINA..................... .................................. ............................ ............................. ................40 ..40 FIGURE 5.3: DETALHAMENTO DA PROGRAMAÇÃO DO SAP-1, EM FORMA DE DIAGRAMA DE ONDAS.............41
EMÓRIA DO SAP-1. ............. ............................ .....................21 ......21 FIGURE 4.8: DIAGRAMA DE ONDAS (SIMULAÇÃO) DO BLOCO DE M EMÓRIA
FIGURE 5.5: SAÍDA DO
MICROPROCESSAD MICROPROCESSADOR OR SAP-1 APÓS EXECUÇÃO DO PROGRAMA-EXEMPLO PARA
CÁLCULO DA EXPRESSÃO ARITMÉTICA 16 + 20 + 24 – 32. ............ ........................... ............................. ............................ ............................4 ..............44 4
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
49
UNIVERSIDADE FEDERAL DE SÃO CARLOS CENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA DEPARTAMENTO DE COMPUTAÇÃO
Relatório 02
MICROPROCESSADOR SAP-1
LABORATÓRIO DE ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
Universidade Federal de São Carlos Laboratório de Arquitetura e Organização de Computadores C omputadores I
50
View more...
Comments