Dispositivos Lógicos Programáveis: FPGA Dispositivos Lógicos Programáveis: FPGA Disciplina:...

63
Dispositivos Lógicos Programáveis: FPGA Disciplina: Arquiteturas Especiais para Microprocessadores Professora: Maria Stela Veludo de Paiva Aluna: Luiza Maria Romeiro Codá

Transcript of Dispositivos Lógicos Programáveis: FPGA Dispositivos Lógicos Programáveis: FPGA Disciplina:...

Dispositivos Lógicos Programáveis:

FPGA

Dispositivos Lógicos Programáveis:

FPGA

Disciplina: Arquiteturas Especiais para MicroprocessadoresProfessora: Maria Stela Veludo de PaivaAluna: Luiza Maria Romeiro Codá

•EVOLUÇÃO DA TECNOLOGIA DE PROJETOS DIGITAIS.

• DISPOSITIVOS LÓGICOS PROGRAMÁVEIS:

Evolução e Classificação

• FPGA : – Tecnologia de Programação

-- Arquitetura de Blocos Lógicos

-- Arquitetura de Roteamento

• Software para programação de FPGA

Tópicos:Tópicos:

EVOLUÇÂO DA TECNOLOGIA DE PROJETOS DIGITAIS:EVOLUÇÂO DA TECNOLOGIA DE PROJETOS DIGITAIS:

• De transistores individuais para circuitos integrados VLSI ( Very Large Scale Integration).• CIs ( circuitos integrados) digitais podem ser construídos sob diferentes tecnologias dependendo do seu tamanho e de sua função no sistema.

IMPLEMENTAÇÃO DE CIRCUITOS DIGITAIS:IMPLEMENTAÇÃO DE CIRCUITOS DIGITAIS:

Podem ser agrupadas em duas categorias:

• Cis customizados: necessitam de um processo de fabricação especial que requer máscaras específicas para cada projeto. Tempo de desenvolvimento é longo e os custos são altos. Utilizados em aplicação de grande volume de produção.

• CIs Semicustomizados

• CIs Semicustomizados:

1. Mask- Programmable Gate Array (MPGAs):Utiliza-se de máscaras genéricas de módulos pré-

projetados, mas ainda utiliza-se de máscaras específicas para interconexão dos módulos. O Projeto é facilitado por biblioteca de células, levando a um tempo de desenvolvimento mais curto e custos mais baixos que CIs customizados.

2. Standard Cells: A tarefa de projetar é facilitada pelo uso de módulos pré-projetados salvos em banco de dados .São menos eficientes em tamanho e desempenho do que os CIs customizados, mas seu custo é baixo.

3. Programmable Logic Device (PLDs):A programação é feita pelo usuário, eliminando o processo de fabricaçãoE facilitando eventuais mudanças no projeto.Tempo curto de projeto e baixo custo.

Tecnologias de Projeto de Circuitos Integrados Digitais

Tecnologias de Projeto de Circuitos Integrados Digitais

SPLD = Simple Prog. Logic Device

PAL = Prog. Array of Logic

CPLD = Complex PLD

FPGA = Field Prog. Gate Array

ASICs = Application Specific Integrated Circuits

Tecnologia de Projeto

Customizados (ASICS) Semicustomizados

ProgrammableLogic Devices(PLDs)

GateArrays

Standard Cells

CPLDsSPLDs(PALs) FPGAs

Características PLD Lógica Discreta Gate Array

Velocidade

Densidade

Custo

Tempo de desenvolvimento

Tempo de protótipo e simulação

Tempo de fabricação

Facilidades de uso

Futuras modificações

Risco de estoque

Suporte para ferramentas

Bom

Adequado

Ruim

Atualmente, podemos desenvolver um projeto digital, utilizando 3 diferentes componentes: circuito discreto (TTL, CMOS, etc) Gate Array Lógica Programável

Vantagens do uso da Lógica Programável:Vantagens do uso da Lógica Programável:

EVOLUÇÃO DOS DISPOSITIVOS LÓGICOS PROGRAMÁVEIS PELO USUÁRIO: EVOLUÇÃO DOS DISPOSITIVOS LÓGICOS PROGRAMÁVEIS PELO USUÁRIO:

PROM ( Programmable Read-Only Memory):1º. Tipo de chip programável: possui decodificador completo para seusendereços na entrada, mas funções lógicas utilizam poucos termos de produto. Portanto a PROM é ineficiente para realizar circuitos lógicos.PLAs ( Programmable Logic Arrays):

1º. Dispositivo desenvolvido para a implementação de circuitos lógicos.Consiste de dois níveis de portas lógicas programáveis, um de portasWired-AND e outro de wired-OR., os quais fazem delas um dispositivo versátil,porém possuem alto custo e pobre desempenho em termos de velocidade.

PAL ( Programmable Array Logic):Foram desenvolvidos para superar as deficiências das PLAs nos anos 70. Possuem um único nível de programação consistindo de portas wired-ANDProgramáveis alimentando portas OR fixas. Para compensar o plano fixo, são produzidas com diferentes número de entradas e saídas.Geralmente contém flip-flops conectados às saídas das portas OR para queCircuitos seqüenciais possam ser implementados.

