Centro Universitário da FEI Engenharia Elétrica PROJETO...

52
Centro Universitário da FEI Engenharia Elétrica PROJETO DE SISTEMAS DIGITAIS UTILIZANDO FPGAs Prof. Edson Lemos Horta Fevereiro 2008

Transcript of Centro Universitário da FEI Engenharia Elétrica PROJETO...

Centro Universitário da FEI Engenharia Elétrica

PROJETO DE SISTEMAS

DIGITAIS UTILIZANDO FPGAs

Prof. Edson Lemos Horta

Fevereiro 2008

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

1/51

1 Introdução aos Circuitos Integrados para Aplicações Específicas (Application Specific Integrated Circuits – ASICs)

Para melhorar o seu desempenho no mercado, mais e mais fabricantes têm procurado aumentar muito o nível de integração dos componentes eletrônicos em seus produtos (usando um menor número de CIs, com cada CI realizando funções mais elaboradas). Com os CIs integrando funções cada vez mais complexas, os projetistas foram encontrando grandes dificuldades para definir blocos de lógica padronizados que implementassem estas funções. Destas dificuldades surgiram os ASICs ("Application Specific Integrated Circuits"-Circuitos Integrados para Aplicações Específicas). Com estes integrados muitos benefícios foram proporcionados aos projetistas. Com a utilização de um ASIC, a eficiência de um projeto aumenta muito, devido à especificidade do mesmo, ou seja, o projeto tem por objetivo atender apenas às necessidades do produto. Não é preciso escolher CIs que tenham certas características não aproveitáveis para o produto que, em muitos casos podem até comprometer o desempenho ou o custo do mesmo. Com isto, obtém-se uma adequação da função do CI ao projeto ótimo do sistema. Outra vantagem muito importante que os ASICs proporcionam é o uso eficiente da placa de circuito impresso (PCI). Isto se deve ao fato destes componentes conseguirem integrar muitos CIs convencionais e reduzirem o tamanho da PCI. Além disso, com a complexidade dos sistemas digitais aumentando, cada vez mais componentes são necessários na placa de circuito impresso, o que aumenta a taxa de falhas do sistema como um todo. Um produto construído com ASICs consegue reduzir drasticamente este número, obtendo uma confiabilidade mais alta. As opções de ASICs disponíveis atualmente no mercado são: a) "Gate Arrays"; b) "Standard Cells"; c) "Full Custom"; d) PLDs ("Programmable Logic Devices”-Dispositivos Lógicos Programáveis); Os “Gate Arrays" são matrizes de transistores sem função definida, separados por canais. Através de ligações feitas nestes canais consegue-se conectar os transistores para que eles executem uma função lógica específica. Com isto consegue-se implementar células básicas que serão utilizadas no projeto de sistemas digitais mais complexos. O ASIC é projetado como uma rede destas células interligadas. Após se obter o "netlist" (lista de ligações) desta rede, o projeto torna-se automático. Além disso, esta metodologia pode ser usada sem problemas por projetistas de sistemas, não entrando em detalhes mais específicos dos blocos. As desvantagens da mesma são as condições de contorno (canais fixos, geometrias de transistores fixas, etc.) de projeto rígidas e a complexidade de se obter um "netlist" adequado. Os "Standard Cells" (Células Padronizadas) são CIs projetados com base em células de bibliotecas pré-definidas. Cada célula pode ser interligada para a implementação do sistema digital pretendido. A vantagem deste tipo de circuito é o tempo de projeto que é muito reduzido. Em contrapartida, o projetista só pode utilizar as células existentes na biblioteca do fabricante, sem modificar as suas características internas, o que não permite a otimização dos parâmetros elétricos das mesmas. Este problema é resolvido com a utilização dos CIs "Full Custom", que permitem ao projetista personalizar o "lay-out" e as interconexões do CI. A principal desvantagem destes CIs é o seu alto custo de projeto, pois o projetista participa praticamente de todo o ciclo junto com o fabricante. Os PLDs são CIs que possuem uma matriz de interconexões com portas "AND" e "OR" que podem ser programadas pelo projetista para realizar as mais diversas funções lógicas. Alguns CIs possuem registradores ligados às saídas destas matrizes e controle de entrada e saída. A principal

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

2/51

vantagem dos PLDs é o tempo gasto durante o projeto do CI que é bastante reduzido, diminuindo assim os custos de desenvolvimento do mesmo. Atualmente, existem PLD’s que podem ser reprogramados, possibilitando a sua utilização em diferentes projetos. Os principais tipos de PLDs existentes são: CPLD ("Complex Programmable Logic Devices") e FPGA ("Field Programmable Gate Arrays"). A principal diferença entre eles é a complexidade das suas estruturas programáveis (maior nos FPGAs) e a maneira como elas são interligadas (mais previsível nos CPLDs).

O projeto de um Sistema Digital utilizando FPGAs segue as etapas ilustradas na figura 1.

Fig. 1 – Fluxo de Projeto para FPGAs

No particionamento do sistema é feita a divisão do mesmo em blocos que realizam funções semelhantes. Após este particionamento é feita a descrição de cada um dos blocos e como os mesmos devem ser interligados. Esta descrição pode ser feita através de um esquema elétrico e/ou um arquivo em formato texto, utilizando uma linguagem de descrição de hardware (HDL). As mais utilizadas são: VHDL (Very High Speed Integrated Circuit Hardware Description Language) e VERILOG. Depois de descrever o sistema é possível fazer a simulação comportamental do mesmo, antes da síntese. Nesta simulação é possível verificar o comportamento do sistema e também comprovar se a partição efetuada no início foi eficiente.

A síntese do sistema consiste na geração de uma lista de ligações dos vários elementos lógicos responsáveis pelas funções de cada bloco do projeto. Estes elementos lógicos são os blocos

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

3/51

básicos presentes na FPGA escolhida. Depois da síntese é possível realizar uma simulação mais precisa do sistema, mas ainda sem a informação relativa ao timing do mesmo.

A próxima etapa é a implementação do sistema na FPGA. Esta fase é composta por três passos: a) Translate: combina os vários arquivos gerados durante a síntese em um único arquivo de

ligações (netlist); b) Map: mapeia o arquivo gerado pelo Translate nos componentes físicos presentes na FPGA; c) Place & Route: posiciona os componentes na FPGA, roteia os sinais de interligação e gera os

