• Nenhum resultado encontrado

Análise e comparação de métodos soft/hard em sistemas reconfiguráveis

N/A
N/A
Protected

Academic year: 2021

Share "Análise e comparação de métodos soft/hard em sistemas reconfiguráveis"

Copied!
82
0
0

Texto

(1)

RAMIRO MANUEL

SILVA OLIVEIRA

Análise e comparação de métodos soft/hard em

sistemas reconfiguráveis

(2)

RAMIRO MANUEL

SILVA OLIVEIRA

Análise e comparação de métodos soft/hard em

sistemas reconfiguráveis

Dissertação apresentada à Universidade de Aveiro para cumprimento dos requisitos necessários à obtenção do grau de Mestre em Engenharia Electrónica e Telecomunicações, realizada sob a orientação científica do Dr. Valeri Skliarov, Professor Catedrático do Departamento de Electrónica,

Telecomunicações e Informática da Universidade de Aveiro, e co-orientação da Dr.ª Iouliia Skliarova, Professora Auxiliar do Departamento de Electrónica, Telecomunicações e Informática da Universidade de Aveiro

(3)
(4)

o júri

presidente Prof. Dr. José Alberto Gouveia Fonseca

Professor Associado do Departamento de Electrónica, Telecomunicações e Infórmatica da Universidade de Aveiro

Prof. Dr. Valeri Sklyarov

Professor Catedrático do Departamento de Electrónica, Telecomunicações e Infórmatica da Universidade de Aveiro

Prof. Dr.ª Iouliia Skliarova

Professora Auxiliar do Departamento de Electrónica, Telecomunicações e Informática da Universidade de Aveiro

Prof. Dr. Hélio Mendes de Sousa Mendonça

Professor Auxiliar do Departamento de Engenharia Electrónica e de Computadores da Faculdade de Engenharia da Universidade do Porto

(5)

agradecimentos Agradeço aos meus pais, por todo o apoio que me deram, não só durante a realização deste projecto, como também durante a minha vida universitária e não só, agradeço também a minha irmã, e a toda a minha família, que sempre me apoiou.

Agradeço também aos meus amigos, por todo o apoio e amizade, não vale a pena dizer nomes que vocês sabem quem são.

Por fim quero agradecer também ao Prof. Valeri Sklyarov e a Prof. Iouliia Skliarova pela paciência e por toda a ajuda dada durante este projecto. Obrigado por tudo.

(6)

palavras-chave Field-Programmable Gate Array, PowerPC, Processadores Embutidos, Máquinas de Estados Finitos

resumo O avançar da tecnologia na área dos sistemas digitais, que se traduziu num aumento significativo da velocidade e numa diminuição dos consumos e das dimensões, levou ao aparecimento do conceito de SoC (System on Chip). Como o próprio nome indica, estes sistemas são compostos por diversos componentes, todos na mesma pastilha de silício (microprocessadores, memórias, ADC, controladores I/O, etc.).

Nesta dissertação pretende-se comparar alguns desses sistemas e analisar as suas vantagens e desvantagens, quando comparados com outras soluções existentes.

Ao longo deste trabalho são feitas comparações de desempenho entre um processador embutido numa FPGA, uma FPGA e um PC. Para tal são usados algoritmos com base em máquinas de estados finitos.

(7)

keywords Field-Programmable Gate Array, PowerPC, Embedded Processors, Finite-State Machines

.

abstract The advance of the technology in the area of digital systems, which as translated itself in a significant increase of the speed and in a decrease in consumptions and dimensions, has led to the appearing of the SoC concept (System on Chip). As the name indicates, these systems are composed by several components, all in the same silicon wafer (microprocessors, memories, ADC, I/O controllers, etc.).

In this dissertation it is intended to compare some of those systems, and analyze their advantages and disadvantages, when compared with other existing solutions.

Throughout this work, comparisons between an embedded processor, a FPGA and a PC are made. In order to do this Finite-State Machine based algorithms are used.

(8)
(9)

I

Índice

Capítulo 1 Introdução ... 1 1.1 Enquadramento ... 1 1.2 Objectivos e Motivação ... 1 1.3 Metodologia ... 2 1.4 Estrutura da dissertação ... 2

Capítulo 2 Sistemas Digitais Reconfiguráveis ... 3

2.1 Introdução ... 3

2.2 Sistemas computacionais ... 3

2.3 Sistemas embutidos ... 5

2.4 Sistemas de Controlo Embutidos ... 6

2.5 Microprocessador ... 7

2.6 Microcontrolador ... 8

2.7 ASSPs ... 9

2.8 FPGA ... 10

2.8.1 Introdução ... 10

2.8.2 Evolução das FPGA ... 11

2.8.3 Estrutura Interna ... 12

2.8.4 Usos das FPGA ... 14

2.8.5 Fabricantes ... 14

2.8.6 Xilinx ... 14

2.8.7 Processadores embutidos em FPGA ... 15

2.9 Linguagens de descrição de Hardware (HDL) ... 16

2.10 Conclusões ... 16

Capítulo 3 Ferramentas de apoio ... 17

3.1 Introdução ... 17

3.2 PowerPC ... 18

3.2.1 Introdução ... 18

3.2.2 Detalhes da Arquitectura PowerPC ... 18

3.2.3 Níveis da arquitectura PowerPC... 19

3.2.4 Arquitectura PowerPC para sistemas embutidos ... 21

3.3 PPC405 ... 22

3.3.1 Características do PPC405... 22

3.4 FX12 ... 28

3.5 Ferramentas de Apoio ... 29

3.5.1 Xilinx Integrated Synthesis Environment (ISE) ... 29

3.5.2 XILINX Embedded Development Kit (EDK) ... 32

3.5.3 Microsoft Visual Studio ... 34

3.5.4 PuTTY ... 35

3.6 Conclusões ... 36

Capítulo 4 Implementação do algoritmo de ordenação de dados ... 37

4.1 Introdução ... 37

4.2 Implementação em PowerPC ... 37

(10)

II

4.2.2 Xilinx Board Description - XBD ... 39

4.2.3 Desenvolvimento do software ... 39

4.2.4 Programação da placa ... 40

4.2.5 Profiling ... 41

4.2.6 Visualização dos Resultados ... 41

4.3 Implementação na FPGA ... 42

4.3.1 Máquinas de Estados Finitos ... 42

4.3.2 Máquina de estados finitos simples (FSM) ... 42

4.3.3 Alterações feitas ... 44

4.4 Implementação em Microsoft Visual Studio ... 45

4.5 Recursividade ... 46

4.6 Conclusões ... 47

Capítulo 5 Resultados e Conclusões ... 49

5.1 Introdução ... 49 5.2 Tecnologia Utilizada ... 49 5.3 Metodologia Utilizada ... 49 5.3.1 Implementação 1 ... 50 5.3.2 Implementação 2 ... 50 5.3.3 Implementação 3 ... 51 5.3.4 Implementação 4 ... 51 5.4 Resultados da FPGA ... 51 5.5 Resultados no PC ... 53 5.6 Resultados no PowerPC ... 54

5.7 Comparação de tempos por dados ... 55

5.8 Conclusões ... 56

5.9 Investigação Futura ... 56

Referências ... 57

Anexos A – Xilinx Board Description FX12 ... 59

(11)

III

Lista de Figuras

Figura 2.1 - Sistema Computacional básico ... 4

Figura 2.2 - Lei de Moore [9] ... 5

Figura 2.3 - Rotina de Serviço as Interrupções [21] ... 7

Figura 2.4 - Exemplo de um microcontrolador usado no controlo de um motor [21]... 8

Figura 2.5 - Chip ASSP para o controlo de um motor de indução AC de 3 fases [21] ... 9

Figura 2.6 - FPGA [11] ... 10

Figura 2.7 - Evolução da arquitectura das FPGA [12] ... 11

Figura 2.8 - Estrutura Interna FPGA [14] ... 12

Figura 2.9 - IOB [14] ... 12

Figura 2.10 – CLB [14] ... 13