Evolução dos dispositivos Lógicos Programáveis:

Evolução dos dispositivos Lógicos Programáveis:

a) PR O M b) PLA c) P AL

x

C onexão F ixa

C onexão P rogram áve l

Legenda:

Estruturas de uma PROM (a), um PLA (b) e um PAL (c).

GRUPOS DE DISPOSITIVOS PROGRAMÁVEIS:GRUPOS DE DISPOSITIVOS PROGRAMÁVEIS:

SPLDs (Simple Programmable Logic Devices):É a categoria de todos os pequenos PLDs como PLAs, PALs , onde as Características mais importantes são baixo custo e alto desempenho.CPLDs ( Complex Programmable Logic Devices): É constituído de múltiplos SPLDs integrados em um único chip com

Interconexões programáveis para conectar os blocos SPLDs, fornecendouma capacidade lógica de até 50 SPLDs típicos.

FPGA (Field-Programmable Gate Array):São constituídos de um arranjo de elementos de circuitos não conectados,

chamados blocos lógicos, e recursos de interconexão, cuja configuração é Através de programação pelo usuário.

O mercado de PLD:O mercado de PLD:

Diferenças básicas entre CPLD e FPGA:Diferenças básicas entre CPLD e FPGA:

C LB

C LB

C LB

C LB

S witchMatrix

In terconexãoProgram ável B locos de I/O

B locos Lógicos

D Q

SlewRate

Control

PassivePu ll-Up,

Pu ll-Down

Delay

Vcc

O utputBuffer

InputBuffer

Q D

Pad

D QSD

R D

EC

S/RContro l

D QSD

R D

EC

S/RContro l

1

1

F'

G '

H '

D IN

F'

G '

H '

D IN

F'

G '

H '

H '

HFu nc.G en.

GFu nc.G en.

FFu nc.G en.

G 4G 3G 2G 1

F4F3F2F1

C4C1 C2 C3

K

Y

X

H 1 D IN S /R E C

Arquitetura de FPGAsArquitetura de FPGAs

•1. Tipo de tecnologia de programação•2. Arquitetura dos blocos lógicos•3. Estrutura de sua arquitetura de roteamento

Arquitetura de FPGAs (continuação):Arquitetura de FPGAs (continuação):

• 1. Tipos de tecnologia de Programação:

1.1 SRAM (Static Random Acess Memory): o comutador é um transistor de passagem controlado pelo estado de um bit da SRAM. Utilizada pela Xilinx, Altera e AT&T. SRAM é volátil , necessitando a FPGA de uma memória externa

(PROM, EPROM, EEPROM ou disco magnético).

desvantagem: ocupa muito espaço no chip.

vantagem: por utilizar SRAM que é rapidamente reprogramável, e utiliza a tecnologia padrão de circuitos integrados para sua fabricação.

•1. Tipos de tecnologia de Programação (continuação):

1.2 Antifuse: é originalmente um circuito aberto que quando programado forma um caminho de baixa resistência. Utilizada pela Actel.

Vantagem : Tamanho reduzido o qual apresenta baixa capacitância quando não programado e baixa resistência quando programado.

Desvantagem: não permite a reprogramação, além disso, para programá-los é necessária a presença de transistores com larga área a fim de suportar as altas correntes (em torno de 5mA).

1.3. Gate Flutuante: o comutador é um transistor com gate flutuante iguais aos utilizados nas memórias EPROM (Erasable PROM) e EEPROM (Electrical Erasable PROM) : transistor MOS com 2 gates. EPROM utilizada pela Altera e EEPROM pela Lattice e MD.

•1. Tipos de tecnologia de Programação (continuação):

Programação: O gate flutuante armazena carga elétrica que é injetada pela aplicação de uma tensão alta entre o gate 1 e a fonte do transistor. Essa carga faz com que o limiar do transistor aumente, impedindo a condução do mesmo. Expondo o componente aos raios UV, essa carga desaparece e o transistor volta a funcionar normalmente.

Observação: na prática o transistor do tipo EPROM não é usado diretamente como comutador, mas sim fazendo pull-down.

•1.Tipos de tecnologia de Programação (continuação):1.3. Gate Flutuante(continuação):

Vantagens: • tecnologia EPROM: alta capacidade de reprogramação e retenção dos dados.• tecnologia EEPROM: além das vantagens da EPROM é possível programar e reter as informações com o chip já instalado na placa (ISP - In System Programmability).

Desvantagens:• tecnologia EPROM: exige três processos adicionais na fabricação. A resistência dos comutadores ligados não atinge valores baixos e o consumo total é maior devido aos resistores de pull-down.• tecnologia EEPROM: cada célula ocupa o dobro do espaço de uma EPROM.

RESUMO DAS TECNOLOGIAS DE PROGRAMAÇÃO: RESUMO DAS TECNOLOGIAS DE PROGRAMAÇÃO:

