Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de...

164
SERVI O DE P S-GRADUA O DO ICMC-USP Data de Dep 30.08.1999 Assinatura c j rt Projeto da Unidade de Controle de uma Arquitetura Sist lica para Solu o de Sistemas Lineares, utilizando-se Metodologias Avan adas para Projeto de Hardware Marcos Roberto Bombacini Orientador: Prof Dr. Eduardo Marques Disserta o apresentada ao Instituto de Ci ncias Matem ticas e de Computa o - ICMC-USP, como parte dos requisitos para obten o do titulo de Mestre em Ci ncias rea: Ci ncias de Computa o ' e Matem tica Computacional. S o Carlos Agosto/1999

Transcript of Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de...

Page 1: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

SERVIÇO DE PÓS-GRADUAÇÃO DO ICMC-USP

Data de Dep • • 30.08.1999

Assinatura cçjr‘t

Projeto da Unidade de Controle de uma Arquitetura Sistólica para Solução de

Sistemas Lineares, utilizando-se Metodologias Avançadas para Projeto de

Hardware

Marcos Roberto Bombacini

Orientador: Prof Dr. Eduardo Marques

Dissertação apresentada ao Instituto de Ciências Matemáticas e de Computação - ICMC-USP, como parte dos requisitos para obtenção do titulo de Mestre em Ciências — Área: Ciências de Computação' e Matemática Computacional.

São Carlos Agosto/1999

Page 2: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Agradecimentos

À Deus, por tudo permitir e possibilitar.

À minha família, que soube compreender minha ausência e sempre me incentivou.

Ao Prof. Dr. Eduardo Marques, pela orientação, paciência e amizade, que

foram fundamentais na elaboração deste trabalho.

Agradeço especialmente ao Prof. Jorge Luiz e Silva, pela colaboração,

apoio, incentivo e amizade que sempre teve para comigo nos momentos mais difíceis.

À prof. Sandra Abib, pelo exemplo, confiança e respeito.

Agradeço a todos os funcionários deste instituto, que direto ou indiretamente

contribuíram na realização deste trabalho. Especialmente à Beth, sempre disposta a

atender-me com atenção e afinco.

Aos amigos: Toni, André, Paulo Saia, Tatuí, Alencar, Cabral, Eduardo

Amorim, Rosely, Mori, Sadao e tantos outros que tornaram estes anos de trabalho

mais alegre.

À Luciane, pelo carinho, companhia, apoio, pela compreensão e

principalmente por ser uma pessoa tão especial. Sem ela nada disso seria possível.

Page 3: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Índice 1 INTRODUÇÃO 1

1.1 JuslIPICATIVA 2

2 METODOLOGIAS AVANÇADAS PARA PROJETO DE HARDWARE 3 2.1 MODELAGEM DE SISTEMAS DIGITAIS 3

2.1.1 Domínios e Níveis de Modelagem 5 2.2 A EVOLUÇÃO DO PROJETO EM Ano NívEL com FERRAMENTAS EDA 7

2.2.1 Metodologia de Projeto em Alto Nível com Ferramentas EDA 10 2.2.2 Iniciando um Projeto em Alto Nível 11 2.2.3 Uma Visão Geral do Processo 11

2.3 FERRAMENTAS E PROCESSOS DE AUTOMAÇÃO DE PROJETO EM ALTO NÍVEL 14 2.3.1 Entrada de Projeto 14 2.3.1.1 Descrições Comportamentais 15 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas 16 2.3.2 Síntese 16 2.3.2.1 Síntese Comportamental 16 2.3.2.2 Síntese HDL 17 2.3.2.3 Síntese Lógica 17 2.3.2.4 Separação Clara entre Exploração e Implementação 18 2.3.2.5 O Balanceamento Alcançado pela Ferramenta de Síntese 19 2.3.3 Simulação 20 2.3.3.1 Validação 21 2.3.4 Verificação 22 2.3.4.1 Estratégias para Verificação 24 2.3.4.2 Simulação "Pins-Out" 25 2.3.4.3 Modelo de Representação 25 2.3.4.4 Visualizando os Resultados da Verificação 27 2.3.5 Teste de Síntese 27

3 FPGAS (FIELD PROGRAMMABLE GATE ARRA YS) 30 3.1 VisÃo GERAL DA FPGA 30 3.2 A FPGA BASEADA EM SRAM 33 3.3 PROGRAMANDO A FPGA 37 3.4 COMPUTADORES RECONFIGURÁVEIS 40

3.4.1 Hardware Fixo 40 3.4.2 Hardware Reconfigurável 41

4 ESTUDO DA LINGUAGEM VHDL 43 4.1 HISTÓRICO E CARACrISRÍSTICAS BÁSICA DO VHDL 43 4.2 O PORQUÊ DO VHDL 45

5 ARQUITETURAS SISTÓLICAS 50 5.1 HISTÓRICO E CARACTERÍSTICAS BÁSICAS DOS SISTEMAS ARRANJOS SISTÓLICOS 51 5.2 APLICAÇÕES 55

5.2.1 Exemplo de uma Aplicação de Sistemas de Equações Lineares 56 5.2.2 Métodos para Solução de Sistemas Lineares 57 5.2.3 Técnicas de Projeto e Mapeamento 59

Page 4: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

6 PROJETO DA UNIDADE DE CONTROLE 61

6.1 CÁLCULO DA MATRIZ É 66 6.2 CÁLCULO DO VETOR g 68

7 DETALHES DA IMPLEMENTAÇÃO DA UNIDADE DE CONTROLE 71 7.1 BLOCOS COMBINACIONAIS 71

7.1.1 Estágio Multiplicador 71 7.1.2 Estágio Somador/Subtrator 73 7.1.3 Estágio Acumulador 77

7.2 ELEMENTOS DE MEMÓRIA 77 7.2.1 Memória RAM do tipo Dual-Port 78 7.2.2 Registrador intermediário com clock, clear e enable 79 7.2.3 Registrador de valores constantes e de valores escalares 80

8 ANÁLISE E DISCUSSÃO DOS RESULTADOS 81 8.1 PROCEDIMENTO UTILIZADO 81 8.2 VALORES INICIAIS DAS MATRIZES E DOS VETORES 81 8.3 VALORES DAS CONSTANTES 82 8.4 RESULTADOS OBTIDOS 82

9 CONCLUSÕES 144 9.1 SUGESTÕES PARA DESENVOLVIMENTO FUTURO 145

10 REFERÊNCIAS BIBLIOGRÁFICAS 147

11

Page 5: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Índice de Figuras

FIGURA 2.1 - DOMÍNIOS E NÍVEIS DE ABSTRAÇÃO 6 FIGURA 2.2 - PROPÓSITOS DOS SISTEMAS EDA 9 FIGURA 2.3 - DIFERENTES NÍVEIS DE CONCEPÇÃO PARA PROJETOS EM HARDWARE 10 FIGURA 2.4 - ETAPAS BÁSICAS DO PROJETO EM ALTO NÍVEL 12 FIGURA 2.5 - SÍNTESE LÓGICA 18 FIGURA 2.6 - Os PONTOS DE EQUILÍBRIO OBTIDOS PELA FERRAMENTA DE SÍNTESE 24 FIGURA 3.1 - CLASSES DE FPGAs 31 FiGuRA 3.2 - A FPGA 34 FIGURA 3.3 - CLBs E INTERCONEXÕES 35 FIGURA 3.4 - U/vi EXEMPLO DE BLOCO LÓGICO CONFIGURÁVEL 36 FIGURA 3.5 - DIAGRAMA DE FLUXO DE PROJETO - ENTRADA DO PROJETO 37 FIGURA 3.6 - DIAGRAMA DE FLUXO DE PROJETO - IMPLEMENTAÇÃO DO PROJETO 38 FIGURA 3.7 - DIAGRAMA DE FLUXO DE PROJETO --- VERIFICAÇÃO DO PROJETO 39 FIGURA 3.8- DIAGRAMA DE FLUXO DE PROJETO --- CONFIGURAÇÃO DA FPGA 40 FIGURA 5.1 - FLUXO SISTÓLICO DE DADOS SAINDO E VOLTANDO DA MEMÓRIA 51 FIGURA 5.2 - ANALOGIA COM O SISTEMA VASCULAR HUMANO 53 FIGURA 5.3 - DIFERENÇA ENTRE ARQUITETURAS COMUNS E SISTÓLICAS 54 FIGURA 5.4 - TOPOLOGIAS SISTÓLICAS MAIS COMUNS 55 FIGURA 5.5 - ARQUITETURA SISTÓLICA EM ANEL PARA SOLUÇÃO DE SISTEMAS LINEARES 59 FIGURA 6.1- DESTAQUE PARA A UNIDADE DE CONTROLE NA ARQUITETURA SISTÓLICA 61 FIGURA 6.2 - DETALHAMENTO DA UNIDADE DE CONTROLE 62 FIGURA 6.3 - SEQUÊNCIA DE ESCRITA DA MATRIZ F E O VETOR g NAS FIFOS DOS EPS 63 FIGURA 6.4 - ORGANIZAÇÃO GERAL PIPELINE 66 FIGURA 6.5 - SEQÜÊNCIA DE OPERAÇÕES DA MATRIZ A. 67 FIGURA 6.6 - DIAGRAMA DE BLOCOS DA IMPLEMENTAÇÃO DA MATRIZ É. 68 FIGURA 6.7 - SEQÜÊNCIA DE OPERAÇÕES DO VETOR B. 69 FIGURA 6.8 - DIAGRAMA DE BLOCOS DA IMPLEMENTAÇÃO DO VETOR . 70 FIGURA 7.1 - DIAGRAMA DE BLOCOS DE UM MULTIPLICADOR DE N BITS 72 FIGURA 7.2 - ALGORITMO DA OPERAÇÃO DE MULTIPLICAÇÃO. 73 FIGURA 7.3 - DIAGRAMA DE BLOCOS DE UM SOMADOR/SUBTRATOR DE N BITS 74 FIGURA 7.4 - ALGORITMO DA OPERAÇÃO DE SOMA/SUBTRAÇÃO 76 FIGURA 7.5 - DIAGRAMA DE BLOCOS DO MÓDULO ACUMULADOR. 77 FIGURA 7.6 - MEMÓRIA RAM DUAL-PORT. 78 FIGURA 7.7- REGISTRADOR INTERMEDIÁRIO COM CLOCK, CLEAR E ENABLE 80 FIGURA 8.1 - VALORES INICIAIS DAS MATRIZES E DOS VETORES 81 FIGURA 8.2 - VALORES ADOTADOS PARA AS CONSTANTES. 82

111

Page 6: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Resumo

Este trabalho consiste no desenvolvimento de uma unidade de controle, cuja função é gerenciar vários elementos de processamento que compõem uma arquitetura computacional classificada como arranjo sistólico, com o propósito de solucionar problemas que envolvam sistemas lineares. A partir de uma formulação matemática de alto nível de abstração, estabeleceu-se uma sequência de operações que possibilitou a codificação do modelo matemático em linguagem VHDL. Foram empregadas metodologias e ferramentas avançadas para o projeto de hardware que aceleraram o ciclo de desenvolvimento do projeto, e para a implementação utilizaram-se dispositivos reprogramáveis FPGAs (Field Programmable Gate Arrays). São apresentados resultados numéricos na forma de diagrama de tempo que evidencia o sincronismo da técnica de Pipeline, indicando que a abordagem e a metodologia adotada é viável e eficiente para a solução do problema.

iv

Page 7: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Abstract