arquivos com relatórios e base de dados utilizada na simulação.

Após a implementação é possível a realização de uma simulação do sistema, denominada Simulação de Timing. Nesta simulação visualiza-se os tempos de propagação reais de cada sinal contido no sistema.

A penúltima etapa do projeto é a geração do arquivo de programação da FPGA. Através deste arquivo configura-se a mesma para funcionar de acordo com a especificação inicial do sistema. Na última fase grava-se a FPGA com este arquivo, através de um cabo conectado à porta paralela do PC.

Todas as etapas anteriores estão integradas a um ambiente de desenvolvimento denominado ISE (Integrated System Environment).

2 Linguagem VHDL

A linguagem VHDL (VHSIC – Very High Speed Integrated Circuit - Hardware Description Language) foi desenvolvida inicialmente para documentar e simular sistemas digitais, no início da década de 80.

Após isto, na década de 90, ela começou a ser utilizada por empresas fornecedoras de chips para descrever os projetos contidos nos mesmos.

Através da linguagem VHDL é possível descrever um sistema digital através de um arquivo texto, possibilitando a implementação do mesmo por diferentes ferramentas de desenvolvimento.

Os elementos principais contidos em uma descrição VHDL são: • entity: declaração inicial de um módulo, contendo seu nome e os sinais de entrada e saída do

mesmo; • architecture: descrição interna de uma “entity”; • ports: declaração de cada um dos sinais externos de entrada e saída de um módulo; • signal: declaração de sinais internos ao módulo; • process: declaração de um processo interno a um módulo, dependente de um ou mais sinais,

contidos em uma lista logo após o nome do processo. A principal diferença existente entre uma linguagem de programação usual e VHDL está na

construção “process”. Uma “entity” pode conter um ou mais processos, que estão sendo executados todos em paralelo, geralmente sincronizados por um sinal de relógio (não devemos esquecer que estamos descrevendo hardware, que possui um alto grau de paralelismo).

No próximo item será visto como abrir um projeto em VHDL na ferramenta ISE.

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

4/51

3 Metodologia de Projeto de Sistemas Digitais utilizando FPGAs

Todos os projetos criados no ISE são iniciados da mesma maneira: a) definição do diretório de trabalho; b) definição do nome do projeto; c) definição do tipo de arquivo que descreve o nível mais alto de hierarquia de projeto; d) escolha da FPGA na qual será implementado o sistema; e) criação de arquivos novos de projeto ou adição de arquivos já existentes.

Se for escolhida a criação de um novo arquivo, as opções mais utilizadas são: a) Schematic: esta opção cria um arquivo gráfico para se desenhar o projeto através de

blocos de biblioteca ou projetados anteriormente. b) Test Bench Waveform: permite a criação de um arquivo com as formas de onda dos

sinais de entrada/saída do sistema, para posterior simulação do mesmo; c) VHDL Module: permite a criação de arquivos do tipo VHDL;

3.1 Projeto em VHDL no ISE

A ferramenta ISE facilita a criação do arquivo VHDL através da geração de um arquivo

modelo, para que o usuário complete com a descrição da arquitetura da “entity” desejada. Basta seguir o procedimento abaixo:

a) abrir o “Project Navigator” (Iniciar → Programas → Xilinx ISE 8.1i → Project Navigator b) selecionar File → New Project. c) Na janela “New Project”, escolher o diretório de trabalho (Project Location =

C:\Alunos\Numero_do_aluno\), definir o nome do projeto (PORTA_E) e o tipo de arquivo do módulo principal (Top-Level Module Type = HDL). No diretório de trabalho será criado um subdiretório com o nome do projeto escolhido;

Fig. 2 – Criação de Novo Projeto

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

5/51

d) Clicar em <avançar> e) Selecionar o dispositivo e o tipo de projeto (vide figura 3):

• Family (família de FPGA): Spartan-3 • Device (código do componente): xc3s400 • Package (encapsulamento): ft256 • Speed Grade (velocidade da FPGA): -4 • Top-Level Module Type (tipo de descrição do módulo mais alto da hierarquia):

HDL • Synthesis Tool (ferramenta de síntese): XST(VHDL/Verilog) • Simulator (ferramenta de simulação): ISE Simulator (VHDL/Verilog)

Fig. 3 – Propriedades do Projeto

f) Clicar em <avançar>.

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

6/51

Fig. 4 – Novo Arquivo Fonte g) Na janela acima, clicar em “New Source”; h) Na opção “Select Source Type”, selecionar a opção “VHDL Module” e colocar o nome do

arquivo igual a “porta_e_vhdl”, deixando a opção “Add to project” selecionada.

Fig. 5 – Selecionar Tipo de Arquivo Fonte

i) Clicar em <avançar> j) Na opção “Define Module”, no campo “Entity Name” colocar “porta_e”. No campo

“Architecture Name” colocar “porta_e_arq”. Esta janela possui uma tabela que nos permite

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

7/51

definir os sinais externos de entrada e saída do nosso módulo. Basta preencher a mesma de acordo com a tabela abaixo.

Port Name Direction MSB LSB entrada1 in entrada2 in saida out

k) Clicar em <avançar> e conferir o resumo do arquivo que será gerado em VHDL:

Fig. 6 – Resumo do Arquivo VHDL

l) Clicar em <concluir>. m) Na opção “Create New Source” novamente, clicar em <avançar>. n) Na opção “Add Existing Source”, clicar em <avançar>. o) Na janela “Project Summary”, verificar se as opções descritas estão corretas e clicar em

<Concluir>.

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

8/51

Fig. 7 – Resumo do Projeto

Após o procedimento acima, na janela do Project Navigator denominada “Sources”, situada no canto superior esquerdo, aparecerá o arquivo “porta_e_vhdl.vhd”, logo abaixo do nome da FPGA escolhida anteriormente.

Fig. 8 – Fonte do Projeto

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

9/51

Para visualizar o arquivo VHDL gerado automaticamente, basta clicar na aba com o nome do

mesmo, na parte inferior do Project Navigator.

Fig. 9 – Arquivo VHDL

Neste arquivo está faltando apenas descrever o funcionamento da porta E que será