Nome Reprogramação Volatilidade Tecnologia

EPROM sim, fora do circuito

não UVCMOS

EEPROM Sim, no circuito

não EECMOS

SRAM Sim, no circuito

sim CMOS

Antifuse não não CMOS+

2. ARQUITETURA DE BLOCOS LÓGICOS:

Os blocos lógicos variam de tamanho e capacidade de Implementação e são baseados nos seguintes componentes:•pares de transistores;•Portas básicas tipo NAND ou XOR de duas entradas;•Look-up tables (LUTs);•Estruturas AND-OR de múltiplas entradas;Quanto ao bloco lógico classifica-se as FPGAs como:

•2.1 granularidade fina (blocos simples)•2.2 granularidade grossa (blocos mais complexos e maiores)

2. ARQUITETURA DE BLOCOS LÓGICOS (continuação):

2.1 Blocos de Granularidade Fina: Exemplo seria um bloco contendo alguns transistores interconectáveis ou portas lógicas básicas (por ex. NAND)

vantagem: são quase totalmente utilizados

desvantagem: são em número muito grande devido à baixa capacidade lógica necessitando de uma grande quantidade de trilhas de conexão e comutadores programáveis. Um roteamento desse tipo torna- se lento e ocupa grande área no chip.

2. ARQUITETURA DE BLOCOS LÓGICOS (continuação):2.1 Blocos de Granularidade Grossa: São baseados em \multiplexadores ou look-up tables

Vantagem: fornece um alto grau de funcionalidade com um número relativamente pequeno de transistores.

Desvantagem: Possuem muitas entradas necessitando de muitos comutadores, sobrecarregando o roteamento. (a tecnologia antifuse é mais adequada devido ao tamanho reduzido dos comutadores).

Look-up table (LUT): é uma memória de um bit de largura, onde suas Linhas de endereçamento funcionam como entradas do bloco lógico e sua saída fornece o valor da função lógica.Vantagem: alto grau de funcionalidade . Ex: uma LUT de K entradas pode

implementar qualquer função de K entradas e existem 22k funções.

Desvantagem: são inaceitavelmente grandes para mais que cinco entradas.

LÓGICA SEQUENCIAL:

A maioria dos blocos lógicos apresenta alguma forma de lógica seqüencial. Geralmente utilizam flip-flops tipo D que podem ser conectados via programação às saídas dos blocos combinacionais.Em alguns dispositivos, a lógica seqüencial não está explicitamentepresente, e deve ser formada utilizando-se o roteamento programávele os blocos puramente combinacionais.

3. ARQUITETURA DE ROTEAMENTO: É a maneira pela qual os comutadores programáveis e segmentos de trilha são posicionados para permitir a interconexão das células lógicas.

• Pinos : são as entradas e saídas dos blocos lógicos.

•Conexão: ligação elétrica de um par de pinos de blocos lógicos.

•Rede: é um conjunto de pinos de blocos lógicos que estão conectados.

•Comutador de roteamento (switch): é um dispositivo utilizado para conectar eletricamente dois segmentos de trilha.

Segmento de trilha: é um segmento não interrompido por comutadores programáveis. Cada terminação de um segmento possui um comutador associado.

•Trilha: é uma seqüência de um ou mais segmentos de trilha em uma direção, estendendo-se por todo o comprimento de um canal de roteamento. Pode ser composta de segmentos de tamanhos variados.

•Canal de roteamento: é a área entre duas linhas ou colunas de blocos lógicos. Um canal contém um grupo de trilhas paralelas.

Blocode

conexão

Bloco de

Comutação

BlocoLógico

Pinos

Segmentos de trilhas

Trilha

Canal de

roteamento

ARQUITETURA GERAL DE ROTEAMENTO

ARQUITETURA GERAL DE ROTEAMENTO

FAMÍLIA de FPGA da ALTERA FAMÍLIA de FPGA da ALTERA

ARQUITETURA BÁSICA DO FPGA DA ALTERA: série FLEX 8000ARQUITETURA BÁSICA DO FPGA DA ALTERA: série FLEX 8000

Arquitetura Básica do Elemento Lógico – Família Flex 8000 da AlteraArquitetura Básica do Elemento Lógico – Família Flex 8000 da Altera

-Baixo consumo de corrente.

-Componente em SRAM.

-Voltado para grande quantidade de registradores.

-Tensão de 3.3 e 5V.

-Alta Densidade.-Densidade de 4.000 a 50.000 utilizáveis..

APRESENTAÇÃO DO SOFTWARE DA ALTERAAPRESENTAÇÃO DO SOFTWARE DA ALTERA

•Entrada de dados•Entrada de dadosUtilizando o software MAX+PLUSII, podemos entrar com o projeto de diferentes maneiras,

agilizando o projeto.

Abaixo temos as diferentes formas de entrada de dados:

Esquemático => podemos entrar com um esquemático utilizando o editor gráfico do software

MAX+PLUSII, ou importar via Orcad.

Texto => pode ser gerado a partir de uma linguagem própria da Altera (AHDL) ou VHDL