Figura 2.11 - Comparação entre famílias de FPGAs [14] ... 15

Figura 2.12 – Processadores embutidos [21] ... 16

Figura 3.1 - Arquitectura PowerPC da Virtex-4 [13] ... 18

Figura 3.2 - Relação das arquitecturas PowerPC [5] ... 21

Figura 3.3 - Registos do PowerPC405 [5] ... 26

Figura 3.4 - Organização interna do PPC405 [5] ... 27

Figura 3.5 - FX12 Nu Horizons [3] ... 28

Figura 3.6 - Diagrama de blocos da FX12 [3] ... 29

Figura 3.7 - Ambiente de trabalho do Xilinx ISE ... 29

Figura 3.8 - Diagrama de fluxo do Xilinx ISE [4] ... 31

Figura 3.9 - Diagrama de fluxo do EDK[1] ... 33

Figura 3.10 - Ambiente de Trabalho do Xilinx XPS ... 34

Figura 3.11 - Ambiente de Trabalho do Xilinx SDK ... 34

Figura 3.12 - Ambiente de trabalho do Visual Studio ... 35

Figura 3.13 - Ambiente de trabalho do PuTTY ... 36

(12)

IV

Figura 4.2 - Diagrama de fluxo da RHFSM [16]... 39

Figura 4.3 - Gerador do Executable and Linkable File ... 40

Figura 4.4 - Profiling no SDK ... 41

Figura 4.5 - Resultados vistos no PuTTY ... 42

Figura 4.6 - Máquina de Moore ... 43

Figura 4.7 - Máquina de Mealy ... 43

Figura 4.8 - Propriedades do Projecto ... 44

Figura 4.9 -FX12 DAC [3] ... 45

Figura 4.10 - Nexys2 DAC [22] ... 45

Figura 4.11 - Diagrama da RHFSM usada [16] ... 47

Figura 5.1- Implementação 1 [18] ... 50

Figura 5.2 - Implementação 2 [18] ... 51

Figura 5.3 - Comparação temporal dos algoritmos usados ... 53

(13)

V

Lista de Tabelas

Tabela 5.1 Comparação dos resultados dos algoritmos... 51

Tabela 5.2 - Resultados da implementação 1 ... 52

Tabela 5.3 - Resultados da implementação 2 ... 52

Tabela 5.4 - Resultados da implementação 3 ... 52

Tabela 5.5 - Resultados da implementação 4 ... 52

Tabela 5.6 - Resultados no PC ... 53

Tabela 5.7 - Resultados com processador a 50 MHz ... 54

Tabela 5.8 - Resultados com processador a 100 MHz ... 54

Tabela 5.9 - Resultados com processador a 200 MHz ... 54

Tabela 5.10 - Resultados com processador a 300 MHz ... 54

(14)
(15)

1

Introdução

Capítulo 1 -

1.1 Enquadramento

O avançar da tecnologia na área dos sistemas digitais, que se traduziu num aumento significativo da velocidade e numa diminuição dos consumos e das dimensões, levou ao aparecimento do conceito de SoC (System on Chip). Como o próprio nome indica, estes sistemas são compostos por diversos componentes, todos na mesma pastilha de silício (microprocessadores, memórias, ADC, controladores I/O, etc.). Estes sistemas tornaram a construção de sistemas electrónicos mais barata, sendo também mais eficientes e com menor consumo, o que levou a que os projectistas aderissem a utilização dos mesmos.

Dentro destes dispositivos podemos encontrar a FPGA. Desde a sua introdução em 1985 pela Xilinx [7], que esta tem sofrido um grande desenvolvimento, quer na sua capacidade lógica, quer na sua estrutura, visto hoje em dia incorporar uma grande variedade de componentes digitais embutidos, tais como processadores e outros.

Actualmente podem ser encontradas variadas FPGA com processadores embutidos, que além de facilitarem a tarefa de programação, visto usarem linguagens de programação de alto nível e amplamente conhecidas, como C/C++, ao contrário das linguagens de descrição de

hardware, permitem também um acesso directo ao processador. Estes processadores podem ir

de pequenos microcontroladores, com capacidade para executar poucos milhões de operações por segundo, até sistemas paralelos compostos por vários processadores de elevado desempenho.

1.2 Objectivos e Motivação

Com o aumentar da capacidade das FPGA, tornou-se possível incorporar nestas, processadores com uma certa complexidade. Tais processadores podem estar directamente inseridos na pastilha de silício (Hard-core), ou podem ser implementados através de um processo

(16)

2

de síntese (Soft-core). Como estes dispositivos têm uma grande flexibilidade torna-se possível acoplar a estes periféricos. Os periféricos ligados ao processador provêm de componentes existentes em bibliotecas IP, ou podem ser construídos pelo projectista. Depois de terminada a construção, é possível programá-lo em C/C++.

Como tal, é interessante verificar se a utilização de um processador embutido é, não apenas mais fácil, mas também mais eficiente do que uma FPGA.

1.3 Metodologia

O objectivo deste trabalho é verificar que método é mais eficaz para correr certos algoritmos, neste caso algoritmos baseados em máquinas de estados finitos recursivas hierárquicas. O plano proposto inicialmente suponha correr vários algoritmos diferentes, no entanto foi apenas possível correr um algoritmo.

Os vários testes foram feitos usando o Xilinx ISE para correr os algoritmos na FPGA e o

Xilinx EDK para correr os algoritmos no processador embutido, assim como o Microsoft Visual Studio 2010 para correr o algoritmo no PC.

1.4 Estrutura da dissertação

Esta tese encontra-se dividida em 5 capítulos. Para além deste, existem ainda os seguintes:

 Capitulo 2 – Neste capítulo é feita uma introdução a vários conceitos, como sistemas computacionais e sua história e evolução, entre outros

 Capitulo 3 – Ao longo deste capítulo são referidas e identificadas as ferramentas usadas neste trabalho, os microcontroladores, assim como o software usado ao longo deste trabalho.

 Capitulo 4 – No quarto capítulo é feita uma descrição do trabalho efectuado nas várias plataformas, assim como também certos conceitos que ajudaram a fazer a comparação entre as várias plataformas

 Capitulo 5 – No último capítulo são apresentados os resultados obtidos, assim como também são mostradas as conclusões e enumeradas algumas possibilidades para trabalhos futuros.

 Anexo A – Xilinx Board Description FX12

(17)

3

Sistemas Digitais Reconfiguráveis

Capítulo 2 -

2.1 Introdução

A grande evolução dos dispositivos lógicos programáveis, normalmente referidos como PLD, permite neste momento projectar sistemas digitais de grande complexidade, recorrendo a ferramentas que se encontram acessíveis a todos. Neste capítulo é feita uma introdução a variados conceitos, entre estes os sistemas computacionais, sistemas embutidos com base em FPGA, etc., sendo também feita uma comparação entre os sistemas tradicionais e os sistemas embutidos.

2.2 Sistemas computacionais

Por norma os sistemas computacionais são divididos em dois grupos, relativamente à sua flexibilidade e aplicação. De um lado podemos encontrar o computador pessoal (PC), extremamente flexível, podendo executar variadas aplicações, recorrendo a um sistema operativo que gere os recursos do sistema. Do outro lado podemos encontrar os sistemas computacionais especializados, nomeadamente os sistemas embutidos, que por norma correm uma aplicação em permanência. Todavia estas diferenças, estes dois sistemas partilham princípios básicos de operação assim como uma arquitectura física semelhante, o hardware. A sua principal diferença é portanto a aplicação a que se destinam, diferindo portanto ao nível do software. Como tal, podemos considerar um sistema computacional, ao nível do hardware, como, um processador que executa aplicações, memória de variados tipos para armazenar tanto programas, como dados, e finalmente por dispositivos de entrada e saída (I/O) que têm como função a comunicação com o exterior, rato, teclado, monitor, etc., conforme ilustrado na figura 2.1.

(18)

4

Processador

Periféricos

I/O

Memória

Ligações

Figura 2.1 - Sistema Computacional básico