This work presents the development of a unit controller for a computer arquitecture composed of processing elements, which are connected in a ring topology, implementing a systolic array. It has the purpose of solving linear systems using an iterative solution technique. The unit controller was built based on a mathematical formulation which allowed the translation of the mathematical model into a VHDL language. Advanced methodologies and tools for hardware project were employed to accelerate the product development cycle and to implement reprogrammable devices on FPGAs (Field Programmable (iate Arrays). Numerical results are presented using timing diagrams that verify the synchronization of the Pipeline technique showing the feasibility and efficiency of the approach employed and the methodology used for solving the problem.

Page 8: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Introdução

1 Introdução

Tradicionalmente o projeto lógico digital tem sido descrito sobre papéis e implementado

com lógica TTL utilizando componentes discretos com integração em pequena escala. A

montagem de protótipos tem sido feita pela conexão com fios dos elementos do sistema

("wirewrapping9. Esta técnica porém impõe dificuldades na montagem, depuração e validação

do funcionamento dos circuitos e ao mesmo tempo exige muita atenção e detalhes e está sujeita a

uma série de erros. Depurar erros pode significar em alguns casos somente a detecção de fios

conectados erroneamente a partir de uma documentação que depende exclusivamente dos papéis

e anotações do projetista. O projeto, na verdade, só é validado ao término da implementação do

protótipo. Outra limitação da técnica de "wireivrapping" é que ela não pode ser utilizada

diretamente com dispositivos SMD ("Surface Mounted Devices') e não funciona

adequadamente para as freqüências de "clock" utilizadas nos circuitos atuais.

A flexibilidade e as características de integração das FPGAs ("Field Progranunable Gate

Array" ) tornam esses dispositivos ideais para o desenvolvimento de pesquisa nas áreas

mencionadas. As FPGAs permitem que o projetista verifique seu Projeto de uma perspectiva em

nível de sistema. O projeto pode ser feito no papel com alguns detalhes e logo em seguida

integrado em um único dispositivo FPGA. Os projetos são descritos geralmente utilizando

linguagens de descrição de hardware (tais como VHDL, Lola, Verilog, ou ABEL) ou editores de

esquemáticos (tais como o VLEWlogic PROcapture, Mentor Design Architect, OrCAD SDT ou

Capture for Windows).

As linguagens de descrição de hardware mencionadas atendem muito mais

eficientemente, que os diagramas esquemáticos, uma série de exigências do projeto de sistemas

atuais de hardware tais como elevada complexidade e alta velocidade. O uso da linguagem

VHDL garante uma maior robustez de projeto, uma vez que a especificação do hardware poderá

ser submetida a uma série de experimentos de validação. Além disso, o VHDL permite projeto

no estilo "topdown", baseado em funções de alto nível, ao invés de projetos elaborados ao nível

de portas lógicas.

1

Page 9: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Introdução

1.1 Justificativa

A pesquisa em hardware evolui muito rapidamente, o que tem gerado a necessidade de

novas metodologias para o seu desenvolvimento, uma vez que os projetos estão se tomando cada

vez mais sofisticados e as exigências de velocidade e eficiência se tomando cada vez mais

estritas. Com a atual infra-estrutura baseada em projetos de "wirewrapping", fica praticamente

impossível o desenvolvimento de hardware de alto desempenho, comprometendo as pesquisas

nessa área. Com a introdução das novas metodologias avançadas para o projeto de hardware, e

com o LaSD-ICMC-USP propiciando uma infra-estrutura de pesquisa e ensino de boa qualidade,

pretende-se Contribuir de maneira significativa para o desenvolvimento de hardware, bem como

para a geração de recursos humanos numa área atualmente carente no Brasil e de grande valor

estratégico, dada a demanda crescente de informatização da sociedade. Essas atividades,

juntamente com as pesquisas realizadas em outros centros de desenvolvimento de hardware no

Brasil, são essenciais para se obter um alto nível de qualidade, tornando assim o país

tecnologicamente competente.

Cabe ressaltar, que o projeto da unidade de controle e da unidade de interfaceamento

propostas nos próximos capítulos, visam primeiramente o fortalecimento do aprendizado destas

novas metodologias, e que a construção do protótipo do Arranjo Sistólico vivifica o espírito de

"engenheiro" em nossos pós-graduandos.

2

Page 10: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avancadas para Projeto de Hardware

2 Metodologias Avançadas para Projeto de Hardware

O propósito desse tópico é descrever uma nova metodologia para projeto de hardware,

que é baseada em ferramentas de alto nível permitindo assim um ciclo de desenvolvimento com

grande confiabilidade e menor tempo de desenvolvimento, além de permitir a manipulação de

projetos complexos de forma mais eficiente. [SYN94].

2.1 Modelagem de Sistemas Digitais

Para se discutir modelagem de sistemas digitais, primeiro precisa-se concordar com" a

definição do que seja um sistema digital. Cada engenheiro poderia definir isso de maneiras

diferentes, dependendo do seu "background" e da área em que ele está trabalhando. Alguns

podem considerar um único circuito VLSI como sendo um sistema digital. Outros poderiam

considerar uma visão mais ampla e pensar em um computador completo, inserido dentro de um

gabinete com controladores.de periféricos e outras interfaces [KUN87].

Para o propósito desse trabalho, considera-se um sistema digital, qualquer circuito digital

que processe ou armazene informação. Desse modo pode-se considerar um sistema digital, tanto

um sistema completo, quanto as várias partes das quais ele é construído [A5H96].

Para se conseguir abranger toda essa gama de sistemas digitais, deve-se inicialmente

reconhecer a complexidade com a qual se está lidando. É humanamente impossível compreender

sistemas tão complexos de maneira completa, portanto é necessário encontrar métodos para lidar

com essa complexidade, de tal forma a permitir, com algum grau de confiança, projetar

componentes e sistemas que obedeçam a determinados requisitos.

A forma mais conhecida para enfrentar esse desafio é a de adotar uma metodologia

sistemática de projeto. Iniciando-se por um documento com requisitos para o sistema, pode-se

projetar uma estrutura abstrata que obedeça a esses requisitos. Depois disso, pode-se então

decompor essa estrutura em uma série de componentes que, quando juntos, vão interagir para

executar a mesma função. Cada um desses componentes pode por sua vez ser decomposto até

que se chegue a um nível onde se tenha componentes primitivos que executem uma função

3

Page 11: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodolo,eias Avançadas para Projeto de Hardware

específica. O resultado desse processo é um sistema hierarquicamente decomposto, construído a

partir de elementos primitivos.

A vantagem dessa metodologia é a de que cada subsistema pode ser projetado

independentemente dos outros. Quando se usa um subsistema, pode-se imaginá-lo como uma

abstração ao invés de serem considerados os detalhes do subsistema. Assim em qualquer estágio

do processo de desenvolvimento do projeto, o envolvimento se dá apenas com as informações

relativas à partes do projeto, liberando-se assim da sobrecarga excessiva de detalhes [GSC9.5] .

-0 termo modelo portanto é usado para caracterizar o que se entende do sistema como um

todo. O modelo representa a informação que é relevante e suprime os detalhes irrelevantes. Isso

implica que pode haver vários modelos para o mesmo sistema, uma vez que diferentes

informações são relevantes em diferentes contextos. Um tipo de modelagem poderia concentrar-

se em representar a função do sistema, enquanto outro tipo repreSentaria a maneira pela qual o

sistema é composto.

Existem várias razões para se formalizar essa idéia de modelo. A primeira, supondo-se a

necessidade de um sistema digital, os requisitos do sistema podem ser especificados. A tarefa

dos engenheiros então é projetar um sistema que satisfaça esses requisitos. Para fazer isso, deve

ser dada a eles uma compreensão dos requisitos do sistema foram especificados, de preferência

de uma forma que os deixe livres para explorar implementações alternativas e para escolher as

melhores, de acordo com algum critério estabelecido. Um dos problemas que muitas vezes surge

é o de que os requisitos são por sua vez incompletos e ambíguos, e o cliente e os engenheiros de

projeto discordam no que possa ser significativo no documento como requisitos do sistema. Esse

problema pode ser evitado através do uso de um modelo formal para comunicar os requisitos.

Uma segunda razão para se utilizar modelos formais é comunicar a compreensão de um

sistema a um usuário. O projetista nem sempre pode prever todas as maneiras possíveis sobre

como utilizar um sistema, e portanto não é capaz de enumerar todos os comportamentos

possíveis para o mesmo. Assim, um modelo formal é uma valiosa ferramenta para documentação

de um sistema.

4

Page 12: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

Uma terceira motivação para a modelagem é a de possibilitar o teste e a verificação de

um projeto fazendo uso de um projeto de simulação. Se no início for um modelo de requisitos

que defina o comportamento de um sistema, o comportamento pode ser simulado utilizando

entradas de teste e observando as saídas resultantes do sistema. De acordo com essa metodologia

de projeto, pode-se então projetar um circuito a partir de subsistemas, cada um com seu próprio

modelo de comportamento. Pode-se simular esse sistema composto com as mesmas entradas de

teste e comparar as saídas com aquelas obtidas na simulação prévia. Se estas forem as mesmas, é

sabido que o sistema composto obedece os requisitos para os casos testados. Caso contrário;

nota-se que alguma revisão do projeto é necessária. Esse processo pode continuar até chegar ao

nível mais inferior.

A quarta motivação para modelagem é a de que ela permite uma verificação formal da

funcionalidade do projeto. Uma verificação formal requer uma série de especificações

matemáticas sobre os requisitos funcionais do sistema.

Finalmente, pode-se colocar a síntese de circuitos como uma motivação não menos

importante do que todas as motivações citadas acima, pois é através da síntese que será possível

otimizar e até mesmo validar os projetos.

2.1.1 Domínios e Níveis de Modelagem

No item 2.1, foi mencionado que há diferentes tipos de modelos para um sistema, cada

um enfocando diferentes aspectos. Esses modelos podem ser classificados em três domínios:

função, estrutura e geometria. O domínio funcional diz respeito às operações executadas pelo

sistema. Por essa razão, esse é o domínio mais abstrato de descrição, uma vez que ele não indica

como a função é implementada. O domínio estrutural trata de como o sistema é composto de

seus sistemas interconectados. O domínio geométrico trata de como o sistema é posto em espaço

físico.

Cada um desses domínios pode também ser dividido em vários níveis de abstração. No

nível mais elevado é considerada uma visão global da função, estrutura ou geometria, e a níveis

mais baixos são introduzidos os detalhes mais finos sucessivamente A FIGURA 2.1 representa os

5

Page 13: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

domínios dos três eixos independentes e representa os níveis de abstração por círculos

concêntricos cruzando cada um dos eixos.

vie ral

~cern de Regictialor de T nci onelerea

‘gilL"

RegistradoeT

Agodyno

P"23Skt44al tr- Aa Tnagei

"Ice

A

Baetões

Células Palace

Plano 13gezi Geométrico

FIGURA 2.1 - DOMÍNIOS E NÍVEIS DE ABSTRAÇÃO

Os eixos radiais mostram os três diferentes domínios de modelagem. Os anéis

concêntricos mostram os níveis de abstração, com os níveis mais abstratos do lado externo e os

níveis mais detalhados em direção ao centro.

Observando essa classificação em maiores detalhes, é mostrado como a cada nível podem

ser criados modelos para cada domínio. Como um exemplo, pode ser considerado um sistema de

microcontrolador na forma de um único chip utilizado como o controlador para algum

instrumento de medição, com conexões de entrada de dados e algumas formas de saídas de

display. O desenvolvimento desse sistema seria distribuído através das várias camadas descritas

na FIGURA 2.1.

Ealrutural Funcional

Chate-teemoileelliccersedor

Eeprdiã] Diferencia

6

Page 14: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

De uma maneira mais abstrata, a função do sistema pode ser descrita em termos de um

algoritmo, muito parecido com um algoritmo para um programa de computador. Esse nível de

modelagem funcional é muitas vezes chamado modelagem comportamental.

No capítulo 3 é descrita uma metodologia de projeto de hardware em alto nível através do

uso de ferramentas EDA (Electronic Device Automation).

2.2 A Evolução do Projeto em Alto Nível com Ferramentas EDA

Nas aplicações específicas para circuito integrado, conhecidas como ASIC (Application Specific Integrated Circuit) podem ser encontrados circuitos integrados (CIs) com 50.000 portas

lógicas ou mais. Com o aumento gradativo na capacidade de integração dos chips poderá ser concideravelmente aumentado de 100 portas lógicas por pino atualmente, para até 3.000 portas

lógicas por pino, por volta do ano 2001. Essa complexidade não pode mais ser manipulada

utilizando as ferramentas de projeto auxiliado por computador, Computer-Aided Engineering

(CAE), tradicionais Essas ferramentas resultam em ciclos de projeto muito longos tanto para a

fase concepção lógica quanto para a fase de implementação em portas lógicas, com custos de

desenvolvimento muito altos, e com uma probabilidade de erros inaceitável [LEU97].

Essa evolução pode ser comparada ao avanço das linguagens de programação em alto

nível, tais como a linguagem C, que vem substituindo a programação ao nível de linguagens

montadoras (assembly). As ferramentas de projeto em alto nível, portanto estão elevando os

projetistas de sistemas a um novo patamar de produtividade e independência tecnológica,

possibilitando, assim que uma complexidade cada vez maior do projeto possa ser manipulada,

com a capacidade de corrigir defeitos antes do processo de fabricação, e tornando os projetos

mais portáveis e reutilizáveis.

A evolução na automação de projeto eletrônico, Electronic Design Automation (EDA),

começou nos anos 70 com as ferramentas de projeto auxiliado por computador, Computer-Aided

Design (CAI)), ferramentas essas que deram assistência aos projetistas na geração de padrões e

de layout. As ferramentas de verificação física supervisionavam o trabalho dos projetistas, porém

os engenheiros dessa época não pensavam em termos da lógica ao nível de layout, por causa

7

Page 15: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

disso os projetos tinham de ser traduzidos manualmente partindo-se desde as portas lógicas até

as máscaras, tomando as alterações lógicas na máscara difíceis e ineficientes [VE\193a].

Nos anos 80, as ferramentas CALE proporcionaram aos engenheiros um nível mais alto de

abstração nos projetos, permitindo-lhes pensar de forma a levar em consideração as portas

lógicas. Os engenheiros, nesse momento, possuíam ferramentas computadorizadas de captura

esquemática, roteamento, e de simulação lógica que foi introduzida, permitindo a verificação do

funcionamento dos projetos até a fase de prototipação do hardware. Entretanto, as falhas na

arquitetura eram difíceis de serem detectadas ao nível de portas lógicas principalmente para

grandes sistemas [BLI94].

Portanto, o propósito dos sistemas EDA, como uma evolução natural dos sistemas CAD

nos anos 70, tem sido manipular a complexidade dos projetos. Os objetivos permaneceram

constantes: aumentar a produtividade, a qualidade, e a previsibilidade de um projeto conforme

descrito na FIGURA 2.2.

As ferramentas EDA, atualmente, evoluíram para o projeto em alto nível e estão baseadas

em três poderosas ferramentas: síntese, simulação, e teste, onde a síntese se destaca como a parte

principal das ferramentas, pois proporciona a tradução automática das abstrações de alto nível

em descrições para as portas lógicas [MCC90].

8

Page 16: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Anos 70

Produtividade

Qualidade

Previsibilidade

Anos 80

CAD

--> digitalização

--> autoteste

--> abstrato a partir do layout para SPICEC)*

CAE

Produtividade --> captura esquemática rápida

Qualidade --> gerar vetores de teste automaticamente

Previsibilidade --> simular na forma de portas lógicas

Anos 90 EDA

Produtividade --> ferramentas de síntese criam o circuito

Qualidade --> teste de síntese, teste automático de estruturas, otimização para projetos de alta qualidade

Previsibilidade --> simulação do sistema, teste

SPICES (Simulador, Progrcun Integrated Cireuits Especially) é um programa simulador de circuito genérico para dc não linear, introdução não linear, e análises lineares em ac. Circuitos podem conter resistores, capacitores, indutores, indutores mútuos, origens de tensão e corrente independentes, quatro tipos de origens dependentes, linhas .de transmissão, e os quatro dispositivos mais comuns de semicondutores: diodos, ElTs, IFETs, e MOSFETs.

Metodologias Avançadas para Projeto de Hardware

FIGURA 2.2 - PROPÓSITOS DOS SISTEMAS EDA

Antes do surgimento da síntese, o máximo que poderia ser obtido era a simulação da

lógica a partir do projeto descrito em linguagens de descrição de hardware, Hardware

Description Language (HDL) tais como o VHDL (Very-High Speed Integrated Circuit (VHSIC)

ou Verilog®. [PER91, HAR90]. O projeto poderia ser verificado, mas o código não poderia ser

traduzido em um projeto manufaturável. A síntese representa a diferença principal entre as

ferramentas EDA e o CASE tradicional.

9

Page 17: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

O projeto no CAE é limitado pela captura esquemática com portas lógicas. Em contraste,

as ferramentas EDA suportam uma variedade de representações, tais como diagramas de bloco,

máquinas de estado, e descrições textuais, em linguagens de descrição de hardware, permitindo

assim que inovações arquiteturais sejam muito mais fáceis de serem implementadas. A

capacidade de simulação é aumentada, uma vez que o projeto é representado de uma forma mais

compacta. Um diagrama que representa o desenvolvimento por níveis de projeto pode ser visto

na FIGURA 2.3 [NAV93].

Comportamental

Portas Lógicas

FIGURA 2.3 - DIFERENTES NÍVEIS DE CONCEPÇÃO PARA PROJETOS EM HARDWARE

Projetos com ferramentas EDA também são independentes da tecnologia. Um projetista

pode ter inicialmente como tecnologia alvo uma FPGA (Field-Programmable Gate Array),

[ACT95, BLI94, BRO9613] para um protótipo com ASIC, mas também pode migrar para VLSI

(Very Large System lntegration).

2.2.1 Metodologia de Projeto em Alto Nível com Ferramentas EDA

Os benefícios do projeto em alto nível como: tempo mais curto para a entrada dos

projetos no mercado, projetos mais confiáveis, reutilização mais fácil do projeto, projetos bem

10

Page 18: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

documentados, etc., mostram claramente que os engenheiros de amanhã serão avaliados pela

capacidade de trabalhar de maneira eficaz e principalmente pela habilidade produtiva em

trabalhar com as novas ferramentas EDA [SYN94].

2.2.2 Iniciando um Projeto em Alto Nível

Pode-se caracterizar nessa abordagem para projeto duas fases para um início: certificar-se

de ter compreendido como a metodologia funciona antes de começar, e começar gradativamente.

Em geral, na fase de desenvolvimento propriamente dita, são usados os arquivos no

formato de "netlists" já existentes (arquivos contendo uma descrição da interconexão entre

elementos lógicos de um projeto) como bibliotecas para a maioria do projeto, e através de uma

linguagem de descrição em alto nível, como o VHDL, por exemplo, define-se um novo projeto.

2.2.3 Uma Visão Geral do Processo

Os modernos projetós em alto nível incluem captura de projeto, simulação em alto nível e

para portas lógicas, sínteses comportamental e lógica, verificação, e geração de vetores de teste.

Do mesmo modo que a metodologia de projeto tradicional, o projeto em alto nível se

inicia com as especificações do projeto, baseadas em:

• Função

• Qualidade (cobertura a falha)

• Custo (molde tamanho/área)

• Limitações de tempo (global, por exemplo, 20MHz).

Como já foi visto, em geral, para se editar um projeto, utilizam-se linguagens de

descrição de hardware, tais como Verilog ou VHDL. Existem HDLs ao nível comportamental

(nenhum conhecimento da arquitetura do circuito) e ao nível da transferência de registradores

Register-Transfer Level-RTL (registrador implícito e arquitetura funcional de blocos) que cria

uma descrição funcional da rede a ser implementada.

Partindo-se da especificação do projeto, podem ser verificadas na FIGURA 2.4 as etapas

básicas do projeto em alto nível.

11

Page 19: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

A partir da FIGURA 2.4 destacar-se-ão as várias etapas, que são detalhadas abaixo:

L Desenvolver uma descrição do projeto utilizando descrições funcionais RTL (entrada de

Projeto/captura de projeto).

Correspondendo na FIGURA 2.4 à parte do funcionamento comportamental, o processo de

criar a rede de descrição RTL é muitas vezes abordada de forma duplamente relacionada.

A primeira abordagem corresponde à fase que envolve uma definição de arquitetura do

tipo "top-down" onde todas as unidades funcionais do projeto são definidas, criando assim um

projeto estruturado de forma hierárquica. Essas unidades são tipicamente unidades de controle,

ALUs, RAM, ROM, ou "datapaths".

A segunda abordagem corresponde à fase de descrições funcionais "bottom-up" do

projeto utilizando a linguagem descrição de hardware fonte para descrever as características

funcionais de cada uma das unidades da arquitetura ao nível de RT.

Especificação

Implementação

Si mul ação Comportamental

Simulação Comportamental

V

Simulação RTL (Opcional)

Síntese e Teste de Síntese

Verificação

Simulação em Portas Lógicas

Pnáli se das Podas Légicas

Fabricante do Silício

?locação e Roteamento

V Silicio

FIGURA 2.4 - ETAPAS BÁSICAS DO PROJETO EM ALTO NÍVEL

Funci onamento Comportamental

Funci onamento RTL

Portas Légicas

Layout

12

Page 20: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

II. Validar a descrição (simulação RTL).

Correspondendo na FIGURA 2.4 à parte do funcionamento RTL, após as descrições RTL

terem sido completadas, o processo de validação começa. Normalmente, o processo de validação

continua "bottom-up" onde cada módulo é testado "unidade a unidade" para assegurar o

funcionamento desejado. Esse é o processo de simulação onde os estímulos de teste são

projetados para testar todos os comportamentos funcionais dos módulos. Após todas as partes do

projeto terem sido validadas, os módulos são montados para uma validação completa final.

JIL Traduzir para portas lógicas (síntese) e otimizar o projeto em termos da área e da

velocidade.

Correspondente na FIGURA 2.4, com relação ainda à parte do funcionamento da RTL,

quando a validação for concluída de uma descrição completa de projeto RTL, é chegado o

momento de concluir a fase de síntese.

Na fase de síntese do projeto, o desenho é traduzido para uma representação em forma de

portas lógicas e é otimizado, atendendo a um conjunto particular de metas de projeto e a uma

biblioteca contendo a tecnologia alvo. O resultado do processo de síntese é uma representação

otimizada em uma dada tecnologia específica na forma de portas lógicas.

IV Aplicar teste de síntese.

Também como parte da FIGURA 2.4 para funcionamento de RTL, o teste de síntese vai

complementar a síntese lógica uma vez que esta cria uma estrutura para o projeto, permitindo

assim a manipulação dos detalhes estruturais para o teste. [MUR95].

O teste de síntese desempenha quatro funções: verificação das regras do projeto para

teste, Design For Test (DFT), inserção de sondas para varredura; re-otimização do tempo e da

área; e geração padrão de teste automática, Automatic Test Pattern Generation (ATPG).

13

Page 21: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

V. Verificar o funcionamento (simulação ao nível de portas lógicas).

Na FIGURA 2.4, para obter maior garantia da funcionalidade nos blocos correspondentes

as portas lógicas e layozzt, pode-se desejar acrescentar uma etapa extra de verificação. O "tzetlist"

pode ser simulado (com as características de desempenho da tecnologia alvo utilizada no projeto)

para verificar se as características de desempenho desejadas e o funcionamento do projeto foram

satisfeitos.

Se as especificações não forem satisfeitas, o arquivo fonte RTL pode ser modificado para

que se experimente uma nova arquitetura que seja mais compatível com as metas do projeto.

Entretanto se a descrição satisfizer os objetivos do projeto, prossegue-se na implementação do

circuito em silício, trabalhando, por exemplo, com um fornecedor de ASIC.

VI. Validar o projeto (simulação).

A etapa de verificação final do projeto é a simulação para a validação do ASIC ou CI,

comum quando da produção desses dispositivos.

2.3 Ferramentas e Processos de Automação de Projeto em Alto Nível

Como já visto à automação de projeto em alto nível consiste basicamente de quatro

etapas distintas: entrada de projeto, síntese, simulação, e teste de síntese. Serão detalhadas então,

cada uma destas etapas para o projeto em alto nível.

2.3.1 Entrada de Projeto

A maioria dos projetos em forma de portas lógicas é capturada via um editor

esquemático, embora em alguns projetos possa ser utilizado um editor de texto para criar um

"netlist". A captura de projetos em alto nível, por outro lado, faz uso de uma mistura de entrada

em blocos (entrada do tipo esquemática para partes estruturais do projeto), e de uma entrada

textual para as funções no interior dos blocos. Alguns editores especializados possibilitam a

captura gráfica de funções lógicas, suas estruturas e um tipo específico de hardware. (Dois

exemplos são o Sistema de Projeto COSSAPTm para o projeto de processadores digitais de sinais

da Synopsys, e a ferramenta StatemateTm para máquinas de estado finitas da i-Logix, Inc.).

14

Page 22: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

Como visto na FIGURA 2.3, mais especificamente com relação ao modelo RTL na edição

dos projetos, serão destacadas a seguir as diferenças entre: descrição comportamental,

funcionamento dos RTL, e formato de portas lógicas:

2.3.1.1 Descrições Comportamentais

Descrições comportamentais estão sendo utilizadas mais e mais por projetistas para criar

e explorar as descrições dos algoritmos nos projetos, antes de sintetizar uma descrição RTL.

Uma descrição comportamental diz basicamente o que um projeto supõe realizar, mas com

alguma arquitetura alvo pré-definida, memória e elementos de controle.

Da mesma forma uma especificação HDL comportamental contém instruções, operações,

variáveis, e "arrays" semelhantes ao código de especificação para o algoritmo original.

Os benefícios da entrada de dados comportamentais e da simulação de algoritmos para

projetos, estão nas especificações de "timing" mais rápido, simulação em alto nível mais rápida

(utilizando um simulador comportamental), exploração dos algoritmos ótimos, de uma

arquitetura ótima, e alta qualidade final no momento da implementação.

2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL)

Estas descrições informam não apenas "Qual é" o projeto, mas também "como é" o

projeto. Dão uma boa noção da arquitetura e do esquema de clock, além de poderem gerar os

projetos com diferentes tipos de tecnologia.

Quando um projeto for capturado primeiramente ao nível comportamental, ele poderá ser

manualmente transformado em uma descrição RTL ou automaticamente sintetizado utilizando-se

uma ferramenta de síntese comportamental. O código RTL serve como "fonte" para o restante

do desenho do projeto. Isso significa que todas as alterações no projeto (especificações,

arquitetura, eliminação de "bugs", e assim por diante) são primeiro refletidos no código RTL.

Os benefícios ao se trabalhar em RTL utilizando metodologias de projeto em alto nível incluem:

15

Page 23: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

• A capacidade de dedicar uma porção maior do tempo de projeto para explorar conceitos de arquitetura

• Melhorar a qualidade do projeto através da otimização automática e da análise de arquitetura

• Consistência entre os níveis de abstração

• Projetos independentes de tecnologia alvo

• Reutilização de módulos

• Uma variedade de formatos são aceitos como entrada

2.3.1.3 Descrições em forma de Portas Lógicas

As descrições em forma de portas lógicas são representações não físicas de um projeto. A

implementação do projeto é descrita como uma rede booleana ou um "netlist". Essas descrições

conservam a arquitetura derivada da RTL, e também mostram a arquitetura booleana ou a

implementação lógica da função. Embora as descrições em fomia de portas lógicas possam ser

tecnologicamente independentes, elas tipicamente não o são, porque foram mapeadas e

otimizadas para uma biblioteca de tecnologia alvo em particular.

2.3.2 Síntese

A síntese consiste de três processos distintos: síntese comportamental, síntese HDL, e

síntese lógica.

2.3.2.1 Síntese Comportamental

Na síntese comportamental, constrói-se o "datapath" (por onde fluem os dados no interior

de uma lógica digital), memória, e elementos de controle através do uso de métodos automáticos

de escalonamento, alocação de hardware, compartilhamento de registrador, memória, e controle

de inferência — tarefas que o projetista costumava executar manualmente. Utilizando-se a

metodologia RTL, ele não precisa especificar a arquitetura exata de um projeto e pode explorar

muitas implementações alternativas resultando em arquitetura otimizada [0UC96].

16

Page 24: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodoloeias Avançadas para Projeto de Hardware

2.3.2.2 Síntese HDL

Na síntese HDL converte-se a entrada, que está na forma de HDL (tanto VHDL como

Verilog), em equações booleanas não otimizadas ou em um "netlist" otimizado. Esse processo

analisa a linguagem, verifica a sintaxe e a semântica, propaga constantes, elimina código extinto. aloca e compartilha recursos.

A otimização ao nível de portas lógicas executadas pela ferramenta de síntese requer um

suporte grande de bibliotecas de tecnologias, como CMOS, BiCMOS, ECL. e FPGA.

2.3.2.3 Síntese Lógica

A síntese lógica converte equações lógicas para um formato "netlist", e então o otimiza

para uma tecnologia ASIC em particular. A síntese lógica consiste de duas fases distintas: • Otimização lógica para minimizar equações Booleanas.

• Tecnologia de mapeamento para converter equações em células de biblioteca ASIC.

Ambas as fases levam em consideração limitações de área e de velocidade. No futuro,

elas também levarão em conta limitações de custo. A primeira etapa no processo de síntese é

estabelecer limitações de tempo e de área (e limitações de potência para projetos ECL). O

processo de se estabelecer as limitações para a síntese é semelhante ao de se desenvolver

estímulos para simulação. Limitações de tempo incluem caminho crítico, período de "clock", condições de "setup" e de "hold", e máximo "fanout" de transição. As limitações criadas podem

considerar o ambiente ao redor, incluindo fatores como condições de operação e temperatura.

Devido ao poder e à velocidade da tecnologia de síntese, pode-se analisar alternativas de

implementação, medindo-se os efeitos das mudanças na área e na velocidade, contrário aos

métodos ao nível de portas lógicas, onde raramente há tempo suficiente para caminhos

alternativos de implementação. Na FIGURA 2.5 pode-se ter uma visão clara do processo de

síntese, a partir de uma descrição em VHDL.

17

Page 25: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

,------ ---. •-____ _...„, Biblioteca da 41-

Tecnologia Alvo •_.___, ..„--.

Limitaçõ\ Timing/Área

Metodologias Avaneadas para Projeto de Hardware

entity N.410L_FUNC is port(A.13 : h BIT VECTOR(1 to

EOL : out BOCILEAN and VIIOL_FUNC:

TradugSo

OtimizagEo Otimingio

Projeto de Tamanho Projeto com Velocidade Reduzido Rápida

RGURA 2.5 - SÍNTESE LÓGICA

2.3.2.4 Separação Clara entre Exploração e Implementação

Uma das maiores diferenças entre o projeto na forma de portas lógicas e o projeto em alto

nível é a separação clara entre a versatilidade em se explorar diferentes frentes para um

determinado projeto e a implementação de um projeto na forma de portas lógicas. Captura,

exploração, e implementação são fases integradas em um único processo na elaboração de um

projeto, na forma de portas lógicas, já referenciado na FIGURA 2.4.

No projeto em alto nível, a implementação é realizada para sintetizar o HDL capturado, e

é direcionada a partir das metas estabelecidas pelo projetista (velocidade, área, potência, e assim

por diante). A exploração de alternativas múltiplas para a implementação pode ser realizada

rapidamente via alteração das metas do projeto. Em outras palavras, os métodos para portas

lógicas forçam a implementação antes que se possa explorar as possibilidades do projeto.

Portanto, o projeto em alto nível permite que se explorem alternativas antes da implementação.

18

Page 26: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

No projeto em alto nível, a implementação do projeto na forma de portas lógicas, na

maioria das vezes, é executada por intermédio de síntese da descrição comportamental ou da

descrição RTL. Algumas partes do projeto podem ser "hand-crafted" (alteradas manualmente, ex: geração de clock em um chip), algumas podem ser projetadas pelos geradores de módulo de

silício específicos (ex., RAM/ROM), e alguns "netlists" podem ser incluídos a partir de projetos gerados anteriormente.

A expectativa dos novos projetistas, portanto, é que pelo menos 90 por cento dos

projetos sejam sintetizados, em sua origem, a partir das descrições RTL em portas lógicas. Uma

vez criado o "netlist", o processo de implementação permanece o mesmo a partir desse processo

usado no projeto em forma de portas lógicas. Todas as revisões do projeto e todas as etapas de

validação permanecem as mesmas.

A síntese, portanto é a ligação entre dois ambientes de projetos até então distintos:

projetos ASICs e projetos de sistemas. A síntese e as linguagens de descrição de hardware vêm

modificando o nível de abstração do projeto ASIC, tornando possível estabelecer um

relacionamento bidirecional entre projetistas de sistemas e projetistas de ASICs.

Esse relacionamento é uma evolução natural, à medida que o custo envolvido no

desenvolvimento de sistemas está cada vez mais alto em um projeto ASIC proprietário,

exatamente o oposto do que ocorre a um componente padrão no mercado tradicional. A síntese

portanto faz com que tanto as tarefas do ASIC como as tarefas do projeto de sistemas sejam

combinadas.

2.3.2.5 O Balanceamento Alcançado pela Ferramenta de Síntese

Para uma otimização de área em um circuito FPGA, por exemplo, a meta é minimizar a

área total de um projeto (onde a área pode incluir uma combinação de células e interconexões).

O processo básico para conseguir isso é o de minimizar cada expressão em alto nível, e então

tentar encontrar sub-expressões comuns entre as várias funções booleanas. Esse processo é

chamado de otimização global de multiníveis. Após identificar essas sub-expressões comuns, a

otimização global de multiníveis cria variáveis intermediárias que representam as sub-

19

Page 27: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

expressões, para então substituir ligações para essas sub-expressões nas diferentes sub-funções.

Esse processo é chamado de estruturação.

Se a descrição HDL original tiver variáveis intermediárias, ela já estará em uma descrição

lógica multinível. Nesse caso, a ferramenta de síntese tentará identificar melhor as variáveis

intermediárias. Algumas das variáveis intermediárias serão substituídas, porque geram sub-

expressões adicionais comuns.

Há limites para essa minimização porque não é prático enumerar todas as possíveis

soluções, mas é possível controlar as tentativas nessa minimização tendo co- mo parâmetro o

"nível de esforço" das ferramentas de síntese.

A ferramenta de síntese ainda não é de domínio completo do projetista. Apesar do

processo de otimização lógica produzir boas sub-expressões, o conhecimento detalhado dessa

ferramenta é uma parte essencial no processo.

Cabe observar que as ferramentas de síntese lógica comerciais hoje em dia são melhores

na produção de lógica totalmente síncrona; isto é, todos os flip-flops são alimentados por um

sistema de clock bem definido que atua como entrada primária para o projeto. Há algumas

ferramentas de suporte para projetos assíncronos, mas o projetista que precisa desse suporte deve

estar atento, no sentido em que os circuitos totalmente síncronos podem em geral, estar de

acordo com os modelos de simulação, enquanto circuitos assíncronos podem não estar. A

maneira mais comum de produzir lógica assíncrona é partir de um HDL, utilizando "clocks"

ligados a "latches" ou a "flip-flops".

2.3.3 Simulação

O projeto em forma de portas lógicas combina validação e verificação. O projeto em alto

nível trata desses processos como duas atividades separadas. A separação entre a validação da

função e a verificação do desempenho leva a ciclos de simulação menores, reduzindo assim o

tempo global de desenvolvimento do projeto quando se utiliza de metodologias de projeto em

alto nível. O projeto em alto nível distingue entre validação e verificação com o seguinte questionamento:

20

Page 28: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodolocias Avançadas para Projeto de Hardware

Validação = O projeto capturado reflete precisamente a função pretendida?

Passa-se então à discussão do que é validação e em seguida verificação.

2.3.3.1 Validação

Na validação é estabelecido um corpo de prova suficiente de tal forma a comprovar que o

projeto capturado seja exatamente o que o projetista pretendia capturar (não há nada incorreto,

perdido, ou funções não procuradas). Ao nível de HDL (comportamental ou RTL), pode-se

validar as funções de um projeto via simulação de HDL. Neste caso pode-se verificar a

velocidade e a área após a criação de uma implementação em forma de portas lógicas usando

síntese.

A maioria dos módulos em HDL capturados requer apenas validação funcional. A

simulação, na forma que se apresenta hoje, é exclusivamente utilizada para a validação, mas em

breve deverão ser baseadas em padrões de validação podendo vir de múltiplas fontes (ex.,

VHDL, texto ASCII, etc.). É, portanto importante planejar vetores de simulação usados no

processo de validação, pois estes vetores serão apropriados para o uso na verificação funcional

do resultado pós-síntese. Nenhuma das fontes de validação padrão mapeia exatamente os padrões

que podem ser utilizados na forma de portas lógicas.

Como a simulação tradicional, a simulação em alto nível também envolve projeto

interativo e procedimentos de depuração, mas com um alto nível de abstração. Para facilitar a

depuração, bons relatórios de erro são relevantes; as mensagens devem identificar de maneira

clara as áreas com problemas no projeto original. Quando ferramentas de HI)L forem utilizadas,

um depurador código fonte será exigido, e uma visualização esquemática do projeto também será

útil. Mensagens comuns incluem erros, o diretório real (onde se está na estrutura de diretórios),

"análise" de mensagens (a "análise" é a primeira etapa na leitura do código VHDL), e os

resultados da simulação.

A validação dos resultados sintetizados ocorre na forma de portas lógicas. Uma vez que

um grande número de vetores pode ser necessário para validar o funcionamento. A velocidade de

simulação passa então a ser um ponto importante dos tópicos a ser questionado. Assim a

aceleração do hardware na forma de portas lógicas é uma maneira de acelerar a simulação;

21

Page 29: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

"multithreads" (o uso do computador com vários processos compartilhando múltiplas CPUs) é outra maneira.

O processo de validação pode também ser acelerado através do uso de simulação de

multiníveis. Uma seção do projeto pode ser analisada na forma de portas lógicas, enquanto as

outras partes do projeto estão sendo representadas em níveis mais elevados de abstração. Isso

possibilita que partes do projeto sejam "plugged in" e testadas individualmente. É mais fácil e

mais rápido depurar partes simples individualmente do que todas as portas lógicas ao mesmo

tempo.

Verificação = A implementação combinou com a descrição validada, inclusive as

limitações?

Passa-se então à discussão do que é verificação.

2.3.4 Verificação

A verificação examina dois projetos e determina se eles são ou não idênticos em algum

conjunto específico de propriedades. Muitas vezes deseja-se saber se dois projetos são idênticos

em seu funcionamento no comportamento ciclo-a-ciclo.

No projeto em alto nível a comparação pode ser realizada após o projeto ter sido

sintetizado, ou seja, entre uma descrição HDL e sua implementação na forma de portas lógicas.

Utilizando "netlists" ou gráficos, essas duas descrições podem ser comparadas através da

equivalência funcional, tipicamente através da simulação. A ferramenta automatiza os processos

de comparação. Além disso, as próprias ferramentas de síntese devem possibilitar que se utilize

informação sobre limitações de tempo padrão. Pode-se ter na ferramenta, por exemplo, janelas

para o usuário, para auxiliar a julgamento de erros. Para se conduzir os testes de fabricação seria

possível exportar os vetores resultantes da simulação.

A verificação pós-síntese concentra-se na função, na velocidade e na área. A maior parte do trabalho será realizada nesse estágio, onde será abordada a verificação funcional, porque as

ferramentas de síntese automatizam bastante a análise da velocidade e da área.

22

Page 30: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

Tipicamente, gerar-se-á alternativas até que as metas de área sejam alcançadas, e então se

executa a verificação final, utilizando os procedimentos prescritos pelo fornecedor de ASIC

escolhido. Isso na maioria das vezes envolve a execução de duas a quatro tentativas de

otimização enquanto apenas uma verificação é realizada.

A verificação do desempenho de projetos em alto nível é quase idêntica à verificação de

desempenho do projeto com portas lógicas. Uma exceção para isso é quando a análise estática de

tempo é utilizada para verificar projetos. Com essa abordagem, os objetivos de desempenho

descritos explicitamente, (já utilizados para direcionar a implementação via síntese), podem ser

utilizados como padrão para verificar o projeto final. Esse método simplifica bastante a

verificação devido a maneira pela qual os padrões estabelecidos de descrição funcional em IML

se relacionam com as metas de implementação. Fornecedores de ASIC continuam a exigir uma

simulação de tempo completa com portas lógicas para validar os projetos antes da fabricação.

Na FIGURA 2.6 podemos ver um diagrama descrevendo os principais passos no processo

de simulação.

23

Page 31: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

MetodoloRias Avançadas para Projeto de Hardware

FIGURA 2.6 - OS PONTOS DE EQUILÍBRIO OBTIDOS PELA FERRAMENTA DE SÍNTESE

2.3.4.1 Estratégias para Verificação

No projeto em alto nível, várias estratégias de verificação do sistema são possíveis:

• Segmentos Particionados. Particionar um projeto proporciona uso eficiente dos

recursos computacionais. Entretanto, podem ser perdidas interações críticas de sinal

aonde se segmenta a interface.

• Nível de portas lógicas completo. A vantagem da verificação completa ao nível de

portas lógicas é a precisão, mas ela pode tomar-se extremamente intensa para a CPU.

• Multinível. Nesse método, são feitas múltiplas execuções, com a maioria do sistema representado por modelos abstratos. A vantagem dessa abordagem é de que isso é

muitas vezes o melhor ponto de equilíbrio entre o tempo de execução da simulação e

24

Page 32: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

precisão da simulação. A desvantagem é que isso requer que muitas simulações sejam

executadas. Dispositivos de interface devem ser modelados cuidadosamente.

2.3.4.2 Simulação "Pins-Out"

Projetistas experientes sabem que, enquanto 95 % de todos os ASICs passam por testes

funcionais "stand-alone", apenas cerca de 50 % deles na verdade funcionam quando conectados

em uma placa do sistema. Para evitar essas incompatibilidades, os projetistas verificaram que

simular um projeto no contexto do seu sistema é crucial para o sucesso na primeira vez. Esse

processo é denominado de simulação "pins-out".

Mas a verificação do sistema não é eficaz ao nível de portas lógicas. Os netlists para as

portas lógicas do sistema são muito grandes para os simuladores de software e erros de projeto

são muitas vezes encontrados depois da implementação ser concluída.

Para se fazer uma simulação pins-out eficiente de um ASIC no interior de um ambiente

de sistema de trabalho, faz-se necessário desacoplar a função da implementação para representar

porções do sistema como modelos abstratos. Pode-se encomendar esses modelos de um terceiro

fornecedor, ou escrever os próprios modelos utilizando um HDL. Isso resultará em uma rápida

execução, mas deve-se assegurar que os modelos são precisos o suficiente para serem

significativos.

2.3.4.3 Modelo de Representação

À medida que um modelo é construído, pode-se representar os elementos do projeto de

várias formas.

• Caixa Preta. Considerada uma caixa preta no projeto físico, ou seja, apenas são

levadas em consideração, o tamanho físico a ser ocupado no projeto. Nenhuma

funcionalidade é especificada.

• Duto Funcional. Utilizado para representar um comportamento funcional ou

estatístico (por exemplo, freqüência de overflow da FIFO). Consideração de tempo

25

Page 33: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

pode ser excluída. Detalhes de funções como manipulação de interrupções, por

exemplo, são normalmente excluídos.

• Comportamental/RTL. Esse nível de representação dá uma descrição precisa de

como o módulo funciona, e incorpora informações de ciclos de clock e funcionalidades

especificadas.

• "Netlist" para Portas Lógicas. Esse nível inclui a implementação lógica completa de

um projeto, incluindo todo o tempo.

• Modelador de "Hardware". Embora a precisão do modelo de "hardware" seja tão

boa quanto um modelo de "software" detalhado, o modelo de hardware provavelmente

será executado mais rapidamente Nesse modelador, podemos verificar realmente o

interfaceamento entre o CI (o silício propriamente dito) e as ferramentas de simulação

de software. Quanto mais detalhada a funcionalidade, maior o tempo de verificação.

Este é o ponto de equilíbrio fundamental: precisão do modelo versus tempo de

execução. Uma forma de evitar que se tenha de definir esse ponto de equilíbrio, é

particionar o projeto, quebrando-o em vários grupos distintos e simulando cada grupo

separadamente. A chave para se obter essa divisão de forma eficiente é escolher o

agrupamento em termos do tráfego de sinal, não da implementação. É importante

também levar em conta que modelar o "hardware" tem uma maior produtividade e

exatidão durante os primeiros estágios do desenvolvimento, quando se interage muito

com os detalhes do projeto [NAV87].

• Emulação de "Hardware". Nesse caso, codificar-se-ia.o VHDL para síntese, criando

uma descrição RTL do projeto, e então se passa à descrição do emulador. Ao se fazer

isso, necessita-se endereçar o clock, interfacear protocolos, sincronização, e dataflow

(por onde fluem os dados). A emulação capacita rapidamente a criar um protótipo de

hardware, de forma que se possa verificar a funcionalidade do projeto numa velocidade

próxima da implementação final. O VHDL trata estímulos como outro módulo no

projeto, tornando-o "autodocumentado". Emulação de hardware pode ser melhor

aproveitada quando da validação final de um projeto, pois pode ser necessário um

processo intensivo de simulação.

26

Page 34: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas para Projeto de Hardware

2.3.4.4 Visualizando os Resultados da Verificação

Os resultados da simulação no ambiente de projeto de alto nível podem ser visualizados

em vários formatos.

• Forma de Onda: mostra os resultados graficamente conforme eles são determinados

pelo simulador.

• Listagens Tabulares: boa para visualizar dutos e simulações baseadas em ciclos de

clock. Pode-se customizar o formato das listagens e salvar o arquivo de resultados

para uso posterior.

• Amostras Especializadas: normalmente específicas do projeto. Ao invés de esperar

que a ferramenta contenha esse formato, pode-se criar uma forma específica de

amostra. As ferramentas, portanto devem permitir que se crie uma amostra específica.

Amostras especializadas são muito úteis para analisar comportamento complexo.

• Amostras Interativas. Se a forma de onda está disponível, pode-se retomar no

processo em um esquemático, tomando-o mais fácil de avaliar e depurar. A amostra

esquemática deveria ser ligada ao visualizador de forma de onda, de maneira que os

resultados no esquemático estejam de acordo com o planejado na amostra em forma

de onda.

2.3.5 Teste de Síntese

Ferramentas de teste de síntese automatizam o projeto para teste à medida que o projeto

está sendo criado. O teste de síntese possibilita minimizar o seu custo durante o ciclo de projeto e

evita o alto custo de reprojeto para teste. Além disso, ferramentas de síntese de teste

proporcionam a geração de teste padrão automático para criar padrões com alto grau de

cobertura de falhas.

O teste de síntese inicia-se já nos primeiros momentos do ciclo de projeto modificando

automaticamente os circuitos para testes, conservando os objetivos iniciais de desempenho e de

área. O teste de síntese também faz o seguinte:

• Remove redundâncias lógicas do projeto

• Identifica possíveis lógicas não testáveis

• Dá advertência em concordância com as regras

27

Page 35: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Metodologias Avançadas mira Projeto de Hardware

• Insere estruturas de [estabilidade automaticamente

• Re-otimiza o projeto para área e velocidade

• Gera vetores de teste

Como resultado do teste de síntese, pode-se ter: alta qualidade no projeto e projetos

altamente testáveis.

O teste de síntese é mais eficaz quando usados bloco a bloco no projeto. Uma vez que o

bloco seja sintetizado com ferramentas de projeto em alto nível, ferramentas de teste de síntese

são utilizadas para verificar a conformidade do projeto com regras de varredura e proporcionar

informações de cobertura a falhas. Com o teste de síntese, pode-se avaliar rapidamente o projeto

e sua testabilidade. Assim, cada bloco está preparado e está bem posicionado para uma excelente

cobertura a falhas. Uma vez que o projeto esteja completo, o teste de síntese automaticamente

insere estruturas de teste de varredura, determina a velocidade e a área da varredura do projeto, e

gera o conjunto padrão de teste final.

As três principais fases do teste de síntese são:

• Projeto para Teste. A fase DFT ("Design for Test") inclui verificação das regras para uma varredura em concordância, yeedback" de testabilidade, inserção de varredura de

caminho com restrições, otimização de um projeto com teste e alocação, e produção de

um "netlist" testável, e otimizado. Testabilidade é acrescida a um projeto baseado nos

requisitos de área, desempenho, e cobertura de falhas durante a fase.

• Geração padrão de teste automático. Uma vez que um projeto [estável seja criado

durante a fase DFT, a ATPG (Automatic Test Pattern Generation) seqüencial ou

combinacional fornece os elementos de varredura no projeto para criar padrões de teste

necessários para o alto grau de cobertura de falhas.

• Cobertura a Falha definida. Uma falha é definida como um defeito de fabricação que

fará com que um projeto falhe. O modelo de falha mais comum é o modelo "stuck-at"

no qual cada entrada e saída de uma porta lógica possui uma falha em um nível "stuck-

at-1" ou "stuck-at-O". Se a cobertura a falhas de um conjunto de padrões de teste for

menor do que 100 %, um subconjunto de entradas e saídas poderá possuir um stuck-at-

1 ou stuck-at-O [5IE82].

28

Page 36: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

MetodoloR ias Avançadas para Projeto de Hardware

• Benefícios da Síntese de Teste e da abordagem de varredura. Teste de Síntese

combina síntese, projeto para teste, tempo e análise de área, e tecnologias ATPG com

metodologias de teste de varredura para proporcionar uma solução de teste automática

para projetos em alto nível. Através do uso de projeto automático baseado em

varredura, o teste de síntese proporciona uma metodologia comprovada, previsível para

conseguir alto grau de cobertura a falhas com um mínimo impacto no tempo de

desenvolvimento do projeto, área e desempenho.

São descritas no Capítulo 3 as características e potencialidades dos FPGAs (Field

Progratnmable Gate Array).

29

Page 37: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

FPGAs (Fied Programmable Cate Arravs)

3 FPGAs (Field Programmable Cate Arrays)

Com a introdução dos Field Programmable Gale Array (FPGA — um chip com lógica

configurável) no inicio dos anos 80, ao engenheiro de hardware foi dado o poder de implementar

projetos em silício ao nível de chips sem ter de fabricar um chip. À medida que esses

componentes e suas ferramentas de software amadureceram, o uso de FPGAs expandiu-se desde

o teste e verificação de projetos digitais até a utilização no sistema. Essa visão global descreve os

fundamentos bem como a utilização atual dessa tecnologia. [VCC97].

FPGAs executam a função de um circuito LSI dedicado, como um gate array, e são

programáveis pelo usuário. A vantagem mais significativa da utilização de componentes FPGAs

é a capacidade de produzir o protótipo de um projeto lógico e implementá-lo em silício num

período de horas, enquanto componentes gate arrays convencionais podem levar meses e a um

custo elevado para desenvolver e produzir um silício funcional. Desde a sua introdução, FPGAs

têm aumentado em número de portas utilizáveis, enquanto decrescem em preço. Atualmente, têm

sido utilizados como glue logic, para testes e verificações lógicas em projetos de sistemas para

projetos de sistemas adaptativos e mais recentemente como dispositivos de coprocessamento.

FPGAs são usadas também para emular outras arquiteturas compostas, e são aplicáveis para a

construção rápida de protótipos.

3.1 Visão Geral da FPGA

Existem quatro categorias principais de FPGAs comercialmente disponíveis atualmente:

array simétrico, baseado em linhas, mar de portas lógicas, e PLD hierárquico conforme ilustra a

FIGURA 3.1. Em todas essas FPGAs as interconexões e como elas são programadas variam.

Atualmente há quatro tecnologias em uso. Elas são: "static RAM cells", "antifuse", EPROM

transistores, e EEPROM transistores. Dependendo da aplicação, uma tecnologia de FPGA pode

ter características mais desejáveis para a aplicação em questão [R0S93].

30

Page 38: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Interconexão

Bloco LCioico

Bloco PLD

FPGAs (Fied Programmable Gate Arrays)

Array Simétrico Baseado em Linhas

Bloco LOgICO

Interconexâo

Mar de Portas Lógicas PLC, Hierárquico

MIIMMEME 111111111111MIMMTe= MMIEMEMEI EMIIMMINIERIMM 1111MMEMEM 1.11MMEMEM INIMMENWEIMMI MEMMEML" MEMIIMME MIEMINIMMINE EIMMIIMME EINIMEMEMEM

FIGURA 3.1 - CLASSES DE FPGAs

Tecnologia RAM estática - Nas FPGAs RAM estáticas as conexões programáveis são feitas utilizando-se transistores de passagem, "gates" de transmissão ou multiplexadores que são

controlados pelas células SRAM. A vantagem dessa tecnologia é a de que ela possibilita rapidez

na reconfiguração no circuito. A maior desvantagem é o tamanho do chip necessário para a tecnologia RAM.

Tecnologia AntiFuse - Uma conexão antifuse permanece em um estado de alta

impedância; e pode ser programada por estado de baixa impedância ou estado "fused". A um

custo menor do que o da tecnologia RAM, esse componente é programado uma única vez.

Tecnologia EPROM / EEPROM - Esse método é o mesmo utilizado em memórias

EPROM. Uma vantagem dessa tecnologia é a de que ela pode ser reprogramada sem espaço de armazenamento interno da configuração; no entanto só transistores EPROM não podem ser

31

Page 39: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

FPGAs (Fied Programmable Gate Arravs)

reprogramados no circuito. A tabela I mostra algumas das características das tecnologias de

programação descritas acima.

Características da Tecnologia FPGA

Tecnologia Volatilidade Re

programação

Área de Chip R (ohm) C (ff)

RANI

estática

Sim no circuito grande 1 -2 K 10- 20 ff

PLICE

AntiFuse

Não não antifuse ---

pequena

prog. trans.-

grande

300- 500 3 - 5 ff

ViaLink

AntiFuse

Não não antifuse ---

pequena

prog. trans.-

grande

50- 60 3 - 5 ff

EPROM Não fora do

circuito

pequena 2 - 4 k 10 -20 ff

EEPROM Não fora do

circuito

2x EPROM 2 -4 k 10 -20 ff

TABELA 1 - Características de Programação para Tecnologias FPGA

32

Page 40: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

FPGAs (Fied Programmable Gate Arravs)

A tabela 2 mostra algumas das FPGAs disponíveis comercialmente [ALT96, =95].

FPGAs Comerciais

Fabricante Arquitetura Tipo de Bloco

Lógico

Tecnologia de

Programação

Actel Baseado em linhas Baseada em

Mul tiplex adores

Antifuse

Algotronix (Xilinx) Mar de Portas

Lógicas

Multiplexers & Basic

Gates

RAM estática

Altera PLD Hierárquico Bloco PLD EPROM

QuickLogic Array Simétrico Baseada em

Multiplexadores

Antifuse

Xilinx Array Simétrico Look-up Table RAM estática

Tabela 2 - FPGAs Comercialmente Disponíveis

3.2 A FPGA baseada em SRAM

As FPGAs ("Field Programmable Gafe Arrays") proporcionam os benefícios de um

VLSI CMOS, embora evitando o custo inicial, o atraso de tempo, e risco inerente de uma

máscara gate array convencional. As FPGAs são customizadas pelo carregamento de dados no

interior das células de memória. A FPGA pode tanto ter leitura ativa de seus dados de

configuração externamente de maneira serial ou paralela PROM (modo mestre), ou a

configuração dos dados pode ser escrita no interior da FPGA (escravo e modo periférico). A

FPGA pode ser programada em um número ilimitado de vezes e suporta freqüências de clock

com mais de 50 MHz. Na FIGURA 3.2 está descrita a estrutura básica interna de uma FPGA.

33

Page 41: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Células de 1/0

'92,ttne

Ekri

Recursos de Interconexiio

FPGAs (Fied ProRrammable Gate Arravs)

FtouRA 3.2 - A FPGA

A FPGA tem três elementos configuráveis principais: blocos lógicos configuráveis Configurable Logic Blocks (CLBs), blocos de entrada e saída Input/Output Blocks (I0Bs), e interconexões. Os CLBs proporcionam os elementos funcionais para a construção da lógica do

usuário. Os IOBs proporcionam a interface entre os pinos do encapsulamento e as linhas de

sinais internos. Os recursos de interconexões programáveis proporcionam trilhas de roteamento

para conectar as entradas e saídas dos CLBs e IOBs formando redes apropriadas. A configuração

customizada é estabelecida pela programação das células de memória estáticas internas que

determinam as funções lógicas e as conexões internas implementadas na FPGA [BR092].

34

Page 42: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

FPGAs (Fied Programmable Cate Arravs)

CLB CLB CLB

mi ¡ali MEM MEEI MEEI IM!

CLB

Matriz de

CLB

I I

CLB

III ma IMi MIM IMI MIM IM!

CLB

Roteamento

CLB CLB

FIGURA 3.3 - CLBs E INTERCONEXÕES

A FIGURA 3.3 mostra uma FPGA como um arranjo bidimensional de blocos lógicos que

podem ser interconectados através de trilhas de interconexão. Todas as conexões internas são

compostas de segmentos de metal com pontos de chaveamento programáveis para implementar o

roteamento desejado. Uma abundância de diferentes recursos de roteamento é proporcionada

para conseguir eficiência no roteamento automático. Há quatro principais tipos de interconexão,

três são diferenciados pelo comprimento relativo entre seus segmentos: linhas de comprimento

simples, linhas de comprimento duplo e linhas longas. (NOTA: O número de canais de

roteamento mostrados na FIGURA 3.3 é apenas para propósito de ilustração, na verdade o número

de canais de roteamento varia de acordo com o tamanho do arranjo).

35

Page 43: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

FPGAs (Fied ProRrammable Gate Arravs)

Ligação de Hardware Acrescentada à Próxima Célula

FF

H

G

FF

FIGURA 3.4 - Um EXEMPLO DE BLOCO LÓGICO CONFIGURÁVEL

Os elementos do Bloco Lógico Configurável Ou CLBs (Configurable Logic Block) são

mostrados na FIGURA 3.4. Cada CLB contém um par de flip-flops (1-14) e dois geradores de

função independentes (F e (3) com quatro entradas. Esses geradores d& função têm bastante

flexibilidade, pois a maior parte das funções lógicas combinacionais necessita de menos do que

quatro entradas. Os CLBs implementam a maior parte da lógica em uma FPGA. A flexibilidade e

simetria da arquitetura CLB facilita a alocação e o roteamento de uma dada aplicação [ACT95,

ALT96, XIL97].

36

Page 44: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

FPGAs (Fied Programmable Gate Arrays)

3.3 Programando a FPGA

A seguir segue o fluxo de projeto digital padrão para implementação de Hardware

orientado a objeto [CHA94]. Nas FIGURAS 3.5, 3.6, 3.7 e 3.8 estão descritas a etapa do projeto.

ETAPA 1: Entrada do Projeto

Ferramentas de Entrada

• Viewlogic - ProseriesTM

• Synopsysni

• Exemplar Logic Synthesis

SystemTM

• ALDEC - Active FPGATM

• DATA 1/0 - SynarioTM

Saída -- Traduzida tiara o

formato de Netlist

FIGURA 3.5 - DIAGRAMA DE FLUXO DE

PROJETO — ENTRADA DO PROJETO

No estágio do desenho o projeto digital é

criado com um editor de desenho de

esquemático digital ou uma linguagem de

descrição de Hardware (HDL). A entrada

esquemática do programa utiliza símbolos

gráficos de circuitos, a entrada de programa

HDL utiliza uma linguagem descritiva (ex:

VerilogTm, ABEL Tm ou VHDL). Há uma

ampla variedade de softwares com

programas de entrada. Como a saída desses

programas produzem netlists, deve-se

assegurar que as configurações na biblioteca

para a FPGA alvo estejam disponíveis na

ferramenta que tenha sido selecionada.

37

Page 45: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

FPGAs (Fied Programmable Gare Arravs)

ETAPA 2: Implementação do

Projeto - Mapeamento

Ferramentas de Implementação

• Xilinx - XACTIm

• SynopsysTM

• Exemplar Logic Synthesis

SystemTM

• ALDEC - Active FPGATM

• DATA 110 - SynarioTM

Saída -- 0 projeto roteado &

mapeado gera um arquivo bitstream

de configuração da FPGA

FIGURA 3.6 - DIAGRAMA DE FLUXO DE

PROJETO — IMPLEMENTAÇÃO DO PROJETO

No estágio de implementação do

projeto, o "netlist" produzido pelo programa de

entrada de projeto é convertido na forma de um

arquivo "bitstream" o qual configura a FPGA.

A primeira etapa mapeia o projeto no interior

dos recursos da FPGA; a segunda etapa aloca

ou atribui blocos lógicos criados no processo de

mapeamento em localizações específicas na

FPGA. A terceira etapa executa o roteamento

das trilhas entre os blocos lógicos. A saída é um

arquivo "array" de célula lógica, Logic Cell .

Array File (LCA) para uma FPGA em

particular. Esse arquivo LCA é então

convertido em um arquivo "bitstream" para

configurar a FPGA.

38

Page 46: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

FPGAs (Fied Programmable Gare Arravs)

ETAPA 3: Verificação do Projeto - Simulação Ferramentas de Verificação

• Viewlogic - ProseriesTM

• SynopsysTM

• Cadence VHDL_XLTM Verilog-

XLTm

• ALDEC - Active FPGATM

• DATA 1/0 - SynarioTM

Saída -- Simulação do Projeto

Passou/Falhou Se Falhou >> Retorna a Entrada do Projeto

Se Passou >> Configura a FPGA

FIGURA 3.7 - DIAGRAMA DEFLUXO DE

PROJETO --- VERIFICAÇÃO DO PROJETO

A etapa de verificação do projeto testa a

lógica do projeto e os tempos utilizando

estímulos de entrada. Vários pacotes de

software de CAE proporcionam ferramentas de

verificação e de simulação. Essas ferramentas

são projetadas para executar caracterização

detalhada do projeto, por executar tanto as

simulações funcionais como as de tempo. A

verificação no circuito é outra maneira de testar

o projeto. Testes de verificação no circuito

testam o circuito sob condições de operação

típicas. O computador reconfigurável virtual,

Virtual ComputerTM Reconfigurable Computer

pode ser utilizado como uma verificação do

sistema no circuito.

39

Page 47: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

FPGAs (Fied Programmable Gate Arrays)

ETAPA 4: Configuração da FPGA - Execução

Métodos de Configuração

• Modo Mestre: carrega de uma memória externa (PROM) no modo de dados Serial ou

Paralelo.

• Modo Não Mestre: carrega de outro dispositivo (MPU, FPGA) em um periférico

Síncrono/Assíncrono ou Escravo Serial.

FIGURA 3.8 - DIAGRAMA DE FLUXO DE PROJETO --- CONFIGURAÇÃO DA FPGA

Configuração é um processo no qual o projeto do circuito (arquivo "bitstream") é

carregado no interior de uma FPGA. O método de configurar a FPGA determina o tipo de

arquivo "bitstream". FPGAs podem ser configuradas por uma PROM. A PROM serial é a mais

comum. A FPGA pode ter sua configuração lida de maneira ativa serial externa ou PROM

paralela (modo mestre), ou os dados da configuração podem ser escritos no interior da FPGA

(modos escravo ou periférico). Se a FPGA for usada em uma Plataforma de Computação

Reconfigurável, o arquivo bitstream é convertido para uma função em linguagem de alto nível

(ex: 'C'). Através desse método a FPGA está configurada no interior de um programa de

aplicação [0LD95].

3.4 Computadores Reconfiguráveis

A tecnologia da computação reconfigurável é a capacidade de modificar uma arquitetura

de hardware no sistema computacional em tempo real .

3.4.1 Hardware Fixo

Os computadores atuais são sistemas de hardware fixo baseado em microprocessadores.

O parâmetro de poder computacional de um microprocessador está no número de funções que

este possa manipular ao invés de estar no número de aplicações mais importantes que o mesmo

deixa disponível. A cada nova geração de microprocessadores, o desempenho nas aplicações

aumenta de forma incremental, mas não o suficiente. Em muitos casos a aplicação deve ser

reescrita para conseguir que esse desempenho incremental melhore. Hardwares fixos tradicionais

podem ser classificados em três categorias: Lógicos (Gate Arrays, PALs, etc.), Controle

Embutido (controllers ex. ASICs & Custom VLSI Devices) e Computadores

(Microprocessadores ex. x86, 68000, PowerPC).

40

Page 48: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

FPGAs (Fied Programmable Gaze Arrays)

Sistemas de computação atuais são sistemas de Hardware fixo. As CPUs -Central

Processing Unit- padrão (tais como 486, PowerPCTm, Pentiumn') são processadores de propósito

geral e a multiplicidade de tarefas necessárias pelos vários programas de aplicação é repartida

entre os elementos da CPU. A CPU manipula todas as diferentes instruções pela recombinação

desses elementos internos fixos.

3.4.2 Hardware Reconfigurável

Circuitos digitais podem ser programados e substituídos no interior de um sistema

computacional reconfigurável, quando necessário, por um software de aplicação durante a

execução [VCC97].

Sistemas computacionais reconfiguráveis são aquelas plataformas computacionais cujas

arquiteturas podem ser modificadas pelo software para se adaptarem à aplicação de maneira

instantânea. Para se obter o máximo "throughput", um algoritmo deve ser colocado em hardware

(ex. ASIC, DSP, etc.). Ganhos dramáticos de desempenho são obtidos através da implementação

em hardware de um algoritmo. Em um sistema computacional reconfigurável, a implementação

em hardware adquire o corpo de uma função através de funções básicas à medida em que a

aplicação a executa pON96a].

O Hardware Reconfigurável pode ser classificado em três categorias:

&Lógicos (FPGAs),

b Embutidos no controle (Coprocessadores Reconfiguráveis, FPGAs fortemente

acopladas a sistemas tradicionais),

c.Computadores (plataformas computacionais totalmente reconfiguráveis utilizando

FPGAs, em um sistema projetado para computação de propósito geral).

Os principais motivos para se utilizar essa abordagem são:

41

Page 49: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

FPGAs (Fied Programmable Cate Arravs)

a.Ganhos de Desempenho em alta velocidade: a versão mais rápida de qualquer programa

de cálculo é aquela na qual um "chip" de computador tenha sido projetado apenas para aquele

cálculo especifico em particular,

b.Flexibilidade no Hardware: à medida que as novas formas de resolver os problemas

surgem, a RPU - "Reconfigurable Processor Unit" - otimiza a potência computacional por

implementar os cálculos diretamente em um "chip" de computador customizado.

No próximo item tem-se um sumário abordando o histórico da linguagem VHDL, onde

também será discutida sua aplicabilidade em problemas de projeto de "hardware". Destacam-se

os motivos pelos quais esta linguagem emerge rapidamente como uma das mais importantes

linguagens comerciais para projeto eletrônico.

42

Page 50: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Estudo da Linguagem VHDL

4 Estudo da linguagem VHDL

4.1 Histórico e Características básica do VHDL

VHDL é uma linguagem para descrever sistemas eletrônicos digitais. Ela surgiu em 1980,

com o programa Very High Speed Integrated Circuits (VHSIC) do govemo dos Estados Unidos.

No decorrer desse programa, tomou-se claro que havia uma necessidade de se padronizar uma

linguagem para descrever a estrutura e a função de circuitos integrados (ICs). Daí a linguagem

VHDL (VHSIC Hardware Description Language) Ter sido desenvolvida [C0E95].

Descreve-se a seguir como ela foi em desenvolvida em maior profundidade sob os

cuidados do Institute of Electrical and Electronic Engineers (EEEE) e adotado na forma do

padrão EEEE 1076 Standard VHDL Language Reference Manual em 1987 [ASH96].

Como todos os padrões do EEEE, o padrão VHDL é tema de revisão a cada cinco anos.

Comentários e sugestões dos usuários do padrão de 1987 foram colhidas pelo grupo de trabalho

do EEEE responsável pelo VHDL, e em 1992 uma versão revisada desse padrão foi proposta.

Essa nova versão foi eventualmente adotada em 1993 e denominada VHDL-93 [EEE94]. Esse

trabalho utiliza a versão do VHDL de 1993.

VHDL é projetado para preencher um número de necessidades no projeto digital.

Primeiro, ela possibilita a descrição da estrutura de um sistema, que é, decomposto em

subsistemas e como esses subsistemas estão interconectados. Segundo, ela permite a

especificação da função de um sistema utilizando formas familiares de linguagem de

programação. Terceiro, conforme um resultado, ela permite que o projeto do sistema seja

simulado antes de ser fabricado, de maneira que os projetistas possam rapidamente comparar

alternativas e testá-las para uma correção sem o atraso e o custo de um novo protótipo em

hardware. Quarto, ela permite que a estrutura detalhada de um projeto seja sintetizada a partir de

uma especificação mais abstrata, permitindo aos projetistas concentrarem-se em decisões de

projeto mais estratégicas e reduzir tempo de mercado.

Em 1980, o govemo dos Estados Unidos lançou um esforço agressivo para avançar o

estado-da-arte na tecnologia do silício [LI593]. O objetivo era melhorar de maneira significativa

43

Page 51: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Estudo da Linguagem VHDL

o desempenho operacional e a densidade do circuito para os "chips" de silício VLSI (Very Large

Scale Integration). O governo dos Estados Unidos observou que para as prestadoras de serviço

serem capazes de trabalhar em conjunto para desenvolver os produtos VLSI, para documentar os

projetos resultantes, a fim de poder reutiliza-los em futuros produtos, e para atualizar de forma

eficiente os projetos existentes, elas necessitariam de um meio de comunicação em comum para

os dados de projeto. Era necessário que as descrições do projeto fossem legíveis pelo

computador e executáveis. Elas também reconheceram que com as altas densidades dos chips

VHSIC (Very High Speed Integrated Circuit) exigidos pelo governo e os grandes sistemas

necessários em arranjos futuros, um meio de produzir em série o processo de desenho e gerenciar

os grandes volumes -de dados de projeto era necessário. Assim nasceu o conceito de projeto

padrão de hardware e a linguagem de descrição para resolver todos esses problemas.

Em 1983, o governo dos Estados Unidos divulgou urna requisição de proposta para

'desenvolver a linguagem e para implementar um conjunto de ferramentas para uso com a

linguagem. A vencedora da licitação foi uma equipe composta pela Intermetrics, "International

Business Machines", e pela "Texas Instruments", tendo corno líder da engenharia de

desenvolvimento a 1:13M, e como presidente o "IEEE Computer Society Design Automation

Standards Subcommitee", foram observados os benefícios que surgiriam para a indústria

advindos de uma linguagem padrão de descrição de hardware.

O padrão VHDL é uma linguagem descritiva, uma linguagem que é legível tanto pelo ser

humano quanto pela máquina, dessa forma ela é bem apropriada para preservar especificações de

projeto. VHDL é também uma linguagem de projeto que lida com a fronteira, uma linguagem

que pode ser utilizada com muitos tipos de ferramentas de projeto tais como simuladores,

sintetizadores de projeto, compiladores de silício, ferramentas de alocação e ligação, geradores

de teste, ferramentas de especificação de arquitetura e de análise, analisadores de tempo, e

podem suportar pesquisas em todas essas áreas. No momento, muitas ferramentas assim estão

chegando ao mercado e pesquisas nas universidades nas áreas relacionadas, que haviam sido

abandonadas por anos antes do advento do VHDL, hoje estão sendo encorajadas a usar o VHDL.

Corno mencionado anteriormente, o principal poder da linguagem VHDL é a de que ela é

um padrão. Assim, a indústria pode comunicar desenhos mais facilmente entre participantes em

um processo de projeto. Essa capacidade de comunicar projetos é igualmente importante no

44

Page 52: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Estudo da Linguagem VHDL

campo da pesquisa, uma vez que, com o VHDL, colaborações entre pesquisadores de várias

instituições tomam-se mais fáceis. Mas, a padronização não é suficiente para a grande onda de

interesse na linguagem. VHDL também tem de ser excelente tecnicamente e capaz de permitir

aos projetistas e pesquisadores descrever as concepções que eles estão desenvolvendo e utilizar

as descrições com ferramentas de uma maneira que simplifique o projeto ou o processo de

pesquisa. O VHDL satisfaz esses dois propósitos [BAL95].

O escopo do VHDL cobre desde a descrição da arquitetura até a descrição das portas

lógicas. A linguagem é hierárquica e a simulação em níveis mistos são suportadas. Os conceitos

incorporados no modelo temporal para a linguagem espelham o hardware real -- os modelos

VHDL de projeto comportam-se da mesma maneira como se fosse um hardware real. Muitas

outras excelentes linguagens cobrem subconjuntos das capacidades que existem dentro do

VHDL, mas nenhuma delas é tão compreensível. Elas não cobrem a ampla gama coberta pelo

VHDL com a mesma importância, porque como o VHDL é uma linguagem padronizada pelo

IEEE, esta terá um efeito significativo no suporte de ciclos de vida de produtos descritos em

VHDL. Nos níveis mais elevados de abstração, toma-se um excelente meio de especificação para

futuros projetos a serem criados em novas tecnologias ou com arquiteturas alternativas. Nos

níveis mais baixos de abstração, a linguagem serve bem como uma especificação do que é para

ser fabricado [TUC92a].

Por tudo isso, 'VHDL é uma "linguagem para todas as épocas", uma linguagem que

suporta pesquisas em projetos de automação, projeto e teste e ciclos de vida de produtos.

4.2 O Porquê do VHDL

O padrão VHDL foi desenvolvido para organizar um número de problemas repetitivos no

desenvolvimento, alteração e documentação do hardware digital. Por exemplo, uma remessa

típica de hardware para o govemo incluiria dezenas de milhares de páginas de documentação que

precisariam ser esmiuçadas durante a aprovação, teste e julgamento no decorrer da manutenção

do ciclo de vida do componente. Uma boa linguagem de descrição de hardware resolve esse

problema porque a documentação é executável e todos os elementos estão vinculados a um único

modelo [LEU97].

45

Page 53: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Estudo da Linguagem VHDL

Até o momento, o padrão VHDL tem sido aquele de maior aceitação na indústria devido

as suas. Muitas das linguagens existentes foram desenvolvidas para servirem aos simuladores

que a executam, e são muitas vezes desenvolvimentos proprietários de companhias particulares.

Outras são alvo de tecnologias particulares, ao nível de projeto, ou a metodologia de projeto.

VHDL é uma tecnologia independente, ela não está vinculada a nenhum simulador em particular

ou conjunto de valores, e não impõe uma metodologia de projeto a um projetista. O que ela faz é

proporcionar ao projetista a liberdade para a escolha da tecnologia e das metodologias enquanto

permanecer dentro de uma única linguagem. Ninguém pode prever as mudanças que ocorrerão

na tecnologia de hardware digital no futuro. Portanto, VHDL proporciona capacidades de

abstração que facilitam a inserção de novas tecnologias nos projetos já existentes.

Assim o VHDL oferece um grande número de benefícios sobre outras linguagens de descrição de hardware.

Disponibilidade Pública: VHDL foi desenvolvido de acordo com um contrato e agora é

um padrão do IEEE. O governo tem um forte interesse em manter o VHDL como um padrão

público. As vantagens desse status são aparentes; sem esse, muitos outros benefícios descritos

abaixo não existiriam.

Suporte de Metodologia de Projeto e Suporte de Tecnologia de Projeto: VHDL foi

projetado para suportar muitas metodologias diferentes de projeto (ex., "top-down" versus "library-based") e muitas tecnologias de projeto (ex., síncrona versus assíncrona, PLA versus

"rondam logic"). Dessa forma, a linguagem é utilizada de maneira a proporcionar auxílio em

projetos, em organizações que operam com muitas metodologias de projeto diferentes, e que têm

necessidades de projeto muito diferentes. VHDL também é largamente utilizado pelos

distribuidores de "CAD/CAE house" que vendem ferramentas de projeto "library-based", assim

como para companhias aeroespaciais que desenvolvem um grande volume de projetos ASIC.

Independência da Tecnologia e Independência do Processo: VHDL foi projetado para

ser independente tanto da tecnologia como do processo. Com isso queremos dizer que VHDL

não tem embutido dentro dele uma compreensão de tecnologias e processos particulares.

Embora, tais informações possam ser escritas utilizando VHDL. Assim, uma descrição funcional

de um sistema (ou seja, que possa ser simulada) pode ser desenvolvida em um nível acima do

46

Page 54: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Estudo da Linguagem VHDL

nível de porta lógica, e então decomposta em implementações ao nível de portas lógicas

dependendo da tecnologia de implementação escolhida (ex., CMOS, NMOS, GaAs). As

vantagens dessa capacidade para Segunda fonte são aparentes.

Ampla gama da Capacidade Descritiva: VHDL suporta a descrição comportamental do

"hardware" desde o nível digital (ex., bloco) até o de portas lógicas. Uma das principais

vantagens do VHDL reside na capacidade de capturar a operação de um sistema digital em um

grande número desses níveis descritivos de uma vez só, utilizando uma coerente sintaxe e

semântica através desses níveis, e simular esse sistema utilizando qualquer mistura desses níveis

de descrição. É possível, portanto simular projetos que misturem descrições comportamentais de

alto nível de alguns subsistemas com implementações detalhadas de outros subsistemas no

modelo.

Isso facilita o desenvolvimento de um projeto que reflete corretamente a intenção da

especificação geral do sistema. Durante a manutenção do sistema, reprojetar ou fazer alterações

no mesmo podem ser ocorrer pela substituição do VHDL na descrição e resimulação com o

conjunto de teste.

Muitas linguagens de descrição de hardware existem, as quais operam melhor ao nível

lógico e ao nível de porta lógica; por esse motivo, projetistas de hardware podem estar mais

familiarizados com o uso das linguagens HDL para suportar projetos lógicos de baixo nível.

Enquanto VHDL é perfeitamente apropriado para esse nível de descrição, ele se estende bem

além desse nível [D0N95].

Modificar Projetos: VHDL é um padrão e, como um resultado, está garantido que os

modelos em VHDL executam sua operação em qualquer sistema que se conforma com esse

padrão. Isso significa que os modelos desenvolvidos em um local serão executados em outros

locais (c produzirão os mesmos resultados da simulação) se em ambos os locais usarem ou não

os mesmos conjuntos de ferramentas de VHDL.

Dessa forma os projetistas podem tentar um grande número de componentes diferentes e

escolher aqueles que melhor se adaptam às limitações e requisitos do sistema que está sendo

projetado. Como resultado disso equipes podem trocar descrições de alto nível dos subsistemas

47

Page 55: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Estudo da Linguagem VHDL

de um sistema digital possibilitando que cada subsistema seja desenvolvido independentemente

do progresso de outros subsistemas. Por exemplo, suponha que uma organização esteja

desenvolvendo um sistema digital e queira encomendar um subsistema à outra organização. A

organização contratante poderia desenvolver uma descrição VHDL de alto nível do sistema com

os subsistemas separados em entidades de projeto. A descrição em alto nível seria então dada

para a contratada para desenvolvimento. A organização contratada poderia desenvolver o

subsistema em VHDL enquanto todos os envolvidos teriam uma descrição simulável do resto do

sistema. A organização contratante também seria capaz de desenvolver sua parcela do sistema e

testá-la sem esperar que o subsistema seja desenvolvido. Isso reduz tremendamente o esforço de

integração e reduz o tempo todo do desenvolvimento significativamente.

Projeto de Larga escala e Re-utilização do Projeto: O VHDL foi modelado em uma

filosofia semelhante a daquela de muitas linguagens de programação modernas — que os

auxílios na decomposição do projeto são tão importantes quanto a capacidade de descrição

detalhada quando ela vem a suportar o desenvolvimento de grandes projetos sendo executados

pelas equipes multipessoais. Há vários elementos da linguagem especificamente almejados para

essa meta. Pacotes, declarações de configuração, e o conceito de múltiplos corpos exibindo

diferentes implementações de uma entidade estão presentes também na linguagem para suportar

compartilhamento de projeto, experimentos e gerenciamento de projetos.

Esses elementos da linguagem tendem também a suportar reutilização de projetos, uma

vez que eles promovem o encapsulamento da informação do projeto e a capacidade de ser

flexível em conformidade com outras convenções de projeto quando enquanto utilizarem uma

parte do projeto já pronta.

Apoio Governamental: A repartição pública do programa VHSIC desenvolveu o VHDL

com uma clara visão de como ela própria queria utilizar o VHDL. VHDL pode ser utilizado no

decorrer do ciclo de vida de um sistema digital, e está para se tornar provavelmente o principal

componente do processo de arranjo. O Departamento de Defesa está atualmente requisitando

descrições VHDL de todos os contratados que desenvolvem ASICs. Quanto mais os conjuntos

de ferramentas VHDL tornam-se disponíveis e esses conjuntos de ferramentas amadurecem o

governo pode estar esperando expandir seus domínios a outros tipos de contratos para

48

Page 56: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Estudo da LinguaRem VHDL

desenvolvimento de hardware e aumentar o escopo dos requisitos do VHDL para incluir certas

informações na descrição e proporcionar descrições simuláveis.

A seguir serão apresentados os conceitos envolvidos em arquiteturas sistólicas, bem

como suas características básicas. Destacam-se ainda suas vantagens estruturais no tratamento de

problemas computacionais que utilizem um elevado grau de paralelismo.

49

Page 57: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Arquiteturas Sistálicas

5 Arquiteturas Sistálicas

O conceito de arquitetura sistólica é conhecido e utilizado em várias aplicações e em

sistemas de computação dedicados à solução de problemas específicos, cujas características

básicas são a grande demanda computacional e a necessidade de respostas em tempo real. Essa

classe de arquiteturas paralelas também apresenta características de simplicidade, regularidade e

modularidade que facilitam implementações em hardware.

Sá o conceito de arquitetura de frente de onda, se diferencia da arquitetura sistólica no

aspecto de sincronismo de transferência de dados entre um elemento de processamento e outro.

A arquitetura sistólica, por ser síncrona, tem o seu sincronismo estabelecido por um clock único,

já a arquitetura frente de onda não por ser síncrona, a transferência dos dados segue adiante,

depois de uma verificação e permissão do elemento de processador sucessor. Sendo assim, a

arquitetura de frente de onda é mais tolerante quanto a falhas do que a arquitetura sistólica.

As arquiteturas sistólicas podem ser consideradas como a forma mais natural de se

implementar algoritmos em hardware. Podem ser usadas para resolver muitos problemas

regulares contendo operações repetitivas em grandes quantidades de dados. Suas características

de regularidade e modularidade facilitam o projeto, sendo muito adequadas para a

implementação em hardware. Uma importante área de aplicação dessas arquiteturas é a álgebra

matricial. Muitos algoritmos bem conhecidos para manipulação de matrizes já foram mapeados

em arquiteturas sistólicas [MOR90].

Uma enorme variedade de problemas científicos e de engenharia requer a solução de

sistemas de equações lineares. Quando o número de incógnitas toma-se muito grande a tarefa de

resolver o sistema toma-se computacionalmente intensa e a maioria dos métodos existentes não é

eficaz quando a aplicação necessita de respostas em tempo real. Um método baseado em redes

neurais recorrentes, recentemente desenvolvido por Wang e Li [WAN94], apresenta uma solução

analógica que pode ser mapeada em uma arquitetura sistólica, alcançando um bom desempenho

em função do paralelismo.

50

Page 58: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Memória

_

Arquiteturas Sistólicas

5.1 Histórico e Características Básicas dos Sistemas Arranjos Sistólicos

No início dos anos 80 H. T. Kung da Universidade de Carnegie Mellon propôs

arquiteturas sistólicas para resolver os problemas de sistema de propósito específico que devem

muitas vezes equilibrar computações intensivas com demanda de largura de banda de entradas e

saídas. Arquiteturas Sistólicas (Arranjos Sistólicos) são multiprocessadores trabalhando na forma

de "pipeline" nos quais os dados são pulsados de uma maneira rítmica partindo da memória e

passando através de uma rede de processadores antes de retomar à memória conforme o modelo

da FIGURA S I.

P: Processadores

FIGURA 5.1 - FLUXO SISTÓLICO DE DADOS SAINDO E VOLTANDO DA MEMÓRIA.

Um clock global e atrasos explícitos de tempo sincronizam esse fluxo de dados em

pipeline, que consistem de operandos obtidos da memória e resultados intermediários para serem

utilizados por cada processador. Os processadores modulares unidos por interconexões regulares

e locais proporcionam blocos de construção básicos para uma variedade de sistemas de propósito

geral. Durante cada intervalo de tempo, esses processadores executam uma breve, e invariante

seqüência de instruções.

Arranjos Sistólicos lidam com as necessidades de desempenho de sistemas de propósito

específico por conseguir uma computação paralela e por evitar gargalos de memória e de

entrada/saída. Um alto grau de paralelismo é conseguido na aplicação do pipeline através dos

múltiplos processadores, tipicamente em uma forma bidimensional. Arquiteturas sistólicas

maximizam as computações executadas em um conjunto de dados uma vez que eles foram

obtidos da memória ou de um dispositivo externo. Assim, uma vez que um conjunto de dados

51

Page 59: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Arquiteturas Sistólicas

entra em um arranjo Sistólico, ele é passado para qualquer processador que necessite dele, sem

uma intervenção de armazenamento em memória. Apenas os processadores nas fronteiras do

arranjo fazem entrada e saída da memória [ALM94, BLI94].

Um número crescente de sistemas de propósito especial utiliza organização sistólica para

algoritmos específicos, particularmente para processamento de sinais. Além disso, arquiteturas

sistólicas programáveis (reconfiguráveis) (tais como a Warp da Camegie Mellon e Matrix-1 da

Saxpy) têm sido construídas que não são limitadas pela implementação de um único algoritmo.

Embora conceitos sistólicos fossem originalmente propostos para sistemas baseados em VLSI

sendo implementados em nível de "chips", esse tipo de arranjo tem sido implementado em uma

ampla variedade de níveis físicos.

Em 1978 foram introduzidos o termo e o conceito "Systolic Array" para designar uma

classe especial de arquiteturas de computadores. A partir disso, muita pesquisa tem sido

realizada sobre algoritmos e arquiteturas suportadas por esse conceito. O termo Systolic Array

designa uma classe de arquiteturas paralelas e estabelece uma analogia com o sistema vascular

humano conforme o modelo mostrado na FIGURA 5.2. O coração envia e recebe uma grande

quantidade de sangue como resultado do bombeamento freqüente e ritmado do fluxo sangüíneo

através das artérias e de veias. Analogamente à arquitetura, o coração corresponde à fonte e ao

destino dos dados (por exemplo, uma memória global), a rede de veias e artérias eqüivale à rede

de processadores e "links" que compõem a arquitetura. Outra analogia é que a arquitetura

intercala ciclos de admissão e expulsão de dados, da mesma forma que o coração, quando

bombeia sangue pelas artérias e veias [KUN82, F0R87, ALM94].

O poder por trás dos arranjos sistólicos vem do modo com que os dados fluem entre os

elementos de processamento. Tipicamente um arranjo sistólico é capaz de realizar operações

simples como multiplicação de matrizes ou inversão. Eles são, portanto, máquinas de finalidade

específica, usados principalmente em equipamentos dedicados e não em computadores de

finalidade geral. Atualmente, o conceito de arquitetura sistólica é conhecido e utilizado em várias

aplicações e sistemas de computação dedicados à solução de problemas numéricos particulares

[SED92].

52

Page 60: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Arquiteturas Sistólicas

Artérias Veias

Elfflal Sangue Venoso (Pobre em 02)

Sangue Arterial (Rico em 02)

FIGURA 5.2 - ANALOGIA COM O SISTEMA VASCULAR HUMANO

H. T. Kung [KUN82] definiu arquiteturas sistólicas como uma metodologia de

mapeamento de computação de alto nível em estruturas de hardware. Basicamente, um arranjo

sistólico é um sistema em que os dados fluem pela memória do computador ritmicamente,

passando por vários elementos de processamento antes de retornar novamente para a memória do

sistema. O arranjo sistólico possui um conjunto de células interconectadas, capazes de executar

operações simples. Por possuírem características como simplicidade, comunicação regular e

estruturas de controle, essas células possuem muitas vantagens de implementação sobre outros

tipos de elementos de processamento. Em sistemas sistólicos, essas células são organizadas em

topologias tipo árvore ou "arrays". A comunicação com o mundo exterior é realizada apenas

através das células de fronteira da topologia [FOR87, ALM94].

Pode-se classificar as tarefas computacionais em duas grandes famílias: computação tipo

"compute-bound" e computação tipo "1/0-bound". Se o número de operações realizadas pelo

computador for maior que o número de operações de entrada/saída, a computação é denominada

compute-bound, caso contrário é denominada 1/0-bound. Um exemplo de processamento tipo compute-bound é uma operação de multiplicação de duas matrizes, onde o número de operações

de multiplicação e soma é bem maior que o número de operações de entrada de dados nas

matrizes. Um exemplo de processamento 1/0-bound é a soma de duas matrizes, onde o número

de operações tipo soma é bem menor que o número de operações de carga dos dados das

matrizes.

53

Page 61: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

MEMÓRIA

EP

Arquiteturas Sistólicas

MEMÓRIA 4•1.

EP El' El' EP EP EP

a) 100 ns —5 MOPS b) 100 as —30 MOPS

a) Arquitetura comum b)Principio Básico de Arquiteturas Sistólicas.

FIGURA 5.3 - DIFERENÇA ENTRE ARQUITETURAS COMUNS E SISTOLICAS

As arquiteturas sistólicas visam solucionar problemas computacionais do tipo compute-

bound, visto que os dados são aproveitados ao máximo pelo arranjo sistólico antes de voltar para

a memória principal do sistema. Desse modo, restringe-se os acessos à memória principal

fazendo com que o desempenho do sistema cresça como um todo. O princípio básico de um

sistema sistólico consiste em substituir um elemento de processamento por um arranjo de

elementos de processamento destacando-se na FIGURA 5.3, aumentando significativamente a

capacidade de processamento da arquitetura, sem obrigatoriamente ser necessário aumentar a

memória. A função da memória nesse caso é similar ao de um coração, ou seja, a memória deve

fornecer "pulsos" de dados aos elementos de processamento. O problema dessa arquitetura se

resume em garantir que os dados retirados da memória sejam efetivamente utilizados por cada

célula de processamento e "bombeados" de célula para célula através do arranjo sistólico

[DUN90].

Serão destacadas na FIGURA 5.4 algumas topologias sobre as quais os elementos de

processamento podem ser arranjados.

54

Page 62: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

E- '1 -T- _L. E-

-T-

(1 cada polígono representa um tipo de EP.

-0-111-111-

Arquiteturas Sistólicas

FIGURA 5.4 - TOPOLOGIAS SISTÓLICAS MAIS COMUNS.

A partir das considerações iniciais podemos definir uma arquitetura sistólica como uma

classe de arquiteturas que pOssuem as seguintes características [KUN82, F0R87]:

• Regularidade Espacial e Localidade:

• Regularidade Temporal e Sincronismo:

• Computação Pipeline e Concorrência:

• Entrada e Saída Fechadas:

• Modularidade:

5.2 Aplicações

Uma característica básica da maioria das aplicações que se utilizam de arquiteturas

sistólicas é a grande demanda computacional e a necessidade de respostas em tempo real. São

descritas a seguir as grandes áreas de aplicação das arquiteturas sistólicas e os principais

algoritmos utilizados [KUN82, F0R87].

Processamento de sinais, processamento de imagens e reconhecimento de padrões: filtros

141R (Finite Impulse Response) e DR (Infinita Impulse Response), convolução 1-D, convolução e

correlação 2-D, transformada discreta de Fourier, interpolação, ordenação estatística,

classificação de distância mínima, cálculo de matriz de covariância, classificação de sinais

sísmicos, processamento de sinais de radar, reconhecimento sintático de padrões, detecção de

curvas, reamostragem de imagens e etc.

55

Page 63: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Arquiteturas Sistálicas

Álgebra Matricial: multiplicação de matrizes, triangularização de matrizes, operações

sobre matrizes esparsas, solução de sistemas lineares triangulares e etc.

Aplicações não numéricas: estruturas de dados, ordenação de filas e pilhas, algoritmos de

grafos, reconhecimento de linguagens, programação dinâmica, arranjos aritméticos, operações

sobre base de dados relacionais e etc.

5.2.1 Exemplo de uma Aplicação de Sistemas de Equações Lineares

Sistemas de equações lineares estão associados com muitos problemas em engenharia e

ciência, assim como aplicações de matemática nas ciências sociais e estudos quantitativos de

problemas de economia e finanças. Um sistema linear é descrito da seguinte maneira:

El: ajjxj + a12x2 + ••• + alnxn = bl

E2: anxi + a22x2 + ..• + a2nxn = b2

(5.1)

En: an j x j + an2x2 + + annxn = bn

ou na forma matricial

Ax=b (5.2)

onde A e 9111xn e representa a matriz de coeficientes aji (i, j = 1, 2,..,n) ,x e b 9/11x1 e

representam os vetores das incógnitas xj (i=1,2, ...,n) e dos termos constantes bi (i= 1,2, ...,n),

respectivamente. Resolver o sistema linear significa determinar as incógnitas xj, xn que

satisfazem as equações, dados os elementos au e bi,

56

Page 64: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Arquiteturas Sistólicas

5.2.2 Métodos para Solução de Sistemas Lineares

Os métodos para solução de sistemas de equações lineares são divididos principalmente

em dois grupos [BUR85]:

Métodos Exatos ou Diretos: são aqueles que forneceriam a solução exata, se não fossem

os erros de arredondamento, com um número finito de operações. Como exemplos de métodos

exatos pode-se citar: Decomposição LU, Processo de Cholesky e o Método de Eliminação de

Gauss, dentre outros.

Métodos Iterativos: são aqueles que permitem obter as raízes de um sistema com uma

dada precisão através de um processo infinito convergente. Os métodos iterativos fornecem uma

seqüência de aproximações da solução, através da repetição de tiim processo. O método é dito

estacionário quando cada aproximação é obtida da anterior sempre pelo mesmo processo.

Quando os processos variam de passo para passo, mas se repetem ciclicamente a cada s passos o

método é chamado s-cíclico. Os métodos iterativos mais conhecidos são o método de Jacobi-

Richardson e o método de Gauss-Seidel.

Além desses métodos clássicos, amplamente conhecidos e estudados, novas propostas de

solução freqüentemente são sugeridas pela comunidade acadêmica. Recentemente, Wang e Li

[WAN94] propuseram uma rede neural recorrente (RNN) analógica para a solução desse

problema. A dinâmica da RNN proposta pode ser descrita como:

j.tv'(t) = -AT A v(t) + ATb (5.3)

,inx1 e gtrixl e onde v(t) e e representa um vetor que descreve os estados de cada nó, v'(t)

representa a taxa de variação dos estados no tempo, A e b representam os termos definidos na

equação (5.2) e iu é um parâmetro escalar.

Wang e Li provaram que: a) o sistema em (5.3) é sempre estável, (b) o estado em que o

sistema estabiliza é a solução da equação original (5.2). A taxa de convergência do sistema é

determinada pelo valor de j.t.

57

Page 65: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Arquiteturas Sistólicas

Usando termos mais familiares a teoria de redes neurais recorrentes, pode-se definir o

termo W através da equação (5.4):

w _AT A e gt n xn (5.4)

Na forma da matriz pesos de conexão pode-se definir o termo 0 através da equação (5.5):

= ATbe 9r1 (5.5)

Na forma de um vetor de threshold (bias) da rede neural proposta. Dessa forma, pode-se

reescrever a equação (5.3) na forma da equação (5.6):

1.tv'(t) = -W v(t) + e (5.6)

Uma vez que as redes neurais analógicas desse tipo são na maioria das vezes sistemas

dedicados e requerem massivas interconexões com reconfigurabilidade limitada, os autores

sugerem uma implementação analógica constituída de uma rede linear de neurônios compostos

por um somador, um integrador e um inversor que são vistos em detalhes na FIGURA 5.5 em uma

topologia em anel. Com esse propósito, é desejável encontrar uma versão discretizada dessa rede

neural. Os autores utilizaram o método de Euler, discretizando para isso a equação (5.6) na

forma:

v(k +1) — v(k) — Wv(k)+0 At

(5.7)

Essa discretização fornece uma relação entre os estados dos neurônios (v) nos intervalos

de tempo k e k+I.

Redistribuindo os termos pode-se criar uma expressão iterativa (5.8):

Í \

v(k +1) = I — —At W v(k)+ —At 0 (5.8) A , A

Pode-se reescrever essa expressão com base no método iterativo RF na forma:

v(k +1) =Fv(k)+ g (5.9)

Onde:

F = I - cW

g = c 9

At c =— A

(5.10)

(5.11)

(5.12)

Observando as deduções, nota-se que c, referenciado como um "fator de extrapolação"

[HAG81], é um valor constante a ser escolhido livremente. A escolha adequada desse valor c irá

garantir a convergência do processo. Para esse projeto o valor escolhido foi de 1.

58

Page 66: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

ER, • EP, EP,

BUF BUF BUF

Unidade de Controle

MÁQUINA HOSPEDEIRA

( HOST)

Detalhamento do EP

Figura 5.5 - Arquitetura Sistálica em Anel para Solução de Sistemas Lineares.

5.2.3 Técnicas de Projeto e Mapeamento

tf,(k

Arquiteturas Sistólicas

Variações dessa RNN podem fornecer soluções para outros problemas como inversão de

matrizes, ordenação e programação linear.

Para o projeto de um arranjo sistólico a partir de algoritmos, o projetista deve estar

familiarizado com quatro princípios básicos: computação sistolica, a aplicação, o algoritmo e a

tecnologia. Esforços vêm sendo realizados no sentido de desenvolver algumas técnicas de

desenvolvimento sistemático para automatizar o projeto de arranjos sistólicos. Essas técnicas,

porém, não substituem completamente o projetista. Por outro lado, explorando as características

de arquiteturas sistólicas (modularidade, simplicidade, extensibilidade), essas técnicas vêm

fornecendo com sucesso ferramentas e subsídios para auxiliar o projetista a propor várias

alternativas para um determinado algoritmo. Essas técnicas estão relacionadas à derivação de

uma descrição de alto nível do arranjo sistálico a partir da descrição do algoritmo. Geralmente

essa descrição inclui o tamanho da topologia do arranjo, o processamento a ser realizado por

cada unidade de processamento, a ordem dos dados, as entradas e as saídas do arranjo. Além

59

Page 67: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Arquiteturas Sistólicas

disso, essas técnicas incorporam fatores tecnológicos e a inter-relação do arranjo com e resto do sistema [SED92].

Arranjos sistólicos possuem um custo de implementação menor que outras arquiteturas

devido a possibilidade de replicação de suas células básicas e de seu layout denso e eficiente, facilitando bastante o projeto de circuitos integrados VLSI [FINVA84]. Desse modo, podem ser

criados blocos construtivos que são cuidadosamente projetados e otimizados, sendo que seu

custo de implementação é amortizado com a reprodução em larga escala desses blocos. O projeto

modular de arranjos sistólicos também permite aos projetistas, que desejam uma rápida

prototipação, utilizar dispositivos comerciais em suas implementações como memórias,

microprocessadores de ponto fixo e ponto flutuante e DSPs. Por outro lado esses chips podem

não ser suficientemente adequados ao arranjo em questão [PET95].

Os dispositivos FPGAs parecem ser bem adequados Para a construção de arranjos

sistólicos, em função de sua própria arquitetura [H0A93]. Com essa tecnologia, as vantagens

citadas para VLSI podem ser igualmente aproveitadas e, além disso, é possível projetar

topologias mais flexíveis, explorando sua capacidade de reprograrnação.

60

Page 68: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Projeto da Unidade de Controle

6 Projeto da Unidade de Controle

A unidade de controle, como parte integrante da arquitetura sistólica que está destacada

na FIGURA 6.1, atua como uma extensão da máquina hospedeira e tem a finalidade de gerenciar a

resolução do sistema linear que está sendo executada nos elementos de processamento.

EF EP2 EP,

Át- FIFO * FIFO

Unidade de Controle

I FIFO 2

MÁQUINA HOSPEDEIRA

( HOST)

FIGURA 6.1- DESTAQUE PARA A UNIDADE DE CONTROLE NA ARQUITETURA SISTÓLICA.

Esta unidade, que está com uma estrutura mais detalhada na FIGURA 6.2, é responsável

pelas seguintes tarefas:

1) calcular a matriz F e o vetor g da equação (5.9).

O barramento da máquina hospedeira fornece os elementos das matrizes A, AT, I e do

vetor b na forma de uma operação de escrita nas memórias DualPort de maneira sequencial.

Vale destacar que pode ser realizado apenas um processo de escrita através das mesmas linhas de

baramento para a matriz A e a para a matriz AT, diferindo apenas no endereçamento das duas

memórias. No projeto, a função do barramento da máquina hospedeira foi realizada pelo

simulador da ferramenta de software que forneceu os endereços e os dados para as memórias no

processo de escrita e leitura. O processo empregado para o cálculo está descrito em detalhes nos

tópicos 6.1 e 6.2.

61

Page 69: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Projeto da Unidade de Controle

FIGURA 6.2 - DETALHANIENTO DA UNIDADE DE CONTROLE.

62

Page 70: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Projeto da Unidade de Controle

2) posicionar os elementos da matriz F e do vetor g para carregar os dados