gerados a partir do MAX+PLUSII.

Formas de Onda => o módulo de entrada via forma de onda permite que a partir da

descrição das formas de onda de entrada e saída possamos descrever

o projeto.

EDIF => o MAX+PLUSII permite que se importe qualquer arquivo padrão EDIF.

MAX+PLUSII MAX+PLUSII MAX+PLUSII

MAX+PLUSII MAX+PLUSII

Editor Gráfico Editor de Texto Editor de forma deonda

Editor de símbolos Floorplan Editor

Topo de hierarquia

.gdf .wdf .vhd .xnf .sch .tdf .edf .adf .smf

Importado de outros softwares

Importadodo A+PLUSE SAM+PLUS

ENTRADA DE DADOS:ENTRADA DE DADOS:

O arquivo topo de hierarquia pode ser um gráfico, gerado a partir do MAX+PLUSII ou Orcad,

um arquivo texto podendo ser em AHDL ou VHDL ou mesmo um arquivo EDIF gerado a partir

de outras ferramentas.

Abaixo temos uma descrição das principais extensões dos arquivo de entrada de dados:

- GDF - (graphic design file) - Arquivo gráfico gerado a partir do editor gráfico do MAX+PLUSII.

- SCH - (Orcad schematic file) - Arquivo gráfico gerado a partir do Orcad.

- WDF - (waveform design file) - Arquivo de forma de ondas gerado a partir do editor de forma de

onda do MAX+PLUII.

- TDF - (text design file) - Arquivo texto descrito em AHDL gerado a partir do editor de texto

do MAX+PLUSII.

- VHD - (VHDL design file) - Arquivo texto descrito em VHDL gerado a partir do editor de texto d

do MAX+PLUSII.

- EDF - (Edif input file)- Arquivo texto, formato Edif 290 ou 300, importado de outras CAE.

- XNF - (Xilinx Netilist Format file) - Arquivo texto, formato Xilinx.

- ADF - (Altera design File) - Arquivo texto, gerado pelo software Aplus da Altera.

- SMF - (State Machine Files) - Arquivo texto, gerado pelo software SAM+PLUS da Altera.

•INTRODUÇÃONas páginas seguintes, iremos utilizar a maioria das ferramentas básicas do

software MAX+PLUSII, construindo um projeto que se encontra no manualgeting starded da ALTERA.

•DESCRIÇÃO DO PROJETOIremos criar um projeto denominado CHIPTRIP, que será dividido em 5 blocosde hierarquia. Este projeto é um simulador de direção (em que você simulará vários caminhos e velocidade para chegar até a ALTERA).Abaixo segue o diagrama em bloco deste projeto:

chiptrip.gdf

tick_cnt.gdf time_cnt.tdf auto_max.tdf speed_ch.wdf

8count.gdf

TICK_CNT.GDF => Arquivo gráfico - grava o número de multas levadas. É composto porum contador up, incrementado a partir de uma multa recebida.TIME_CNT.TDF => Arquivo texto - arquivo de clock. Conta o número de pulsos de clockrequeridos para o veículo chagar até ALTERA.AUTO_MAX.TDF => Arquivo texto - estado de máquina que monitora os parâmetros dedireção e aceleração, determinando a próxima localização para seu veículo.SPEED_CH.WDF => Arquivo em forma de onda. Funciona como medidor de velocidade,checando a aceleração de seu veículo.

•CRIANDO UM ARQUIVO GRÁFICO1)ESPECIFICANDO O NOME DO PROJETOPara especificar o nome do projeto:1) Chame Project Name no FILE menu. Irá aparecer a seguinte janela

MOSTRA O NOME DO PROJETO

MOSTRA OS DIRETORIOS E SUBDIRETORIOS

MOSTRA TODOS DESIGN DO CORRENTE DIRETORIO

2) Digite TICK_CNT no nome do projeto.3) Clique OK.Na barra de título aparecerá o nome do corrente projeto, bem como subdiretórioem queo mesmo esta arquivado.

2)Criando um novo arquivoPara criar um novo arquivo:1) Clique icon do novo arquivo no TOOLBAR.2)Selecione arquivo editor gráfico.3)Cique OK.

EDITOR GRÁFICOEDITOR DE SÍMBOLOEDITOR DE TEXTOEDITOR DE FORMA DE ONDAS

Irá aparecer a seguinte janela:

textoLinha ortogonalLinha perpendiculararcoCirculo

Zoom inZoom out

Conecção entre linhas

Conecta e desconecta segmentos de linhas

Vista total da janela

4) Para Salvar o arquivo, no menu FILE, chamar SAVE AS.Aparecerá a seguinte janela:

NOME DO ARQUIVO

DIFERENTE EXTENSÃO

tick_cnt.

5)Clique ok.

3) Entrando com uma primitiva ou macrofunção1) Clique duas vezes com o botão da esquerda do mouse.Irá aparecer a seguintejanela:

PRIMITIVA OU MACRUFUNÇÃO

BIBLIOTECAS

