RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO...

36
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO CEX 2832/97 DESENVOLVIMENTO DE UMA UNIDADE PROCESSADORA DISCRETA MICROPROGRAMÁVEL Coordenador: Prof. Wilian Soares Lacerda Lavras, outubro de 2001

Transcript of RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO...

Page 1: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

UNIVERSIDADE FEDERAL DE LAVRAS

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

RELATÓRIO FINAL DE PROJETO DE PESQUISA

FAPEMIG

PROJETO CEX 2832/97

DESENVOLVIMENTO DE UMA UNIDADE PROCESSADORA

DISCRETA MICROPROGRAMÁVEL

Coordenador: Prof. Wilian Soares Lacerda

Lavras, outubro de 2001

Page 2: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

2

RESUMO

Este é o relatório final do projeto de pesquisa intitulado "Desenvolvimento de uma

Unidade Processadora Discreta Microprogramável", financiado pela FAPEMIG (processo

CEX2832/97), iniciado em 05/10/2000 e encerrado em 04/10/2001.

Neste documento é apresentado os resultados do projeto, bem como as etapas para o

seu desenvolvimento. Inicialmente, é apresentado o processador desenvolvido

detalhadamente, tendo como base o estudo bibliográfico do assunto. Em seguida, é mostrado

a metodologia e materiais utilizados para a implementação do processador. Finalmente é

apresentado exemplos de utilização do processador, provando a eficiência do protótipo

desenvolvido.

Page 3: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

3

ÍNDICE

1 - Introdução....................................................................................................................4

2 - Objetivo........................................................................................................................7

3 - Proposição....................................................................................................................8

3.1 - Componentes da CPU..........................................................................................13

3.2 - Unidade de dados.................................................................................................14

3.3 - Unidade de controle.............................................................................................18

3.4 - Funcionamento da CPU ......................................................................................21

4 - Metodologia e materiais ............................................................................................23

4.1 - O Hardware.........................................................................................................24

4.2 - Os Softwares........................................................................................................25

4.2.1 - O Software de Comunicação.........................................................................26

5 - Resultados..................................................................................................................33

6 - Conclusão...................................................................................................................34

Agradecimentos ..............................................................................................................34

Referências Bibliográficas..............................................................................................35

Propostas de continuidade..............................................................................................36

ANEXOS:

ANEXO A - Esquemas de projeto da CPU

ANEXO B - Resultados da simulação da CPU

ANEXO C - Esquema da placa ISA

ANEXO D - Arquivos de configuração das PAL 's

ANEXO E - Layout da placa ISA

ANEXO F - Datasheet da CPLD

ANEXO G - L istagem do software

Page 4: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

4

1 - INTRODUÇÃO

Atualmente, os computadores digitais fazem parte do nosso cotidiano. Nós os

utilizamos desde para extrair um saldo bancário, até mesmo para aquecer alimentos em um

forno microondas. A cada dia que passa, o computador se torna mais importante para nós, na

medida em que a sua tecnologia avança, tornando-o mais acessível para todos.

O "cérebro" do computador é o processador digital (CPU). Este elemento é

responsável pela execução das tarefas pré-programadas no computador. Todos os outros

componentes do computador (memória, periféricos de entrada, periféricos de saída)

dependem do processador para funcionar. O processador coordena e gerencia todos os

componentes do computador. Observe a Figura 1.1.

CPU

PortasdeI/O

MEMÓRIA

Controladorde

DMA

Figura 1.1: Componentes de um computador

Segundo Tokheim [12], “Em relação à Eletrônica, o estudante de hoje ou o

especialista de amanhã deve ter um conhecimento de microprocessadores e de sistemas

baseados em microprocessadores. Isto inclui conhecimentos tanto em software como de

hardware. O microprocessador é a base de toda uma linguagem de máquinas e dispositivos

inteligentes. O microprocessadores serão encontrados em diversos produtos: de brinquedos a

processadores de palavras; de computadores de bolso a eletrodomésticos; de robôs industriais

a termostatos. Com o advento de microprocessadores microprogramáveis espera-se no futuro

uma aceleração do desenvolvimento das máquinas inteligentes. ” Nosso cotidiano está sendo

tomado cada vez mais por máquinas inteligentes, e para desenvolvimento de máquinas mais

velozes e mais eficientes temos que ter um conhecimento básico de como a informação é

processada por essas máquinas.

Page 5: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

5

Segundo Stalling [9], a organização básica de um sistema de computador constitui-se

de Unidade Central de Processamento conectada aos barramentos de dados, endereços e

controle, como ilustrado na Figura 1.2.

Figura 1.2: Organização básica de um computador

A estrutura é o caminho pelo qual os componentes são relacionados e a função é

operar cada componente individualmente como parte da estrutura.

Operações básicas em um computador:

• Processamento de dados;

• Armazenamento de dados;

• Transferência de dados;

• Controle.

A estrutura deve compor-se de 4 componentes:

• Unidade Central de Processamento (CPU);

• Memória Principal;

• I/O – Transfere dados entre o computador e o meio externo;

• Sistema de comunicação.

A parte mais complexa do processador (CPU) é a sua unidade de controle responsável

pela geração dos sinais de sincronismo de todos os circuitos do processador. Na literatura

[13][4] temos descrito várias soluções para implementação da unidade de controle. Algumas

técnicas permitem que a unidade de controle seja mais versátil para modificações e

ampliação, como a técnica de microprogramação.

Hennessy e Patterson [7] descrevem em suas obras detalhes para projeto de

processadores mais rápidos, utilizando técnicas de pipeling. O projeto do processador se torna

Page 6: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

6

bem mais complexo, para se conseguir este objetivo. No protótipo desenvolvido, esta técnica

não foi utilizada por dificuldades de implementação.

A compactação das arquiteturas de computadores atuais e a velocidade com que as

informações são processadas, dificulta a visualização e o entendimento do seu funcionamento.

Com o Desenvolvimento da Unidade Processadora Microprogramável, que possui uma

arquitetura simples e onde a velocidade e a compactação dos circuitos não são itens

essenciais, é possível verificar e entender como as informações são processadas.

Com o protótipo em funcionamento, torna-se possível este entendimento básico de

processamento e muitos caminhos poderão ser abertos para o desenvolvimento de outras

arquiteturas com tecnologias mais avançadas, pois o requisito básico já foi fixado.

Page 7: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

7