apropriadamente no arranjo sistólico.

Para que os elementos de processamento do arranjo sistólico resolvam o sistema linear é

necessário que a matriz F e o vetor g sigam uma sequência de escrita nas memórias dos mesmos,

determinada no trabalho de [1111,97]. Neste trabalho, essa sequência é ilustrada pela FIGURA 6.3.

ir RI v k

I

PE 2 PE yR(k1

v (k) 1+

I I •--10

I I I ACC ACC ACC

MEM MEM MEM 83 f3,3 f3.? f3.2

SI ft. I f1.,f21

g.

fia fli

P E 3 RI

00

Global Controller and Clock

HOST MACHINE

FIGURA 6.3 - SEQUÊNCIA DE ESCRITA DA MATRIZ F E O VETOR g NAS PIPOS DOS EPS.

3) determinar parâmetros para a condição de parada.

A máquina hospedeira fornece para um contador, presente na unidade de controle, o

número de iterações que serão realizadas. O contador é responsável por interromper o ciclo de

cálculo quando sua contagem atingir o valor desejado. Este valor é uma estimativa da

convergência. Utilizando essa condição de parada corre-se o risco de realizar um número de

iterações superior ao necessário, comprometendo o tempo de processamento.

63

Page 71: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Projeto da Unidade de Controle Uma melhor maneira de interromper o ciclo de cálculo seria inserir no elemento de

