Ap´os a descri¸c˜ao em VHDL, ´e necess´ario recorrer a uma ferramenta para sintetizar o c´odigo, implementar e configurar o dispositivo respectivo, neste caso a FPGA. No mercado existem algumas op¸c˜oes, mas a utilizada neste trabalho foi o ISE WebPack da Xilinx, que consiste numa solu¸c˜ao sem custos e j´a bastante completa. Come¸cando um novo projecto, temos na figura 3.3 a janela do ISE para a sua cria¸c˜ao.
Figura 3.3: Criar um novo projecto no ISE.
Inicialmente ´e dado um nome ao projecto, ´e definida a sua localiza¸c˜ao no disco r´ıgido e como op¸c˜ao, a sua descri¸c˜ao. Em seguida, ´e necess´ario colocar as propriedades do dispositivo em que se ir´a implementar o projecto e em que linguagem ser´a descrito. Neste trabalho as propriedades da FPGA utilizada est˜ao na figura 3.4.
Figura 3.4: Propriedades do dispositivo a uti- lizar.
Figura 3.5: Especifica¸c˜oes de um modelo de uma FPGA da Xilinx [10].
Na figura 3.6 temos uma vis˜ao geral do ambiente gr´afico do ISE, sendo este bastante intuitivo. Disponibiliza uma interface gr´afica para todas a ferramentas que tenham rela¸c˜ao
com a cria¸c˜ao, s´ıntese, simula¸c˜ao e implementa¸c˜ao do projecto. Na parte de sources window s˜ao mostrados hierarquicamente todos os ficheiros do projecto. Aqui, pode-se incluir ou retirar m´odulos ou bibliotecas ao projecto. Tamb´em se pode seleccionar se o objectivo do projecto ´e para simula¸c˜ao ou implementa¸c˜ao. Por vezes, ´e necess´ario alterar os parˆametros das propriedades do dispositivo e, em vez de se criar um novo projecto, pode-se utilizar design properties para fazer essa altera¸c˜ao. Na janela process s˜ao disponibilizados todas as ferramentas de s´ıntese, implementa¸c˜ao e gera¸c˜ao do ficheiro de configura¸c˜ao. Na parte de s´ıntese, ´e efectuada a verifica¸c˜ao de sintaxe de todos os ficheiros inclu´ıdos no projecto. No caso de simula¸c˜ao, ap´os a s´ıntese, ´e poss´ıvel ver os resultados. Na sec¸c˜ao de implementa¸c˜ao, conforme o resultado da parte de s´ıntese ´e feita uma tradu¸c˜ao desta onde se mapeia os blocos l´ogicos e a liga¸c˜ao de todos os componentes (fase de Routing). Por fim, temos o Generate Programming File, que cria o ficheiro do tipo bit e que ´e o produto final de todas estas etapas. ´
E com este ficheiro que ´e feita configura¸c˜ao da FPGA com o projecto pretendido, sendo este transferido para a FPGA ou para uma PROM, caso exista na placa.
O ISE ao fim de todos este passos cria um sum´ario do projecto. Este faz relat´orio de todos os passos descritos anteriormente, como por exemplo os recursos utilizados e muito importante, a frequˆencia m´axima de trabalho.
Temos ainda, a transcript window que serve como interac¸c˜ao dos ISE e o utilizador. Esta visa relatar todos os erros, avisos e progresso do projecto aquando a s´ıntese e implementa¸c˜ao. Tamb´em ´e poss´ıvel interagir com ISE atrav´es de linhas de comandos efectuados na TCL Shel. A workplace window ´e a janela maior onde podemos editar os ficheiros do projecto, ver esquem´aticos e os relat´orios finais do projecto.
Na figura 3.5 est´a ilustrado como s˜ao especificadas o modelo e algumas caracter´ısticas de uma FPGA. Neste caso ´e uma FPGA da Xilinx onde ´e indicado o modelo Spartan XC3S250E e por exemplo o speed grade como 4.
3.3.1 IP Cores
Esta ferramenta disponibilizada no ISE permite a cria¸c˜ao de blocos espec´ıficos optimizados para FPGA e depois inclu´ı-los no projecto. Os blocos encontram-se em bibliotecas, que no caso da Xilinx, ´e disponibiliza a LOGICore. Aqui podemos encontrar v´arios blocos para as mais diferentes aplica¸c˜oes e ´areas. Alguns IPCores mais importantes:
Autom´ovel e industrial - Cont´em blocos para a cria¸c˜ao de protocolos de comunica¸c˜ao como a CAN e a Ethernet.
Elemento b´asicos - Aqui temos blocos espec´ıficos como comparadores, acumuladores, contadores, registos, shift-registers, elementos de mem´oria Block RAM e mem´oria dis- tribu´ıda.
Processamento de sinal digital - Cont´em elementos de correla¸c˜ao de sinal, filtros, multiplicadores, fun¸c˜oes trignom´ericas, etc.
Componentes FPGA - Cont´em blocos para a utiliza¸c˜ao dos DCMs disponibilizados pela FPGA e blocos de interface I/O.
Fun¸c˜oes matem´aticas - Cont´em blocos que realizam fun¸c˜oes matem´aticas como a raiz quadrada, opera¸c˜oes de v´ırgula flutuante e divis˜ao.
Interface de barramentos - Disponibiliza componentes para o interface com barra- mentos PCI, PCI Express e RapidIO.
Processamento de imagem e ´audio - Blocos com a capacidade de acelera¸c˜ao gr´afica, correc¸c˜ao da gama, etc.
Neste trabalho foi utilizado o Block Memory Generator e o Clock Generator. O primeiro serve essencialmente para criar Blocos de mem´oria RAM. Aqui pode-se escolher os tamanhos das palavras da RAM e o n´umero de endere¸cos que a BRAM ir´a ter. A RAM criada pode ser de single-port ou dual-port. Esta ´ultima ´e importante, no sentido em que se pode ler e escrever no mesmo ciclo de rel´ogio, o que torna os acessos `a mem´oria duas vezes mais r´apido. Existem outros modos podendo-se ler com mais detalhe em [10]
O Clock Generator ´e uma ferramenta para a utiliza¸c˜ao dos DCMs embutidos na FPGA. Aqui, pode-se gerar sinais de referˆencia como o sinal de rel´ogio com uma determinada frequˆencia e fase em rela¸c˜ao a um sinal de trigger. A sua utiliza¸c˜ao est´a descrita em [10]