2 - OBJETIVO O presente projeto tem como meta os seguintes objetivos:

• Estudo das técnicas de arquitetura para processador digital.

• Desenvolvimento de um protótipo de processador digital.

• Implementação de outras técnicas de arquitetura de processadores digitais.

• Testes de novas técnicas de arquitetura.

• Divulgar o estudo e pesquisa na área de arquitetura de processadores digitais dentro e fora

do departamento.

• Formar uma equipe de pesquisa no departamento para atuar na área de arquitetura de

processadores e computadores.

• Propor novas pesquisas na área de projetos e desenvolvimentos de arquitetura de

processadores e computadores.

Page 8: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

8

3 - PROPOSIÇÃO

A Unidade Processadora Discreta Microprogramável é um protótipo desenvolvido

dentro do estudo de várias arquiteturas de processadores digitais. Neste estudo observou-se

que a maioria das arquiteturas segue a arquitetura dos primeiros computadores eletrônicos, ou

seja, na Arquitetura de von Neumann [10]. O objetivo do projeto baseia-se no

desenvolvimento de um protótipo de um microprocessador com uma arquitetura simples e de

fácil entendimento, para o desenvolvimento de tecnologias mais avançadas.

Na Figura 3.1 apresentamos blocos com as partes básicas que constituem o protótipo

do microprocessador. Observa-se que o processador gerencia todos os componentes externos

(portas de entrada /saída e memória).

Figura 3.1: Componentes que constituem o protótipo do microprocessador

Em geral, o computador básico constitui-se de 3 partes: Unidade Central de

Processamento (CPU), Portas de Entrada /Saída e Memórias.

A CPU contém elementos de armazenamento (registradores), circuitos computacionais

representado pela Unidade Lógica Aritmética (ULA), Circuitos de Controle e Temporização.

As funções primárias da CPU são:

• Buscar, decodificar, e executar instruções do programa armazenado na memória;

• Transferir dados da e para memória e para portas de entrada e saída;

• Prover os sinais de controle e temporização para todo o sistema.

A Unidade Lógica Aritmética da CPU executa operações como somar, deslocar, rodar,

comparar, incrementar, decrementar, negar, AND, OR, XOR, complementar e zerar. Para a

Page 9: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

9

execução de uma operação de soma, a ULA utiliza dois registradores (Acumulador e

Temporário). O conteúdo do Acumulador é somado com o conteúdo do registrador

temporário e o resultado é enviado ao acumulador.

De grande importância para o programador é o registrador de código de condição dos

flags. Os flags incluem indicadores de zero, de resultado negativo, de vai-um, etc. Os flags

são usados para tomadas de decisão quando posteriormente, se usam instruções de desvio.

Os registradores temporário e acumulador podem ser considerados parte da

ULA.

A seção de CONTROLE E TEMPORIZAÇÃO é a parte mais complexa e afeta todos

os eventos da CPU no microcomputador. Cada instrução do programa pode ser dividida em

estágios de busca, decodificação e execução. Esses pequenos estágios ainda podem ser

subdivididos em outros passos que podem ser chamadas de microprograma. O microprograma

para cada instrução reside na seção de decodificação de instruções e é executado pela seção

de controle e temporização da CPU.

A sequência de busca-decodificação-execução de instrução é fundamental para a

operação do computador. A primeira instrução buscada da memória de programa é tomada

como sendo o código de operação da primeira instrução e é colocada no registrador de

instruções pela seção de controle da CPU. O código, é então, interpretado pelo decodificador

de instrução. O decodificador de instruções identifica o microprograma que a seção de

controle e temporização deve seguir para executar uma instrução específica.

Existe um conjunto de instruções que o microprocessador pode executar. As

instruções podem ser classificadas de diversas maneiras:

• Instruções aritméticas

• Instruções lógicas

• Instruções de transferência de dados

• Instruções de desvio

• Instruções de chamada de sub-rotina

• Instruções de retorno

• Instruções de pilha

Nas instruções aritméticas temos:

• Somar, Somar com vai -um,

• Subtrair, Subtrair com vai-um , Empréstimo

Page 10: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

10

• Incrementar

• Decrementar

• Comparar

• Negar

Nas instruções lógicas temos:

• AND

• OR

• XOR

• NOT

Nas instruções de transferência e dados temos:

• Carregar

• Armazenar

• Mover

• Zerar

Nas instruções de desvio temos:

• Desvio Incondicional

• Desvio de zero

• Desvio se não zero

• Desvio se igual

• Desvio se desigual

• Desvio se positivo

• Desvio se negativo

Nas instruções de pilha temos:

• Empilhar

• Desempilhar

Page 11: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

11

Uma unidade central de processamento, ou CPU, é o principal componente dos

computadores digitais. É a parte do computador responsável pela manipulação e

transformação dos dados ou informações [4][5].

Desde o primeiro computador digital, até hoje, é utilizado no projeto do processador a

topologia denominada arquitetura de von Newmann. O que diferencia a arquitetura dos atuais

processadores são a tecnologia de fabricação, velocidade de processamento, complexidade do

projeto, dentre outras [6].

Este projeto propõe o projeto de uma CPU simples, que contém as características

básicas de um processador digital.

Figura 3.2: A unidade central de processamento proposta

A CPU proposta neste projeto possui a seguinte estrutura externa básica, mostrada na

Figura 3.2. Os sinais de entrada e saída da CPU proposta possuem as seguintes funções e

características:

• D7..D0 – Barramento de dados externo (8 bits)

• A7..A0 – Barramento de endereço (8 bits)

• /MEM – sinal de habilitação da memória, ativa em nível zero

• /IO – sinal de habilitação da porta de entrada/saída, ativa em nível zero

• /WR – indica ciclo de escrita em porta ou memória, ativa em nível zero

• /RD – indica ciclo de leitura em porta ou memória, ativa em nível zero

• CLOCK – sinal de sincronismo

• /RESET – sinal de inicialização, ativo em nível zero

D7..D0

A7..A0 CLOCK

/MEM

/IO /RESET

/WR

/RD

Page 12: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

12

A CPU não é o único componente de um computador. Existem circuitos auxiliares que

em conjunto com a CPU formam um sistema de computador. Dentre estes circuitos, existe a

memória e as portas de entrada/saída que são conectadas à CPU como é mostrado na Figura

3.3.

Figura 3.3: Um sistema de computador com memória e porta entrada/saída