Neste sistema o mais importante é o processador, que manipula e processa a informação seguindo uma determinada ordem, formando assim um programa. Um tipo de processador muito utilizado é o microprocessador, muitas vezes chamado CPU. Este tipo de processador está implementado num único circuito integrado, sendo talvez os mais famosos os Pentium da Intel, existindo no entanto outros. A implementação dentro do mesmo circuito integrado de um processador, memória e alguns dispositivos de I/O é normalmente designado por microcontrolador. A comunicação entre estes é feita dentro do próprio circuito integrado, esta solução tem por norma como finalidade o uso em sistemas embutidos. Existe uma alargada variedade de microcontroladores disponíveis, desde pequenas PICs e AVRs até processadores

PowerPC com controladores I/O embutidos.

As últimas quatro décadas tem sido pródigas na evolução tecnológica relativa aos circuitos integrados, obedecendo a Lei de Moore, que diz que num período de 18 a 24 meses o número de transístores presentes num circuito integrado duplica [9]. Analisando a figura 2.2, podemos observar esse crescimento.

(19)

5

2.3 Sistemas embutidos

Por norma, os sistemas embutidos têm como finalidade sistemas com exigências de baixo custo e consumo de energia, poucos componentes, resposta em tempo real e uma coexistência entre hardware e software. Apesar do utilizador comum ter menos noção da sua existência, estes tem uma quota de mercado muito maior, podendo ser encontrados em variados tipos de sistemas usados no dia-a-dia em casas, (TVs, DVDs, consolas de jogos), em escritórios (impressoras, WLAN), na indústria automóvel (controlo do motor, travões ABS), na indústria aeronáutica (navegação, piloto-automático), em dispositivos de uso pessoal (telemóveis, leitores de mp3, PDAs, cartões electrónicos). Por norma os sistemas embutidos costumam ser mais simples e com menor capacidade de processamento que um PC, mas algumas aplicações requerem um poder de processamento maior, tal como um sistema distribuído de controlo de um avião. Em geral, um sistema embutido não possui sistema operativo e quase nunca permite a instalação de um

software, estando o seu software presente numa memória permanente. Em variadas situações

estes sistemas são usados para substituir circuitos electrónicos específicos, pois o uso de microprocessadores embutidos leva a que a resolução do problema seja feita por software e não por hardware, o que em aplicações mais complexas simplifica a sua construção e manutenção.

Com a diminuição do tamanho do transístor e com o crescimento da densidade lógica, os sistemas digitais registaram um grande crescimento, como um aumento das suas competências e

(20)

6

velocidades, sofrendo assim um aumento também na complexidade. Assim, este avanço da tecnologia deu origem a um novo conceito de sistema integrado, o SoC, onde existe uma implementação de sistemas embutidos integrados num só circuito. Com isto tornou-se possível criar sistemas onde todos os componentes (processador, memória, e controladores de comunicação I/O) estão presentes dentro de mesmo circuito integrado. Esta abordagem apresenta inúmeras vantagens provenientes da interacção muito próxima entre os diferentes componentes do sistema, pois permite um aumento da velocidade, e uma diminuição do tamanho, custo e consumo de energia do sistema, correspondendo deste modo às exigências de variadas aplicações. Como tal este tipo de sistemas está cada vez mais presente em aplicações à nossa volta. Deste modo os sistemas embutidos são os sistemas com o maior crescimento na indústria dos sistemas computacionais, uma vez que podem ser usados em um número crescente de aplicações.

2.4 Sistemas de Controlo Embutidos

Esta evolução dos circuitos integrados nas últimas quatro décadas revolucionou os sistemas electrónicos, pois estes tinham como base componentes como, amplificadores operacionais, resistências, condensadores e bobinas. Estes sistemas tinham como vantagem oferecerem processos paralelos, mas tinham como grande desvantagem a pouca fiabilidade, devido à temperatura e ao envelhecimento. O microprocessador 4004 da Intel foi a primeira plataforma digital configurável através de software. A partir daí com o aparecimento de componentes digitais cada vez mais diversificados, o controlo embutido passou em grande maioria para o digital. Nos sistemas de controlo embutido podemos identificar variadas plataformas digitais, cada uma com as suas vantagens e desvantagens. Dentro deste meio as plataformas que podem ser usadas actualmente para implementação de um controlador digital são:

 Microprocessadores  Microcontroladores

 ASSPs (Application Specific Standard Product)  FPGAs

Como tal, quando pretendemos implementar um qualquer controlador digital, temos que ter em conta todas a características inerentes a cada uma destas soluções. Assim, conforme a aplicação final, as necessidades que levam a escolha de uma plataforma, podem ser as seguintes:

(21)

7  Preço

 Tempo de resposta em tempo real  Quantidade de produção

 Ferramentas de programação

 Bibliotecas e código portável e utilizável

2.5 Microprocessador

Como já foi referido o microprocessador foi a primeira plataforma digital configurável por

software, revolucionando a metodologia dos sistemas digitais como nenhum outro componente,

continuando ainda a ser a escolha de referência em variadas áreas. Uma destas áreas é a área de aplicações em tempo real, com elevadas taxas de actualização, que requerem que o processador seja programado no seu assembly nativo. Apesar de a grande maioria dos microprocessadores comerciais usados hoje sejam utilizados em aplicações de dados, há microprocessadores embutidos em microcontroladores para aplicações de controlo em tempo real. Estes usam interrupções para diferentes objectivos dentro do mesmo controlador. Cada interrupção é gerada em função do tempo de execução de determinada tarefa [21].

Na figura 2.3 podemos observar um esquema do funcionamento de um sistema de controlo digital através de rotinas de serviço de interrupção. Como podemos observar, sempre que é activada uma interrupção, o microprocessador executa o respectivo algoritmo e actualiza os

(22)

8

seus resultados. A grande desvantagem deste tipo de solução é que o microprocessador (de uso geral) pode apenas executar uma instrução de cada vez, e por isso pode não ser suficientemente rápido para atender múltiplas interrupções de diferentes aplicações de um controlador, sendo assim incapaz de implementar controladores mais complexos

2.6 Microcontrolador

Um microcontrolador, por norma, combina um processador com vários periféricos no mesmo circuito integrado, fornecendo assim mais soluções para controladores em sistemas embutidos, pois o facto de combinarem periféricos, que antes eram externos no circuito integrado, permite criar sistemas mais complexos, oferecendo assim maior integração e consequentemente um menor custo e tamanho mais reduzido que os microprocessadores.

Figura 2.4 - Exemplo de um microcontrolador usado no controlo de um motor [21]

Do mesmo modo que nos microprocessadores, a divisão das tarefas vai ser feita de acordo com a de necessidade uma taxa de actualização maior ou menor. Assim, se a taxa de actualização necessária for pequena podemos usar linguagens de programação, no entanto se a taxa de actualização necessária for elevada, vamos ter que recorrer ao assembly nativo do

(23)

9

respectivo microcontrolador. Deste modo, são usados compiladores e linguagens assembly para converter programas escritos em linguagens de alto-nível, em código máquina, para em seguida armazenar esse código na memória embutida do microcontrolador.

Um dos exemplos mais comuns de utilização de um microcontrolador é o controlo de um motor. Para a maioria das aplicações o microcontrolador é a solução mais adequada, embora este tipo de solução possa ter como grande desvantagem possuir um número fixo de periféricos. Embora existam no mercado uma grande variedade de microcontroladores, nem sempre é possível encontrar um que cumpra com exactidão todas as exigências de uma determinada aplicação [21].

2.7 ASSPs

Uma ASSP é, como o próprio nome indica, um componente lógico configurado para uma aplicação específica, podendo ser aplicado numa extensa gama de sistemas, tendo assim uma grande procura devido as suas características. Estes dispositivos são usados em todas as indústrias, deste as comunicações até à automóvel. Por norma as ASSP são controladas através de uma palavra de controlo, todavia algumas, mais configuráveis, fornecem endereços, dados e controlo de barramentos para serem ligados a um processador de um sistema que os controla [21].