processamento um módulo registrador para armazenar o valor da precisão desejada, um módulo

subtrator para calcular o erro cometido em cada iteração, e um módulo comparador para gerar

um sinal de interrupção do processo no caso de precisão atingida. Entretanto, esta solução tem

uma implementação complexa.

4) coletar os resultados calculados pelo arranjo sistólico.

Tendo sido atingida a condição de parada, resta obter a solução do sistema de equações

lineares presentes nos elementos de processamento. Para isto é necessário a execução de mais um

ciclo de cálculo de forma que os resultados sejam enviados a máquina hospedeira.

Uma vez que foi observado através de simulação em Software por [ARA97] que os

valores da matriz de F e do vetor g, para o método de [WAN93], estão na faixa de -1 a 1 adotou-

se a utilização de números inteiros de 17 bits com sinal como forma de representação dos dados.

Com o propósito de representar os valores reais na forma de números inteiros, tanto os

valores da mariz F, como os valores do vetor g foram multiplicados por uma constante m para

que a parte decimal seja desprezada. Reescrevendo-se a equação (5.9) para acomodar tal

transformação tem-se:

m[mv(k +D]= [mF][mv(k)]+ m[mg] (6.1)

OU,

i',(k +1) = É"\V (k)+ mg (6.2)

onde,

mv(k) (6.3)

=mF (6.4)

g = mg (6.5)

64

Page 72: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Projeto da Unidade de Controle

Nesta implementação manteve-se a escolha do valor de m em 32768 (215) como no

trabalho de [ARA97], implicando na utilização de 17 bits para a representação dos dados na

forma de inteiros com sinal.

Tanto o cálculo da matriz t' como o cálculo do vetor g foram implementados numa

arquitetura do tipo Pipeline.

O Pipeline é uma técnica bem conhecida para acelerar a execução de sucessivas

operações idênticas. Ao invés de projetar um único circuito capaz de executar uma operação

única sobre um conjunto de operandos de cada vez, projeta-se um circuito que será particionado

em vários subcircuitos. Estes subcircuitos podem operar de forma independente sobre

consecutivos conjuntos de operandos. Dessa forma as execuções de sucessivas operações se

sobrepõem, e a velocidade na qual os resultados são produzidos aumenta consideravelmente,

mesmo considerando-se o tempo de latência do pipeline.

Para que a aplicação da técnica seja possível, o algoritmo é dividido em várias etapas, e

um circuito apropriado é projetado para cada uma dessas. Os circuitos separados, que são

chamados de estágios do Pipeline, devem possuir independência para operar sobre os diferentes

conjuntos de operandos. Para atingir esse objetivo devem ser acrescentados elementos de

armazenamento (latches) entre os estágios adjacentes, de maneira que enquanto um estágio opera

sobre um conjunto de operandos, o estágio anterior já pode operar sobre o próximo conjunto de

operandos [KOR93].

A FIGURA 6.4 ilustra uma organização geral da técnica de Pipeline, destacando-se a

alternância entre os elementos de memória e os blocos combinacionais. Os elementos de

memória são os responsáveis por reter os dados entre os estágios, de acordo com os ciclos de

clock. Os elementos de lógica combinacional são os responsáveis pelo processamento das

informações contidas nos dados.

65

Page 73: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Reg 2 —1111" e' " 4101Reg n -1-11110' CC n 1 ENTRA.1

Reg 1

00.CLOCX

CC 1 Reg n

Projeto da Unidade de Controle Estágio 1 Estágio n

Reg :Registrador CC : Circuito Cornbinaclonai

FIGURA 6.4 - ORGANIZAÇÃO GERAL PIPELINE.

6.1 Cálculo da Matriz f'

O cálculo da Matriz 1'1 (supondo F. onde n=4) foi implementado seguindo a seqüência

de operações ilustrada na FIGURA 6.5 e realizando operações do tipo:

• multiplicação de matrizes

• soma de matrizes

• multiplicação de matriz por escalar

A FIGURA 6.5 descreve a seqüência de estágios percorrida pelos elementos da matriz A,

desde sua entrada na interface até a sua saída na forma de Ê para os elementos de

processamento; todo o desenvolvimento das equações está descrito no capítulo 5.

No primeiro estágio, ocorre a multiplicação dos valores da matriz A pela sua transposta

AT, resultando dessa multiplicação a matriz W descrita na equação (5.4). No segundo estágio, os

valores dos elementos da matriz W são multiplicados pela constante c resultando dessa

multiplicação a matriz c.W presente na equação (5.10). No terceiro estágio, os elementos da

matriz c.W são somados aos elementos da matriz identidade I., resultando dessa soma a

matriz F descrita na equação (5.10). No quarto estágio, os elementos da matriz F são

multiplicados pelo valor constante m, resultando na matriz denominada de 1'1 descrita pela

equação (6.4) que tem seus valores truncados em 17 bits. Essa operação é realizada pelo

elemento multiplexador, o qual também é responsável por encaminhar os elementos para as

F1FOS dos elementos de processamento da arquitetura sistólica.

66

Page 74: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

W (Reg 2)

c.W (Reg 4)

F (Reg 5)

F (Reg 7)

FIFO dos EPs

Projeto da Unidade de Controle

Caminho da Matriz A

AT (RAMDP1) A (RAMDP2)

W (Reg 2) Nffin (Reg 3)

(1)* c Me

E (RAMDP3) c.W (Reg 4) Me

nele eelee EERE EM EnIE leffin

F (Reg 5) (Reg 6)

MIN A F (Reg 7) ME

EM

FIGURA 6.5 - SEQÜÊNCIA DE OPERAÇÕES DA MATRIZ A.

onde: AT: matriz transposta

1: matriz Identidade

c (equação 5.12) : fator de extrapolação (determina a convergência do método).

m : variável que permite a representação de números reais entre -1 e +1 em números inteiros.

W: matriz pesos de conexão da rede neural proposta.

A FIGURA 6.6 descreve a implementação do sistema de pipeline na forma de diagrama de

blocos com a finalidade de realizar a seqüência de operações ilustrada pela FIGURA 6.5.

67

Page 75: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Matriz AT endereços—

at, RAMO F.

en ere

j-11

RMADP2

Matriz_A Ri6.1063

Matriz_l FIGURA 6.6 - DIAGRAMA DE BLOCOS DA IMPLEMENTAÇÃO DA MATRIZ F.

ffl endereço

Reg 6 o e IIII CIRIA

EPs MEM

dos FIFO

ffl DUALPORT O leei(

Reg 3 C oloc2

Rig 4

olook

endereços

Reg

cl ok

Reg 2

dook

Projeto da Unidade de Controle

Na FIGURA 6.6 faz-se uso de três tipos de blocos combinacionais e três tipos de elementos

de memória que serão descritos em maiores detalhes no capítulo 7. Destaca-se os elementos do

tipo RAM Dual-Port, responsáveis por armazenar os valores dos componentes da matriz A, da

matriz transposta de AT, da matriz identidade I e ao final do processamento os elementos da

matriz F.

6.2 Cálculo do vetor g

O cálculo do vetor g (supondo g „„i onde n=4) foi implementado seguindo a seqüência

de operações ilustrada na FIGURA 6.7 e realizando operações do tipo:

• multiplicação matriz por vetor

• multiplicação de vetor por escalar

A FIGURA 6.7 descreve a seqüência de estágios percorrida pelos elementos do vetor b,

desde sua entrada na interface até a sua saída na forma de vetor g para os elementos de

processamento.

68

Page 76: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Projeto da Unidade de Controle

Caminho do Vetor b

AT (RAMDP1)

b (RAMDP4)

Teta (Reg 9) (Reg 3)

c

g (Reg 10)

Teta (Reg 9)

g (Reg 10)

A g (Reg 11)

(Reg 6)

g (Reg 11)

FIFO dos EPs

FIGURA 6.7 - SEQUÊNCIA DE OPERAÇÕES DO VEIOR B.

onde: AT: matriz transposta

I : matriz Identidade

c (equação 5.12) : fator de extrapolação (determina a convergência do método).

: variável que permite a representação de números reais entre -1 e +1 em números inteiros

= vetor de threshold (bias) da rede neural proposta.

No primeiro estágio, ocorre a multiplicação do vetor b pela matriz transposta AT, resultando dessa multiplicação o vetor Teta, descrito na equação (5.5). No segundo estágio, os

69

Page 77: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

atid RAMDP1

RANDP4

C —e• Reg 3

doce

10 FIFO dos EPs

MEMÓRIA DUAL-PORT doce

doei(

ÇJJ

o

c

Reg 8 Reo 9

cl

Reg 11

Reg 6

Projeto da Unidade de Controle

valores dos elementos do vetor Teta são multiplicados pelo valor c, resultando dessa

multiplicação o vetor g, descrito na equação (5.11). No terceiro estágio, os elementos do vetor g

são multiplicados pela constante M, resultando no vetor denominado de g, descrito na equação

(6.5), que tem seus valores truncados em 17 bits. Essa operação é realizada pelo elemento

multiplexador, o qual também é responsável por encaminhar os elementos para as PIPOS dos

elementos de processamento da arquitetura sistólica.

Matriz_AT endereços

Vetor _b

FIGURA 6.8 - DIAGRAMA DE BLOCOS DA IMPLEMENTAÇÃO DO VETOR g .

A FIGURA 6.8 descreve a implementação do sistema de pipeline na forma de diagrama de

blocos com a finalidade de realizar a seqüência de operações ilustrada pela FIGURA 6.7.

Na FIGURA 6.8 faz-se uso de três tipos de blocos combinacionais e três tipos de elementos

de memória que serão descritos em maiores detalhes no capítulo 7. Destaca-se os elementos do

tipo RAM Dual-Port, responsáveis por armazenar os valores dos componentes do vetor b, da

matriz transposta AT, da matriz identidade I e ao final do processamento os elementos do vetor

tg •

70

Page 78: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Detalhes de Implementação da Unidade de Controle

7 Detalhes de Implementação da Unidade de Controle

Neste tópico são descritos os estágios que foram utilizados na implementação da unidade

de controle, bem como a ilustração da seqüência em que estes são dispostos para a solução do

problema. Os códigos dos programas em VHDL empregados encontram-se no apêndice A.

7.1 Blocos Combinacionais

Os blocos combinacionais são responsáveis pelo processamento dos dados na arquitetura

do pipeline. Este projeto em particular é composto de 3 estágios:

• Estágio Multiplicador

• Estágio Somador/Subtrator

• Estágio Acumulador

7.1.1 Estágio Multiplicador

O primeiro estágio a ser verificado é o multiplicador, mostrado na FIGURA 23. O corpo da

arquitetura comportamental contém um processo que é sensível as duas entradas, a e b. Cada vez

que uma dessas entradas mudar, o processo calcula o produto das mesmas usando para isso um

longo algoritmo de multiplicação baseado no método comum "papel e lápis" usado para a

aritmética decimal [ASH96].

O módulo multiplicador pode ser entendido através das equações booleanas:

Carry = (Result(index+count) and opl(index) or (Carry_in and (Result(index+count) xor

opl(index)))

(7.1)

Result(index+count) = Result(index+count) xor opl(index) xor Carry_In (7.2)

Onde:

R: bit Resultante da multiplicação.

C : bit de transbordo Carry_Out.

CI : bit de transbordo anterior Carry In.

A FIGURA 7.1 mostra um circuito multiplicador construído a partir de blocos construtivos

de estruturas onde foram implementadas as equações booleanas (7.1) e (7.2).

71

Page 79: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Detalhes de Implementação da Unidade de Controle

MSB ESB

OP1_n 0P2_n OPl_n- 1 0P2_n- 1 OP1_1 0P2_1

OP1_0 OP2_0

Rn R n • 1 Ri RO

FIGURA 7.1 - DIAGRAMA DE BLOCOS DE UM MULTIPLICADOR DE N BITS.

O algoritmo utilizado na FIGURA 7.2 ilustra o funcionamento do estágio:

Primeiro: faz-se uma operação lógica do tipo ou-exclusivo com os dígitos mais

significativos dos operandos para determinar a configuração da variável negative_result para seu

uso posterior no ajuste de sinal do resultado. Se uma das entradas for negativa e a outra positiva,

o resultado será negativo. Se ambas as entradas forem negativas ou ambas forem positivas, o

resultado será positivo.

Segundo: Se quaisquer dos operandos for negativo, (indicado pelo bit de sinal sendo 1'),

o mesmo sofrerá uma operação lógica de negação e de complemento de 1 em todos os seus

dígitos.

Terceiro: todos os dígitos dos operandos serão submetidos aos módulos do tipo

multiplicador. Desta maneira, a multiplicação dos valores é realizada. O resultado é inicializado

em zero. Para cada bit no multiplicador (op2), se o bit for '1', o multiplicando é acrescido ao

resultado. A adição é realizada com uma parte do resultado, e um offset que depende da posição

do bit multiplicador. Finalmente, o resultado será negado se necessário através de

complementação e acréscimo de um e é encaminhado para a saída (R) .

72

Page 80: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Sim

Não

rCARRY -e— CARRY IN and Result Result ...— Result xor CARRY_IN

AJUSTE NO SINAL DO

RESULTADO Não

Detalhes de Implementação da Unidade de Controle

SELEÇÃO PARA

AJUSTE DE SINAL DO

RESULTADO

VERIFICAÇÃO DO SINAL

DOS OPERANDOS

( OP1 OP2

V

negative_resutt OP1 XOR 0122

0P2 4- 0P2+ I

OH 4-• OPI +1

Sim

REALIZAÇÃO DA

OPERAÇÃO

Carry V- Resuft and OP1 or (Cl and Regule xor OPI Result Result xor OP1 xor Cl

FIGURA 7.2 - ALGORITMO DA OPERAÇÃO DE MULTIPLICAÇÃO.

7.1.2 Estágio Somador/Subtrator

O próximo estágio é aquele que soma e subtrai os produtos parciais em pipeline. Pode-se

implementar tanto o somador como o subtrator através de um único módulo que pode ser

73

Page 81: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Detalhes de Implementação da Unidade de Controle

configurado para executar ambas as operações, uma vez que as duas são intimamente

relacionadas.

O módulo somador/subtrador pode ser entendido através das equações booleanas de uma

estrutura do tipo somador completo:

S = OP I xor 0P2 xor Cl

CO = (OP I and 0P2) or (Cl and (OP I xor 0P2))

Onde:

S : bit resultante da Soma.

OP I : bit do primeiro Operando.

0P2 : bit do segundo Operando.

CO : bit de transbordo Carry_Out.

CI : bit de transbordo anterior Carry_ln.

A FIGURA 7.3 mostra um circuito somador/subtrator construído a partir de blocos

construtivos de estruturas somador completo.

MSB LSB

OP1_n OP2_n OP1_n - 1 0P2_n - 1

OP1 _1 0P2_1

OP1_0 0P2_0

Sn S n - 1

S1 so

FIGURA 7.3 - DIAGRAMA DE BLOCOS DE UM SOMADOR/SUBTRATOR DE N BITS.

74

Page 82: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Detalhes de Implementação da Unidade de Controle

O algoritmo utilizado na FIGURA 7.4 ilustra o funcionamento do estágio:

Primeiro: faz-se uma operação lógica do tipo ou-exclusivo com os dígitos mais significativos dos operandos para determinar se possuem o mesmo sinal ou não.

Se os sinais dos operandos forem iguais, será realizada uma operação de adição. Caso contrário será realizada uma operação de subtração. O sinal de carry_out será incumbido nesse primeiro momento de manter essa informação.

Segundo: verifica-se o sinal dos operandos separadamente para determinar se são

números inteiros positivos ou negativos. Se quaisquer dos operandos for negativo o mesmo sofrerá uma operação lógica de

complemento de 1 em todos os seus dígitos. Terceiro: todos os dígitos dos operandos serão submetidos aos módulos do tipo somador

completo, destacando que a entrada de carry-in do bit menos significativo será sensibilizada pela

informação contida no caroi-out no item segundo.

75

Page 83: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

SOMA 4— 01'1 xor 0P2 xor Carryjn Carry_Out (0P1 and OP2) or (Cl and (0P1 xor 0P2))

Detalhes de Implementação da Unidade de Controle

INÚCIO

SELEÇÃO DA OPERAÇÃO PARA SOMA

OU SUBTRAÇÃO

VERIFICAÇÃO DO SINAL

DOS OPERANDOS

OP1,0P2

OPER 4-0P1 XOR 0P2

REALIZAÇÃO DA

OPERAÇÃO

FIGURA 7.4 - ALGORITMO DA OPERAÇÃO DE SOMA/SUBTRAÇÃO.

76

Page 84: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Detalhes de Implementação da Unidade de Controle

7.1.3 Estágio Acumulador

Os produtos parciais formados pelo pipeline são acrescidos a uma soma previamente

acumulada através de uma estrutura denominada acumulador. Essa estrutura mista é composta

tanto de bloco combinacional quanto de elementos de memória. Na FIGURA 7.5 está descrita a

arquitetura interna: um módulo somador/subtrator e dois módulos do tipo registrador

intermediário (ver tópico 7.2.2).

IN REG OUT SAiDA 4- s ENTRADA --e. A

/I ENA

IN REG otir CLR /"\, • iÀ

CLEAR

CLOCK

ENABLE

FIGURA 7.5 - DIAGRAMA DE BLOCOS DO MÓDULO ACUMULADOR.

Os resultados fornecidos pela entrada atravessam o módulo somador/subtrator (+) da

estrutura, e então os resultados produzidos pela saída do módulo somador/subtrator são

armazenados no módulo registrador 1. Esse módulo é similar aos registradores do tópico (7.2.2)

e tem uma entrada adicional usada de clr (Clear) para limpar o registrador para zero. Se a

entrada clr for '1' sobre uma subida do clk, o registrador é zerado. Se clr for 'O' na subida do

clock, novos dados são armazenados. No registrador 2, onde os resultados parciais são

armazenados novamente, vale destacar a ligação em disposta na forma de realimentação ao

módulo somador/subtrador Esse módulo apresenta uma entrada adicional de ena (Enable) para

inibir a emissão dos valores dos resultados para a saída. Se a entrada ena for '1' sobre uma subida

do clk, o registrador está em estado de inibição. Se clr for 'O' na subida do clock, novos dados

são emitidos para a saída.

7.2 Elementos de Memória

Os elementos de memória são responsáveis por armazenar os dados entre os estágios da

arquitetura. Este projeto em particular é composto de 3 tipos de elementos:

• Memória Ram do tipo Dual-Port

• Registrador intermediário com clock, clear e enable

77

Page 85: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Detalhes de Implementação da Unidade de Controle

• Registrador de valores constantes e de valores escalares

7.2.1 Memória RAM do tipo Dual-Port

Durante a implementação do projeto foi necessário acessar a memória RAM

simultaneamente para dois propósitos distintos. O primeiro propósito foi um acesso para a

operação de escrita com a finalidade de carregar os dados provenientes do barramento do

processador da máquina hospedeira. e o segundo propósito foi um acesso para a operação d

leitura dos dados já gravados na memória para a entrada na arquitetura pipeline. Essa opc

possibilitou o uso de memórias de menor tamanho uma vez que os dados podiam ser

sobrepostos.

A RAM do tipo Dual-Port (RAMDP) foi implementada como mostra a FIGURA 7.6.

N• A[3:01 SPO[18:01

DI[18:01

DPRA[3:01 DP0[18:01

WR_EN WR_CLK

FIGURA 7.6 - MEMÓRIA RAM DUAL-PORT.

A RAMDP inclui dois pares de barramento de endereço independentes, bem como dois

pares de barramento de saída também independentes. Essa característica permite o acesso a

mesma região de memória, permitindo acessos simultâneos para operações de leitura e de escrita.

Os pinos de entrada da RAMDP são definidos da seguinte maneira:

• DI (Data Input) — determina quais conteúdos serão armazenados na memória RAM, bem

como os dados que aparecerão na porta de saída SPO quando o sinal WR_EN estiver em

nível lógico alto Caso o sinal WR_EN esteja em nível lógico baixo nenhuma operação de

escrita na RAM será permitida.

• WR_EN (Write Enable)— necessário para memórias do tipo assíncronas. Quando esse pino

estiver em nível lógico alto, os dados presentes na porta DI serão escritos no endereço de

78

Page 86: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Detalhes de Implementação da Unidade de Controle

memória selecionado. Quando esse pino estiver em nível lógico baixo, nenhuma operação de

escrita será permitida.

• WR_CLK (Write Enable Clock) — quando esse pino estiver em nível lógico alto, os dados

na porta de entrada DI são armazenados na posição endereçada e imediatamente surgem na

porta de saída DO.

• A (Address) — esse barramento de entrada endereça uma posição na RAMDP. Esse

barramento possui duas funções: I) selecionar a posição de memória cujo conteúdo aparecerá

na porta DO, ou 2) selecionar a posição onde novos dados serão escritos em dois casos 2a)

quando a porta WR_EN estiver em nível lógico alto, ou 2b) quando ocorrer uma transição

para nível lógico alto da porta WR_CLK enquanto a porta WR_EN estiver em nível lógico

alto.

• DPRA (Dual Port Read Address)— esse barramento é usado como uma segunda linha de

endereços. Os dados contidos no endereço especificado por DPRA aparecem na porta de

saída DPO.

Os pinos de saída da RAMDP são definidos da seguinte maneira:

• SPO (Single Port Output) — esse barramento é usado como saída para os dados que

ocorrem no barramento DL

• DPO (Dual Port Output) — esse barramento é usado como saída de dados que residem no

endereço especificado pelo barramento DPRA. O valor de DPO pode mudar

independentemente da transição de sinal WR_CLK.

A existência desses dois barramentos permite a esse tipa de memória que enquanto um

segundo barramento possa extrair um valor enquanto o primeiro barramento está executando

uma operação independente de leitura ou escrita.

7.2.2 Registrador intermediário com clock, olear e enable

Os modelos de registradores intermediários são sintetizados como arranjos de flip-flops

tipo D. Esses registradores são utilizados no projeto com o propósito de estabelecer um

sincronismo entre os vários estágios do pipeline descritos na forma de sistema no capitulo 6 e de

maneira modular no item 7.1. A implementação foi realizada como ilustrado na FIGURA 7.7.

79

Page 87: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Detalhes de hnolementação da Unidade de Controle

N,D IN Q OUT V

CLEAR

CLR

010.ENABLE

CLOCK /\

FIGURA 7.7 - REGISTRADOR INTERMEDIÁRIO COM CLOCK, CLEAR E ENABLE.

Como pode ser visto no apêndice A. as portas de entrada e saída do 1hp-flop foram

implementadas em linguagem VHDL como sendo do tipo array unconstrained

std_ulogic_vector. Essa característica permite usar o mesmo módulo para registradores de

diferentes tamanhos. O tamanho real de cada registrador é determinado pelo tamanho dos sinais

de entrada e saída realmente conectados ao registrador. O corpo da arquitetura comportamental

para o módulo registrador contém um único processo que é sensível as mudanças na porta clock.

O processo utiliza a operação rising_edge fornecida pelo pacote MEE standard-logic para testar

se a mudança é de um estado 'O' para um estado '1'. Caso afirmativo, o processo atualiza sua saída

usando os dados de entrada.

7.2.3 Registrador de valores constantes e de valores escalares

O modelo do registrador de constantes e de valores escalares foi implementado da mesma

maneira que o modelo registrador intermediário. Ambos possuem as mesmas características

construtivas, porém diferem na função que desempenham na arquitetura do sistema.

Enquanto o registrador intermediário tem a função de armazenar os valores parciais

durante o processamento e de estabelecer o sincronismo entre os estágios da arquitetura, o

registrador de valores constantes e de valores escalares tem a função de armazenar os dados de

entrada que farão parte integrante do processamento. No caso do sistema em questão, este será

responsável por armazenar a constante c, presente na equação (6.12) cuja função no

desenvolvimento das equações foi apresentada no caliítulo 6.

80

Page 88: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Análise e Discussão dos Resultados

8 Análise e Discussão dos Resultados

Neste tópico é descrito o procedimento de simulação, são mostrados os valores que foram

usados, bem como os resultados obtidos através da mesma.

8.1 Procedimento Utilizado

A implementação do projeto seguiu uma metodologia avançada para projeto de hardware

que foi o assunto do capitulo 2 visando a implementação em dispositivos FPGAs que foram

descritos no capítulo 3.

A ferramenta de software utilizada foi o Foundation M1 versão 1.5i da Xilinx Inc. Essa

ferramenta permitiu a descrição de entrada do projeto em forma de módulos descritos no capítulo

7 através do uso da linguagem de descrição de hardware VHDL que foi o assunto abordado na

capítulo 4.

8.2 Valores iniciais das Matrizes e dos Vetores

Os cálculos foram realizados a título de ilustração com uma representação de valores

seguindo os esquemas propostos no capítulo 6 através das FIGURAS 6.5 e 6.7. Foi assumido que a

matriz A tem um tamanho de 4x4 e o vetor b 4x1. Os valores adotados estão mostrados na

FIGURA 8.1 e foram escolhidos com base na simulação em software presente no trabalho de

[ARA97]:

A=

2 5 3 8 1 9 3 5 8 3 5 0 5 3 9 6_

b =

5 2

AT =

2 1 8 5 5 9 3 3 3• 3 5 9 8 5 0 6

1=

1 0 0 0 0 1 0 0 0 0 1 0 0001

FIGURA 8.1 - VALORES INICIAIS DAS MATRIZES E DOS VETORES

81

Page 89: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Análise e Discussão dos Resultados

8.3 Valores das Constantes

Os valores adotados para as constantes também foram escolhidos a partir do trabalho de

[ARA97] e estão mostrados na FIGURA 8.2. Os motivos dessa escolha são referenciados nos

capítulos 5 e 6. Há apenas uma observação, uma vez que no processo de escolha de um valor

para a constante c o valor recomendado era de 10-3, mas pelo fato da arquitetura operar com

números inteiros essa constante foi configurada para assumir o valor 1. A opção de alterar esse

parâmetro não implica em perda de generalidade do método e possibilita que a mesma

arquitetura seja utilizada em uma implementação futura utilizando dados em forma de números

com ponto flutuante.

m=32768 (2'5) c =1

FIGURA 8.2 - VALORES ADOTADOS PARA AS CONSTANTES.

8.4 Resultados Obtidos Os resultados em forma de diagrama de tempo do sistema foram obtidos através da

ferramenta de simulação e mostrados a seguir.

A legenda que determina a função de cada sinal no controlador segue abaixo:

ENDERECOS : Endereços de escrita das memórias RAM dual-port.

ENDERECOD : Endereços de leitura da RAMDP3 contendo os elementos da matriz I.

ENDERECOR_AT : Endereços de leitura da RAMDP1 contendo os elementos da matriz AT.

ENDERECOR_B : Endereços de leitura da RAMDP2 contendo os elementos do vetor b.

ENDERECOL A : Endereços de leitura da RAMDP3 contendo os elementos da matriz A.

MATRTZ_AT : Elementos da matriz AT.

MATRTZ_A : Elementos da matriz A.

VETOR_B : Elementos do vetor b.

MATRIZ_I : Elementos da matriz I.

F_CHAPEU : Elementos da matriz É. .

g_CHAPEU : Elementos da matriz g.

REG_ESCALAR : Valor da constante c.

REG_MULT : Valor da constante m.

CLK : Clock

82

Page 90: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Análise e Discussão dos Resultados

WRITE_ENABLE : Sinal que habilita/desabilita a escrita nas memórias.

CLR • Clear, reinicializa o acumulador.

ACCA_ENABLE : Inibe o circuito acumulador durante a multiplicação de matrizes.

ACCB_ENABLE : Inibe o circuito acumulador durante a multiplicação de matriz por vetor.

W_ENABLE : Inibe a saída do acumulador enquanto ocorre a soma dos produtos parciais dos

elementos da multiplicação de matrizes.

TETA_ENABLE : Inibe a saída do acumulador enquanto ocorre a soma dos produtos parciais

dos elementos da multiplicação de matriz por vetor.

83

Page 91: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

J.,

I

I

11

o o

g I g g g

0000

00

0000

02

0000

01

0000

08

\/(

0000

05

0000

00

0000

02

0000

05

0000

03

0000

08

8,00

001

0000

00

0000

04

0000

05

0000

02

0000

07

0000

00

0000

01

0000

00

0000

0000

0000

0000

0000

0000

0000

0000

0000

0000

0000

01

0327

68

1

1 1

1 1

1 1

1 1

1 1 1

1)1

1 1

1 1

1 1

1 1

1 1

1 1

II Ii ii

1

— — ,d (1) iD — * ri * * 4k (1) * >4 >4 "--- 4 ,d Oi

4P V ---- (1) a) • ""--- (1) —6 ,--- " ; —6 Ti '—'" (> 4 4 E-I • • rij (t) (.) (t) 0.) ID • (1)

ICS a) ICS ICS ICS II:1 vi 0; r2 • O c..)

0 00 c..) c..) 1 I gci 4 Pe. H PI Ri ci

0kl

P4 ti N 1 N 12+ 124 to

H H P4 1-i NI

P4 O M I 1

kil kr] g kil H E-I H E-I CJ CJ O O M

• •

rxi a ,,,2 M NI H H P4

• • • •

N 2 Ni

I rZ CJ

te te te te te te te te te te te te te -,-; --o —o —o

Page 92: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

_ _ _ _ _ _ _ _ _ — _ _ — ._, _ a -.2

- - _ r.*

-:

-.: _

_ _

_ _

- -

- - _ _ _ _ _ _ _ _

-I -, ,

-1

i _ ,

_

_

..

.

.

.

_ _ _ _ _ _ _ _ _ _ _

_ _ _ _

. _ _ _ _ _ _ _ _ _ _

• . .

ixi•

a cil KC

NI ri:11

C.) C.) ec

Z

. • • •

rti•

rQ r=

NII

.

.

.

[Li a

NiI

E4 Pil El

-,-i •—i -,-i

Page 93: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

vo

60 80

LO 90

5(

o

X

00

0009

X

0000

03

X

00

0009

X

00

0003

00

0005

00

0008

00

0003

o o o o

0000

01

0000

00

0000

0000

0000

0000

0000

0000

000 0

0000

0000

0000

0000

01

0327

68

--- 4 (I.) (I.) --- lt ri lt

I . 05( j :: 1 : 9: C 9- : r da )( ) -6, :1; Tf* -6;)

— ge mi ge — Tcs a) Tcs 1 1 1 • — rd —

c IPI:igggeElig; jil H. 1

I N

rei Íc rei çjel ri H c e H

ki PAN RN RN kx 1 2 2 E; E Á' '

At

V) Tcs —