A memória é responsável pelo armazenamento das instruções (ou comandos do

processador) e dos dados. Uma memória, em geral, tem uma grande capacidade de

armazenamento. Cada informação é armazenada em uma posição da memória que é

identificada por um endereço (conjunto de bits). Através deste endereço, é possível recuperar

a informação armazenada na memória.

As portas de entra/saída são circuitos que permitem a troca de informações entre o

computador e o ambiente externo. As portas de entrada enviam dados gerados por circuitos

externos para a CPU, que por sua vez pode armazená-los na memória. As portas de saída

permitem que a CPU transmita dados para circuitos externos.

Para permitir a comunicação da CPU com os circuitos auxiliares, a própria CPU gera

os sinais responsáveis pelo controle da memória e das portas de E/S. Os sinais de controle da

memória são:

• /MEM – habilita a memória para leitura ou escrita, ativo em zero.

• /RD – habilita leitura, ativo em zero.

• /WR – habilita escrita, ativo em zero.

D7..D0 MEMÓRIA

A7..A0 /CS /WR /RD

D7..D0 CLOCK

A7..A0 /MEM

/RESET /IO /WR /RD

CPU

S7..S0

E7..E0

D7..D0 PORTA E/S

/CS /WR /RD

Page 13: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

13

Os sinais de controle da porta de entrada/saída são:

• /IO – habilita leitura ou escrita da porta, ativo em zero.

• /RD – habilita leitura, ativo em zero.

• /WR – habilita escrita, ativo em zero.

3.1 - COMPONENTES DA CPU

Para facilitar o projeto e estudo da CPU, ela é dividida internamente em duas unidades

fundamentais:

• Unidade de dados

• Unidade de controle

Estas unidades componentes funcionam em conjunto e conectadas entre si. Elas

podem ser visualizadas na Figura 3.4, onde se observa a ligação entre elas.

A unidade de dados possui as seguintes funções:

• Cálculos aritméticos

• Funções lógicas

• Manipulação de dados

• Armazenamento temporário de dados

• Recebimento de dados

• Envio de dados

A unidade de controle possui as seguintes funções:

• Geração dos sinais de controle da unidade de dados

• Geração dos sinais de controle externos

• Sincronização dos sinais de controle

• Inicialização do sistema

• Geração do endereço de memória

Page 14: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

14

• Busca e armazenamento das instruções e dados

Figura 3.4: Unidades da CPU

3.2 - UNIDADE DE DADOS

A ULA (Unidade Lógica Aritmética) é a responsável pelas operações lógicas e

aritméticas da CPU. A ULA proposta é mostrada na Figura 3.5 com os sinais de entrada e

saída. Ela é capaz de realizar as operações descritas na Tabela 3.1, conforme o código da

operação gerado pela unidade de controle.

Figura 3.5: ULA

Sinais de controle externos

Unidade

de dados

Unidade

de Controle

Barramento de dados interno

Sinais de controle internos

Status da ULA (flags)

CLK

/RESET

Barramento de dados externo

Barramento de

endereço

CPU

operação

4

/ULA 4

1o operando

2o operando

8

8 Resultado

8

FLAGS

Page 15: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

15

Tabela 3.1: Código de operação da ULA

Código Op. (binário) Resultado Símbolo

0000 Não faz nada NOP

0001 Soma (1o op. + 2o op.) ADD

0010 Subtrai (1o op. – 2o op.) SUB

0011 1o op. AND 2o op. AND

0100 1o op. OR 2o op. OR

0101 1o op. XOR 2o op. XOR

0110 Complementa 1o op. NOT

0111 1o op. + 1 INC

1000 1o op. - 1 DEC

1001 Deslocamento 1o op. para direita de 1 bit SHR

1010 Deslocamento 1o op. para esquerda de 1 bit SHL

1011 Nega o 1o op. NEG

A ULA é composta internamente por circuitos lógicos somadores, subtratores,

deslocadores, e inversores para a realização da operação selecionada. Ela possui os seguintes

sinais de entrada e saída:

a) Entradas:

• 8 bits do 1o operando

• 8 bits do 2o operando

• 4 bits do código de operação (vide tabela)

• 1 bit de habilitação da ULA (ativa em zero)

b) Saídas:

• 4 bits de “ flags” : carry-out, sinal (positivo, negativo), zero, overflow

• 8 bits do resultado

Se a ULA estiver habilitada, então nos 8 bits do resultado estará o resultado da

operação, entre o 1o e 2o operandos, selecionada pelos 4 bits do código de operação.

Os quatro sinais de flags identificam o status da ULA de acordo com o resultado

obtido pela realização de uma operação. O flag de zero é ativado (colocado em nível lógico 1)

Page 16: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

16

se o resultado possue todos os bits em zero. O flag de sinal é ativado se o resultado da ULA é

um número negativo em complemento de dois (bit mais significativo do resultado em 1). O

flag de carry-out é ativado se ocorre um vai-um no último bit do resultado. E finalmente o

flag de overflow é ativado se o resultado da operação realizada pela ULA não é válido.

A unidade de dados é composta de ULA, registradores, multiplexadores, buffers tri-

state e barramentos, conforme é mostrado na Figura 3.6.

Figura 3.6: Diagrama da unidade de dados

Os registradores (acumulador, DR e flags) armazenam o dados temporariamente antes

de serem manipulados. O acumulador também é utilizado para o armazenamento do resultado

da operação realizada pela ULA. Estes registradores são compostos por flip-flops, onde cada

flip-flop é capaz de armazenar um único bit.

Os multiplexadores (MUX) são responsáveis pela seleção de um determinado dado

que está em suas duas entradas (A e B). Isto permite a opção de escolha de um dado que será

A

MUX B

A C U M U L A D O R

BUFFER TRI-STATE

ULA

FLAGS

MAC

CLK

/LAC

/BAC

A

MUX

B

DR

MDR

CLK

/LDR

BUFFER TRI-STATE

/BDI

BUFFER TRI-STATE

/BDE

Barramento de dados interno

8 8

8

8

8

8

8 8

8

8

8

8

8

4

operação

/ULA 4

Registrador de Flags /RF

CLK

/CLR

Barramento de dados externo

4

Page 17: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

17

disponibilizado na saída do multiplexador, de acordo com o sinal de controle gerado pela

unidade de controle. Por exemplo, o registrador acumulador poderá receber um dado

proveniente da saída da ULA ou um dado proveniente do barramento de dados interno.