(24)

10

2.8 FPGA

2.8.1 Introdução

Para o fim ficaram as FPGAs, a base deste trabalho. Numa FPGA há a possibilidade de num mesmo circuito integrado colocar um processador e toda a lógica necessária e específica a uma dada plataforma. Assim, uma FPGA junta as vantagens das três plataformas enunciadas anteriormente. Todavia, os microcontroladores são muitas vezes escolhidos em detrimento das FPGAs devido ao preço inferior e ao menor consumo de energia, no entanto, o mercado das FPGAs tem vindo a crescer devido as variadas vantagens oferecidas pelas mesmas, tais como a possibilidade de reutilizar código e bibliotecas, a portabilidade do código para vários fornecedores e ainda ferramentas de programação de baixo custo. Em adição a estas vantagens, existem imensos núcleos de propriedade intelectual que permitem aumentar muito a produtividade, pois possibilitam uma prototipagem rápida dos sistemas. Enquanto anteriormente estes dispositivos tinham por norma pouca capacidade, hoje em dia são capazes de suportar sistemas lógicos de grande capacidade, sendo assim possível, usando apenas uma FPGA, criar sistemas embutidos com controladores de elevada complexidade. Deste modo o preço cada vez mais acessível e a crescente capacidade, aliadas à reconfigurabilidade, permitem uma grande flexibilidade no desenho de sistemas embutidos digitais. Assim, os sistemas baseados em FPGAs são cada vez mais economicamente viáveis para variadas aplicações, visto integrarem num único circuito integrado variados componentes.

(25)

11

2.8.2 Evolução das FPGA

Durante a década de 80 grande parte dos sistemas digitais eram criados integrando vários componentes já existentes, como microprocessadores, controladores I/O, etc.. Logo quando se pretendia criar um sistema mais complexo, era necessário um elevado número de componentes, o que se traduzia num sistema de grandes dimensões, com uma frequência máxima reduzida. Isto levou ao aparecimento de circuitos integrados personalizados, que num único chip incorporavam todos os componentes necessários para um projecto, no entanto, devido a serem personalizados, a sua construção era dispendiosa e morosa, tudo isto tornava a sua produção em pequenas quantidades pouco atractiva.

A solução foram as FPGA, que apareceram no mercado em 1985 pela mão da Xilinx, permitindo o desenvolvimento de sistemas digitais, de grande complexidade, em um único chip, com um tempo de projecto muito curto devido às potentes ferramentas CAD.

Observando a figura 2.7 podemos concluir que, desde a introdução da FPGA no mercado, houve uma grande evolução na sua arquitectura sendo que, hoje em dia podemos encontrar implementados dentro do mesmo chip processadores usando bibliotecas IP, programados mais tarde através de linguagens como C e C++, oferecendo uma grande flexibilidade do desenvolvimento de aplicações.

(26)

12

2.8.3 Estrutura Interna

A estrutura interna de uma FPGA é constituída por vários tipos de componentes, entre eles, IOBs, CLBs entre outros, como pode ser visto na figura 2.8.

Figura 2.8 - Estrutura Interna FPGA [14]

IOB (Input/Output Block)

2.8.3.1

Actualmente as FPGAs oferecem suporte a variados standards de I/O, fornecendo assim imensas possibilidades de interacção com diversos componentes. Hoje em dia uma FPGA oferece mais de uma dúzia de bancos de I/O, permitindo assim uma grande flexibilidade no suporte de I/O [14].

(27)

13

CLB (Configurable Logic Block)

2.8.3.2

É a unidade básica numa FPGA. O seu número e as suas características variam de FPGA para FPGA, mas cada CLB consiste numa matriz de troca configurável com 4 ou 6 entradas, alguns circuitos de selecção e flip-flops. A matriz de troca é altamente flexível e pode ser configurada para lidar com lógica combinatória, RAM ou shift-registers [14].

Figura 2.10 – CLB [14]

DCM (Digital Clock Management)

2.8.3.3

Esta característica é fornecida pela maioria das placas no mercado, e praticamente eliminou o skew (i.e. sinal do relógio não chega síncrono a todos os componentes), variações de temperatura, acoplamentos capacitivos e outros problemas que os projectistas tinham que enfrentar quando criavam sinais globais em FPGA no passado [14].

Ligações

2.8.3.4

Enquanto o CLB fornece a capacidade lógica, ligações flexíveis encaminham os sinais entre CLBs e de e para os blocos de I/O. As ligações podem ser de vários tipos, das desenhadas para ligar CLBs, a ligações com baixo skew para sinais de relógio e outros sinais. Os softwares tornam as ligações invisíveis ao utilizador, excepto quando especificado pelo utilizador, o que reduz significativamente a complexidade do projecto [14].

Memória

2.8.3.5

Blocos de memória embutidos existem em quase todas as FPGA, o que permite um projecto com memória on-chip. As FPGA fornecem até 10Mb de memória on-chip. Hoje em dia a maior parte das FPGA possui incorporadas memórias RAM, normalmente chamadas Block RAM. O

(28)

14

seu número varia de dispositivo para dispositivo. Esta memória permite a diminuição dos blocos CLB utilizados, facilitando a criação de sistemas digitais. [14]

2.8.4 Usos das FPGA

O mercado das FPGA está em grande expansão. Devido à sua grande versatilidade é cada vez mais usada, permitindo, com um custo relativamente baixo, construir plataformas e sistemas reconfiguráveis. As FPGA são usadas nas seguintes áreas, entre outras:

 Aeroespacial/Militar  Automóvel

 Emissões Áudio e Visuais  Doméstico

 Industrial, Científica e Médica  Comunicações com e sem Fios

2.8.5 Fabricantes

Os principais fabricantes são a Xilinx e a Altera, juntos controlam cerca de 80% do mercado, com a Xilinx a controlar cerca de 50%. Existem outros fabricantes como a Lattice

Semiconductor, Actel, QuickLogic, etc.. Como a FPGA usada neste trabalho é da Xilinx, será feita

em seguida uma abordagem aos seus produtos.

2.8.6 Xilinx

A Xilinx foi a inventora da FPGA, sendo hoje em dia a principal fabricante das mesmas. Fundada em 1984, possui hoje em dia mais de 3000 empregados, tendo até hoje registado mais de 2000 patentes. Foi também a primeira companhia a praticar o outsourcing do fabrico de componentes. O seu alcance expande-se por variadas áreas e fabrica diversos produtos. Até 2010, a Xilinx fornecia dois principais grupos de famílias de FPGAs, as Spartan de baixo custo, e as Virtex topo de gama. A partir de 2010, vai passar a oferecer três, as Virtex, que continuarão a ser topo de gama, introduzindo também duas novas famílias, as Kintex, que se posicionarão no meio do mercado, e as Artix, que serão de baixo custo. Todas estas famílias terão transístores de 28nm [27]. Podemos na figura 2.11 a comparação entre famílias de FPGA de gerações anteriores.

(29)

15

2.8.7 Processadores embutidos em FPGA

Como já foi referido, hoje em dia a grande parte dos fabricantes de FPGAs oferecem processadores embutidos fisicamente em silício (hard IP), ou processadores que podem ser implementados através de lógica programável (soft IP). Deste modo, podemos ter um processador com blocos de lógica convencionais, tudo dentro do mesmo circuito integrado, combinando software e hardware, disponibilizando flexibilidade total no controlo de uma dada aplicação.

Existem diversos algoritmos difíceis de implementar em HDL, que não sendo críticos em relação ao tempo de resposta, podem ser implementados através de um processador embutido na FPGA (software), enquanto outras tarefas de controlo, mais sensíveis relativamente ao tempo de resposta são implementadas em hardware, usando os recursos lógicos programáveis da FPGA. De modo a combinar hardware e software, os fornecedores de FPGA disponibilizam um conjunto de ferramentas que facilitam este tipo de implementações.

(30)

16

Podemos ver aqui na figura 2.12 alguns processadores existentes no mercado, tanto implementados em hardware como em software.