2) Digite 8count no nome do símbolo.3) Clique OK.4) Repita o procedimento para nor2 e gnd.

4) Movendo um símbolo1) Com o botão da esquerda do mouse, clique em cima do símbolo a ser movido. Note que neste instante o mesmo adquire um contorno, representando que o mesmo foi selecionado.2) Mantendo o botão da esquerda pressionado, mova o símbolo para o lugar desejado.3) Em caso de desejar mover mais de um símbolo, com o botão da esquerda do mouse, selecione a área a ser movida, soltando o botão do mouse quando toda área estiver selecionada.

5) Entrando com pinos de saída e entrada1) Clique duas vezes o botão da esquerda do mouse na área de trabalho.2) Ao surgir a janela ENTER SYMBOL, digite o pino correspondente (input, output, bidir, etc).3)Clique ok.OBS: note que cada símbolo apresentado, possui uma numeração específica,que representa a ordem de chamada do símbolo, para posterior identificação.

8count

6) Colocando nome nos pinos1) Com o botão da esquerda do mouse, clique duas vezes sobre o nome do pino, observe que o mesmo será selecionado.2) Digite o novo nome do pino.3) Repita o procedimento acima para os 4 pinos, conforme esquema abaixo:4) INPUT:4 - get_ticket1

INPUT:5 - get_ticket2INPUT:6 - clkINPUT:7 - ticket[3..0]

OBS: Pinos que contenham colchete, só devem ser utilizados para representação de barramentos (vários pinos), sempre representando o bit mais significativo primeiro.4) O procedimento acima também é usado para nomear saídas ou entradas, utilizadas como conexão interna. Para o Software,não há diferença entre nomes representados por letras maiúsculas ou minúsculas.

7) Conectando os símbolos

2) Mova o mouse até a conexão do pino ou símbolo.3) Aperte e mantenha apertado o botão da esquerda do mouse.

1) Selecione o tipo de linha a ser utilizado no menu lateral.

3) Sem soltar o botão, leve a linha até o símbolo a ser conectado e solte o botão.4) Utilizar a linha fina para ligações de apenas um sinal.5) Utilizar a linha grossa para bus.

8) Utilizando bus

No caso de utilizarmos vários sinais ligados ao mesmo pino (bus), devemos proceder da seguinte maneira:

1) Observar a denominação correta do pino (usando o nome do pino, e entre chaves os sinais do mais significativo para o menos significativo)2) A conexão deste pinos com o pino deverá ser feita utilizando a linha grossa,selecionada pelo botão da direita do mouse (line style).3) No símbolo, deverá ser representado isoladamente cada sinal pelo seu nome.4) Para nomear a saída do símbolo e a entrada do pino, basta com o botão daesquerda do mouse clicar em cima da linha, e escrever o respectivo nome.

9) Salvando e checando eventuais erros

1) No menu do tollbars, clique o símbolo de salvar e checar.2) Se aparecer na tela a mensagem que não houve erro no projeto clique ok.Obs - Note que o comando salvar e checar, só terá efeito no projeto corrente. Caso o projeto modificado, não seja o que aparece no título, aparecerá

uma mensagem solicitando para trocar o nome do projeto.

10)Criando um símbolo Para se criar uma macrofunção deste projeto, devemos selecionar ao final domesmo no menu FILE, a opção CREATE DEFAUT SYMBOL.Irá surgir na tela a mensagem que o símbolo corrente já existe e se deseja repassar o símbolo já existente.Clique ok.obs: Qualquer mudança em uma macrofunção ou nível inferior de hierarquia,deverá ser criado um novo símbolo.

•Criando um arquivo com editor de forma de onda.1)Especificando o nome do projeto e criando um novo arquivo.

1) Troque o nome do projeto para speed_ch.2)Abra um novo arquivo de forma de onda usando o toolbar.3)Observe que a extensão do arquivo deverá ser .wdf.4) Salve como speed_ch.

2)Definindo entradas e saídas do projeto

1) Clique duas vezes o botão da esquerda do mouse no topo da planilha. Irá surgir a seguinte janela: nome do pino

especifica nível inicial

especifica tipo de pino especifica o tipo de lógica que esta ligado este pino

tipo de pino

2) Digite o nome do pino (accel_in), nível lógico inicial 0 e selecione como pino de entrada.3) Repita o procedimento acima para o pino reset e clk.

Criando uma máquina de estados (pino interno)1) Clique duas vezes no espaço em branco da planilha.2) Digite o nome do pino (speed).3) Selecione o valor inicial em X(indefinido).4) Selecione tipo de pino como BURIED NODE.5) Nas entradas secundárias, selecione CLK no clock e reset no RESET.6) Selecione tipo de nó como MACHINE.7)Clique OK.

Criando um pino de saída1) Clique duas vezes no espaço em branco da planilha. 4) Selecione tipo de pino como OUTPUT.2) Digite o nome do pino (get_ticket). 5) Nas entradas secundárias, selecione CLK no clock3) Selecione o valor inicial em 0. 6) Selecione tipo de nó como REGISTERED.7)Clique OK.