O buffers tri-state são simplesmente circuitos que conectam um dos dois dados de

entrada na sua saída. Tem como função fazer com que a cada momento apenas um circuito

coloque o dado no barramento. Desta forma, o barramento pode ser usado por vários circuitos

sem perigo de provocar um curto-circuito.

Os barramentos são simplesmente fios condutores por onde os sinais elétricos dos

dados trafegam, sendo um fio para cada bit de dado.

Os sinais de controle da unidade de dados, os quais provêm da unidade de controle,

possuem as seguintes funções:

• /ULA – habilita a ULA, ativo em zero

• operação – (4 bits) seleciona a operação que a ULA realiza de acordo com a

Tabela 3.1

• /RF – habilita a carga do registrador dos flags, ativo em zero, sensível a transição

positiva do clock

• MAC – seleciona o dado a ser armazenado no acumulador (0 – A, 1 – B)

• /LAC – habilita a carga do acumulador, ativo em zero, sensível a transição positiva

do clock

• /BAC – habilita o buffer do acumulador para envio do dado ao barramento de

dados interno, ativo em zero

• MDR – seleciona o dado a ser armazenado no Registrador de Dados (0 – A, 1 – B)

• /LDR – habilita a carga do Registrador de Dados, sensível a transição positiva do

clock

• /BDI – habilita buffer do Registrador de Dados para envio do dado ao barramento

de dados interno, ativo em zero

/BDE – habilita buffer do Registrador de Dados para envio do dado ao barramento de dados externo, ativo em zero

Page 18: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

18

3.3 - UNIDADE DE CONTROLE

A unidade de controle é composta pelo contador de programa, pelos registradores (de

endereço e instruções) e circuito de controle. Isto é mostrado na Figura 3.7.

Figura 3.7: Unidade de controle com a unidade de dados

Os componentes da unidade de controle possuem as seguintes características e

funções:

• Registrador de endereço – registrador de 8 bits, com controle de carga (/LRE) e sensível a

transição positiva do clock. Tem como função armazenar o endereço da memória que está

sendo acessado.

Barramento de endereço

CONTADOR DE

PROGRAMA

A MUX

B

REGISTRADOR DE ENDEREÇO

REGISTRADOR DE

INSTRUÇÕES

UNIDADE DE DADOS

CONTROLE

FLAGS

CIRCUITO DE CONTROLE

CLK

8

8

4

12

CLK

/LRI

8

8

8

/LCP

/ICP

/RESET

CLK

8

8

/LRE CLK 8

Barramento de dados externo

8

Barramento de dados interno

8

MRE

/RESET

/MEM /RD /WR /IO

Page 19: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

19

• Registrador de instruções – registrador de 8 bits, com controle de carga (/LRI) e sensível a

transição positiva do clock. Tem como função armazenar o código da instrução buscada

na memória, e que será executada.

• Contador de programa – contador crescente de 8 bits, com controles de clear assíncrono

(/RESET), incremento síncrono (/ICP), e carga síncrona (/LCP), sensível a transição

positiva do clock. Tem como função indicar a posição de endereço de memória onde está

armazenado a próxima instrução a ser buscada.

• Circuito de controle – máquina sequencial que gera os sinais de controle para a unidade de

dados, unidade de controle, porta de entrada/saída e para a memória, de acordo com o

dado armazenado no registrador de instruções. Sensível a transição negativa do clock. A

máquina sequencial permite que a CPU execute as instruções indicadas na Tabela 3.2.

Os sinais de controle da unidade de controle são:

• /LCP – habilita a carga do contador de programa, ativo em zero, sensível a transição

positiva do clock.

• /ICP – habilita a contagem (incremento) do contador de programa, ativo em zero, sensível

a transição positiva do clock.

• /RESET – limpa (zera) o contador de programa e inicializa o circuito de controle, ativo

em zero, assíncrono.

• MRE – seleciona o dado a ser armazenado no Registrador de Endereço.

• /LRE – habilita a carga do Registrador de Endereço, ativo em zero, sensível a transição

positiva do clock.

• /LRI – habilita a carga do Registrador de Instruções, ativo em zero, sensível a transição

positiva do clock.

FLAGS - (4 bits) identifica o status da ULA

Page 20: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

20

Tabela 3.2: Código de instruções

Código

Instrução

(hexadecimal)

Descrição Símbolo

00 Não faz nada NOP

08 Soma: ACC=ACC+M(X) ADD X

10 Subtração: ACC=ACC-M(X) SUB X

18 ACC=ACC and M(X) AND X

20 ACC=ACC or M(X) ORA X

28 ACC=ACC xor M(X) XOR X

30 Complementa ACC: ACC=/ACC NOT

38 ACC = ACC + 1 INC

40 ACC = ACC - 1 DEC

48 ACC = ACC/2 SHR

50 ACC = ACC*2 SHL

58 ACC = -ACC NEG

80 ACC = 0 CLR

88 ACC = M(X) LDA X

90 M(X) = ACC STA X

A0 Pula incondicionalmente para posição X JMP X

A8 Pula para posição X se ACC = 0 JEZ X

B0 Pula para posição X se ACC positivo ou zero JGE X

B8 Pula para posição X se ACC negativo JLZ X

C0 Pula para posição X se houve vai-um JMC X

C8 Pula para posição X se houve overflow JMO X

D0 Lê a porta de entrada e armazena no ACC INP

D8 Escreve o conteúdo de ACC na porta de saída OUT

FF Pára o processamento HLT

X – endereço de memória de 8 bits

M - memória

ACC – Registrador acumulador

Page 21: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

21

3.4 - FUNCIONAMENTO DA CPU

A CPU possui o funcionamento descrito a seguir. Inicialmente, o sinal de reset é

ativado, fazendo o contador de programa começar com o valor zero. A CPU então está pronta

para executar instruções armazenadas na memória, obedecendo dois ciclos de funcionamento:

ciclo de busca da instrução (ciclo de fetch), e ciclo de execução.

Ciclo de busca da instrução

Após a ativação do sinal de reset, é carregado o valor do contador de programa no

barramento de endereço. A memória é ativada para leitura, e seu dado é carregado no

registrador de instruções. O contador de programa é incrementado automaticamente

preparando para ler o próximo dado na memória.

Ciclo de execução

Após o ciclo de fetch, a instrução carregada é decodificada pelo circuito de controle