2.9 Linguagens de descrição de Hardware (HDL)

Em electrónica, uma HDL é qualquer linguagem de uma classe de linguagens de computador usadas para descrição formal de circuitos electrónicos. Pode ser usada para descrever o método de operação do circuito, o seu desenho e testar o seu funcionamento simulando-o. Em contraste com uma linguagem de programação de software, a sintaxe e a semântica de uma HDL inclui notações explícitas para expressar tempo e simultaneidade [20]

As principais linguagens são VHDL e Verilog, no entanto hoje em dia é possível programar com linguagens de alto nível como Matlab e C++, que posteriormente são convertidas em linguagens de descrição de hardware [19].

2.10 Conclusões

Neste capítulo foi feita uma abordagem aos sistemas computacionais e a vários tipos de sistemas englobados dentro dessa mesma descrição. A abordagem as FPGA foi mais aprofundada devido ao facto de serem a base deste trabalho.

(31)

17

Ferramentas de apoio

Capítulo 3 -

Neste capítulo vão ser discutidos e apresentados os sistemas usados no decorrer desta tese, nomeadamente a placa Nu Horizons FX12 e o PowerPC 405. Serão também introduzidas algumas ferramentas tais como o Xilinx ISE, o Xilinx EDK e o Microsoft Visual Studio 2010 usado como método de comparação. Para além disso, serão discutidos alguns detalhes do fluxo de projecto das respectivas ferramentas. No entanto, vai ser dado um especial destaque ao processador PowerPC405.

3.1 Introdução

Como já foi referido anteriormente, os microcontroladores são uma solução que integra um sistema computacional, num único dispositivo físico, sendo que no mesmo dispositivo podemos encontrar, o processador, a memória de instruções e dados, portos de entrada e saída e ainda alguns periféricos, naturalmente todos estes dispositivos estão ligados internamente. Na prática podemos dizer que a utilização de um microcontrolador apenas requer a correcta interligação dos portos de entrada e saída, à aplicação desejada, a respectiva programação e a alimentação.

A evolução das FPGAs veio revolucionar a criação de sistemas integrados complexos num único dispositivo, e é actualmente reconhecida como sendo a melhor solução para os requisitos do mercado. Anteriormente foi dito que o desenvolvimento de um sistema integrado passa pela concepção de todo o hardware e software necessários à aplicação alvo, neste caso a Xilinx disponibiliza a ferramenta EDK, que permite a construção completa de um sistema embutido de controlo especializado. Esta ferramenta pode ter o processador PowerPC como unidade de processamento e permite adicionar núcleos de propriedade intelectual pré-concebidos ou criados, para aumentar as funcionalidades do sistema, sendo isto feito através da ferramenta de síntese ISE também disponibilizada pela Xilinx.

(32)

18

3.2 PowerPC

3.2.1 Introdução

O PowerPC405 é uma implementação de 32-bit da arquitectura PowerPC para sistemas embutidos, que é derivada da arquitectura PowerPC. Esta arquitectura define parâmetros que garantem a implementação de processadores compatíveis ao nível das aplicações, permitindo assim uma flexibilidade alargada no desenvolvimento de implementações derivadas desta arquitectura, que vão ao encontro das necessidades específicas do mercado.

Figura 3.1 - Arquitectura PowerPC da Virtex-4 [13]

3.2.2 Detalhes da Arquitectura PowerPC

Esta arquitectura é de 64-bit com um subset de 32bit, sendo que vão ser apenas enunciados os aspectos da arquitectura de 32 bits referente ao PPC405.

Por norma a arquitectura PPC define o seguinte:  Conjunto de Instruções

 Modelo de Programação  Modelo da memória  Modelo de excepções

 Modelo de gestão da memória  Modelo de gestão temporal

(33)

19

Conjunto de instruções

3.2.2.1

Especifica o tipo de instruções (como load/store, aritmética de inteiros, etc.), as instruções específicas, e a codificação usada para as instruções. A definição do conjunto de instruções especifica também os modelos de endereçamento usado para aceder à memória.

Modelo de Programação

3.2.2.2

Define o conjunto de registos e convenções de memória, incluindo detalhes relacionados com ordenação de bit e byte, e convenções de como os dados são armazenados.

Modelo da Memória

3.2.2.3

Define o tamanho do espaço para endereços e a sua subdivisão em páginas, define também atributos para especificar memory-region cacheability, ordenação de byte, (big-endian ou little-endian), coerência e protecção.

Modelo de excepção

3.2.2.4

Define o conjunto de excepções e as condições que podem causar excepções. Este modelo especifica características de excepção, tais como se são precisas ou imprecisas, síncronas ou assíncronas e maskable ou non-maskable. Define ainda os vectores de excepção e o conjunto de registos usado quando ocorre uma interrupção como resultado de uma excepção, o modelo garante ainda espaço na memória para excepções específicas de uma aplicação.

Modelo de gestão de memória

3.2.2.5

Define o particionamento, configuração e protecção da memória. Especifica ainda como é feita a tradução da memória, define instruções especiais de controlo de memória, e determina ainda outras características da gestão de memória.

Modelo de gestão temporal

3.2.2.6

Define recursos que permitem que a hora do dia seja determinada e os recursos e mecanismos necessários para suportar excepções relacionadas com o tempo.

3.2.3 Níveis da arquitectura PowerPC

Os aspectos referidos anteriormente da arquitectura PowerPC são definidos em 3 níveis. Esta divisão em níveis proporciona flexibilidade ao permitir diferentes graus de compatibilidade

(34)

20

de software numa ampla gama de implementações. Podemos considerar, por exemplo, uma implementação de um controlador embutido pode suportar o conjunto de instruções do utilizador, mas não a gestão de memória, excepções e modelos de cache.

Os três níveis são os seguintes:

Arquitectura do conjunto de instruções do utilizador (UISA)

3.2.3.1

 Define o nível da arquitectura a que o software ao nível do utilizador deve obedecer.  Define o conjunto básico de instruções e os registos ao nível do utilizador, tipo dos

dados, convenções de memória de vírgula-flutuante, modelo de excepção visto pelos aplicações do utilizador, modelo de memória e modelo de programação.

Todas as implementações PowerPC respeitam o UISA.

Arquitectura de ambiente virtual (VEA)

3.2.3.2

 Define funcionalidades adicionais ao nível do utilizador, que não se enquadram nos requisitos habituais do software ao nível do utilizador.

 Descreve o modelo de memória para um ambiente em que vários dispositivos tentam aceder à memória.

 Define aspectos do modelo de cache e instruções de controlo de cache.

 Define os recursos relacionados com a gestão temporal do ponto de vista do utilizador.

As implementações que respeitam o VEA respeitam igualmente o UISA

Arquitectura de ambiente operativo (OEA)

3.2.3.3

 Define recursos ao nível do supervisor, normalmente necessários por um sistema operativo.

 Define o modelo de gestão de memória, registos ao nível do supervisor, requisitos de sincronização e o modelo de excepção.

 Define os recursos relacionados com a gestão temporal do ponto de vista do supervisor.

As implementações que respeitam o OEA respeitam igualmente o UISA e o VEA.

Qualquer arquitectura PowerPC tem que respeitar o UISA, oferecendo total compatibilidade entre as aplicações para PowerPC, todavia podem existir diferentes versões do VEA e do OEA.

Apesar de a arquitectura definir alguns parâmetros para garantir compatibilidade, também permite uma ampla gama de opções para implementações personalizadas.

(35)

21

3.2.4 Arquitectura PowerPC para sistemas embutidos

Como o nome indica, esta arquitectura está optimizada para controladores embutidos, fornecendo algumas definições diferentes para certas características definidas pela VEA e OEA. Esta arquitectura é precursora da arquitectura PowerPC Book-E. Como esta arquitectura é de 32 bit não inclui as extensões para 64 bit presentes no UISA, em adição a estas características o suporte a vírgula-flutuante pode ser implementado em hardware ou software.

Figura 3.2 - Relação das arquitecturas PowerPC [5]