r_i Pi ã

, c

it

vi Tcs

R: ra. ã

c bi

)

G)

2.

c) to rx 1

r 1 1

I it

V) Tcs

2. R m

I

1

I • •

rá i_l

z á 1' ti'4

• • • m. ros' z

g-e"

PO PO PO PO XI PO PO PO • • -ri •rl

Page 94: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

lO

. . . Á a

Z NI

PI O C.) gC

ril 14 PI

14

. . . Á a

Z NI

t, E-1

1 ízl E-,

-H -H -,-,

Page 95: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

— 01

d

O 2

0 00

30

HO

O 0

0

>C.

.-I 0

----

.-4 0

><.

0000

05

0000

09

0000

08

0000

05

0000

00

0000

06

0000

05

0000

00

0000

05

0000

03

0000

09

090

006

0000

0 7

_X

00

0001

X

00

0000

00

000

1

0000

0000

0000

0000

0000

0000

0000

0000

0000

0000

0000

01

0327

68

•'-'• •-•'• 4 Q) ••-• it ri it it 4k tll it

4 4 1) •—• it ---• -----. rd — W Q) • •-- Cl U — U U U — U 4 4 E. • • rd (1) o W Cl W • Cl

rd W rd rd rd rd • • I I • •••• rd •''• •''• ''•-.' U) ci cd I24 4 EA • — • • •