que gera os sinais de controle em sequência para execução da instrução. Se um dado é

buscado na memória na execução da instrução, o contador de programa é atualizado. Quando

termina de executar a instrução, o ciclo de fetch é reiniciado com o novo valor do contador de

programa.

Circuito de controle

O circuito de controle é a parte mais complexa da CPU. Existem várias formas para

implementação do circuito de controle [13][4]: microprogramado, máquina de estado e

contador de sequência. O método proposto é o contador de sequência por ser mais simples.

Ele é mostrado na Figura 3.8 e descrito a seguir.

Page 22: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

22

Figura 3.8: Circuito de controle

O contador deslocador gera sinais sequenciais a cada pulso de clock (transição

negativa) de acordo com as formas de onda mostradas na Figura 3.9. A sua função é marcar o

tempo e ordem de ativação dos sinais de controle.

O decodificador de instruções ativa a sua saída correspondente a instrução armazenada

no registrador de instruções. O circuito combinacional gera os sinais de controle na sequência

apropriada para busca da instrução (durante ativação de T0, T1 e T2), e posteriormente gera

os sinais de controle para execução da correspondente instrução (durante ativação de T3 à

Tn).

Figura 3.9: Sinais gerados pelo contador deslocador

T0

T1

T2

Tn ...

...

...

...

...

...

...

...

Decodificador de instruções

N O P

A D D

S U B

H L T

...

8

Vêm do registrador de Instruções

T0 T1 T2

Contador

Deslocador

Tn

.

.

.

Circuito Combinacional

TTT

T

...

Sinais de Controle internos e externos

CLK /RESET

4

Vêm do registrador de

Flags

Page 23: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

23

4 - METODOLOGIA E MATERIAIS

Para a implementação do protótipo do processador proposto foi desenvolvido uma

placa ISA (Industry Standart Architecture) para conexão em um computador IBM-PC

compatível [3], que contém um CPLD (FLEX10K10©) do fabricante Altera Corporation (vide

Anexo F). Por meio desta placa e dos arquivos de configuração do CPLD utilizado, é possível

implementar vários circuitos digitais de maneira simples e eficiente através do computador,

inclusive o projeto do processador desenvolvido.

Os CPLD’s, Circuitos Lógicos Programáveis Complexos (Complex Programmable

Logic Devices), seguem a tecnologia dos PLD’s. PLD’s, Dispositivos Lógicos Programáveis

(Programmable Logic Devices), são circuitos integrados configuráveis pelo usuário, usados

para implementar funções lógicas quaisquer [1]. Sendo assim, os CPLD’s são de arquiteturas

mais complexas, mais eficientes e de maiores capacidades em comparação com os PLD’s. Os

CPLD’s são fabricados com células RAM ou EEPROM que permitem a sua configuração.

Para configurar os CPLD’s existem várias ferramentas (softwares) em computador que

geram arquivos de programação, específicos de cada fabricante. Como exemplo tem-se o

MAXPLUS© II do fabricante Altera Corporation [2]. Os sinais, ou dados, de configuração são

transferidos ao CPLD por meio de memórias previamente gravadas, cabos para download, ou

mesmo por um microprocessador. A configuração do CPLD pode ser refeita tantas vezes

forem necessárias.

O uso de um computador IBM-PC compatível para programar um CPLD torna o

processo de configuração mais versátil e rápido, uma vez que os arquivos de programação

podem ser gerados por software e transmitidos ao CPLD diretamente. Por isso doi utilizado

tal recurso para a implementação desse hardware.

Os arquivos de configuração são gerados pelo computador via software (MAXPLUS©

II) e são transmitidos ao CPLD por meio do barramento ISA. Os sinais de configuração são

gerados por um software de comunicação, desenvolvido em conjunto com a placa. Esse

software utiliza de um arquivo de configuração para gerar os sinais corretamente para o

hardware.

Page 24: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

24

4.1 - O HARDWARE

O hardware proposto utiliza o padrão de interfaceamento ISA para conexão a um

computador IBM-PC compatível. Esta interface foi escolhida pela facilidade de

implementação e facilidade de uso.

O componente principal da placa, o CPLD FLEX10K10©, é conectado ao barramento

ISA através de buffers. Foi adotado este componente devido ao seu baixo custo e simplicidade

de configuração dentre os outros CPLD’s.

A comunicação da placa com o computador é controlada por circuitos de controle e de

decodificação implementados em circuitos PAL’s (vide Anexo D). O diagrama abaixo (Figura

4.1) mostra a estrutura do hardware proposto. No Anexo C é mostrado o esquema completo

da placa. No Anexo E, é mostrado o layout da placa.

INTERRUPÇÃO

BUFFERS

ISA

REGISTRADORDE

CONTROLE

DECODIFICADORCPLD

CONECTOERS

SINALIZAÇÃO

Figura 4.1. Estrutura do Hardware Proposto

O Barramento ISA é a interface entre o computador e o hardware proposto. Por ele é

possível trocar dados e enviar sinais de controle aos blocos endereçáveis (Buffers e CPLD).

O barramento também possibilita ao computador receber um sinal de interrupção diretamente

do CPLD, otimizando a comunicação com a placa.

O circuito Decodificador realiza a decodificação de endereços do Barramento ISA. Os

sinais resultantes são enviados para o Registrador de Controle.

O Registrador de Controle é o responsável pela geração e armazenamento dos sinais

de controle do CPLD. Tal bloco ainda tem a função de controlar a leitura e a escrita de dados

Page 25: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

25

entre o CPLD e o computador posteriormente à programação. O Registrador de Controle

opera diretamente nos buffers de dados e nos sinais de configuração do CPLD.

O circuito de Sinalização é composto por três LED’s ligados diretamente a alguns

sinais provenientes do Registrador de Controle. Por meio dessa sinalização visual, tem-se uma

idéia do andamento da programação do CPLD.

O CPLD recebe toda a programação proveniente do barramento por meio dos Buffers

de dados. Após a programação, ele está pronto para operar isoladamente ou em comunicação

contínua com o PC através dos próprios Buffers de dados. Sua função dependerá estritamente

do conteúdo do arquivo de programação recebido.

Estão ligados diretamente ao CPLD três conectores para utilização externa: dois

padrão DB25 fêmea e um padrão PS/2. Este conectores podem ser utilizados para entrada e/ou

saída de dados digitais.

4.2 - OS SOFTWARES