implementada em VHDL, após a palavra “begin”, que corresponde ao início da descrição da arquitetura do módulo “porta_e”.

Para tanto, basta acrescentar a seguinte linha e salvar o arquivo novamente: saida <= entrada1 AND entrada2;

3.2 Implementação do Projeto

Para implementar o projeto através do ISE, basta escolher o arquivo que descreve o mesmo

na janela “Sources” e depois clicar duas vezes no processo chamado “Implement Design”, na janela “Processes”.

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

10/51

Fig. 10 – Implementação do Projeto

A ferramenta ISE passará pelas fases indicadas na figura 1 e todos os arquivos necessários à programação e simulação do dispositivo estarão prontos.

3.3 Simulação

Antes da programação do FPGA, é preciso simular o projeto para verificar se o seu

funcionamento está de acordo com a especificação inicial. Para simular um projeto através do ISE, é necessário criar um arquivo que define as formas de onda dos sinais presentes no mesmo. Este arquivo é denominado “Test Bench Waveform”. Depois, o ISE utiliza uma ferramenta de simulação denominada ISIM para interpretar os dados do arquivo de simulação e gerar as formas de onda para visualização de cada um dos sinais presentes no projeto.

3.3.1 Geração do Test Bench (Formas de Onda)

1o) Selecionar o arquivo VHDL

2o) Clicar duas vezes em “Implement Design”

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

11/51

Nesta seção será criado o arquivo de simulação para o exemplo da seção anterior.

Para gerar este arquivo basta seguir este procedimento: a) selecionar o arquivo “porta_e_vhdl” na janela “Sources” b) Selecionar “Project → New Source”. Na janela “New Source Wizard – Select Source

Type”, selecionar o tipo “Test Bench Waveform” e colocar como nome do arquivo “porta_e_vhdl_tb”.

c) Clicar em <avançar> 2 vezes. d) Clicar em <Concluir>

A ferramenta que permite ao projetista descrever as formas de onda de simulação é

denominada “HDL Bencher”. Quando a mesma for acionada, será mostrada uma janela com os parâmetros utilizados na definição das formas de onda.

Fig. 11 - Inicialização das Formas de Onda (Circuito Seqüencial)

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

12/51

Quando o sistema possui um ou mais clocks a ferramenta possibilita definir alguns parâmetros, sendo que os principais são:

a) “Clock high time” e “Clock low time”: especificam o período do clock do sistema; b) “Input setup time”: define quando as entradas devem estar válidas; c) “Output valid delay”: define o tempo após a borda de subida do clock que as saídas

estarão válidas; d) “Initial Lenght of Test Bench”: define o tamanho inicial da janela de simulação, que

pode ser alterado mais tarde.

No exemplo da porta E não existe um sinal de clock. Portanto, basta escolher a opção “Combinatorial (or internal clock)” no alto da janela à esquerda, conforme a figura abaixo, e clicar no <Concluir>.

Fig. 12 - Inicialização das Formas de Onda (Circuito Combinatório)

Logo em seguida será mostrado na tela o arquivo com as formas de onda dos sinais de entrada/saída do projeto, conforme mostrado na figura abaixo.

Selecionar “Combinatorial...”

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

13/51

Fig. 13 – Formas de Onda do HDL Bencher

Para alterar as formas de onda basta clicar com o botão esquerdo sob o intervalo definido por um ciclo de clock, no caso de sistemas com sinal de clock, ou pela soma dos valores colocados na janela de informação de tempo (figura 11). Caso o sinal contenha um bit apenas, ele mudará seu valor de 1 para 0 e vice-versa. Caso o sinal contenha mais de um bit, é possível colocar um valor de acordo com o número de bits ou especificar alguns valores pré-determinados, através de uma janela auxiliar, denominada “Pattern Wizard”. Para acioná-la basta clicar no botão “Pattern”, logo após clicar sob o ciclo de clock desejado.

1o Exercício: utilizando o mouse, descrever as formas de onda de acordo com a figura

abaixo.

Fig. 14 – Formas de Onda do 1o Exercício

Salve o arquivo e feche o “HDL Bencher”. O arquivo “porta_e_vhdl_tb.tbw” é adicionado automaticamente ao projeto.

3.3.2 Simulação com o ISIM

Para simular o projeto no ISE, é utilizada uma ferramenta denominada ISIM. O ISE gera

automaticamente todos os arquivos necessários à simulação e aciona esta ferramenta, abrindo automaticamente uma janela com o resultado da simulação.

Para iniciar este processo, a primeira providência a ser tomada é escolher na janela “Sources” a opção de mostrar os arquivos de simulação, conforme a figura abaixo.

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

14/51

Fig. 15 – Escolha dos arquivos de simulação Em seguida deve ser escolhido o arquivo “porta_e_vhdl_tb.tbw” na janela “Sources” e clicar

duas vezes no processo “Simulate Post-Place & Route Model”, conforme a figura abaixo.

Fig. 16 – Simulação do Projeto

1o) Selecionar o arquivo TBW

2o) Clicar duas vezes em “Simulate Post-Place & Route Model”

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

15/51

Ao final da simulação será mostrada a tela abaixo, com o resultado da mesma.

Fig. 17 – Simulação do 1o Exercício

Caso seja necessário modificar os valores das formas de onda, basta fechar a janela da simulação e alterar o arquivo TBW. Caso este arquivo tenha sido fechado, clicar duas vezes sobre o nome do mesmo para abrí-lo novamente. Para acionar a simulação, selecionar o arquivo TBW e clicar duas vezes no processo “Simulate Post-Place & Route Model”.

Para terminar a simulação basta fechar as janelas do arquivo TBW e do arquivo com os resultados da simulação.

3.4 Atribuição de Pinos

Em alguns casos é necessário atribuir cada um dos sinais do projeto a pinos específicos do chip. No ISE esta atribuição pode ser feita através de um arquivo do tipo texto, com extensão UCF (“User Constraint File”). Para editar este arquivo é necessário primeiro configurar a janela “Sources” para mostrar apenas os arquivos utilizados na implementação:

Fig. 18 – Selecionar Arquivos de Implementação

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

16/51

Em seguida, basta selecionar o arquivo com a descrição do projeto (PORTA_E_VHDL.VHD) na janela “Sources” e clicar duas vezes no sub-processo denominado “Edit Constraints (Text)”, que se encontra subordinado ao processo “User Constraints”:

Fig. 19 – Acionar o Editor do Arquivo UCF

Caso apareça a mensagem abaixo, explicando que será criado um arquivo UCF e

acrescentado à hierarquia de projeto, basta clicar em <SIM>.

Fig. 20 – Criação do Arquivo UCF

1o) Selecionar o arquivo VHD

2o) Clicar duas vezes em “Edit Constraints (Text)”

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

17/51

A sintaxe utilizada no arquivo UCF para atribuir um sinal a um pino do chip é a seguinte: NET "nome_do_sinal" LOC = "coordenada_do_pino" ; Por exemplo, para atribuir ao sinal “SAIDA_A” ao pino K12 do chip, utiliza-se a seguinte

linha: NET "Saida_A" LOC = "K12" ;

2o Exercício: atribuir a pinagem do SD de acordo com a tabela abaixo:

SINAL

(PROJETO) PINO

(FPGA) SINAL

(PLACA) entrada1 K13 SW7 entrada2 K14 SW6 saida P11 LED7

Após a atribuição de todos os pinos desejados, basta salvar o arquivo UCF e fechar a janela do mesmo. A partir deste instante o arquivo UCF fará parte do projeto, sendo colocado logo abaixo do arquivo com a descrição VHDL:

Fig. 21 –Arquivo UCF na Hierarquia de Projeto Para implementar o projeto basta selecionar o arquivo VHDL e clicar duas vezes sobre o

sub-processo “Implement Design” (vide item 3.2).

3.5 Download

Para a gravação da FPGA, basta conectar o cabo de programação à porta paralela do PC e ao

conector JTAG da placa didática (vide ANEXO B) e ligar a fonte de alimentação à placa. Em seguida, selecionar o arquivo “porta_e_vhdl.vhd” na janela “Sources” e clicar 2 vezes

no sub-processo “Configure Device (iMPACT )”, que está associado ao processo “Generate Programming File”.

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

18/51

Fig. 22 – Aplicativo de Programação da FPGA

Na janela abaixo basta verificar se a opção que detecta automaticamente a placa está habilitada e clicar em <Concluir>:

1o) Selecionar o arquivo VHD

2o) Clicar duas vezes em “Configure Device (iMPACT)”

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

19/51

Fig. 23 – Programação da FPGA Será feita a conexão com a placa através da porta paralela do PC e o iMPACT irá mostrar a

tela da figura 23, após detectar os dois componentes Xilinx da placa. Caso aconteça algum erro na conexão com a placa e o PC, basta conectar os cabos, ligar a fonte da placa e acionar a opção :File-Initialize Chain”.

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

20/51

Fig. 24 – Escolha do Arquivo de Programação da FPGA Nesta tela basta selecionar o arquivo “porta_e.bit” e clicar em <Abrir>. Se aparecer uma

mensagem de aviso (Warning......), basta clicar em <OK>. Na próxima janela basta clicar em “Cancelar”, pois não será programado nenhum arquivo na

memória PROM existente na placa. Este é o segundo chip que aparece na tela (xcf02s).

Para configurar a FPGA basta clicar com o botão direito sobre o componente XC3S400 mostrado no iMPACT e escolher a opção “Program”:

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

21/51

Fig. 25 - Programação da FPGA

Será aberta uma janela denominada “Programming Properties”. Basta certificar-se que a opção “Verify” não está selecionada e clicar em <OK>:

Fig. 26 – Opções de Programação da FPGA

Após este procedimento aparecerá uma janela com o progresso da gravação do FPGA e no final indicará se gravou corretamente:

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

22/51

Fig. 27 – Confirmação de Programação da FPGA

Após a programação da FPGA basta fechar a janela do iMPACT. Se aparecer a mensagem abaixo, basta clicar em <Não>:

Fig. 28 – Mensagem da Ferramenta iMPACT A partir deste instante o projeto pode ser testado na placa, utilizando-se as chaves SW7 e

SW6 como entradas da porta “E” e o LED7 como saída da mesma:

Fig. 29 – Porta E implementada na placa

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

23/51

4 Experiências

4.1 Contador Bidirecional (2 pontos)

O objetivo da 1a experiência é implementar um contador binário descrito em VHDL e simular o mesmo utilizando a ferramenta ISE da Xilinx.

O roteiro para a execução da experiência é o seguinte: a) abrir o “Project Navigator” (Start → Programs → Xilinx ISE 7.1i → Project Navigator b) selecionar File → New Project; c) Na janela “New Project”, escolher o diretório de trabalho (Project Location), o nome do

projeto (CONT_VHDL) e o tipo de arqivo do módulo principal (Top-Level Module Type). O tipo de arquivo é “HDL”. No diretório de trabalho será criado um subdiretório com o nome do projeto escolhido;

d) Clicar em <avançar> e) Selecionar o dispositivo e o tipo de projeto

• Family (família de FPGA): Spartan-3 • Device (código do componente): xc3s400 • Package (encapsulamento): ft256 • Speed Grade (velocidade da FPGA): -4 • Top-Level Module Type (tipo de descrição do módulo mais alto da hierarquia):

HDL • Synthesis Tool (ferramenta de síntese): XST(VHDL/Verilog) • Simulator (ferramenta de simulação): ISE Simulator (VHDL/Verilog)

f) Clicar em <avançar>; g) Clicar na opção “New Source” h) Na opção “Create New Source”, selecionar a opção “VHDL Module” e colocar o nome do

arquivo igual a “cont_vhdl”, deixando a opção “Add to project” selecionada. i) Clicar em <avançar> j) Na opção “Define VHDL Source”, no campo “Entity Name” colocar “contador”. No campo

“Architecture Name” colocar “contador_arq”. Esta janela possui uma tabela que nos permite definir os sinais externos de entrada e saída do nosso módulo. Basta preencher a mesma de acordo com a tabela abaixo.

Port Name Direction MSB LSB clock in direcao in reset in saida inout 3 0

k) Clicar em <avançar> e <concluir>. l) Na opção “Create New Source” novamente, clicar em <avançar>. m) Na opção “Add Existing Source”, clicar em <avançar>. n) Na janela “New Project Information”, verificar se as opções descritas estão corretas e clicar