A arquitectura PowerPC para sistemas embutidos tem as seguintes características:  Gestão de memória optimizada para sistemas embutidos.

 Instruções de gestão da cache para optimizar desempenho e controlo de memória em aplicações complexas que são graficamente e numericamente intensivas.

 Atributos de armazenamento para controlo do comportamento do sistema de memória.

 Registos especiais usados para controlar o uso dos recursos de depuramento, timer, interrupções e outros.

 Um espaço para endereços de registo de controlo de dispositivos para gerir periféricos on-chip como controladores de memória.

 Uma estrutura de interrupções de dois níveis e instruções para controlo de interrupções.

 Múltiplos recursos para timers.

 Recursos usados para depuramento que permitem funções de depuramento em

hardware e software tais como breakpoints de instruções, breakpoints de dados e

(36)

22

Ambiente Virtual

3.2.4.1

O ambiente virtual define características da arquitectura que permitem que aplicações possam criar ou modificar código, gerir coerência de armazenamento e optimizar o desempenho de acesso à memória. Define também os modelos de cache e memória, os recursos de gestão de tempo do ponto de vista do utilizador e recursos que estão acessíveis em modo de utilizador mas são principalmente usados em rotinas de bibliotecas do sistema.

Ambiente operativo

3.2.4.2

O ambiente operativo descreve características da arquitectura que permitem aos sistemas operativoss alocar e gerir o armazenamento, controlar os erros encontrados por aplicações, suportar dispositivos de I/O, e providenciar serviços de sistemas operacionais. Especifica os recursos e mecanismos que requerem acesso privilegiado, incluindo protecção de memória e mecanismos de tradução de memória, o modelo de tratamento de excepções e recursos privilegiados de timer.

3.3 PPC405

3.3.1 Características do PPC405

O processador PPC405 é uma implementação da arquitectura PowerPC para sistemas embutidos, fornecendo alto desempenho com baixo consumo energético sendo compatível com a arquitectura UISA. Algumas das principais características do PPC405 são:

 Uma unidade de execução de vírgula fixa totalmente compatível com a UISA,

◦ Arquitectura de 32-bit, contendo trinta e dois 32-bit registos de uso geral (GPRs).  Extensões da arquitectura PowerPC para sistemas embutidos fornecendo suporte

adicional para aplicações em sistemas embutidos. ◦ Funcionamento em verdadeiro little-endian. ◦ Gestão flexível da memória.

◦ Instruções de multiplicação com acumuladores para aplicações computacionalmente intensivas.

◦ Capacidades de depuramento melhoradas. ◦ Base temporal de 64-bit.

◦ Três timers: Timer de intervalo programável (PIT), timer de intervalo fixo (FIT) e

watchdog timer. (Todos síncronos com a base temporal).

 Características para melhoramento do desempenho, entre elas: ◦ Previsão estática de branch.

(37)

23 incluindo loads e stores.

◦ Divisão e multiplicação em hardware para uma aritmética de inteiros mais rápida (4 ciclos para a multiplicação e 35 ciclos para a divisão).

◦ Tratamento de strings e várias palavras melhorado.

◦ Suporte a loads e stores desalinhados para arrays de cache, memória principal e memória on-chip (OCM)

◦ Interrupções com latência minimizada  Cache de instruções integrado:

◦ 16 KB, 2-way set associative.

◦ Oito palavras (32 bytes) por cacheline. ◦ Fetch line buffer.

◦ Prefetch programável da próxima linha sequencial para o fetch line buffer.

◦ Prefetch programável de instruções non-cacheable: linha inteira (8 palavras) ou meia linha (4 palavras).

◦ Não bloqueia durante o preenchimento de fetch line.  Cache de dados integrado:

◦ 16 KB, 2-way set associative.

◦ Oito palavras (32 bytes) por cacheline. ◦ Leitura e escrita de line buffers.

◦ Load e store hits são fornecidos de/para os line buffers. ◦ Suporte a write-back e write-through.

◦ Load e store programável.

◦ Encaminhamento de operandos durante preenchimento da cacheline. ◦ Não bloqueia durante o preenchimento de fetch line.

 Suporte para memória on-chip (OCM) com desempenho de acesso à memória idêntico a uma cache hit.

 Gestão de memória flexível:

◦ Tradução de 4GB de espaço de endereços lógico em espaço de endereços físico. ◦ Controlo independente sobre tradução e protecção de instruções e tradução e

protecção de dados.

◦ Controlo ao acesso ao nível de paginamento usando o mecanismo de tradução. ◦ Controlo em software sobre a estratégia de substituição de páginas.

◦ Controlo de atributos de armazenamento WIU0GE (write-through, cacheability, user

definined 0, guarded, endian) para cada região de memória virtual.

◦ Controlo de atributos de armazenamento WIU0GE para 32 regiões de 128 MB em modo real.

◦ Protecção de controlo adicional usando zonas

 Suporte a depuramento melhorado com operadores lógicos ◦ Quatro comparadores de endereços de instruções. ◦ Dois comparadores de endereços de dados. ◦ Dois comparadores de valores de dados. ◦ JTAG para escrita na cache de instruções.

(38)

24

◦ Tracing de instruções para a frente e para trás.  Gestão energética avançada.

Privilégios

3.3.1.1

O software que corre no PPC405 pode correr de dois modos diferentes, privilegiado e de utilizador. No modo privilegiado é permitido o acesso dos programas aos registos e a execução de todas as instruções suportadas pelo processador. Normalmente, o sistema operativo e os device

drivers de baixo nível correm neste modo. No modo de utilizador, o acesso a alguns registos e

instruções está restringido, por norma são os programas que correm neste modo.

Modos de tradução de endereços

3.3.1.2

O PPC405 suporta 2 modos de tradução de endereços: o real e o virtual. No modo real, os programas endereçam a memória física directamente. No modo virtual, os programas endereçam memória virtual e posteriormente estes endereços são traduzidos pelo processador em endereços de memória física. Isto permite aos programas aceder a um espaço para endereços maior do que o implementável pelo sistema.

Modos de endereçamento

3.3.1.3

Quer o PPC405 esteja a correr em modo real ou virtual, o endereçamento dos dados é suportado por instruções de load e store usando um dos seguintes modos de endereçamento:

 Registo indirecto com índice imediato – Um endereço de base é armazenado num registo, e o deslocamento desse endereço é especificado como um valor imediato na instrução.

 Registo indirecto com índice – Um endereço base é armazenado num registo, e o deslocamento desse endereço é armazenado num segundo registo.

 Registo indirecto – O endereço dos dados é armazenado num registo.

Instruções que usam os dois primeiros modos também permitem actualizações automáticas ao registo do endereço base. Nestes dois modos, o novo endereço dos dados é calculado, usado no acesso aos dados do tipo load ou store e armazenado no registo do endereço base.

Na execução sequencial de instruções, o endereço da instrução seguinte é calculado adicionando quatro bytes ao endereço da instrução actual. No caso de serem instruções branch, o endereço é calculado usando um dos seguintes 4 métodos.

(39)

25

 Branch to relative – O endereço da instrução seguinte está numa localização relativa ao endereço da instrução actual.

 Branch to absolute – O endereço da instrução seguinte está numa localização não relacionada com a instrução actual.

 Branch to link register – O endereço da instrução seguinte está armazenado no registo de ligação.

 Branch to count register – O endereço da instrução seguinte está armazenado no registo contador.

Tipos de dados

3.3.1.4

As instruções do PPC405 podem ter operandos do tipo byte, meia-palavra (16 bit) e palavra (32 bits). Os operandos com várias palavras são suportados pelas instruções múltiplas de

load/store e as strings de bytes são suportados pelas instruções de load/store para strings. Os

inteiros podem ter ou não sinal, e inteiros com sinal são representados usando o formato de complemento para dois.

O endereço de um operando com vários bytes é determinado usando o menor endereço de memória ocupado por esse operando.

Registos

3.3.1.5