3) Editando ligações internas da máquina de estados1) Clique o botão 1 no pino speed.2) Chame OVERWRITE STATE NAME no menu EDIT.3) Digite LEGAL no nome do estado.4) Clique OK.

5) Selecione com o botão da esquerda pressionado, o intervalo de 300 a 540 ns.6) Chame OVERWRITE STATE NAME no menu EDIT.7) Digite WARNING.8) Clique OK. 9) Repita o procedimento 5 a 8 para o intervalo de 540 a 660 ns, digitando o estado TICKET.

300ns 540ns 660ns

4) Editando os valores do pino de entrada.1) Com o botão da esquerda do mouse, selecione o intervalo de 270 a 330ns no pino accel_in.2) Automaticamente ao soltar o botão, será repassado o valor de 0 para 1.3) Repita o procedimento acima para i intervalo de 510 a 570ns.4) Repita o procedimento anterior para o intervalo de 630 a 690ns e chame o comando OVERWRITE no menu EDIT, e chame X(indefinido).

330ns 510ns 570ns 630ns 690ns

5) Para editar o pino clk, com o botão da direita selecione de 60 a 120ns.6) Com o botão da esquerda selecione o intervalo de 0 a 120ns.7) Chame o comando COPY no menu EDIT.8) Chame o comando REPEAT no menu EDIT.9) Irá surgir na tela a seguinte janela:

10) Digite o número de vezes a ser repetido a forma de onda (máximo 10.000).11) Repita o procedimento 1 e 2 para o pino get_ticket no intervalo de 540 a 660 ns.

4) Salve e cheque o projeto.5) Crie o símbolo corrente.

270ms

Criando o top de hierarquia (gdf).1) Troque o nome do projeto para chiptrip.2) Chame um novo gráfico editor.3) Salve este gráfico editor como chiptrip.4) Crie o esquemático abaixo.

Compilando o projeto 1)Definindo o componente a ser utilizado.

Com relação ao componente a ser utilizado, podemos selecioná-los de duas maneiras:-Diretamente no editor topo de hierarquia.-No próprio compilador.

2) Definindo o componente no editor gráfico

1) Chamar o comando DEVICE no menu ASSIGN.2) Irá surgir a seguinte janela:

3) Definir a família de componente a rotear o projeto.4) Definir o componente a ser roteado o projeto. OBS: Caso seja utilizado o modo AUTO, o software escolherá o melhor componente para o roteamento. Neste caso será necessário escolher a família a se trabalhar.5) Clique OK.6) Se desejar setar TURBO BIT ou BIT DE SEGURANÇA, clicar o comando DEVICE OPTIONS. Irá surgir a seguinte janela:

Componente

Família

turbo bit (on<off e default)bit de segurança (on, off e defautl

7) Clique OK.

2)Definindo o componente no compilador1) Chame o compilador no comando do tollbar.

2)Chame o comando AUTO DEVICE SELECTION no menu DEVICE. Irá surgir na tela a seguinte janela:

3) Selecione a família desejada.4) Na coluna da direita temos os componente que podem ser selecionados para o corrente projeto.5) Se necessário , para o caso de se dividir o projeto em diversos componentes, podemos escolher os componentes, bem como o limite dos mesmos, usando a opção lLIMITED.6) Clique OK.

3) Definindo pinos no editor gráfico

1) Clique duas vezes o botão da esquerda em cima do pino que deseja-se definir ou no menu ASSIGN clique a opção PIN/LOCATION/CHIP. Irá surgir a seguinte janela:

:

4) No campo NODE NAME, digitar o nome do pino correspondente.5) No campo PIN/LOGIC CELL/CHIP, coloque o numero do pino desejado.6) Clique ADD.7) Ao termino, clique OK.

Entra com o número do pino, Lcell, etc

Nome do pino ou nó desejado

Indica os parâmetro já fixados

4) Setando o Design doctorO DESIGN DOCTOR é uma ferramenta para checar todos os arquivos do projeto , informando os possíveis pontos de problema.1) Com o compilador aberto, chame a opção DESIGN DOCTOR SETTINGS no menu PROCESSING.2) Irá surgir a seguinte janela :

seleciona as várias opções para rodar o DESIGN DOCTOR.

seleciona manualmente as opções do DESIGN DOCTOR.

2) Selecione a opção desejada: -EPLD (ERASEBLE PROGRAMABLE LOGIC DEVICE)

-FLEX 8000-MPLD (ALTERA GATE ARRAY).3)Clique OK.

4) Para habilitar o DESIGN DOCTOR, no menu PROCESSING, clicar a opção DESIGN DOCTOR. No compilador irá aparecer o indicativo de que o DESIGN DOCTOR esta habilitado.

DESIGN DOCTOR habilitado

5) Setando o Report FileO arquivo report é um arquivo texto que possui todas as informações a respeito do projeto, taiscomo equações, componente, taxa de utilização e outras. Podemos escolher quais as opções a serem geradas pelo report file, seguindo o seguintecaminho:

1)Clique a opção REPORT FILE SETTING no menu PROCESSING. Irá surgir na tela a seguinte janela:

2) Selecione as opções desejadas.3) Clique OK.

6) Selecionando o estilo de sintetização lógica Podemos escolher o tipo de sintetização de lógica, preocupados em um melhor aproveitamento de área no componente, ou nos preocuparmos com velocidade. Neste caso procedemos da seguinte maneira:

1)Clique o comando GLOBAL PROJECT LOGIC SYNTETHESIS no menu ASSIGN. Irá surgir a seguinte janela:

2) Selecione o tipo de sintetização, sendo: NORMAL - otimização de área. FAST - Otimização de velocidade. WYS/WYG - Não será feito nenhuma otimização neste caso.

3) Selecione o uso dos sinais globais (se necessários).4) Clique OK.

7) Inicializando a compilação

1) Clique a opção SAVE & COMPILE no TOOLBARS. Irá surgir a janela de compilação, já iniciando o processo de compilação. Na compilação o MAX+PLUSII irá gerar vários arquivo com diferentes extensões como mostrado abaixo:

.sym .cnf .hif .mmf .rpt .fit .snf

.edo.vho.vo

.pof.sof.jed

.sym => Symbol File => Arquivo que representa o símbolo do projeto.

.cnf => Compiler Netilist File =>Arquivo que contem os dados de lógica e conexões do projeto.

.hif => Hierarchy Interconnect File => Arquivo de conexão entre o topo do projeto e demais arquivos.

.mmf => MAX+PLUS II Message File => Arquivo que contem todas as mensagens do projeto.

.rpt => Report File => Arquivo que reporta todos os dados do projeto (pinagem, componente, equações, etc)

.fit => Fit File => Arquivo que contem toda a informação interna de roteamento do projeto.

.snf => Simulation Netilist File => Arquivo que contem os timming do projeto para simulação.

.edo => Edif Output File => Arquivo de saída no padrão EDIF. Utilizado para utilização com outros softwares.

.vho => VHDL Output File => Arquivo de saída em formato VHDL.

.vo => Verilog Output File => Arquivo de saída em formato Verilog.

.pof => Programmer Object File => Arquivo de programação.

.sof => SRAM Object File => Arquivo de configuração para componentes em SRAM.

.jed => JED file => Arquivo de programação.

8) Utilizando o display de hierarquiaO display de hierarquia tem por finalidade mostrar os diversos níveis de hierarquia do projeto,bem como visualizar os arquivos gerados e facilitar a abertura dos mesmo.1) Clique a opção HIERARCHY DISPLAY no toolbars. Irá surgir a seguinte janela:

topo de hierarquia

arquivos gerados

abrir arquivo

CRIANDO UMA SIMULAÇÃO

- Nesta seção iremos criar uma simulação, onde termos diversos caminhos para se chegar na ALTERA, utilizando o projeto descrito anteriormente, conforme o esquema abaixo:

ALTERA

EPM

CNF

MPLD

EPLD

GDFSUA EMPRESA

RPT

RUA RESIDENCIAL

ESTRADA COMERCIAL

AUTOESTRADA

1)CRIANDO O CANAL DE SIMULAÇÃO:-Chame o comando NEW no menu FILE.-Selecione a opção WAVEFORM. (observe se esta com a extensão SCF).-Clique OK.-Salve com o mesmo nome do projeto corrente a ser simulado.

2)ENTRANDO COM OS PINOS E NÓS:

-Chame o comando ENTER NODES FROM SNF.. no menu NODE.-Irá aparecer a seguinte janela:

nome do nó ou pinolista as opções

nós ou pinos avaliadosnós ou pinos selecionado

tipos de nós ou pinos a serem mostrados