em <Concluir>

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

24/51

Após o procedimento acima, na janela do Project Navigator denominada “Sources in Project” aparecerá o arquivo “cont_vhdl.vhd”, logo abaixo do nome da FPGA escolhida anteriormente. Este arquivo com a descrição VHDL modelo será aberto automaticamente.

Neste arquivo está faltando apenas descrever o funcionamento do nosso contador, após a palavra “begin”, que corresponde ao início da descrição da arquitetura do módulo “contador”.

O contador deverá funcionar de acordo com o número de clocks recebidos, através de uma contagem progressiva se o sinal “direcao” for igual a “1” e regressiva se o sinal for igual a “0”.

Para tanto, basta acrescentar o seguinte processo: process (clock) begin if reset='1' then saida <= “0000”;

elsif clock='1' and clock'event then if direcao='1' then saida <= saida + 1; else saida <= saida - 1; end if; end if; end process;

4.1.1 Implementação e Simulação (1 ponto) Para implementar o projeto através do ISE, basta escolher o arquivo que descreve o mesmo

na janela “Sources in Project” e depois clicar duas vezes no processo chamado “Implement Design”, na janela “Process for Source .....”.

3o Exercício: Simular o contador descrito em VHDL, fazendo o mesmo contar progressivamente até 10 em decimal e voltar a contagem para 5.

4o Exercício: a) atribuir a pinagem do SD de acordo com a tabela abaixo:

SINAL PINO Placa clock M13 BTN0 direcao K13 SW7 reset F12 SW0 saida<0> K12 LED0 saida<1> P14 LED1 saida<2> L12 LED2 saida<3> N14 LED3

b) implementar o SD;

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

25/51

c) arquivar o projeto para ser utilizado na próxima aula. Selecionar a opção “Project → Archive”, escolher o diretório e nome do arquivo e clicar em <Save>.

Após este procedimento, salvar o arquivo *.ZIP para ser utilizado na próxima aula.

4.1.2 Download (1 ponto) A segunda parte da primeira experiência consiste na programação da placa didática da

Xilinx com o projeto desenvolvido na primeira parte. a) Descompactar o arquivo gerado na aula anterior em um diretório livre da área de alunos; b) Abrir o arquivo *.ISE através da ferramenta ISE; c) Implementar o projeto, selecionando o arquivo que descreve o mesmo na janela “Sources in

Project” e depois clicar duas vezes no processo chamado “Implement Design”, na janela “Process for Source .....”.

d) Conectar a placa da Xilinx ao PC através do cabo de programação; e) Conectar a fonte de alimentação à placa da Xilinx; f) Utilizando o procedimento descrito no item 3.5, programar a placa da Xilinx;

Testar o contador através da chave SW7 (DIREÇÃO), gerando o clock através da chave BT0 (CLOCK), observando a contagem nos LEDs;

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

26/51

4.2 Máquina de Estados em VHDL (1 ponto)

Nesta experiência serão implementadas duas máquinas de estado em VHDL, com as respectivas simulações.

a) abrir o “Project Navigator” (Start → Programs → Xilinx ISE 8.1i → Project Navigator b) selecionar File → New Project. c) Na janela “New Project”, escolher o diretório de trabalho (Project Location), o nome do

projeto (MAQ_EST_VHDL) e o tipo de arquivo do módulo principal (Top-Level Module Type). O tipo de arquivo é “HDL”. No diretório de trabalho será criado um subdiretório com o nome do projeto escolhido;

d) Clicar em <avançar> e) Selecionar o dispositivo e o tipo de projeto

• Family (família de FPGA): Spartan-3 • Device (código do componente): xc3s400 • Package (encapsulamento): ft256 • Speed Grade (velocidade da FPGA): -4 • Top-Level Module Type (tipo de descrição do módulo mais alto da hierarquia):

HDL • Synthesis Tool (ferramenta de síntese): XST(VHDL/Verilog) • Simulator (ferramenta de simulação): ISE Simulator (VHDL/Verilog)

f) Clicar em <avançar>. g) Clicar na opção “New Source” h) Na opção “Create New Source”, selecionar a opção “VHDL Module” e colocar o nome do

arquivo igual a “maq_est_vhdl”, deixando a opção “Add to project” selecionada. i) Clicar em <avançar> j) Na opção “Define VHDL Source”, no campo “Entity Name” colocar “maq_estados”. No

campo “Architecture Name” colocar “maq_estados_arq”. Esta janela possui uma tabela que nos permite definir os sinais externos de entrada e saída do nosso módulo. Basta preencher a mesma de acordo com a tabela abaixo.

Port Name Direction MSB LSB clock in entrada in saida out

k) Clicar em <avançar> e <concluir>. l) Na opção “Create New Source” novamente, clicar em <avançar>. m) Na opção “Add Existing Source”, clicar em <avançar>. n) Na janela “New Project Information”, verificar se as opções descritas estão corretas e clicar

em <Concluir> Após o procedimento acima, na janela do Project Navigator denominada “Sources in Project”

aparecerá o arquivo “maq_est_vhdl.vhd”, logo abaixo do nome da FPGA escolhida anteriormente. Este arquivo com a descrição VHDL modelo será aberto automaticamente.

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

27/51

A descrição da arquitetura da entidade que implementa a máquina de estados encontra-se abaixo. Basta copiá-la no lugar da arquitetura gerada automaticamente pelo ISE.

architecture maq_estados_arq of maq_estados is type TIPO_NOVO is (UM, TRES, QUATRO, CINCO, SEIS, SETE); signal ESTADO: TIPO_NOVO; begin process (clock) begin if clock'EVENT and clock = '1' then case ESTADO is when UM => if ENTRADA = '0' then ESTADO <= SEIS; SAIDA <= '0'; else ESTADO <= TRES; SAIDA <= '1'; end if; when TRES => ESTADO <= CINCO; SAIDA <= '0'; when QUATRO => ESTADO <= TRES; SAIDA <= '1'; when CINCO => ESTADO <= SETE; SAIDA <= '0'; when SEIS => ESTADO <= CINCO; SAIDA <= '0'; when SETE => ESTADO <= QUATRO; SAIDA <= '0'; end case; end if; end process; end maq_estados_arq;