0000 O 4 4 • H E; 1-5 1-5 1-5 C..) o i I Ia I Fll r11 C) 12 Fll Fll Fll r21 Fll N N I N a, a, to 0 t:4 t:4 t:4 IX t:4 H H I:4 H oce M ra Z

O t:4 I 1

ki ki ki kl E E E

ã ã ã NI bi ça

• . •

Fll 12

2 M ali E-1

• . •

rII. •-1

Z ai

41

PI PI te PI PI PI PI fil PI CD CD CD PI •.-i •rri -.1 -.-i

Page 96: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

a,

e Co

C

o _ r,

-

- C — cri

EM

.

.

.

. kl e-1

M ! CICI Ci o f-

ra '-' 2 g 124 a

.

.

.

. kl e-1

PI 1 4 . E-1

I ra E-1

• ri - ri ..-1

Page 97: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

I 900000

I

0000

07

I

0327

68

I

1H

o

1

1

I

I

I

I

-.- — 4 ai a) — 4P •--1 4P 4P 4P Q) 4P • X X "--. 4 4 ri 4P V a) a) • — — a) i.) o eci i.) — i.) . Ni

r2 raaj Tia ) vw vw vw i Á 'Oa) a

i i i • — ro — — — ,c — U'à al 1:4 r4 4 E-1 • — • • • 8 8 8 8 8 '1 ''.1 ge; 1 B RI 2 2 r?1

'A 'A 'A 'A .-1 brd' h. .9A .c1-• u)I ei Ni' NI NI NI NI NI rd rd O rd iii rxi

2 2 H 2 H M M El EÃ UI Ui 2 O El NI NI r14 ti ra ti ti

• . rxi a 2 m 1

4 " ,c -, 4' gel gel gel gel gel gel gel XI gi giI -•-I -ri .9-1 ••-I

Page 98: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

ri

!is

. . . À a

Ni

z a

RI oq

i rc

CA Z

C.) IA U .:4

r1

. . . us i a z RI

i g4 E

i CA E -ri r1

Page 99: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

un

o c o

o

o

I

o

04

X

00

01

00

02

ri

o

0000

06

0000

06

0000

07

0000

01

>< X

c. ,i , .-, -, ,--- ch o ri o o

o

o o o o o o o

0000

01

032 7

68