Podemos observar com algum detalhe, na figura 3.4, os registos existentes nesta arquitectura

(40)

26

Figura 3.3 - Registos do PowerPC405 [5]

Organização do PPC405

3.3.1.6

O PPC405 contém seguintes elementos:

 Pipeline de 5 fases, com fases de fetch, decode, execute, write-back e load write-back.  Gestão de memória virtual que suporta vários tamanhos de páginas e uma variedade

de atributos de protecção de armazenamento e opções de acesso ao controlo.  Unidades separadas de instruções e de cache.

 Suporte a debug, incluindo uma interface JTAG.  3 Timers programáveis.

(41)

27

(42)

28

3.4 FX12

A placa Nu Horizons FX12 é uma plataforma de desenvolvimento de circuitos integrados para a Virtex-4 FX12 da Xilinx, sendo as suas principais características:

Figura 3.5 - FX12 Nu Horizons [3]  FPGA Virtex-4 FX12

 Porta de programação JTAG

 Memória Flash para armazenamento de configurações da FPGA  Porta Ethernet

 Saída para monitor VGA de 24 bit  64 MB de memória SDRAM  16 MB de memória Flash

 Sintetizador de frequência ajustável (até 350 MHz)  Porta série RS-232

 Display LCD  4 Botões  8 Leds

 Conector de expansão de alta velocidade

A FX12 inclui um conjunto de características que trazem novas capacidades as plataformas embutidos, entre elas um PowerPC embutido, um MAC com hard-IP, slices XtremeDSP, multiplicadores em hardware rápidos, gestão avançada de relógio e Smart RAM.

(43)

29

A FX12 tem 32 slices XtremeDSP, 9 bancos de I/O, 648 Kb de Block RAM, 1368 CLBs e 4 DCMs [6]

Figura 3.6 - Diagrama de blocos da FX12 [3]

3.5 Ferramentas de Apoio

3.5.1 Xilinx Integrated Synthesis Environment (ISE)

O Xilinx ISE consiste numa ferramenta que permite implementar, simular e programar qualquer FPGA ou CPLD da Xilinx, tudo isto a partir de um ambiente gráfico.

(44)

30

Observando a figura 3.8 podemos dividir o ambiente de trabalho em cinco blocos.

O bloco 1, Toolbar, como em qualquer outro programa com interface gráfico, contém apenas alguns atalhos das funções mais usadas.

O bloco 2, Sources Window, mostra os ficheiros existentes no projecto e possibilita também a adição ou criação de novos ficheiros. Podemos também observar a hierarquia de um projecto. Por fim podemos também alterar algumas definições do projecto tais como a família do dispositivo, a ferramenta de síntese, a linguagem, etc.

O bloco 3, Process Window, permite correr “processos” no ficheiro seleccionado no bloco 2, estes mudam de acordo com o tipo de ficheiro seleccionado. Estes processos são mostrados de forma hierárquica, estando ordenados como um diagrama de fluxo de projecto normal, cada processo pode ter a frente uma variedade de sinais, que podem significar que o processo está a correr, que houve erros no processo, etc..

O bloco 4, Workspace, é onde aparecem os ficheiros VHDL, Verilog, etc., quando são abertos ou relatórios de implementação. Podem estar abertos diversas janelas mostrando diversos ficheiros, carregando no separador na parte de baixo traz o ficheiro pretendido para a frente.

O bloco 5, Transcript Window, mostra mensagens dos projectos que estão a correr, como erros de síntese ou avisos, quando aparece uma destas mensagens podemos ser direccionados para ela no caso de ser um erro de sintaxe ou aviso, ou podemos ser redireccionados para a internet de modo a obtermos soluções para o erro [10].

Criação de um Projecto

3.5.1.1

A criação de um projecto para uma FPGA ou um CPLD na Xilinx ISE segue vários passos sequenciais. Esses passos podem ser vistos na figura 3.9.

(45)

31

Figura 3.8 - Diagrama de fluxo do Xilinx ISE [4]

 Design Entry – A criação de um projecto passa pela inclusão no mesmo de ficheiros VHDL, esquemáticos, blocos das bibliotecas IP, e ficheiros UCF. Os ficheiros UCF incluem restrições ao nível temporal, de área ou de ligação de pinos. Depois desta fase, segue-se uma fase de síntese, ou uma fase de simulação comportamental.  Design Synthesis – Depois da fase inicial, é preciso sintetizar o projecto. A primeira

fase consiste numa detecção de erros de sintaxe, em seguido detectam-se erros de implementação. Por fim depois de resolvidos todos os erros, é criado um ficheiro chamado netlist, que serve de base para a etapa seguinte.

 Design Implementation – Nesta etapa, o ficheiro criado anteriormente é convertido num projecto lógico, que irá criar um ficheiro físico, podendo ser enviado para uma FPGA ou um CPLD. Esta fase pode ser dividida em 3 partes: Translate, Map, e Place

and Route. Na primeira fase, Translate, as indicações presentes no UCF são traduzidas

para um ficheiro lógico. Em seguida na fase Map, o circuito lógico criado é repartido de forma a ser enviado para a FPGA, sendo divido pelos vários blocos disponíveis, entre eles CLBs e IOBs. Na última fase, Place and Route, são criadas as ligações entre os blocos CLB ou IOB.

 Xilinx Device Programming – Nesta fase, como o nome indica o projecto é carregado para a FPGA. Antes do envio, o ficheiro é convertido num bistream, ficheiro .bit, para que a FPGA ou o CPLD o aceitem. Depois de criado, torna-se necessário programar a FPGA, através de uma aplicação integrada no ISE, o iMPACT, e um cabo de programação.

 Design Verification – O teste de um projecto ocorre em diferentes fases ao longo da criação de um projecto. Podemos identificar os seguintes momentos de verificação de um projecto:

1. Behavioral Simulation – É a primeira simulação do sistema criado e verifica se a implementação efectuada corresponde ao pretendido. O código é simulado através de simuladores que conseguem exibir o valor de todos os sinais num determinado instante de tempo. Dentro do ISE já existe um simulador: ISE Simulator.

2. Functional Simulation – Acontece após a fase Translate, usando a informação dada por esta acerca da operação lógica do circuito implementado. Nesta altura, o projectista verifica a funcionalidade do seu projecto, e se não estiver de acordo com o

(46)

32 esperado é necessário alterar o código

3. Static Time Analysis – Ocorre após as fases Map e Place and Route e serve para verificar se existem atrasos temporais no projecto, indica também a frequência máxima de operação do circuito implementado.

4. Timing Simulation – Permite analisar o sistema tendo em conta os atrasos existentes nos sinais. Pode ser realizada usando os mesmos simuladores da Behavioral

Simulation, sendo mais fiável que a mesma.

5. In-Circuit Verification – É o teste final, serve para verificar como o projecto se comporta no dispositivo pretendido. Testa o circuito sobre condições típicas de funcionamento.

3.5.2 XILINX Embedded Development Kit (EDK)

O Xilinx EDK consiste num conjunto de ferramentas e Propriedade Intelectual (IP) que permite desenhar sistema completo com um processador embutido para implementação numa FPGA da Xilinx.

O EDK tem dois componentes principais:

 Xilinx Platform Studio (XPS) – É o ambiente de desenvolvimento usado para desenhar a parte do hardware do processador embutido.

 Software Development Kit (SDK) – É complementar ao XPS, é usado para criação e verificação de aplicações em C/C++. Tem como base a ferramenta de desenvolvimento open-source Eclipse.

Existem também outros componentes como:

 IP em hardware para processadores embutidos da Xilinx.

 Drivers e bibliotecas para o desenvolvimento de software para sistemas embutidos.  GNU compilador e depurador para software em C/C++ com destino a processadores

MicroBlaze e PowerPC.

(47)

33

Criação de um projecto

3.5.2.1

Figura 3.9 - Diagrama de fluxo do EDK[1]