Para implementar o projeto através do ISE, basta escolher o arquivo que descreve o mesmo na janela “Sources in Project” e depois clicar duas vezes no processo chamado “Implement Design”, na janela “Process for Source .....”.

Para a simulação desta máquina de estados será escolhida a opção “Simulação

Comportamental” (“Simulate Behavioral Model”). Nesta simulação o ISE não sintetiza o sistema, apenas fornece o comportamento do mesmo obtido da descrição em VHDL.

A simulação comportamental é realizada da seguinte maneira: a) selecionar o arquivo “maq_est_vhdl” na janela “Sources in Project” b) Selecionar “Project → New Source”. Na janela New Source, selecionar o tipo “Test Bench

Waveform” e colocar como nome do arquivo “maq_est_tb”. c) Clicar em <avançar> 2 vezes. d) Clicar em <Concluir> e) Na janela “Initialize Timing” clicar em <Concluir>. f) Selecionar “Test Bench → Set End of Test Bench” e mudar o valor para 3000 ns, clicando

em <OK>.

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

28/51

g) Salvar o arquivo de Test Bench (“File – Save”).

Será mostrada na tela a janela com as formas de onda abaixo:

Fig. 30 – Simulação da Máquina de Estados Para rodar a simulação comportamental da máquina de estados basta escolher o arquivo

“maq_est_tb.tbw” na janela “Sources” e clicar duas vezes no processo “Simulate Behavioral Model” na janela “Process for Source: “maq_est_tb”” :

Fig. 31 – Simulação da Máquina de Estados

1o) Selecionar o arquivo TBW

2o) Clicar duas vezes em “Simulate Behavioral Model”

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

29/51

Será mostrada na tela a simulação, conforme a figura abaixo:

Fig. 32 – Simulação da Máquina de Estados

Como a variável de estado é um sinal interno ao projeto, para visualizá-la na tela do ISIM é necessário seguir os passos abaixo:

a) Abrir a hierarquia dos elementos da simulação (clicando no botão com o sinal “+”) até

visualizar a variável “Estado”, selecionando a mesma;

Fig. 33 – Simulação da Máquina de Estados

1o) Selecionar o arquivo TBW

2o) Selecionar a variável “estado”

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

30/51

b) Arrastar a mesma até a tela de formas de onda;

Fig. 34 – Simulação da Máquina de Estados

Para que o sinal “estado” seja atualizado é necessário reiniciar a simulação e rodá-la novamente. Isto é feito da maneira descrita em seguida.

a) Clique no botão responsável pela reinicialização:

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

31/51

Fig. 35 – Reinicialização da Simulação da Máquina de Estados

b) Clicar no botão de simulação:

Fig. 36 – Simulação da Máquina de Estados

Aparecerá na tela a janela com a simulação da máquina de estados, agora mostrando a variável de estado sendo atualizada:

Fig. 37 – Simulação com a Variável de Estado 5o Exercício: Mudar o valor da entrada para um, simular a máquina de estados novamente (incluindo a variável de estado) e mostrar para o mestre. 6o Exercício: Modificar o arquivo VHDL anterior para descrever a máquina de estados abaixo, simulando a mesma, e mostrar para o mestre. Observar que a máquina possui duas entradas, denominadas B1 e B2.

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

32/51

:

Fig. 38 –Máquina de Estados do Exercício 5

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

33/51

4.3 Matrícula no Display (3 pontos)

Projetar uma máquina de estados que siga a seqüência do seu número de matrícula, reaproveitando os estados com algarismos já definidos, sendo que uma variável de entrada deve selecionar qual caminho os estados reaproveitados devem seguir, como no exemplo abaixo:

Fig. 39 –Máquina de Estados do número de matrícula

Para apresentar o número do aluno no display, deve-se percorrer os seguintes estados: E0�E1�E2�E1�E3�E4�E5�E1�E5�E6. O estado inicial E0 é alcançado em qualquer momento pelo sinal de RESET em nível alto.

A saída deve ser projetada como sete sinais independentes, que mostrarão o número representado pelo estado. No estado E0, apenas o segmento g do display deve estar acesso. Considerar que os segmentos do display acendem em nível lógico 0.

O clock da máquina de estados será gerado a partir de duas chaves tipo “push-button” conectadas a um flip-flop tipo SR, com reset. A figura abaixo ilustra o flip-flop e sua implementação em VHDL:

Número do aluno: 10142515-3

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

34/51

Fig. 40 – Flip-Flop em VHDL O código VHDL que implementa a máquina de estados da figura 39 é o seguinte: entity Maqui_Est_VHDL is Port ( ST : in STD_LOGIC; RST : in STD_LOGIC; RESET : in STD_LOGIC; DIP : in STD_LOGIC_VECTOR (2 downto 0); CLK : inout STD_LOGIC; REALIM : inout STD_LOGIC; A : out STD_LOGIC; B : out STD_LOGIC; C : out STD_LOGIC; D : out STD_LOGIC; E : out STD_LOGIC; F : out STD_LOGIC; G : out STD_LOGIC); end Maqui_Est_VHDL; architecture Behavioral of Maqui_Est_VHDL is TYPE TIPO_NOVO IS(E0, E1, E2, E3, E4, E5, E6); SIGNAL ESTADO: TIPO_NOVO; BEGIN REALIM <= CLK NOR ST ; CLK <= not (RST OR RESET OR REALIM); PROCESS (RESET, CLK) BEGIN IF RESET = '1' THEN

REALIM <= CLK NOR ST ; CLK <= not (RST OR RESET OR REALIM);

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

35/51