Para obter os arquivos de configuração do CPLD utilizado, é necessário utilizar o

software do fabricante (MAXPLUS© II). O circuito digital do processador que se deseja

implementar pode ser projetado pelo usuário do software em modo gráfico ou texto. No modo

gráfico, são utilizados desenhos de portas lógicas conectadas. No modo texto é utilizado uma

linguagem de descrição de hardware de um nível abstrato para um nível concreto, como o

VHDL [8] por exemplo. O software se encarrega de compilar o projeto e gerar os arquivos

necessários à programação do CPLD.

Com o CPLD utilizado, é possível fazer uso de 7.000 a 31.000 portas lógicas com

muitas combinações diferentes em um só circuito, representadas em um só arquivo de

programação.

O software de comunicação desenvolvido (Anexo G), por sua vez, transfere o arquivo

de configuração para o CPLD por meio do barramento e buffers. Sinais de controle do

barramento e do CPLD são gerados pelo software para esta função. O esquema abaixo (Figura

4.2) ilustra o processo.

Page 26: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

26

EDITOR COMPILADORSOFTWARE

DECOMUNICAÇÃO

PLACARECONFIGURÁVEL

Gráfico ou texto Arquivos deConfiguração

Sinais deConfiguração

MAXPLUS II

Figura 4.2. Processo de Configuração do Hardware

Após a programação, o CPLD está pronto para ser utilizado pelo usuário, conforme os

dados do arquivo de configuração.

4.2.1 - O Software de Comunicação

Para o desenvolvimento do Software de Comunicação foi realizada uma pequena

modelagem objeto orientada no intuito de facilitar a sua construção. O objetivo foi fazer um

software de interface simples para a programação da placa e que funcionasse com eficácia.

A modelagem constitui-se basicamente do diagrama de classe e de fluxogramas das

partes mais complexas ou mais importantes do software.

A implementação foi realizada na linguagem C++, possibilitando a transcrição do

modelo. Utilizando o compilador mingw32, versão 2.95.2, o executável foi gerado. Os testes

foram realizados logo após a compilação e algumas correções foram necessárias até que o

software funcionasse como desejado. A modelagem apresentada já apresenta as correções

feitas.

Diagrama de Classe

O diagrama de classe permite a visualização da estrutura estática do software. Na

Figura 4.3 está apresentado o software na íntegra representado nesse diagrama.

Page 27: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

27

11

usa

1 1

usa

principal

– int status

+ principal(int argC, char**argV)

+ int getStatus(void)– void

enviarMensagemArquivo(TStatus estado, const char*nomeArquivo)

– voidenviarMensagemPlaca(TStatus estado)

1

1

clPlacaUPDM

– cl BufferEscri taDados bufferED– cl ChipProgramavel chip– static const unsigned int TBASE

= 2– static const unsigned int

TIME_OUT = (unsignedint)(50000 / TBASE)

– static const unsigned intTCF2WS = 5

– static const unsigned int TCFG= 2

– static const unsigned intTCD2UM = 2

– static const unsigned intTCF2ST1 = 4

– static const unsigned int TWSP= 1

– static const unsigned int TWS2B= 1

– static const unsigned int TBUSY= 2

– TStatus status+ static const TStatus CERTO

= 0+ static const TStatus

OCUPADA = 1+ static const TStatus

ERRO_setCFG = 2+ static const TStatus

ERRO_resetCFG = 3+ static const TStatus

ERRO_BUSY_WS = 4+ static const TStatus

ERRO_ST_WS = 5+ static const TStatus

ERRO_ID_CD = 6+ static const TStatus

ERRO_CD_TO = 7+ static const TStatus

ERRO_NAO_ESPERADO= 8

– void aguardar(unsigned inttempo)

– void resetar(void)+ clPlacaUPDM(void)+bool configurar(const

unsigned int tamanhoDado,TDado* dadosConfig)

+TStatus getStatus(void)

1

1usa

11

usa

clChipProgramavel

– static const TEnderecoENDERECO_nWS = 0x0301

– static const TEnderecoENDERECO_nCS = 0x0302

– static const TEndereco

ENDERECO_nCONFIG = 0x0303– static const TEndereco

ENDERECO_nSTATUS = 0x0304– static const TEndereco

ENDERECO_CONF_DONE =0x0305

– bool nWS– bool nCS– bool nCONFIG– bool nSTATUS– bool CONF_DONE– bool RDYnBSY– bool INIT_DONE– bool IO9_27– bool IO11_29– bool IO13_35– bool IO15_37– clBarramentoISA barramento– clBufferLei turaControle

bufferLC

+ void setnWS(void)+ void resetnWS(void)+ void setnCS(void)+ void resetnCS(void)+ void setnCONFIG(void)+ void resetnCONFIG(void)+ void setnSTATUS(void)+ void resetnSTATUS(void)+ bool getnSTATUS(void)+ void setCONF_DONE(void)

+ voidresetCONF_DONE(void)

+ bool getCONF_DONE(void)

+ bool getRDYnBSY(void)+ bool getINIT_DONE(void)+ bool getIO9_27(void)+ bool getIO11_29(void)+ bool getIO13_35(void)+ bool getIO15_37(void)+ static const unsigned int

TAMANHO_DADO = 14750

1

1 usa

1

1usa

11usa

clBarramentoISA

– TDado dado– TEndereco endereco

+inlineTDadoinportb(TEndereco end)

+inlinevoidoutportb(TEndereco end,TDado d)

clBufferEscritaDados

– TDado dado– stat ic const TEndereco

ENDERECO = 0x0300– clBarramentoISA

barramento

+ void setDado(TDado& d)

clBufferLeituraDados

– TDado dado– stat ic const TEndereco

ENDERECO = 0x0300– clBarramentoISA

barramento

+ TDado& getDado(void)

clBufferLeituraControle

– TDado dado– static const TEndereco

ENDERECO = 0x0301– clBarramentoISA

barramento

+ TDado& getDado(void)

clArquivoUPDM

– TDado* cabecalho– TDado* conteudo– const char* nome– unsigned int tamanho– unsigned int tamanhoConteudo

– unsigned int tamanhoCabecalho

– TStatus status+ static const TStatus CERTO

= 0+ static const TStatus

NAO_CRIADO = 1+ static const TStatus

TAM_MUITO_MAIOR = 2+ static const TStatus

POUCO_CONTEUDO = 3+ static const TStatus