-- - .0 a) a) — it ri 4P 41 * cu X X — „C „C o — 4t Tf a) a) • — — a) o — ti 75 ti — c--; -O „C E-1 • • ra CD () CD a) a) • a) — — PI I `-' ra (1) ra Cl ra ' rCi

I I I • --'-' ra ''-' "-

E-i • — oo O O O ir • 1-1 d O O O O O H 1 1 PI 1 RI RI a

N RI tc tc I tc 04 04 CA 2

PIC s:C "-I Et IX H ecd á Ri

I I ki pil ni H Erip

Ni tn rd rd 0

• • •

RI i-

2 z RI

0

• • •

rii 1- ai ,4 121

I

Page 100: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

— —

LSI — e —

-

- -

_

- -

- -

_ _ _

E -

-

-

- -

-

- -

- -

- -

-

- _ -

-

- -

-

'CP -

-

- -

rxi a rxi a

Á a

[AI to

[AI .cc o rxi Ei

ei ge

1 ri] Ei

-,-1 .9-1 -H

Page 101: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

0000

01

I

0327

68

1

1

11

11

o o

00

o o o

IN

._. _ ,....._. r, it.... • . 40 4t Tf • (à) r ( I i E- ; ' - - . -• ' - - -• ri 1:5) ( I ) ( -; i i T) ' - - . -• '-("ia . ) — — ii: P1 i ••—• Tf ell Tf Tf Tf rCi ui ç4I ç41 a E—; '--: "••1:2' '---• '--•- '--•- R O O O O O f:41 FC • I-1 aiç E-I o o o o o 1 ril ril Ci ril ril NI ril NI t

5 t'1 O.ii. ti] 1:4 1:4 1:4 1:4 1:4 1_1 1_4 • 1:4 1_ , .c1 ,z ri c , rA ril ril ril ril 1:4 1:4 O w x i 1

2 2 n E-1 E-1 E-1 x

rA MrA M M g g g NI ol rjj ti

2 2 r4

FiÍzi 1-i ix W ti

.[li P1 rz ri, 1 rz o c4

P1 P1 ifi r4r1r1

Page 102: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

- _

. . . rx i a Z kl 1 Ce ci o rrn

NI i-1 Ce ern g ui

. . . rx i a Z kl i sn E. 1 NI E-1

-,-1 •,-i

Page 103: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

00 YO

00 60

X

00 I

III I

111 I

1 900000

I

o o o

1 00

0007

i

0000

01

1

o o o o o o o o o o o o o o o o o

, - tf, e, - co o o o o. o o o

o

o o o o o o o o o o o ° o o o o o . o o

><

to Lr, , , o , ° o °- oo o o o o

-1o o o 03

2768

1

- - — ,C a) a) — 4P ri 4* 4* 4* (I) 4* • SC SC —

U-- --. 4P — rei • a) a) • — — a) U — --(5 U U — ---U • ,4 ,4 H • • rei Q) U (11 Q) Q) • Q) Írl .----- 40 P1 4 — rei a) rei rei rei rei a 1 1 PI (1) Cl IX IX a H • — • • • a • 4 00000 xe xe •1-1 4 Z O O O O O I 1 PI 1 rzi wO E Írl (AÇA ÍrlÇAÍ.11 NN 1 ba a, al CO I IX W W ç4 ç4 1-1 1-1 W 1-1 4 4 w w NI w w w w tZ tZ O tZ W X I 1 E-I

O E-I E-I E-I E-I O O O O W 1-1 tZ R 2 R 1 ÇA Írl I-1 IX I-1 ÍrlÇAÍ.11 Z Z >£[14 OltZtZU Ciece OÍrl

w a PI 4 w

1 4 O

Mal

Page 104: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

C — o

ACC B

_ENA

BLE

.

TET A

_ENA

BLE

..

-r4

Page 105: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

G O X

00

X

30 00

LIO

1 900000

!

0 000

07

I

03276

8

1

o o

1 oo

o oo

o o

o o o o o o o o Io

o o

o o o o o o o

o

— — 4 a) a) — 4n ri 4ti.n t a) t • X X — 4 4 o 4t a) a) • — — a) -G — --G --(3 -G ai --6- .

4 4 El • • rd a) o a) a) a) a) À

ga ce ga — od a) rd rd od X od a • • I I I • — rd — — roa — cn Q X X a El • — • • . • a 2 O O O O O oa roa • H O Q ga E; C.) C.) C.) C.) C.) Z

I 1 al I ril Ç4 O a ril [C Ç4 Ç4 [C [C ta ta I ta a a cn Q I X X X X 1:4 H 1-1 1:4 H ct ge ril z [11

[C[C [C [C [C X X X I I O X X El 2 2 2 2 2 ..-„. El E-• E-1 Ui Ui r.72 0 M H [C [C [C [C [C R r•I r14 tn X 11 W E-2)

• . •

LÁ a a) :5 W soal

C4 al ca rl r1 r1 r1

Page 106: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

CO

VI

Page 107: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

2 3

c — o o o

o o

c — o o o o o

c —

o o

c —

ENDE

REC

OS.

( he

x)

ENDE

REC

OD

.( he

x)

ENDE

RECO

R_A

T.

( h

ENDE

RECO

R_B

.( h

e

ENDE

RE

CO

L A

.(he

MATR

IZ A

T.

( de

c)

MATR

I Z A

.( d

ec) #

VETO

R_B

.( d

ee)#

1

MAT

RIZ

I.

( dec

) #

F C

HAP

EU

.(de

e) #

REG

_ESC

ALA

R.(

de

REG

_ MU

LT.(

dee

) #

WR

ITE

_EN

ABL

E..

ACCA

_ENA

BLE

-a

0:1 0:1

eia ela elari -ri • 1-1 • ri

Page 108: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

ACCE

_EN

AB

LE..

TETA

_EN

ABLE

..

Page 109: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

0:1 0:1 0:1 0:1 0:1 0:1 0:1 0:1 P:i P:i 0:1

_.

_ 2 - 5 -

-4

--4 ......

_ .-... 2 _ _ _ -

-

— 5._, - ...., - - — . -.

?. Hi -I -I

o H

: H

,

r

I

1

o

.a. o

o

o

><

-, o

o o

o

o

.---<

“, o

o

o

mo o o o

00000

7

0000

01

0000

0000

0 00

0000

0000

0002

9163

5 2

1

0 0 0 0 0 0 0 o o 0 o o o o o o o

rm en o •:, , N en o o oo -. o o o o o o o o o

0000

01

0327

68

1

1

1 --

L_

_. -, - - _

2 -I _ i

H -1 -. -J

—1

:I

H .-4

H

1

_ _ _

_

_ _ _ _

I

g_CH

APEU

.(de

c) #

REG

MU

LT.(

dec

) #

MAT

RIZ

I.(

dec

) #

VET

OR

B.(

dec

)#1

ENDE

RECO

R A

T. (

h

MAT

RIZ

_AT.

( dec

)

ENDE

RECO

D.(

hex

)

ENDE

RECO

S.( h

ex)

REG

_ESC

ALAR

.(de

MAT

RIZ

_A.

( dec

) #

ENDE

RECO

L_A

.( h

e

ENDE

RECO

R_B

.(he

WR

ITE_

ENA

BLE

..

Page 110: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

c — o

C - o

tn -

-1:4t

ACCB

_ENA

BLE

..

TETA

_EN A

BLE

..

Page 111: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

e

e c

1 0

00

°°

03

00 C

e- 09

00

00

00

Ci n

07

00

08

00

0000

06

0000

06

000 0

07

0000

01

0000

0000

0000

0000

000 0

0000

0000

0000

0000

0000

0000

01

0327

68

1

— — ,C O af — i. r4 * i* 4t (1) I@ SS SS — ,C ,C U — 4t — — — rcs O (1) •——(1)U—UUO—U ,C ,C Es • • tf O U O (1) (1) • o NI — — rt4 Pel rt4 -"-- ri:, (I) rt:, tf tf r4 tf

I 1

r4 1-1 Es • — • • • 4 • 000004 4 •I—iZ Z 4E-1 OC)C.JOC) 1 1 ffl 1 NI NI Cf 4 NINI NI NI NI NN 1 bi ai ai U) R ,,4 ,4 ,4 ,4 ,4 , ,, . ,, ,c, ,c, ,.., r.4 NI NI r.4 Ni ,4 O ,,4 m 1 1

Es E-1 E-1 E-i Cf Cf O O 4 ZZ Z ZZ 1 1 NI NI 4 NININININI er4 b) 1:41:4C.J3C)4

• •

4 ffl 4 Z NI

Ni 1 E. 1-1 1:4 r4 1-.1

• •

fil. 4 PEI 4 Z Ni i 4 Cf Cf

ffl ffl ffl ffl ffl ffl ffl ffl ffl PEI PEI pg pci ..-1 ..-1 •r1 ri

Page 112: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

C —

•—•

ACC

B_E

NAB

LE .

TETA

_EN

ABL E

.

-ri -ri -ri

Page 113: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Page 114: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

2

1

â

".n."

1 rn

—t1

r_1

—1 --I

ACC

B_E

NABL

E .

çza a fcC

I TETA

_EN

ABLE

.

- •-1 • r-1 • r-1

Page 115: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

a

tr. a

c cr. —

— co

r- o o o o o

0000

0000

0000

0000

0000

ENDE

REC

OR

_AT

.( h

ENDE

REC

OR B

.( h

e

ENDE

RECO

L_A

.( h

e

MATR

IZ A

.( d

ec)#

VETO

R B

.(de

c)#

1

MATRIZ

I.

( dec

)#

F_C

HAP

EU

.(de

e) #

g_C H

APEU

.( d

ee)#

REG

_ESC

ALA

R.

( de

REG

MUL

T.

( dec

) #

END

EREC

OS

.( h

ex

)

END

EREC

O D.( h

ex

)

MATRIZ

_AT

.( d

ee)

WRI

TE

ENA

BLE

..

ACCA

_EN

ABLE

.

o

13:1 13:1 13:1 13:1 13:1 13:1 13:1 13:1 13:1 13:1 13:1 13:1 COH H -H -H

Page 116: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

eig

c — 5

tn

TETA

_EN

ABLE

.

ACC

B_EN

ABLE

.

• ri

Page 117: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

rf c .-Ir

Page 118: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

E ti

3— AC

CB_

ENA

BLE

..

TETA

_EN A

BLE

....

Page 119: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

rn

111 —

o o

/

o

11 0

11

0

1

o

0000

06

0000

06,

0000

07

0000

01

0 O 1-1 o,cl• C" O 0 O O 0 0 o o o o o

O tri O o o o o o o o o o o o o o o o

o

o

0327

68

"•••• ••-•• a) (I) •-•-• it Cl it it it (1) it

Z c) --- it --- --- --- V a) 0) • ---- ---- a) (.) --. (.1 (.1 (.1 --- (.1 4 4 E-1 • • V (1) ti (1) a) (1) • a)

I I I • — V — rn n 124 124 A E • — • • • • O O O O O tr: tr • 1-1 4 C) C) C) C) C) 1 1 Pel I NI NI c..) NI NI NI NI NI cl cl ] cl ai ai (c) 124 124 124 124 124 H H 124 H gg PA NI NI NI NI NI 124 124 o 124 Z 1 1

2 2 2 2 2 M M P%i M UI O1 2 ri ,j TI NI NI NI NI N I › r1-1 tn 124 124 C..)

• •

ai ra tr Z NI I NI E-1

} 41 ÍrA Z C-)

• • .

a ra 4 Z al

I 4 8 4

01 01 01 01 01 01 01 01 01 01 01ri -ri r1

rn —

Page 120: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

-

-

_

-

-

-

-

-

-

-

-

-

TETA

_EN

ABLE

.

ACC

B_EN

ABLE

.

Page 121: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

ENDE

RECO

S.( h

e x)

ENDE

REC

OD

.( he

x)

ENDE

RECO

R_B

.( h

e

ENDE

RECO

L A

.( h

e

MAT

RI Z

_AT

.( dec

)

MAT

RIZ

_A.

(dec

) #

VETO

R_B

.( d

ec)#

1

MAT

RIZ

I.

( dec

) #

F_C

HAPE

U.

( dec

) #

g_CH

APE U

.(de

c) #

REG

_ESC

ALA

R.(

de

REG

_MU

LT.(

dec

) #

a

WRI

TE

_EN

ABL

E..

a

o H o o

Ti

J

o

o.

o o

,

.

, 1

1

r-o

i , o

to o o o o o

to o o o o o

r- o o g

-. o o o o o

-.

o o o o o o o o o o o o o o o o o o o o

o o o o o o o o o o o o o o o o o o o o

I

1 — - - _ _ _ „ _ _ _

_. - - _ _ _ _ _ _ _ _

_

_ _ _ _ _ _

_ _ _ _ _ _ 2 _ 5 - :, _

_ _ _ _ _ _ _ _

_ _ _ _ o _ -

_ _ _ _ _ _ _ _

_ _ _ _ _ _ _ 0 _ 5 _ ?, -

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

_ _ _ _ _

_ - _ - — g E 5 —

_ _ _ 5 — _

_ _

_ _

__ _ _ _

_

_ _ _ _ ir r _ _ _ _

4 PQ rei PQ PQ PQ 021 rei PQ rei PQ PQ PQ PQ

Page 122: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas
Page 123: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

_ _ _ _

2 - g - : - -, _ - _

-1

o -.

o

J

o

-,

o

o o

o

o o

o_ _ o

o

o o

o

o

o o 0000

01

o

na

o o o o o o o o

o o O o o o o o o o o o o o o o o

- _

__ , __ .. _

_ _ _ _

_ _.

2 - 5 -- : -

_ - _. _ _.

-4 - - _ - - _

a-

- - —

n - z - - _ -

21.

-2 -I _ _

n -1 - -, -,

_ -J _I

SC X cl) (1) 4

to

4

O O C.) C.) [4 [4

[4 [4

Z Z [4 [4 4A

TRIZ

_ AT

. ( d

ec )

TET O

R_B

. (de

c) #

1

4ATR

IZ_ A

. (de

c) #

!INDE

RECO

R_B

. (he

L'NDE

RECO

R_A

T. (

h

E:ND

EREC

OL_

A. (

1

1ATR

IZ I

. (de

c) #

,CC

A_EN

A BLE

...

ÍCI Mi Mi ÍCI Mi Mi eci Mi Mi Mi Mi rI H

Page 124: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

tn

ACCB

_ ENA

BLE

....

TETA

_ENA

BL

E....

Page 125: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

110

01

13

/1

0,1

15

J.

UflS

lin

nS

1 1

9211

5 19

3ns

,194

ns

,195

ns

119(

I I I 1

[III 1

I

1 11

L1

1 11

111

1H

W(

B

END E

REC

OS.

( he x

)

00

09

B

EN

DER

E CO

D. (

he

x)

oo

04

00

05

END E

REC

OR_

AT

.( h

00

B E

NDER

ECO

R_B

.( h

e

oo

OC

00

09

B

END

EREC

O L_A

.( h

e

B

MA T

RIZ

_AT

.( d

ec)

B

MAT

RIZ

_ A.

( dec

) #

B

VETO

R_ B

.( d

ec)4

1

B

MA T

RIZ

_I.

( dec

) #

00

0000

0000

0000

0000

00

B F_C

HAP

EU

. (de

c) #

0000

0000

000 0

0000

0000

B g_

cHA P

Eu.

(de

c) #

4 R

EG_ E

SCAL

AR

. (de

B

REG

_MU

LT. (

dec

) #

C

LK

WR

ITE

_ ENA

BL

E

CLR

ACC

A_E

NAB

LE

Page 126: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

TETA

_EN A

BLE

..

ACCB

_EN

AB

LE..

-

-

--- - - -

Pli

- -

-

-

-

-

-

1-1 —

-

-

-

- -

Page 127: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

et, g r—

Page 128: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

ol C r-o CJ

-

^

- _

o

-

-

-

-

-

-

-

-

- -

-

-

-

-

TETA

_EN

AB

LE..

Page 129: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

1113

051

17

2l

Sris

1216

ns

,217

ns

Will I I

17

1 71

I

I 1 2

11

B

ENDE

REC

OS.

( hex

)

B

ENDE

RECO

D.(

hex)

X OA

00

00

09

00 DA

B

EN

DE

REC

OR_

AT.

( h

00

B EN

DER

ECO

R_ B

. (he

00

09

00

DA

ENDE

RECO

L_A

.( h

e

B

MA

TRIZ

_AT

.( d

ec)

B

MAT

RIZ

_ A.

( dec

) #

B

VETO

R_B

.(de

c)4

f 1

B

MA

TRIZ

_I.

( dec

) #

00

0000

0009

9002

6869

76

X

B F

_CH

APEU

. (de

c) #

0000

0000

0000

0000

0000

B g

_CH

APE U

. (de

c) It

R R

EG

_ES

CAL

AR. (

de

B

REG

_MU

LT. (

dec

) #

CLK

WR

ITE_

ENA

BL

E

CLR

ACCA

_ EN

ABLE

. 111

1 1111

1111

1 111

11111

11111

11111

11111

11I11

11111

1111

111111

11111

111 1

11111

f1111

11111

MTH

q u1r

i mii

mw

ili

Page 130: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

til — M —

I"-

-

_

_ -

-

_ -

-

-

L -

- _

- - - -

-

C,1

- -

-

-

-

Page 131: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

_ _ _

e.

1 A . - . - 1--- --1 na — na

—o ..... — —

o= C —I

— —

o — c —

-

_ o — c —

— _ —

o _ c — n —

_ —

c — EN — N _ —

— — — — — _

n — — 5 — — —

— —

— —

— !

i

I

I

11

I

o o

o o

_ _ _ _ _

— —

—11-

------ ----- — — _ — — — — — — — — — _ — — _ _ —

— _ — — — — — — — — _ _ _ _ — _ — _ — _ _ _ — —

• - - - - — 4 (1) (1) 4:k •—I = 4.k 4.k al 4: • SS SS `--' .4 4 C) .--- it --- •---- .--- 'CS .--- • W (1) • ---' `--' (1) C) --- C) C) C) ---' C) 4 4 E • Ti (1) C ) (1) (1) a ) • a) rxi — it: 12:1 ft:C '—' Ti (1) 'CS Ti 'CS r4 Ti 4

i i . ..... Ti ..... ..... ..... ,, --... g CI U) Q r4 r4

1 4 E • '—' • a ir:c

00 000 ir:C ir:CIA

IN

H

N

O

N

O cnir: RE. z

CA CACA CACA NI

N I r4 I:4 r4 rd r4 H H r4 H E r: I r: NI NI NI NI NI NI CA r4 r4 O r4 X X i E nnnnnE.E.E.E.oucc1

W H r4 X X X X X Cxl iNICA 4 Ê 4 CA CANICACA > CLII ts rd rd C.) s O

• • •

Czi a g CI ,r, ízl

I i r: C) C) ir:C

P:I P:I P:I P:I P:I P:I P2 P:I P:I • • • •

Page 132: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

FT- TT]l-

TTEI

TT1- 1 j

1 In

Page 133: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

I

I I

I

I

I.

o

o

.

o o o 0 o o o o .0 o o

o

o

o

0 - o o o oo o o o

CD CD • ---- ---- CD r..) U U U ---- U

000004 4 • 1-1 D D 4E

ri:! ril Cil Cil Cil X X OX X

.--. .--. rd a) CD .—. H 1:1) 4k •

X X '--" .4 rd U

rd rd E • • V a) o a) a) a) • a) ril

V (I) r0 r0 r0 X r0 4 Cil

I 1 1 • -- V ---- ---- -- gg — 0:1 4

rn al X X 4 E • — • • • 4 • 4 0:1

C)C)C)C.)C.) 1 1 0:1 1 UI ril O .-1 Z

kl Cil Cil Cil Cil cl cl 1 cl ai ai Co 0 1 Cil

X X X X X 1-1 H Cd 1-1 4 ÇA Z ril

Q Q Q Q Q E E E E O O 01

01 E

M M MMM

ri:! t 1 1 Ca ril 4 X 14 O

M 4

M H 1:4 C) 41

mir1 . •rI

Page 134: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

— C — o

ACCB

_ ENA

BLE.

TETA

_EN

AB

LE...

Page 135: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

h‘n

49I1S

4

n 1

V

i rirl

1 ;£ 17

ib l

1 1

1

1

17‘ 1 7

1 1 1

1

1

1

1

11

111

1 1

1

1

1

M

n 15 1

1 1

1

1

i1

1D 115

4b

1

1

111

1

14 1

1n 15

4 4

1 1

1

1

1

1

11

4 1 1 n 1S 1

1

1

1

1

1 I

n 15 1 1 1

,2

1

1

1

115U 11

S 1

1 1

B

ENDE

RECO

S.(

hex)

00

X_

OC

B E

NDE

RECO

D.(

hex )

00

10

00

01

00

B E

N DER

ECOR

_AT.