ESTADO <= E0; A <= '1'; B <= '1'; C <= '1'; D <= '1'; E <= '1'; F <= '1'; G <= '0'; ELSIF (CLK'EVENT AND CLK = '1') THEN CASE ESTADO IS WHEN E0 => ESTADO <= E1 ; A <= '1'; B <= '0'; C <= '0'; D <= '1'; E <= '1'; F <= '1'; G <= '1'; WHEN E1 => IF DIP = "000" THEN ESTADO <= E2; A <= '0'; B <= '0'; C <= '0'; D <= '0'; E <= '0'; F <= '0'; G <= '1'; ELSIF DIP = "001" THEN ESTADO <= E3; A <= '1'; B <= '0'; C <= '0'; D <= '1'; E <= '1'; F <= '0'; G <= '0'; ELSIF DIP = "010" THEN ESTADO <= E5; A <= '0'; B <= '1'; C <= '0'; D <= '0'; E <= '1'; F <= '0'; G <= '0'; END IF; WHEN E2 => ESTADO <= E1 ; A <= '1'; B <= '0'; C <= '0'; D <= '1'; E <= '1'; F <= '1'; G <= '1'; WHEN E3 => ESTADO <= E4 ;

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

36/51

A <= '0'; B <= '0'; C <= '1'; D <= '0'; E <= '0'; F <= '1'; G <= '0'; WHEN E4 => ESTADO <= E5 ; A <= '0'; B <= '1'; C <= '0'; D <= '0'; E <= '1'; F <= '0'; G <= '0'; WHEN E5 => IF DIP = "000" THEN ESTADO <= E1; A <= '1'; B <= '0'; C <= '0'; D <= '1'; E <= '1'; F <= '1'; G <= '1'; ELSIF DIP = "001" THEN ESTADO <= E6; A <= '0'; B <= '0'; C <= '0'; D <= '0'; E <= '1'; F <= '1'; G <= '0'; END IF; WHEN E6 => ESTADO <= E1; A <= '1'; B <= '0'; C <= '0'; D <= '1'; E <= '1'; F <= '1'; G <= '1'; END CASE; END IF; END PROCESS; end Behavioral;

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

37/51

4.3.1 Implementação e Simulação (1 ponto) Modificar a máquina de estados do exemplo para que a mesma apresente o número de

matrícula do aluno. Codificar a Máquina de estados em VHDL (utilizando o exemplo como ponto de partida) e

simular no ISE XILINX durante a aula de desenvolvimento.

4.3.2 Download (2 pontos) Na aula de avaliação, fazer o download do projeto e mostrar ao professor.

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

38/51

4.4 Simulação de Redes de Petri em VHDL (1 ponto)

Nesta experiência será implementada uma Rede de Petri em VHDL, com a respectiva simulação.

A rede a ser implementada pode ser vista na figura abaixo:

Fig. 41 – Exemplo de Rede de Petri

6o Exercício: Obter as equações dos lugares e das saídas da rede acima. Para implementar a rede de Petri em VHDL deve ser seguido o procedimento abaixo: a) abrir o “Project Navigator” (Start → Programs → Xilinx ISE 8.1i → Project Navigator); b) selecionar File → New Project; c) na janela “New Project”, escolher o diretório de trabalho (Project Location), o nome do

projeto (REDE_VHDL) e o tipo de arquivo do módulo principal (Top-Level Module

E0

E2

E1

E3

A

B

A ou B

C

t0

t1 t3

t2 t4

LED0

LED0, LED1 LED2

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

39/51

Type). O tipo de arquivo é “HDL”. No diretório de trabalho será criado um subdiretório com o nome do projeto escolhido;

d) clicar em <avançar>; e) selecionar o dispositivo e o tipo de projeto

Family (família de FPGA): Spartan-3 Device (código do componente): xc3s400 Package (encapsulamento): ft256 Speed Grade (velocidade da FPGA): -4 Top-Level Module Type (tipo de descrição do módulo mais alto da hierarquia): HDL Synthesis Tool (ferramenta de síntese): XST(VHDL/Verilog) Simulator (ferramenta de simulação): ISE Simulator (VHDL/Verilog)

f) clicar em <avançar>; g) clicar na opção “New Source”; h) na opção “Create New Source”, selecionar a opção “VHDL Module” e colocar o nome

do arquivo igual a “rede_vhdl”, deixando a opção “Add to project” selecionada; i) clicar em <avançar>; j) na opção “Define VHDL Source”, no campo “Entity Name” colocar “rede_Petri”. No

campo “Architecture Name” colocar “rede_Petri_arq”. Esta janela possui uma tabela que nos permite definir os sinais externos de entrada e saída do nosso módulo. Basta preencher a mesma de acordo com a tabela abaixo;

Port Name Direction MSB LSB clk in A in B in C in Reset in LED0 out LED1 out LED2 out

k) clicar em <avançar> e <concluir>; l) na opção “Create New Source” novamente, clicar em <avançar>; m) na opção “Add Existing Source”, clicar em <avançar>; n) na janela “New Project Information”, verificar se as opções descritas estão corretas e

clicar em <Concluir>; Após o procedimento acima, na janela do Project Navigator denominada “Sources in Project”

aparecerá o arquivo “rede_vhdl.vhd”, logo abaixo do nome da FPGA escolhida anteriormente. Este arquivo com a descrição VHDL modelo será aberto automaticamente.

A descrição da arquitetura da entidade que implementa a rede encontra-se abaixo. Basta copiá-la no lugar da arquitetura gerada automaticamente pelo ISE.

ARCHITECTURE rede_Petri_arq OF rede_Petri IS SIGNAL E: std_logic_vector (3 downto 0); BEGIN

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

40/51

process (CLK,RESET) begin if RESET = '1' then E <= "0001"; elsif CLK'EVENT AND CLK = '1' THEN E(0) <= (E(0) AND NOT A) OR (E(2) AND (A OR B)); E(1) <= (E(0) AND A) OR (E(1) AND NOT B AND NOT C); E(2) <= (E(1) AND B) OR (E(2) AND NOT (A OR B)); E(3) <= (E(1) AND C) OR E(3); end if; end process; LED0 <= E(1) OR E(2); LED1 <= E(2); LED2 <= E(3); END rede_Petri_arq;

Para sintetizar o projeto através do ISE, basta salvar o arquivo VHDL e depois clicar duas vezes no processo chamado “Synthesize - XST”, na janela “Processes: ”.

Para a simulação desta rede será escolhida a opção “Simulação Comportamental” (“Simulate

Behavioral Model”). Nesta simulação o ISE não implementa o sistema totalmente, apenas sintetiza e simula o comportamento do mesmo, obtido da descrição em VHDL.

A simulação comportamental é realizada da seguinte maneira: a) selecionar o arquivo “rede_vhdl” na janela “Sources for: ” ; b) selecionar “Project → New Source”. Na janela New Source, selecionar o tipo “Test