-Selecione o tipo de sinal a ser simulado na opção TYPE. (neste caso todos).-Com o botão da direita do mouse clique duas vezes nos sinais a serem simulados. (RESET, ENABLE,DIR1,DIR0,CLOCK, ACCEL AT_ALTERA,TIME_CNT:!COUNT{7..0], AUTO _MAX:1!STREET_MAP e SPEED_CH:2!SPEED.OBS: quando o sinal for um pino interno, o mesmo mostra o a macrofunção com seu respectivo número.-Clique OK.-Selecione o tamanho do arquivo de simulação usando o comando SIZE no menu FILE.-Salve com o nome do corrente projeto a ser simulado.

Editando os valores de entrada- Clique duas vezes o botão da esquerda do mouse em cima do sinal ENABLE.

- Na janela ENTER NODE, selecione o default para HIGH.- Com o botão da esquerda pressionado no sinal DIR1, selecione o intervalo de 200ns a 400ns e no menu EDIT chame o comando OVERWRITE HIGH.- Repita o procedimento acima para o sinal DIR0 no intervalo de 200ns a 500ns.- Se necessário utilize o comando SNAP TO GRID.- Para criar o sinal de clock, altere o grid para 50ns(se necessário).-Com o botão da direita selecione o intervalo de 50ns a 100ns, automaticamente- neste intervalo o sinal será alterado para HIGH.- Com o botão da esquerda selecione o primeiro pulso de clock (intervalo de 0 a 100ns).- Chame o comando COPY no menu EDIT.- Chame agora o comando REPET no menu EDIT. Irá surgir a seguinte janela:

número de vezes a repetir o sinal(máximo 10000).

- Selecione o número de vezes a ser repetida a forma de onda .- Clique OK.- Selecione o valor LOW para o sinal RESET e o sinal ACCEL.- Salve o corrente arquivo.

SIMULANDO O PROJETO

- Chame o comando SALVE & CHECK no menu FILE.- Automaticamente qualquer modificação no arquivo de simulação será salvo e o simulador irá iniciar a simulação.Irá aparecer a seguinte janela indicando o inicio da simulação:

projeto a ser simulado

tempo decorrido da simulação

início da simulação

término da simulação

simulação utilizando o componentecheca violações de setup e holdcompara as formas de onda comoutro arquivo

verifica glichno corrente projeto

verifica oscilações

UTILIZANDO O ANALISADOR DE TIMINGAtravés do software MAX+PLUS II , podemos simular os tempos máximos de propagação entreos sinais internos do componente.Podemos ainda analisar violações de SETUP E HOLD, bem como determinar a máxima freqüência de trabalho do componente em questão.Os dados obtidos no analisador de timing, dependerão do componente e da velocidade do componente selecionado para o roteamento do projeto. Trocando-se o componente por outro de velocidademaior, termos modificações nos valores apresentados pelo simulador.É importante lembrar que na análise de timing, os valores apresentados são referentes a valores máximo não necessariamente sendo exato, podendo variar de componente para componente, mas nunca ultrapassando o valor máximo apresentado.

Analisador de timing: -No menu MAX+PLU II chame o comando SIMULATOR. -Clique START.

-Os valores apresentados mostram os tempos de propagação entre os sinais.-Não havendo representação, indica que os pinos em questão não tem ligações.

LOCALIZANDO O PONTO DE PROPAGAÇÃO

-Clique o comando LIST PATHS.-Selecione a mensagem desejada.-Clique o comando LOCATE, automaticamente será apresentado o ponto onde este sinal esteja.

ANALISANDO SETUP/HOLD

-Chame o comando SETUP/HOLD MATRIX no menu ANALYSIS.-Clique START

Analisador de performance-Chame o analisador de timing.-No menu ANALYSIS chamar REGISTER PERFORMANCE.-O analisador de performance irá determinar no corrente projeto, o ponto de maior freqüênciade trabalho, listando ainda os demais ponto de freqüência para perfeito funcionamento doprojeto.

ponto de maior freqüência

Valor máximo do clock no ponto especificado.

Compilando com parâmetros de Timing:

No caso de utilizarmos parâmetro específicos e pré definidos de timining, tais como:freqüência máxima de trabalho, tempo de propagação entre macrocelulas, etc, podemosdescrever estes parâmetro ao software, de modo que na compilação, sejam obedecidosos parâmetros pré estipulados.No menu ASSIGN, chamamos a seguinte opção: GLOBAL PROJECT TIMING REQUIREMENTS. Irá aparecer a seguinte janela:

tpd - é o tempo de propagação de um sinal de entrada utilizando somente lógica combinacional.tco - e o tempo para se obter um sinal em um pino de saída registrado, após o pulso de clock.tsu - tempo de setup. É o em que o dado ou enable de um flip flop tem que estar presente antes do sinal de clock ocorrer.fmáx - máxima freqüência de trabalho.

OBS : Os parâmetros de roteamento de timing somente poderão ser utilizados nas seguintes Famílias de componentes:

Max7000Max9000Flex10000Flex8000

1) Escolha o parâmetro a ser roteado.2) Coloque o valor desejado.3) Clique OK e compile o projeto.OBS: Caso não seja possível rotear com o parâmetro selecionado, o software automaticamente desprezará o valor seleciona e emitirá uma mensagem de aviso.

PROGRAMANDO O COMPONENTE-No menu MAX+PLUS II chame o comando PROGRAMMER.-Irá surgir na tela a seguinte janela:

testa o componente com um arquivo de simulação

verifica se o componente esta em branco efetua a leitura no componente se o mesmo não estiver com bit de segurança

verifica se o arquivo gravado está igual ao arquivo de programação(se o bit de segurança não estiver setado)

Programa o componente

seta o bit de segurança

nome do arquivo de programação

componente

checksum

2)Criando um novo arquivoPara criar um novo arquivo:1) Clique o ícone do novo arquivo no TOOLBAR.2)Selecione arquivo editor gráfico.3) Clique OK.

EDITOR GRÁFICOEDITOR DE SÍMBOLOEDITOR DE TEXTOEDITOR DE FORMA DE ONDAS

Irá aparerecer a seguinte janela:

textoLinha ortogonalLinha perpendiculararcoCirculo

Zoom inZoom out

Conexão entre linhas

Conecta e desconecta segmentos de linhas

Vista total da janela