CONTEUDO_DEMAIS = 4+ static const TStatus

TIPO_NOME_INVALIDO= 5

+ static const unsigned intTAM_VET_CONTEUDO= 16000

– void extrairCabecalho(void)– void extrairConteudo(void)– void atualizarStatus(void)+ clArquivoUPDM(const

char* nomeArquivo)+ ~clArquivoUPDM(void)+ TDado* getCabecalho(void)+ TDado* getConteudo(void)+ TStatus getStatus(void)+ const char* getNome(void)+ unsigned int

getTamanho(void)+ unsigned int

getTamanhoCabecal ho(void)+ unsigned int

getTamanhoConteudo(void)

ifstream

Detalhes não mostrados

Figura 4.3. Diagrama de Classe do Software de Comunicação

Page 28: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

28

Através de representação de atributos e métodos, cada classe do diagrama de classe é

construído. Os atributos são as variáveis, tipos e constantes da implementação. Os métodos

são as funções e os procedimentos.

A classe Principal é a classe que faz a chamada inicial de todo o processamento do

programa. Ela é a responsável pelo interfaceamento entre o computador e o usuário. Através

do método construtor principal, o programa faz os testes com os argumentos passados na

linha de comando, cria o objeto da classe clArquivoUPDM e programa a placa usando um

objeto da classe clPlacaUPDM. Eventuais mensagens de erro são enviadas através do objeto

dessa classe via console, em linha de comando.

A classe clArquivoUPDM é responsável pelos métodos de tratamento do arquivo a ser

programado na placa. Ela herda a classe de tratamento de arquivos ifstream da biblioteca

padrão do compilador mingw32. Os dados provenientes do arquivo de extensão .rbf, gerado

pelo software MAXPLUS© II, são armazenados por essa classe no vetor conteudo; para tanto

usa-se o método extrairConteudo. Alguns teste são processados para a previsão de possíveis

erros que o usuário possa cometer ao usar a clArquivoUPDM. Através de status é possível

obter o possível erro ocorrido e reportá-lo ao usuário, se necessário.

A classe clPlacaUPDM contém o método configurar como sendo o principal. Essa é a

classe responsável pela programação propriamente dita da placa. A configuração segue as

recomendações que o fabricante do chip programável apresenta nos seus manuais. A

elaboração de um fluxograma (Figura 4.4) colaborou com a construção do método configurar

pois permitiu que se tivesse uma melhor visão do processamento a ser feito. Agregadas à

clPlacaUPDM estão as classes clChipProgramavel e a classe clBufferEscritaDados, buffer

usado para enviar as palavras de configuração ao chip.

A classse clChipProgramavel foi criada para se acessar aos pinos de configuração do

CPLD. Essa permite uma representação direta desses pinos de configuraçâo, aumentando a

clareza do código e facilitando a construção do software. As constantes de endereço

correspondem aos endereços para alcance dos pinos. Ela usa a classe clBarramentoISA para

enviar os sinais de configuração ao hardware e a classe clBufferLeituraControle para ler os

sinais de controle do chip.

As classes clBufferLeituraDados, clBufferEscritaDados e clBufferLeituraControle

usam a classe clBarramentoISA para operar. Suas funções são, respectivamente, ler os dados,

escrevê-los e ler os dados de controle ou de configuração do chip programável. Cada qual

acessa a placa através da classe clBarramentoISA, atribuindo o endereço apropriado.

Por fim a classe clBarramentoISA, que faz a ligação do hardware com o software.

Através dos métodos inportb e outportb, escritos em assembly, pode-se acessar a interface

Page 29: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

29

ISA e os sinais provindos da mesma. Mas ela só opera em versões de sistemas operacionais

que permitem o acesso direto à essa interface.

Fluxogramas

São vários os métodos elaborados nesse software, mas somente de alguns se teve a

necessidade da modelagem em fluxogramas para facilitar a programação e a clareza do

código. As Figuras 4.3, 4.4, 4.5 e 4.6 mostram esses fluxogramas.

O método extrairConteudo, da classe clArquivoUPDM, lê o arquivo de configuração

passado como parâmetro e guarda o seu conteúdo no vetor conteudo. O seu fluxograma, na

Figura 4.4, mostra a sua realização.

status ←TAM_MUITO_MAIOR

posiciona leitura dearquivo em 0

tamanho >TAM_VET_CONTEUDO

??

alocar memória

tamanho ← i

fim de arquivo?

sim

não

sim

não

guardar no vetor em i

i ← 0

ler palavra (1 byte)

fim

início

fim

Figura 4.4. Fluxograma do Método extrairConteudo

Para temporização dos tempos de programação em clPlacaUPDM usa-se o método

aguardar. Tal método parte do princípio de que todo acesso à interface ISA dure no mínimo 2

microssegundos para executar. Sendo assim, como mostrado no fluxograma da Figura 4.6,

cada iteração realizada em aguardar conta o tempo necessário de espera.

Page 30: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

30

nroIteracoes ← 1

nroIteracoes <= 0?

nroIteracoes ←tempo/TBASE

nroIteracoes == 0?

sim

não

sim

não

nroIteracoes--

blc.getDado()

fim

início

Figura 4.6. Fluxograma do Método aguardar

O método configurar, da classe clPlacaUPDM, configura a placa de acordo com os

dados dos manuais do chip. Na Figura 4.5 o processo é ilustrado.

Page 31: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

31

início

resetar

ativar nCONFIG

nSTATUS ou CONF_DONE

ativado?

aguardar(TCF2ST1 + TCF2WS) us

status ← ERRO_set_CFG

resetardesativar nCONFIG

nSTATUS ativado?

“inicialização do envio dedados”

posPalavraCorrente ← 0status ← CERTO

enviaProxima ← true

ativar CS

status ←ERRO_reset_CFG

resetar

ativar nWS

enviar palavra na posicaoposPalavraCorrente

desativar nWS

aguardar TW2B + TBUSY

tempoEspera ← 0

status ← OCUPADA

tempoEspera >=TIME_OUT?

enviaProxima ← false

status ← ERRO_BSY_WS

enviaProxima?

RDYnBSY ativado?

status ← CERTO

nSTATUS ativado?

PosPalavraCorrente >=(tamanhoDado – 1)?

status ← ERRO_ST_WS

resetar

enviaProxima ← false

false

false

false

false

PosPalavraCorrente++

enviaProxima ← true