Bench Waveform” e colocar como nome do arquivo “rede_vhdl_tb”; c) clicar em <avançar> 2 vezes; d) clicar em <Concluir>; e) na janela “Initialize Timing” clicar em <Concluir>; f) selecionar “Test Bench → Set End of Test Bench” e mudar o valor para 3000 ns,

clicando em <OK>; g) salvar o arquivo de Test Bench (“File – Save”).

Será mostrada na tela a janela com as formas de onda abaixo:

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

41/51

Fig. 42 – Simulação da Rede de Petri (formas de onda) Para rodar a simulação comportamental da rede de Petri basta escolher o arquivo

“rede_vhdl_tb.tbw” na janela “Sources for:” (não esquecendo de definir o tipo de fontes como “Behavioral Simulation”) e clicar duas vezes no processo “Simulate Behavioral Model” na janela “Processes: ” :

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

42/51

Fig. 43 – Simulação da Rede de Petri (comandos) Será mostrada na tela a simulação, conforme a figura abaixo:

Fig. 44 – Simulação da Rede de Petri (resultado final)

1o) Selecionar o arquivo TBW

2o) Clicar duas vezes em “Simulate Behavioral Model”

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

43/51

Para mostrar os lugares da rede na simulação, basta seguir os passos abaixo: a) abrir a hierarquia dos elementos da simulação (clicando no botão com o sinal “+”) até

visualizar a variável “e[3:0]”, selecionando a mesma;

Fig. 45 – Simulação da Rede de Petri (escolha dos lugares)

c) Arrastar a mesma até a tela de formas de onda;

1o) Selecionar o arquivo TBW

2o) Selecionar a variável “estado”

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

44/51

Fig. 46 – Simulação da Rede de Petri (visualização dos lugares)

Para que a variável e[3:0] seja atualizado é necessário reiniciar a simulação e rodá-la novamente. Isto é feito da maneira descrita em seguida.

c) Clique no botão responsável pela reinicialização:

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

45/51

Fig. 47 – Reinicialização da Simulação da Rede de Petri

d) Clicar no botão de simulação:

Fig. 48 – Rodando a Simulação da Rede de Petri

Aparecerá na tela a janela com a simulação da rede, agora mostrando o número de marcas em cada lugar:

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

46/51

Fig. 49 – Simulação incluindo os lugares da rede No exemplo acima temos apenas uma marca no lugar E[0], pois acionamos o reset e não acionamos o sinal A, que dispararia a primeira transição. 5o Exercício: Simular a rede de Petri, acionando os sinais A, B e C, verificando se a marca passa de um lugar a outro, na ordem correta. Verifique também se as saídas são acionadas corretamente. 5 Bibliografia Apostila de laboratório utilizada na PUC-SP. Manuais da Xilinx

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

47/51

ANEXO A –Software ISE WebPack

Para instalar a versão gratuita do software ISE, ut ilizar o link abaixo:

http://direct.xilinx.com/direct/webpack/81/WebPACK_ 81i_SFD.exe

Tamanho do arquivo ~ 760 MB Qualquer dúvida, entrar em contato com o Prof. Edso n Horta, preferencialmente por e-mail:

[email protected]

OBS: Deve ser instalada a versão 8.1i do ISE OBS2: No CLE estão disponíveis dois CDs com os arquivos de instalação do ISE 8.1i.

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

48/51

ANEXO B – Placa Didática (Spartan3 Starter Kit)

Este manual apresenta um resumo das características da placa didática da Xilinx. Para obter o manual original, basta acessar o link:

http://direct.xilinx.com/bvdocs/userguides/ug130.pdf

A placa é constituída por uma FPGA da família Spartan-3 e alguns periféricos conectados à

mesma, como pode ser visto na figura B1.

Fig. B1 – Placa Didática Spartan 3 Starter Kit

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

49/51

Cada um dos componentes numerados na figura anterior está posicionado fisicamente na placa, de acordo com as figuras B2 e B3.

Fig. B2 – Placa Didática (Frente)

Fig. B3 – Placa Didática (Verso)

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

50/51

Nas experiências deste laboratório serão utilizados principalmente os displays de 7 segmentos, as chaves deslizantes, as chaves tipo “push button” e os LEDs. Os displays estão conectados aos pinos da FPGA da maneira mostrada na figura 4 (os valores entre parênteses são as coordenadas dos pinos da FPGA). Os segmentos de cada display e o ponto decimal estão ligados em paralelo e, para acioná-los basta alimentá-los com nível “0” de tensão. Cada um dos displays só irá acender se o seu pino de anodo estiver com nível “0”. Desta maneira, são necessários apenas 12 pinos para controlar os 4 displays. Caso fosse conectado cada um dos segmentos separadamente, seriam necessários 32 pinos. A desvantagem desta arquitetura é que, para mostrar os quatro displays com valores diferentes é necessário fazer uma varredura nos anodos e nos segmentos, adotando-se uma freqüência que torna imperceptível ao olho humano verificar que os displays estão sendo controlados separadamente. O exemplo da figura B4 mostra como seria feito para escrever o número 2 no primeiro display da esquerda.

Fig. B4 – Placa Didática (LEDs)

As chaves deslizantes que se encontram abaixo do display estão conectadas aos seguintes pinos da FPGA:

Na posição ON a chave gera um nível lógico “1” na sua saída e, caso contrário, gera um nível lógico “0”.

Projeto de Sistemas Digitais Utilizando FPGAs – Fev/08

Prof. Edson L. Horta

51/51

As chaves tipo “push button” ficam ao lado das chaves deslizantes. Cada uma delas está ligada aos seguintes pinos:

Quando a chave é pressionada gera-se um nível “1” no pino correspondente da FPGA. A chave BTN3 geralmente é utilizada para o sinal de “Reset” do sistema.

Existem 8 LEDs disponíveis na placa e cada um deles está conectado aos seguintes pinos:

Para acender o LED basta colocar um nível lógico “1” na entrada do mesmo. Na placa também existe um oscilador que fornece um clock de 50 MHz, conectado ao pino

“T9” da FPGA e um soquete que pode ser utilizado para a colocação de outros osciladores, conectado ao pino “D9”.

Para configurar a FPGA através do software iMPACT é necessário conectar o cabo de programação à porta paralela do PC e à placa didática, conforme mostrado na figura B5.

Fig. B5 – Conector JTAG