( h

B

ENDE

RECO

R_B

.(he

00

OC

00

OD

00

B EN

DERE

COL_

A.

( he

MAT

RIZ

_AT.

( dec

)

B

MAT

RIZ

Ad

dec

) #

B

VETO

R_B

.(de

c)#1

B

MA

TRIZ

_I.

( dec

) #

00

0000

0000

0000

000 0

00

B

F_CH

APEU

.( dec

) #

B

g_CH

APEU

.(de

c) #

REG

_EsC

ALAR

.( de

B

REG

_MU

LT.(

dec

) #

-1

i

CLK

i

WRI

TE

_ENA

BLE

i C

LR

i

ACCA

_ENA

BLE

1111

HII

III

H 1

1 III 1

II H

I IH

IIH

II p

il I II

I 111

11 H

IIIH

IrH

1111

111 1

R II H

IIIM

Page 136: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

(%1

• e _

TETA

_ENA

BLE

.

-ri -ri

Page 137: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

o o o o

ENDE

RECO

S.

ENDE

RECO

D.( h

ex)

ENDE

RECO

R_A

T.( h

ENDE

RECO

R_B

.(he

ENDE

RECO

L_A

.( h

e

MA

TRIZ

AT.

( dec

)

MA

TRIZ

_Ad

dec

) #

VETO

R B

.(de

c)#

1

MA

TRIZ

I.

( dec

) #

g_CH

APEU

.(de

c) #

REG

_ESC

ALAR

.( d

e

REG

_MU

LT.(

dec

) #

a a o 1:CI 4 4 1:CI 4

Page 138: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

w

ri

ACCB

_EN

ABL E

.

TETA

_ EN

ABLE

.

Page 139: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

I I I

1111

I i I I

I I l' 17

115 1 11 I

I I r

Ibb ln Is l i11

11 14 1bb ln Is l

14 167 1n Is l12 168 1n 1s 1

[111

1 12 169 1n 1s 112 17 1J

_0 n51 i I

1112 171 1 7

1111

_1 I

172 1 n Is l

B

ENDE

RECO

S.( h

ex)

B

END E

RECO

D.( h

ex)

013

00

00

X0

5

00

X

_

H

B E

ND

EREC

OR_

AT.

( h -

-i(

X

oo

B

ENDE

RECO

R_B

.(he

00

OD

00

OE

00

B

EN

DER

E CO

L_A

.( h

e

B

MAT

RIZ

_AT.

( dec)

B

MAT

RIZ

_Ad

dec)#

B

VETO

R_B

.(de

c)#

1

B

MAT

RIZ

_I.

( dec

) #

00

0000

0000

0003

7603

20

B F

_CH

APEU

.(de

c) #

lk

B

g_CH

APEU

. (de

c) #

REG

_ESC

ALA

R. (

de

B

REG

_ MU

LT. (

dec

) #

CLK

WR

ITE_

EN

AB

LE

CLR

ACCA

_EN

ABLE

MT1

T1 1

1111

Page 140: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

ri

ACCB

_ENA

BLE

. .

TETA

_ ENA

BLE.

.

Page 141: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas
Page 142: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

CM

ACCB

_EN

ABLE

.

TETA

_EN

AB

LE...

•r-I

Page 143: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

o

Page 144: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

•CP

ACCB

_ ENA

BLE

. ..

TETA

_ ENA

BLE

...

co

Page 145: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas
Page 146: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

o

E

ACC

B_EN

ABLE

.

TETA

_ENA

BLE

.

tal

Page 147: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

a

REG

_MU

LT.

( dec

) #

g_C

HAP

EU.(

dec

) #

•59.

c 1

o

o o

ENDE

REC

OS.

( hex

)

ENDE

RECO

D.(

hex)

ENDE

RECO

R_B

.(he

MA

TRIZ

_AT.

( dec

)

MAT

RIZ

A.

( dec

) #

VETO

R B

.(de

c)#

1

MAT

RIZ

I.( d

ec) #

ACC

A_EN

ABLE

....

o

pa ai ai -1 •

Page 148: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

e — o

uà —

ACC B

_EN

ABLE

.

TETA

_EN

AB

LE...

-ri • rl

Page 149: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

o I

o

C —!

ENDE

RECO

S.(

hex)

ENDE

RECO

D.(

hex

)

ENDE

RECO

R_A

T.( h

END E

RECO

R_B

.

ENDE

REC O

L_A

.( h

e

MAT

RIZ

_AT.

( dec

)

MAT

RIZ

_Ad

dec

) #

VE

TOR

B.(

dec

)#1

MAT

RIZ

I.(

dec

) #

F_CH

AP

EU

ddec

) #

g_CH

AP

EU

ddec

) #

REG

_MUL

T.(

dec

) #

WR

ITE

ENAB

LE

...

o ACCA

_ENA

BLE

....

o

o ttl

Page 150: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

_

1

-

- -

VI - -

_

- -

-

- -

- -

-

-

-

-

-

-

-

-

ACCB

_ENA

BLE

..

TETA

_EN A

BLE

....

Page 151: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Biblio,vrafia

[CHA97] CHAI, SEK M., LÓPEZ-LAGUNAS A., WILLS D. S., JOICERST M. N., and BROOICE M., pp.160-166, Systolic Processing Architectures Using Optoelectronic Interconnects, Montreal, Canada, MPPOI 1997.

[C0E95] COELHO, D.R. The VHDL Handbook, Kluwer Academie Publisher, 1995.

[D0N95] DONLIN, M. CPLD/FPGA devices, tools lure PLD designers into faster, denser logic, Computer Design, p. 81-98, November, 1995.

[DON96a] DONACHY, P. Design and Implementation of a High Levei Image Processing Machine using Reconfigurable Hardware, Ph.D. Thesis, Dept. of Computer Science, The Queen's University of Belfast, September, 1996, WWW page http://www.cs.qub.ac.uk/ToEP.Donachy/thesis/

[DON96b] DONLIN, M. Designers cross over to language-based tools, Computer Design, p. 69-88, January, 1996.

[DON96c] DONLIN, M. Designers moving to HDLy face challenges, reap benefits, Computer Design, p. 69-75, October, 1996.

[D0N98] DONGARRA, JACK J., Performance of Various Computers Using Standard Linear Equations Software, (Linpack Benchmark Report), University of Tennessee Computer Science Technical Report, CS-89-85, 1998.

[DRA87] DRAICE, B. L. et al. SLAPP: A Systolic Linear Algebra Parallel Processor, IEEE Computer, p. 45-49, July, 1987.

[DUN90] DUNCAN, R. A Survey of Parallel Computer Architectures, IEEE Computer, p. 5-16, February, 1990.

[FAW94] FAWCET, B. K. Applications of Reconfigurable Logic, More FPGAs, Edited by Will Moore and Wayne Luk, Abingdon EE&CS Books, Oxford, England, 1994.

[F0R87] FORTES, J. A. B.; WAH, B. W. Systolic Arrays - From Concept to Implementation, IEEE Computer, p. 12-17, July, 1987.

[GAJ83] GAJSKI, D. D. & KUHN, R. H. New VLSI Tools, IEEE Computer, New York, 16(12): 11-14, December 1983.

[GOK91] GOKHALE, M. et al. Building and Using a Highly Parallel Programmable Logic Array, IEEE Computer, p. 81-89, January, 1991.

[GSC95] GSCHWIND, M.; SALAPURA V. A VHDL Design Methodology for FPGA, Lectures Notes in Computer Science, no. 975, p. 208-217, July, 1995.

[GUC95] GUCCIONE, S.; GONZALEZ, M. Classification and Performance of Reconfigurable Architectures, Lectures Notes in Computer Science, no. 975, p. 439-448, July, 1995.

148

Page 152: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Bibliografia

[GUC96] GUCCIONE, S. List of FPGA-based Computing Machines,WWW page http://www.utexas.edut-guccione/HW_Iist.html, 1996

[HAG81] HAGEMAN, L. A., YONG D. M. Applied Iterative Methods, Academic Press, 1981.

[HEL97] HILLESLAND, K. A. A Sistolic array for Solving Simultaneous Linear Equations Using Iterative Methods, Master of Science in Electrical Engineering, School of Electrical Engineering and Computer Science, Washington State University, May, 1997.

[HAR90] HARDING, B. HDLs: a high-powered way to look ai complex design, Computer Design, p. 74-84, March 1, 1990.

[H0A93] HOANG, D. T.; LOPRESTI, D. P. FPGA Implementation of Systolic Sequence Alignment, Lectures Notes in Computer Science, no. 705, p. 183-191, June, 1993.

[HWA84] HWANG, K.; BRIGGS, F. A. Computer Architecture and Parallel Processing, McGraw-Hill, 1984.

[IEEE94] IEEE, Inc., IEEE Standard VHDL Language Reference Manual, June, 1994.

[K0R93] KOREN, I., Computer Arithmetic Algorithms, Prentice-Hall, 1993.

[KUN87] KUNG S.Y., VLSI Array Processors, Prentice Hall, 1987

[KUN82] KUNG, H. T. Why Sistolic Arrays?, IEEE Computer, vol. 15, No. 1, p. 37-46, January, 1982.

[LAW95] LAWRENCE, A. et al. Using Reconfigurable Hardware to Speed up Product Development and Performance, Lectures Notes in Computer Science, no. 975, p. 111-118, July, 1995.

[LIN93] LINDE, A.; NORDSTRÕM, T.; TAVENIKU, M. Using FPGA to Implement a Reconfigurable Highly Parallel Computer, Lectures Notes in Computer Science, no. 705, p. 199-210, June, 1993.

[LEU97] LEUNG, STEVEN S., ASIC System Design with VHDL: A Paradigm, ICluwer Academie Publishers, 1997.

[LIS93] LISPSETT, R.; SCHAEFER, C.; USSERY, C., VHDL: Hardware Descrition and Design, ICluwer Academie Publishers, 1993.

[LYS94a] LYSAGHT, P.; DUNLOP, J. Dynamic Reconfiguration of Field Programmable Gate Arrays, More FPGAs, Edited by Will Moore and Wayne Luk, Abingdon EE&CS Books, Oxford, England, 1994.

149

Page 153: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Bibliografia

[LYS9414 LYSAGHT, P.; DICK, H.P. Implementation of Adaptive Signal Processing Architectures Based on Dynamically Reconfigurable FPGAs, Proceedings of EUSIPCO-94, Edinburgh, Scotland , Vol ifi, pp. 1871-1874

[LYS95] LYSAGHT, P. et al. Prototyping Environment for Dynamically Reconfigurable Logic, Lectures Notes in Computer Science, no. 975, p. 409-418, July, 1995.

[MAR95] MARNANE, W. P.; JORDAN, C. N.; O'REILLY, E J. Compiling Regular Arrays onto FPGAs, Lectures Notes in Computer Science, no. 975, p. 178-187, July, 1995.

[MCC90] McCANNY, J. V.; McWHIRTER, J. G.; KUNG, S. The Use of data Dependence graphs in the Design of Bit-Level Systolic Arrays, IEEE Transactions on Acoustics, Speech and Signal Processing, vol. 38, No. 5, p. 787-793, May, 1990.

[MID96] M1DDELHOEK, P. E A.; RAJAN, S. P. From VHDL to Efficient and First-Time- Right Designs: A Formal Approach, WWW page http://wwwspa.cs.utwente.nl/aid/aid.html

[MUR95] MURGAI, R.; BRAVTOR, R. K.; VICENTELLI, A.S. Logic Synthesis for Field-Programmable Gate Arrays, Kluwer Academie Pub, Hardover, 1995.

[NAV87] NAVARRO, J.J.; LLABERIA, J.M.; VALERO, M. Partitioning: An Essential Step in Mapping Algorithms into Systolic Array Processors, IEEE Computer, p. 77-89, July 1987.

[NAV93] NAVABI, Z. VHDL: Analysis and Modeling of Digital Systems, MeGraw-Hill, 1993.

[0LD95] OLDFIELD, JOHN V., Field-programmable gate arrays: reconfigurable logic for rapid prototyping and implementation of digital systems, John Wiley & Sons, Inc., 1995.

[PER91] PERRY, D. L. VHDL, McGraw-Hill, 1991.

[PET95] PETERSEN, R. J.; HUTCHINGS, B. An Assessment of the Suitability of FPGA- Based Systems for Use in Digital Signal Processing, Lectures Notes in Computer Science, no. 975, p. 293-302, July, 1995.

[R0593] ROSE, J.; GAMAL A.E.; VINCENTELLI, A. S. Architecture of Field- Programmable Gate Arrays, Proceedings of the IEEE, vol. 81, no. 7, p.1013-28, July, 1993.

[5ED92] SEDUICHIN, STANISLAV G. , Design and Analysis of Systolic Algoritluns for the Algebraic Path Problem, Computers and Artificial Intelligence, vol. 11, no. 3, pp. 269-292, 1992.

[5IE82] SIEWIOREK, DANIEL P., SWARZ ROBERT S., The Theory and Practice of Reliable System Design, Digital Press, 1982.

[5T095] STOCKWOOD, J.; LYSAGHT, P. A Simulation Tool for Dynamically Reconfigurable Field Programmable Gate Arrays , ASIC '95, Austin,Texas, Sept. 1995.

150

Page 154: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Bibliografia

[SYN94] SYNOPSYS, Inc., Making the Transition to High-Level Design, 1994.

[TUC92a] TUCK, B. FPGAs race for the gold in product development, Computer Design, p. 88-104, April, 1992.

[TUC92b] TUCK, B. FPGA vendors tunz their attention to tools, Computer Design, p. 75- 84, December, 1992.

[VIN93a] VINCENTELLI, A. S. Some Considerations on Field-Programmable Gate Arrays and their Impact on System Design, Lectures Notes in Computer Science, no. 705, p. 26-34, June, 1993.

[VIN93b] VINCENTELLI, A. S.; GAMAL A.E.; ROSE, J. Synthesis Methods for Field- Programmable Gate Arrays, Proceedings of the IEEE, vol. 81, no. 7, p. 1057-83, July, 1993.

[VCC97] VIRTUAL COMPUTER CORPORATION, H.O.T. User's Guide, Revision 1.0, September, 1997.

[VIR94] VIREDAZ, MARC, Design and Analysis of a Systolic Array for Neural Computation, Ph.D. Thesis no.1264, ÉCOLE POLYTECHNIQUE FÉDÉRALE DE LAUSANNE, Switzerland, 1994

[WAN93] WANG, L;Li. H. Solving Simultatzeous Linear Equations using Recurrent Neural Networks, Information Sciences, 76, p. 89-100, 1993.

[X1L95] X1LINX, Inc., The Programmable Logic Data Book, April, 1995.

[X1L97] XILINX, Inc., XC6200 Field Programmable Gate Arrays, WWW page http://www.xilinx.com,Version 1.8, January, 1997.

151

Page 155: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

APÊNDICE A

Programas desenvolvidos em linguagem VHDL

Page 156: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

1: 2: MULTIPLICADOR 3: 4: 5: 6: library ieee; use ieee.std_logic_1164.all; 7: 8: entity multiplier is 9: port ( a, b : in std_ulogic_vector(16 downto O);

10: p : out std_ulogic_vector(32 downto O) ); 11: end entity multiplier; 12: 13: 14: 15: architecture behavioral of multiplier is 16: begin 17: 18: behavior : process (a, b) is 19: 20: variable negative_result : boolean; 21: variable opl : std_ulogic_vector(16 downto O); 22: variable op2 : std_ulogic_vector(16 downto O); 23: variable result : std_ulogic_vector(32 downto O); 24: variable carry_in, carry : std_ulogic; 25: 26: begin 27: opl := to_X01(a); 28: op2 := to_X01(b); 29: -- torna ambos operandos positivos, guardando o sinal do resultado 30: negative_result := (op1(16) = '1') xor (op2(16) = '1'); 31: if (op1(16) = 9.') then 32: carry := '1'; 33: for index in O to 16 loop 34: carry_in := carry; 35: carry := carry_in and not opl(index); 36: opl(index) := not opl(index) xor carry_in; 37: end loop; 38: end if; 39: if (op2(16) = '1') then 40: carry := '1'; 41: for index in O to 16 loop 42: carry_in := carry; 43: carry := carry_in and not op2(index); 44: op2(index) := not op2(index) xor carry_in; 45: end loop; 46: end if; 47: -- realiza a multiplicacao longa 48: result := (others => 'O'); 49: for count in O to 16 loop 50: carry := '0'; 51: if (op2(count) = '1') then 52: for index in O to 16 loop 53: carry_in := carry; 54: carry := (result(index+count) and opl(index)) 55: or (carry_in and (result(index+count) xor opl(index))); 56: result(index+count) := result(index+count) xor opl(index) xor carry_in; 57: end loop; 58: result(count+16) := carry; 59: end if; 60: end loop; 61: -- a variavel result contem agora o produto sem o sinal, com o ponto binario

Page 157: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99:

100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122:

-- Atribui a saida com sinal ajustado. if negative_result then

carry := '1'; for index in O to 32 loop

carry_in := carry; carry := carry_in and not result(index); result(index) := not result(index) xor carry_in;

end loop; end if; p <= result;

end process behavior; end architecture behavioral;

SOMADOR

library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all;

entity acumulador_somador is port ( a, b : in std_u1ogic_vector(32 downto O);

s : out std_ulogic_vector(32 downto O); ovf : out std_ulogic );

end entity acumulador_somador;

architecture behavioral of acumulador_somador is begin

behavior : process (a, b) is

variable carry_in : std_ulogic; variable carry_out : std_ulogic; variable operacao : boolean; variable opl : std ulogic_vector(alrange); variable op2 : std ulogic_vector(birauge); variable soma : std ulogic_vector(alrange); variable somb : std_ulogic_vector(birange);

begin opl:=to_X01(a); op2:=to_X01(b); operacao := (opl (32) = 1 ) xor (op2 (32 ) = ' 1 ' ) ;

if operacao then carry_out := '1';

else carry_out := '0';

end if;

if (op1(32) = '1') then soma := not a;

else soma := a;

end if;

-- ou exclusivo para saber se os

se os sinais dos operandos fore sera realizada uma operacao de se os sinais dos operandos fore sara realizada uma operacao de

se o sinal do primeiro operandc sera realizada uma operacao de se o sinal do primeiro operandc nao sera realizada nenhuma opas

Page 158: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

123: if (op2(32) = '1') then -- se o sinal do segundo operando foi 124: somb := not b; -- sara realizada uma operacao de in‘ 125: else -- se o sinal do segundo operando foz 126: somb := b; nao sera realizada nenhuma operacE 127: end if; 128: 129: for index in O to 32 loop 130: carry_in := carry_out; -- do bit anterior 131: s(index) <= soma(index) xor somb(index) xor carry_in; 132: carry_out := (soma(index) and somb(index)) or (carry_in and (soma(index) xor somb(i 133: end loop;

p134: ovf <= carry_out xor carry_in; -- ocorre overflow se carry_out 1= carry_in 135: end process behavior; 136: 137: end architecture behavioral; 138: 139:

140 st REGISTRADORES

141i 142: library ieee; use ieee.sta_logic_1164.a11; 143: 144: entity reg is 145: port ( clk : in sta_ulogic; 146: d : in std_ulogic_vector(32 downto O); 147: q: out std_ulogic_vector(32 downto O) ); 148: end entity reg; 149:

150. 151: architecture behavioral of reg is 152: begin 153: 154: behavior : process (clk) is 155: begin 156: if rising_edge(c1k) then 157: q <= d; 158: end if; 159: end process behavior; 160: 161: end architecture behavioral; 162:

163. 164: REGISTRADOR COM CLEAR 165: 166: library ieee; use ieee.std_logic_1164.all; 167: 168: entity acumulador_reg is 169: port ( clk : in std ulogic; 170: clr in std_ulogic; 171: d : in std_ulogic_vector(32 downto O); 172: q: out std_ulogic_vector(32 downto O) ); 173: end entity acumulador_reg; 174: 175: 176: architecture behavioral of acumulador_reg is 177: begin 178: 179: behavior : process (clk) is 180: 181: 182: begin 183: if rising_edge(c1k) then

Page 159: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

184: if To_X01(c1r) = '1' then 185: q <= (others => ' 0 '): 186: else 187: q <= d; 188: end if; 189: end if; 190: end process behavior; 191: 192: end architecture behavioral; 193: 194: 195: REGISTRADOR COM ENABLE 196: 197: 198: library ieee; use ieee.std_logic_1164.all; 199: 200: entity reg is 201: port ( clk : in std_ulogic; 202: ENABLE : in std_ulogic; 203: d : in std_ulogic_vector(32 downto O); 204: q : out std_ulogic_vector(32 downto O) ); 205: end entity reg; 206: 207: 208: 209: architecture behavioral of reg is 210: begin 211: 212: behavior : process (clk,enable) is 213: begin 214: if rising_edge(olk) then 215: if(ENABLE='1') then 216: q <= d; 217: end if; 218: end if; 219: end process behavior; 220: 221: end architecture behavioral; 222: 223: 224: MEMORIA RAM DUAL PORT 225: 226: 227: 228: LogiBLOX DP_RAM Module ominha_ramdp_logiblox" 229: -- Created by LogiBLOX version M1.5.19 230: -- ou Mon Jun 21 08:09:43 1999 231: -- Attributes 232: -- MODTYPE = DP_RAM 233: -- BUS WIDTH = 17 234: -- DEPTH = 16 235: -- STYLE = MAX_SPEED 236: -- USE_RPM = FALSE 237: 238: This is a behaviorial model only and cannot be synthesized. 239: 240: LIBRARY IEEE; 241: USE IEEE.std_logic_1164.ALL; 242: LIBRARY logiblox; 243: USE logiblox.mvlutil.ALL; 244: USE logiblox.mvlarith.ALL;

Page 160: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Conclusões

9 Conclusões

Neste capítulo são descritos os pontos relevantes do trabalho e as observações surgidas

durante a implementação do projeto, assim como uma análise do potencial da arquitetura e

perspectivas para trabalhos futuros.

O trabalho foi desenvolvido tendo como forma de modelagem as equações diferenciais

desenvolvidas no trabalho de [1111,97]. Essas equações deram origem a outras formas de

modelagem visando a implementação nos dispositivos de tecnologia alvo conhecidos como

FPGAs, uma vez conhecidas as equações, essas foram implementadas numa seqüência de

operaçõès, explorando-se as técnicas de Pipeline.

O processo de desenvolvimento do projeto visou a construção de unidades funcionais que

quando unidas ao hardware do elemento de processamento formaram a arquitetura da máquina

paralela sistólica. Esse desenvolvimento foi realizado sobre o eixo do domínio de modelagem

funcional ilustrado pela técnica proposta por [GAJ83] que parte de um alto nível de abstração de

algoritmos e termina na forma de equações Booleanas.

Este ciclo de desenvolvimento, que empregou as metodologias avançadas para projeto de

hardware, demonstrou ser extremamente eficiente, uma vez que foi possível partir de uma

formulação matemática de alto nível proposta por [WAN93] e, a curto prazo, chegar a um

hardware especificado em forma textual (linguagem VHDL).

A linguagem de descrição de hardware VHDL atende muito mais eficientemente do que

os diagramas esquemáticos, a uma série de exigências do projeto de sistemas atuais de hardware,

tais como elevada complexidade e alta velocidade. O uso da linguagem VHDL garante uma

maior robustez de projeto, uma vez que a especificação do hardware é submetida a uma série de

experimentos de validação. Além disso, a linguagem VHDL apoiada pelas ferrramentas da

Xilinx e da Synopsys propiciaram uma infra-estrutura de pesquisa que contribui de maneira

significativa para o desenvolvimento de hardware, bem como para a geração de recursos

humanos numa área atualmente carente no Brasil e de grande valor estratégico, dada a demanda

crescente de informatização da sociedade. A assimilação de novas metodologias avançadas para

144

Page 161: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Conclusões

projeto de hardware são essenciais para a obtenção de sistemas digitais com alto nível de

qualidade e confiabilidade, tornando-se assim o país tecnologicamente competente.

9.1 Sugestões para Desenvolvimento Futuro

Para a continuidade deste trabalho, são sugeridos os seguintes trabalhos:

1. Projeto de uma placa de circuito impresso para interface com o barramento PCI.

Como já foi mencionado, para o arranjo sistólico operar corretamente é necessário uma

máquina nospedeira. A maneira mais eficiente de se conectar o arranjo sistólico à máquina

hospedeira é através de uma placa de circuito impresso PCI [BRI95]. Entretanto, o

desenvolvimento de uma interface para o barramento PCI é um trabalho complexo e lento (talvez

um novo mestrado), pois o LaSD ainda não dispõe de ferramentas apropriadas para esta função.

2. Implementação de um software de comunicação entre o arranjo sistólico e a máquina

hospedeira.

A construção deste software é simples se a placa de circuito impresso para interface com

o barramento PCI estiver pronta. O programa lidará apenas com as operações de entrada e saída

no barramento (leitura e escrita dos registradores).

3. Projeto de um teste de parada de convergência.

O teste de parada de convergência é uma implementação crítica no EP, uma vez que dele

dependerá todo o desempenho do sistema. Se o teste for realizado a cada iteração (como já

sugerido anteriormente), o processamento fica sujeito a um gargalo. O ideal é fazer o teste numa

taxa variável de amostragem de iterações de forma que para cada solução de sistema linear seja

possível a programação deste parâmentro por hardware, levando-se em consideração as

condições do sistema linear em questão. O projeto deste hardware também é complexo, pois

exige grandes mudanças na arquitetura dos EPS.

145

Page 162: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Conclusões

4. Utilização de outras formas de representação dos dados, tais como números em ponto

flutuante.

Uma das limitações do arranjo sistólico projetado é o fato de não ser possível operar com

números em ponto flutuante. A inserção de um hardware aritmético para tal função exige um

novo projeto de mestrado, dadas as dificuldades de implementação do padrão IEEE 754.

146

Page 163: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Bibliografia

10 Referências Bibliográficas

[ARA97] ARAGÃO, ANTONIO C. de O. S., Aplicação da Tecnologia FPGA em Arquiteturas Sistólicas, Tese de Mestrado, Instituto de Ciências Matemáticas e de Computação, Universidade de São Paulo, 1998.

[ASH96] ASHENDEN, PETER J., The Designer's Guide to VHDL, Emorgan Kaufmann Publishers, Inc., 1996.

[ACT95] ACTEL, Corp., FPGA Data Book and Design Guide, 1995.

[ALM94] ALMASI, G. S.; GOTTLIEB, A. Hig,hly Parallel Computing, 2nd Edition, Redwood City, California, 1994.

[ALT96] ALTERA, Corp., Data Book, June, 1996.

[ALT96] ALTERA Inc., Altera Announces the 3.3W FLEX MICA Family, The Altera Advantage News & Views, November, 1996.

[BAL95] BALDWIN, R.; CHUNG M. J. A Formal Approach to Managing Design Processes, IEEE Computer, p. 54-63, February, 1995.

[BAY91] BAYOUMI, M. A. Parallel Algorithms and Architectures for DSP Aplications, Kluwer Academic Publishers, 1991.

[BLI94] BLICICLE, T.; KÕNIG, J.; THIELE, L. A Prototyping Array for Parallel Architectures, More FPGAs, Edited by Will Moore and Wayne Luk, Abingdon EE&CS Books, Oxford, England, 1994.

[BRI95] BRITTON B.; COOK E. Design an FPGA-Based PCI Bus Interface, Electronic Design and Computer Systems, March 6, 1995.

[BR092] BROWN, S. Routing Algoritiuns and Architectures for Field Programmable Gate Arrays, Ph.D. Thesis, Dept. of Electrical Engineering, University of Toronto, February, 1992.

[BRO96a] BROWN, S.; ROSE, J. Architecture of FPGAs and CPLDs: A Tutorial, IEEE Design and Test of Computers, vol. 13, No. 2, pp. 42-57, June 1996.

[BRO9614 BROWN, S. D. Recent Advances in Field-Programmable Gate Arrays, WWW page http://www.eecg.toronto.edu/—brown/papers.html , May, 1996.

[BUR85] BURDEN, R. L.; FAIRES, J. D. Numerical Analysis, Third Edition, Prindle, Weber & Schmidt, Boston, 1985.

[CHA94] CHAN, P. K.; MOURAD, S. Digital Design using Field Programmable Gate Arrays , Prentice Hall, 1994

147

Page 164: Projeto da Unidade de Controle de uma Arquitetura ... · 2.3.1.2 Descrições ao Nível de Transferência de Registradores (RTL) 15 2.3.1.3 Descrições em forma de Portas Lógicas

Tese.vhd (5/6)

245: USE logiblox.logiblox.ALL; 246: 247: ENTITY minha_ramdp_logiblox IS 248: PORT( 249: A: IN std logic_vector(3 DOWNTO 0); 250: SPO: OUT std_logic_vector(16 DOWNTO 0); 251: DI: IN std_logic_vector(16 DOWNTO 0); 252: WR_EN: IN std_logic; 253: WR_CLK: IN std_logic; 254: DPO: OUT std_logic_vector(16 DOWNTO 0); 255: DPRA: IN std_logic_vector(3 DOWNTO 0)); 256: END minha_ramdp_logiblox; 257: 258: ARCHITECTURE sim OF minha_ramdp_logiblox IS 259: SIGNAL START_PULSE: std_logic := 260: TYPE mem_data IS ARRAY (15 DOWNTO 0) OF std_logic_vector(16 DOWNTO 0); 261: HEGIN 262: PROCESS 163: VARIAHDE VD: mem_data; 64: VARIARDE first_time: BOOLEAN := TRUE; 65: HEGIN 66: IF (first_time) THEN

267: VD(0) := ( 101, 1 0 1 ,1 0 1 ,'01 , 1 0', 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0', 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ); 268: VD(1) := ( 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ,'0', 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ); 269: VD(2) := ( 1 0 1 ,1 0 1 ,1 0 1 ,'01 , 1 0 1 , 1 0 1 ,'01 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0,1 0 1 ,101 ); 270: VD(3) := ( 1 0 1 , 1 0 1 , 1 0 1 ,'0',1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ,1 0 1 , 1 0 1 , 1 0 1 , 1 0,1 0 1 , 1 0 1 ,1 0 1 , 1 0 1 , 1 0'); 271: VD(4) := ( 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ,1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ,1 0 1 , 1 0 1 , 1 0 1 ); 272: VD(5) := ( 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ,1 0 1 , 1 0 1 1 1 0 1 ,1 0 1 1 1 0 1 ,1 0 1 , 1 0 1 1 1 0 1 , 1 0 1 ,1 0 1 ,1 0 1 , 1 0 1 , 1 0 1 ); 273: VD(6) := ( 1 0 1 ,1 0 1 , 1 0 1 ,1 0 1 , 1 0 1 ,'0',1 0 1 , 1 0 1 ,1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ,01 , 1 0); 274: VD(7) := ( 1 0 1 , 4 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ,'01 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ); 275: VD(8) := ( 1 0 1 ,1 0 1 ,1 0 1 ,1 0 1 ,1 0 1 ,1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ); 276: VD(9) := ( 1 0 1 ,1 0 1 ,1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ); 277: VD(10) := ( 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ); 278: VD(11) := ( 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 1 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ,'01 , 1 0', 1 0'); 279: VD(12) := ( 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ,1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ,1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ); 280: VD(13) := ( 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ,1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ); 281: VD(14) := ( 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ,1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 , 1 0 1 ); 282: VD(15) := (101, 1 01,101,101,101,101,101,101,101,101,101,101 , 101 , 101 , 101 , 101,101) ; 283: first_time := FALSE; 284: END IF; 285: IF (WR_OLICEVENT AND stdbit2mml(WR_CLK)= 111 AND ntdbit2mv1(WR_CLE'LLAST_VALUE)= 1 0 1 ) 286: AND (WR_EN='1') AND (NOT mvlvec_not01(A)) WIEN 287: VD(mvlvec2int(A)) := stdvec2mv1(DI); 288: END IF; 289: IF (mvlvec_not01(A) OR 290: (stdbit2mv1(WR_CLK) = 'X') 291: OR (WR_CLE'EVENT AND ntdbit2mvI(WR_CLK)=111 AND stdbit2mv1(WR_CLICLAST_VALUE)= 1 0 1 292: AND stdbit2mv1(WR_EN) = 'X' ) 293: ) THEN 294: SPO <= ('X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','(','X'); 295: EDSE 296: SPO <= VD(mvlvec2int(A)); 297: END IF; 298: IF (mvlvec_not01(DPRA)) THEN 299: DPO <= ('X','X','X','X','X','X','X',,'X','X','X','X',,'X','X','X','X'); 300: EDSE 301: DPO <= VD(mvlvec2int(DPRA)); 302: END IF; 303: WAIT ON A, DI, WR_EN, WR_CLK, DPRA, START_PULSE; 304: END PROCESS; ing. END sim;