Por norma, o ISE é usado para criar um processador embutido, que em seguida é adicionado ao projecto. Em seguida o projecto passa para o XPS onde é feita a especificação do microprocessador, dos periféricos assim como das ligações entre estes. O XPS permite verificar o correcto funcionamento da plataforma correndo o projecto num simulador. Esta simulação pode ser de 3 tipos:

 Behavioral  Structural  Timing-acurate

O próprio XPS facilita esta simulação fornecendo os ficheiros necessários à simulação automaticamente.

Após finalizar o projecto no XPS, é necessário voltar ao ISE para gerar os ficheiros de configuração da FPGA necessários para programar a mesma. O SDK é usado para desenvolvimento de software, após o depuramento deste software é criado um ficheiro

Executable and Linkable File (ELF). Após a FPGA estar configurado com o ficheiro gerado no ISE

(48)

34

Figura 3.10 - Ambiente de Trabalho do Xilinx XPS

Figura 3.11 - Ambiente de Trabalho do Xilinx SDK 3.5.3 Microsoft Visual Studio

O Microsoft Visual Studio é um ambiente de desenvolvimento integrado (IDE) da Microsoft. Pode ser usado para desenvolver aplicações de consola e de interface gráfica, bem

(49)

35

como sites, aplicações Web, etc. Tem suporte a variadas linguagens de programação desde C/C++, C#, Python, etc.

Foi usado como método de comparação entre correr o código num sistema embutido e num PC.

3.5.4 PuTTY

O PuTTY é uma aplicação que serve como cliente para vários protocolos, entre eles o RS-232. Visto o Windows Vista não possuir nenhum cliente de origem para lidar com este protocolo, foi necessário recorrer ao mesmo. O protocolo RS-232 foi usado para comunicar com o PowerPC.

(50)

36

3.6 Conclusões

Neste capítulo foi feita uma introdução às ferramentas usadas neste trabalho, à arquitectura PowerPC e em particular ao PowerPC405, e as ferramentas de software usadas, Xilinx ISE, Xilinx EDK, Microsoft Visual Studio e PuTTY.

(51)

37

Implementação do algoritmo de

Capítulo 4 -

ordenação de dados

4.1 Introdução

A base deste trabalho era obter uma comparação entre a eficácia de diferentes métodos

Soft e Hard quando aplicados em determinados algoritmos. Para tal foi escolhida a FPGA FX12 da Nu Horizons, que, como já foi dito, possui o chip Virtex4 da Xilinx, que por sua vez integra o

processador PowerPC 405 da IBM.

4.2 Implementação em PowerPC

4.2.1 Especificação do Hardware

Para poder utilizar o processador embutido numa FPGA, há que primeiro fazer uma especificação do hardware que se quer utilizar. Para fazer esta especificação é usada uma ferramenta incluída no Platform Studio, o Base System Builder. No entanto antes de se poder usar esta ferramenta, é necessário criar um ficheiro do tipo Xilinx Board Description (XBD), visto que esta ferramenta não possui este ficheiro para a placa FX12, apenas para placas fabricadas pela

(52)

38

Figura 4.1 - Base System Builder

Durante este processo, é necessário escolher entre variadas opções, de modo a criar um projecto que possa ser usado na placa pretendida. Essas opções incluem:

 A placa a utilizar.

 O número de processadores a usar.

 O tipo de processador a usar e a sua frequência de relógio, entre outras.  Os periféricos.

 A cache do processador.  Opções para testes.

Neste caso as opções a serem seleccionadas são:  Nu Horizons Virtex4 FX12 B1.

 Um único processador.

 PowerPC, a frequência de relógio assim como as outras opções não são relevantes agora, visto que irão ser alterados ao longo do trabalho.

 Dos periféricos disponíveis são necessários apenas: Memória SDRAM e Porta série RS-232.

 Na cache não é necessário alterar nada nas configurações da cache, nem nas opções para testes.

(53)

39

4.2.2 Xilinx Board Description - XBD

O ficheiro Xilinx Board Description (XBD) define o conteúdo de uma dada placa, e a sua interacção com a FPGA em si, este tipo de ficheiro tem as seguintes características:

 Dividido em blocos que definem os periféricos suportados pela placa.  Cada bloco tem uma lista de atributos, parâmetros e portas.

 Informação da conectividade entre as diferentes portas e módulos.  Informação sobre as restrições de cada pino da FPGA.

Neste projecto este tipo de ficheiro foi muito importante, pois sem ele seria impossível trabalhar com o processador embutido. No entanto devido ao facto de o fabricante já não dar suporte à placa, foi necessário pesquisar e adaptar os ficheiros existentes de placas semelhantes à usada neste projecto, sendo um processo bastante demorado, pois qualquer pequeno erro impossibilita que o projecto sequer funcione. Este ficheiro encontra-se no anexo A, visto não ser relevante a sua análise para compreensão do trabalho.

4.2.3 Desenvolvimento do software

Depois de criadas as especificações de hardware, avançou-se para o desenvolvimento do

software. Nesta fase foi escolhido um algoritmo recursivo de ordenação baseado em máquinas de

estado cujo diagrama de fluxo pode ser observado na figura 4.2.

Figura 4.2 - Diagrama de fluxo da RHFSM [16]

Uma explicação muito resumida deste algoritmo é, quando o algoritmo recebe um valor vai começar por verificar se existe algum nó (nó esse que tem quatro campos, o valor, uma

(54)

40

variável contadora, e dois ponteiros para dois nós, um para um vector com um valor menor e outro com um valor maior). Se não existir vai criar um, atribuindo o valor recebido a esse nó, se já existir um nó vai verificar se o valor presente no nó é maior ou menor do que o valor recebido, colocando o valor para o nó presente no ponteiro conforme o valor.

4.2.4 Programação da placa

Após ser feito o depuramento com sucesso do software, é necessário enviá-lo para a placa, para tal é preciso seguir alguns passos:

 Programar a placa com um ficheiro do tipo bitstream (BIT) que contém a configuração do

hardware da placa e com um ficheiro do tipo Block Memory Map (BMM) que é usado

para carregar a memória da placa.

 Criar um ficheiro do tipo Executable and Linkable File (ELF). Para tal é necessário definir o tamanho, o tipo de memória e posição onde vão ser colocados alguns ficheiros.

Figura 4.3 - Gerador do Executable and Linkable File

Após estes passos é possível programar a placa com o ficheiro ELF. Existem duas opções, é possível correr o programa sem interrupções, ou é possível correr o programa em modo depuramento, onde, naturalmente, é possível verificar se o programa está a correr sem erros e identificar esses erros.

Imagem

Figura 2.3 - Rotina de Serviço as Interrupções [21]
Figura 2.4 - Exemplo de um microcontrolador usado no controlo de um motor [21]
Figura 2.5 - Chip ASSP para o controlo de um motor de indução AC de 3 fases [21]
Figura 2.7 - Evolução da arquitectura das FPGA [12]
+7

Referências

Documentos relacionados

De acordo com SUKHIANI e colaboradores (1996), JERRAM & DEWEY (1999b) e MAYHEW e colaboradores (2004), cães que realizam cirurgia descompressiva podem reapresentar os

In a study with 5,306 patients carried out by the Global Research on Acute Conditions Team (GREAT), among a great number of biomarkers measured at admission in patients with

Figure 1 – Percentage cost reduction in delivered prescription drugs purchased via reverse auction in comparison with private costs according to each drug group in heart failure

The aim of this study was first to evaluate the production of ethanol and volatile compounds by eight yeast strain utilizing coffee residues coffee pulp and coffee wastewater

O objetivo principal dessa dissertação é apresentar uma proposta de redesign de um Protótipo Inicial de WebGIS para facilitar sua utilização e aumentar as percepções

Regarding the design of the study, we included randomized clinical trials, clinical trials, community studies with comparison of an intervention group with a control group,

Objective: To evaluate costs and length of hospital stay between groups of patients treated for ACS undergoing angioplasty with or without stent implantation (stent+ /

Nos demais tempos, para a formulação 1, valores maiores e diferentes de SS foram en- contrados para os doces acondicionados na embalagem de polipropileno opaca, quando comparado