sim

não

não

sim

sim

não

status ←ERRO_NÃO_ESPERADO

false

não

sim

sim

não

não

não

sim

sim

Figura 4.5.a. Fluxograma do Método configurar (parte 1)

Page 32: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

32

tempoEspera ← 0

tempoEspera++

CONF_DONEativado?

aguardar TCD2UM

INIT_DONE ativado?

enviaProxima ← false

status ← CERTO

tempoEspera <TIME_OUT?

true

sim

não

não

sim

sim

não

continuação

status ← ERRO_CD_TO

resetar

enviaProxima ← false

false

status ← ERRO_ID_TO

resetar

enviaProxima ← false

false

Figura 4.5.b. Fluxograma do Método configurar (parte 2)

Os demais métodos são de entendimento mais simples, que podem ser vistos

diretamente no código do programa.

Page 33: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

33

5 - RESULTADOS

O projeto do processador descrito no capítulo 3, foi implementado utilizando

linguagem VHDL e seus componentes ligados por editor gráfico do software MAXPLUS II.

No Anexo A são apresentados as listagens dos arquivos em VHDL e os desenhos gráficos.

O projeto, no ambiente do software MAXPLUS II, foi compilado para implementação

do circuito do processador na CPLD FLEX10K10. Em seguida o arquivo de configuração da

CPLD foi transferido para a placa desenvolvida utilizando o software de comunicação.

Imediatamente após a transferência do arquivo de configuração, a CPU desenvolvida estava

operando, executando o programa exemplo em sua memória de programa também

implementada na CPLD. Os resultados do processamento da CPU puderam ser visualizados

na porta de saída da CPU.

A CPU, bem como a memória e portas de E/S, foi simulada também utilizando o

software MAXPLUS II. No Anexo B são apresentados as formas de onda dos resultados da

simulação, quando a CPU executava o programa exemplo, provando a eficiência do projeto.

Page 34: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

34

6 - CONCLUSÃO

A Unidade Processadora Discreta Microprogramável apresentada neste relatório de

pesquisa, mostrou-se simples, eficaz e robusta. Esta unidade contém a mesma arquitetura

utilizada pelos mais modernos processadores digitais, porém de uma maneira simples. Assim

é possível o seu entendimento e estudo de novas tecnologias de projeto.

O uso dos softwares de edição, compilação e programação, combinado com o uso do

hardware programável, permite que novas propostas de arquitetura de processadores possam

ser testadas e implementados de maneira rápida e eficiente.

Dentre as aplicações possíveis para a placa desenvolvida, além da implementação de

novos propostas de arquiteturas de processadores (objetivo principal deste projeto de

pesquisa), é possível a implementação de quaisquer circuitos digitais, desde que respeitado o

limite de portas lógicas disponível na CPLD utilizada.

AGRADECIMENTOS

Ao Depto de Ciência da Computação da UFLA, pelo apoio dos professores e

funcionários para o desenvolvimento do projeto.

À FAEPE, pelo apoio à execução e acompanhamento do projeto de pesquisa.

Agradecimento especial à FAPEMIG pelos recursos financiados para a execução do

projeto e sem a qual seria improvável a realização do mesmo

Page 35: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

35

REFERÊNCIAS BIBLIOGRÁFICAS

[1] ALTERA CORPORATION. Data Book. San Jose, EUA: January 1998. 885p.

[2] ALTERA CORPORATION. MAX+PLUS II: Getting Started. San Jose, EUA:

September 1997. 353p.

[3] EGGEBRECHT, Lewis C. Interfacing to the IBM Personal Computer. 2.ed. USA:

Howard W. Sams and Company, 1990. 345p.

[4] HAYES, John Patrick. Computer Architecture and Organization. Singapore: McGraw-Hill

International, 2a edição, 1988, 702p.

[5] LANGDON Jr, G. G. e FREGNI , E. Projeto de Computadores Digitais. Edgard Blucher

Ltda, 1990.

[6] MALVINO, A. Microcomputadores e Microprocessadores. McGraw-Hill, São Paulo,

1986.

[7] PATTERSON, David A. e HENNESSY, John L. Computer Organization and Design:

The Hardware/Software Interface. San Francisco: Morgan Kaufmann, 2a edição, 1998,

980p.

[8] PERRY, Douglas. VHDL. 3.ed. New York, EUA: McGraw-Hill, 1998. 493p.

[9] STALLINGS, WILLIAM . Computer Organization and Architecture – Designing for

Performance. Fourth Edition. Prentice Hall, 1996.

[10] TANEMBAUM , Andrew S. Organização Estruturada de Computadores. Rio de Janeiro:

Livros Técnicos e Científicos, 1999, 3a edição, 460p.

[11] TAUB, Herbert. Circuitos Digitais e Microprocessadores. Editora McGraw-Hill, São

Paulo, 1984.

Page 36: RELATÓRIO FINAL DE PROJETO DE PESQUISA FAPEMIG PROJETO …algol.dcc.ufla.br/~lacerda/projetos/CPU_FPGA/projeto_CPU_FPGA.pdf · Desde o primeiro computador digital, até hoje, é

36

[12] TOKHEIM, L. R. Introdução aos Microprocessadores. MacGraw-Hill do Brasil, São

Paulo, 1985.

[13] ZUFFO, João Antônio. Fundamentos da Arquitetura e Organização dos

Microprocessadores. Editora Edgard Blucher Ltda, São Paulo, 1978.

[14] ZUFFO, João Antônio. Microprocessadores: Dutos de Sistema, Técnicas de Interface e

Sistemas de Comunicação de Dados. Editora Edgard Blucher Ltda, São Paulo, 1981.

PROPOSTAS DE CONTINUIDADE

Propõe-se as seguintes idéias para continuação deste projeto:

• Melhoria da unidade de dados do processador desenvolvido, utilizando registradores com

ponteiros.

• Utilização de uma CPLD com maior capacidade para implementação do processador.

• Utilização de tipos de pipeline no projeto do processador.

• Projeto de placa com barramento PCI, no lugar do barramento ISA.

• Implementação da placa com memórias tipo RAM estática para economizar portas lógicas

da CPLD.

• Acréscimo do número de instruções do processador projetado, com maior complexidade.

• Melhoria da ULA, implementando mais operações.

• Utilização da placa para a implementação direta de algoritmos.

Lavras, outubro de 2001

_______________________________

Wilian Soares Lacerda