Post on 10-Feb-2016
description
1/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Pontifícia Universidade Católica do Rio Grande do SulFaculdade de Informática
Grupo de Apoio ao Projeto de Hardware - GAPH
Fernando Gehm Moraes / Ney CalazansMarço / 2002
Tópicos Especiais em Sistemas Digitais I
2/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
• Homepage de fabricantes de PLDs, e.g.:– www.xilinx.com, www.altera.com, www.actel.com, www.atmel.com
• Homepage de fabricantes de plataformas de prototipação e.g.:– www.xess.com/FPGA, www.aptix.com, www.vcc.com
• Página de plataformas baseadas em FPGA de S. Guccione:– www.io.com/~guccione/HW_list.html
• Homepage de fabricantes de sistemas de CAD:– www.synopsys.com, www.aldec.com
• Homepage de links para sites relacionados a FPGAs:– http://www.mrc.uidaho.edu/fpga/
• Livros disponíveis na biblioteca sobre FPGAs, VHDL, Codesign
Onde Buscar Mais Informações?
3/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
katherine
moraes
daniel
carlosrodrigo
Sumário
1. PROJETO DE SISTEMAS DIGITAIS USANDO CAD
2. FLUXO DE PROJETO EM PROTOTIPAÇÃO
3. PLATAFORMAS DE PROTOTIPAÇÃO
4. Estudo de Caso: PLACA XSV
FPGA
4/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
1 - Projeto de SDs usando CAD
• Estrutura Geral de CAD:– Interface Gráfico-textual
Arcabouço de Projeto (framework)
Arcabouçode Projeto
Programas
Bibliotecas
Descrições
InterfaceGráfico -Textual
– Descrições de projeto– Ferramentas de projeto– Bibliotecas
5/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
1. Especificação e Projeto» criar circuito e “módulo de validação” (test_bench)
» inserir restrições temporais
» definir pinagem (relação entre os sinais e os pinos do chip)
2. Simulação Funcional
3. Síntese Lógica
4. Simulação Lógica
5. Síntese Física
6. Extração de parasitas (capacitâncias e resistências)
7. Simulação com Atraso Detalhado
8. Download
Fluxo de Projeto p/ a Família XC4000 (revisão)
6/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Exemplo de Sistema de Projeto - Foundation, da Xilinx
Componentesde projeto
Ferr
amen
tas
de p
roje
to
Janela demensagens
• Janela Principal = fluxo de projeto
síntese lógica
síntese física sim
ulaç
ãoló
gica
sim
ulaç
ãofís
ica
sim
ulaç
ão
func
iona
l
rest
riçõe
ste
mpo
rais
ede
pin
agem
download
bibl
iote
cas
7/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Edição de esquemático (ou captura de esquemático)
Editor hierárquicode esquemas
8/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Simulação lógica
Simulador Lógico: Funcional e de TemporizaçãoJanela de Simulação Janela de
Estimulação
Janela deControle
9/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Síntese Física
Ferramentas Individuais
ou conjunto de ferramentas
Andamento da Síntese: Execução passo-a-passo ou automática
10/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Relatórios (de posicionamento e roteamento)
USO DE BLOCOS LÓGICOS
pads
Recursos internos
11/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Análise de Caminhos Críticos
12/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Edição do layout do FPGA• visualização da síntese física• edição manual• análise de ocupação
13/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
PLANTA BAIXA, ou floorplaning (posicionamento relativo)
14/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Download
• A cada utilização– Via cabo serial ou paralelo
• Permanente– Arquivo de configuração armazenado em memória
não volátil (EPROM, EEPROM ou Flash)
XC4000XC4000XC4000
15/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
katherine
moraes
daniel
carlosrodrigo
Sumário
1. PROJETO DE SISTEMAS DIGITAIS USANDO CAD
2. FLUXO DE PROJETO EM PROTOTIPAÇÃO
3. PLATAFORMAS DE PROTOTIPAÇÃO
4. Estudo de Caso: PLACA XSV
FPGA
16/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
2. FLUXO DE PROJETO EM PROTOTIPAÇÃO
Técnicas de Implementação
Projeto e Implementação de ProdutosTecnológicos Baseados em Circuitos
Eletrônicos Digitais
Sem Projeto deDispositivos
Com Projeto deDispositivos
Sistema digitaldedicado para o
produto, via uso dedispositivos comerciais(programáveis ou não)desenvolvidos para a
classe de aplicações doproblema
(e.g. chip sets paraprodutos telecom)
Sistema digitaldedicado para o
produto, via uso dedispositivos comerciais
programáveis(e.g. microcontroladores
e/ou DSPs)
Sistemas computacionalcomercial com
programação para suprirdemandas do produto
(e.g. PC)
Sistema digital dedicadocontendo dispositivos
comerciaispersonalizáveis
(e.g. FPGAs e CPLDs)
Sistema digitaldedicado contendo
dispositivos projetadose fabricados sob
encomenda para oproduto- ASIC
(e.g. gate-arrays oustandard cells)
Já dominado pelasempresas nacionais
Pouco dominado porempresas nacionais.
Estratégico, domínio denova tecnologia!
Aumento de desempenho (maior velocidade e menor potência dissipada), custo de desenvolvimento, sigilo de projeto
Diminuição da complexidade de projeto
Nova tecnologia
17/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Ontem e o FUTURO
RAM/ROM
Glue Logic
µC
AnalogDSP
Glue Logic
RAM/ROM
µC
Analog DSP
Componentes de um projeto de hardware moderno e complexo
integração
18/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Fluxo de projeto em prototipação
Ontem:
µP
memória
Sistemas baseadosem CIs de prateleira
µP ASIC
memória
FPGA
FPGA
Hoje:
memória
Sistemas baseadosem ASICs
ASIC
“System on a chip”
A/D
D/A
S P CoreµP
GlueLogic
DSPCoreDMA
RAM ROM
P S
Futuro:Sistemas Complexos
ULSI
Hoje - CIs com 60Mtransistores Daqui há 8 anos - Cis com 960 Mtransistores!
19/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Como construir / validar um sistema complexo ?
µP
memória
FPGA
FPGA
FPGA
FPGA
FPGA
FPGA
memória
Sistemas Programáveis
Analog
A/D
D/A
S P CoreµP
GlueLogic
DSPCoreDMA
RAM ROM
P S
CI final
• Problema: soluções tradicionais como simulação– impossível validar a contento sistema completo
• Partes da solução do quebra-cabeças:– Técnicas de verificação mais poderosas (Verificação formal)– Propriedade Intelectual (IP Cores)Projeto Integrado de Sw e Hw (H/S Codesign)Prototipação Rápida de Hw (e Sw) Computação Configurável
20/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Prototipação rápida
• Permite a rápida implementação de sistemas digitais complexos– reduz “time-to-market” de produtos– permite avaliação realista do hardware– solução para o produto final se volume de produção não for muito elevado
(inferior a 15.000 peças)
– principais restrições:» freqüência de operação» ausência de dispositivos analógicos
• Nova área de pesquisa: arquiteturas reconfiguráveis– hardware pode se adaptar ao problema proposto– exemplos de arquiteturas acadêmicas:
» DISC, PRISM, SPLASH, Dec-Perle. Spyder, Transmogrifier, Raw,...
21/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Requisitos em um ambiente de prototipação
Time to market
Simulação próxima ao tempo real (real-world testing)
Validação simultânea da arquitetura e algoritmo
Flexibilidade
Reutilização dos módulos de hardware (core re-use)
Interatividade com o usuário
22/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
CODESIGN: projeto integrado de hardware e software
Co-Simulação Partição
Co-SínteseSíntese
HDL C
Compilação
Especificação do sistema
Módulos pré-definidos
de hardware(cores)
Bibliotecasde
funçõesµP
memória
FPGA
FPGA
FPGA
FPGA
FPGA
FPGA
memória Analog
A/D
D/A
S P
CoreµP
GlueLogic
DSPCoreDMA
RAM ROM
P S
23/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
katherine
moraes
daniel
carlosrodrigo
Sumário
1. PROJETO DE SISTEMAS DIGITAIS USANDO CAD
2. FLUXO DE PROJETO EM PROTOTIPAÇÃO
3. PLATAFORMAS DE PROTOTIPAÇÃO
4. Estudo de Caso: PLACA XSV
FPGA
24/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
3 - Plataformas de Prototipação Rápida
Plataformas de Prototipação Rápida de Sistemas Digitais
Definição: São sistemas digitais cujo hardware pode ser alteradode forma dinâmica, para implementar comportamentos diversos.
Utillidades:• Validação funcional de sistemas digitais complexos• Aumento da controlabilidade e observabilidade de um
projeto• Ensino de projeto de sistemas digitais• Desenvolvimento de partes de sistemas digitais• Implementação e validação de sistemas digitais
reconfiguráveis
25/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Características e Classificação
Modelo Geral de Estrutura de Uma Plataforma de
Prototipação Rápida de Sistemas Digitais
Recursos Reconfiguráveis
Recursos Fixos
Recursos Programáveis
Recursos de
Interconexão
Computador Hospedeiro
26/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Taxonomia de Plataformas de Prototipação
• Critérios de Classificação;
– Forma de comunicação com o hospedeiro
– Direcionalidade da comunicação com o hospedeiro
– Recursos fixos
– Recursos programáveis
– Relação recursos programáveis x recursos reconfiguráveis
– Recursos reconfiguráveis
– Recursos de interconexão
– Aplicação alvo
27/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Computação Reconfigurável
• Nova área de pesquisa e desenvolvimento• O que é?
– Hardware VLSI reconfigurável em ms ou s– Hardware corrigível - prototipação
(tempo de [re]configuração Ok!)– Hardware adaptável ao problema - computação configurável
» Desafios:• reconfigurabilidade pode exigir tempos de ns• reconfiguração seguida tem de ser parcial• largura de banda entre memória e processamento - crítica• largura de banda intra-CI X largura de banda extra-CI• reconfigurabilidade da interconexão - tão ou mais importante• Software, software, software, software, software para tudo acima!!!!
28/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Plataformas disponíveis no GAPH
• DEMOBOARD (4003 e 4010)• HARP (transputer e 3195)• LIRMM• AEE• Xess - XS40/XST-1 e XSV• VCC - VW300 e HotII-XL• Altera - SOPC e Excalibur
… a família continua crescendo
Aposentadas!
29/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
DEMOBOARD: primeira plataforma do GAPH• DEMOBOARD (3020/4003 até 4010)
– ou, como tudo começou …– projetos muito simples, de baixa complexidade– útil para ensino (100 CLBs)
30/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
DEMOBOARD
DEMOBOARDForma de comunicação com o hospedeiro apenas download
Direcionalidade da comunicação com o hospedeiro unidirecional
Recursos fixos chaves e leds
Recursos programáveis -
Relação recursos programáveis x recursosreconfiguráveis
-
Recursos reconfiguráveis 2 FPGAS (3000/4000)
Recursos de interconexão apenas conectores
Aplicação alvo pequenos projetos digitais
31/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Placa LIRMM (detalhada em detalhes na Seção posterior)
Placa com FPGAsPlaca com processador DSP
Placa mãeHunt Engineering
Vista inferior
Vista Superior
32/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Placa de prototipação AEE
http:/www.aee.com.br/fpga.htm
• Muito semelhante a XS40, porém com menos recurso de E/S.
• Positivo:– ISA– ROM que guarda a programação
• Placa comercial de prototipação (brasileira)
33/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Placa de prototipação XS40
34/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Placa de prototipação XS40/XST-1
FPGA Xilinx 4010 32 KB SRAM
Clock de12 MHz
Interface VGA
InterfaceParalelacom o PC
ÁREA DEPROTOTIPAÇÃO
Interfacede áudio
CHAVES
7-segmentos e Leds
Microprocessador 8031
35/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
XS40 / XStend
XS40 / XStendForma de comunicação com o hospedeiro porta paralela
Direcionalidade da comunicação com o hospedeiro bidirecional
Recursos fixos RAM, ES som, teclado, saída VGA,chaves, leds, etc. (ver figura)
Recursos programáveis microcontrolador de 8 bits (8051)
Relação recursos programáveis x recursosreconfiguráveis
FGPA é o mestre
Recursos reconfiguráveis 1 FPGA (4000)
Recursos de interconexão paralela, conectores
Aplicação alvo projetos de média complexidade
7
ExternalMemory
FPGA
7-segmentdisplays
Dip-switches
15
8
.14
7 78
oe
Spare Reset
wece
datamem
address
ck (12Mhz)
36/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
XSV - XSV800 - 2 PLATAFORMAS
• POSITIVO: 800 KGATES E ABUNDÂNCIA DE E/S (US$ 1599)
37/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Xess XSV - XSV800
Xess XSVForma de comunicação com o hospedeiro serial, paralela, Multilinx e
personalizada
Direcionalidade da comunicação com o hospedeiro bidirecional
Recursos fixos muitos, positivo: clock programável,muita RAM, displays, interfaces serial,processamento de áudio e de vídeo,PHY Ethernet, etc.
Recursos programáveis Não possui
Relação recursos programáveis x recursosreconfiguráveis
Não se aplica
Recursos reconfiguráveis VIRTEX XCV800 240 pinos
Recursos de interconexão muitos conectores, RCA, VGA, USB,RS232, paralela, mouse/teclado, RJ-45para par trançado Ethernet, etc.
Aplicação alvo processamento de imagens, grandesprojetos digitais
38/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
VCC VW300 - Virtual Workbench (US$ 1295 - ago/2000)
FPGA XCV300
com
300K gates
http:/www.vcc.com./vw.html
39/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Virtual Workbench - VW300
Virtual WorkbenchForma de comunicação com o hospedeiro serial
Direcionalidade da comunicação com o hospedeiro bidirecional
Recursos fixos muitos, positivo: clock programável,muita RAM, display alfa-numérico
Recursos programáveis -
Relação recursos programáveis x recursosreconfiguráveis
-
Recursos reconfiguráveis VIRTEX XCV300
Recursos de interconexão muitos conecectores
Aplicação alvo grandes projetos digitais
40/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
VCC HOTII-XL - 2 PLATAFORMAS - Barramento PCI
Dispositivo Programável tipoFPGAInterface PCI para comunicação
com o host (PC)
Bancos de memória, para o FPGA
Dispositivo XC4062XLTNúmero de blocoslógicos
48 x 48(2304)
Número de bits 5.472Portas lógicasdisponíveis
40.000 -130.000
Pinos de E/S para ousuário
384
• POSITIVO: INTERFACE PCI (33/32)
• reduz o gargalo de comunicação hospedeiro-FPGA
• US$ 1995,00
41/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Ambiente de Prototipação Aptix (> US$ 30000)• Recursos de interconexão abundantes (FPICs)
42/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
O QUE DÁ PARA FAZER COMO TRABALHOS ?• CORES: metodologia de desenvolvimento para efetivamente tornar o paradigma
“design reuse” verdadeiro
• RECONFIGURAÇÃO DINÂMICA PARCIAL: poder alterar parte do hardware em execução
• PARTIÇÃO EFICIENTE H/S
• APLICAÇÕES PARA TELECOMUNICAÇÕES (grande mercado hoje)
• Compiladores para ASIPS (retargetable compilers)
• CORE PCI e ACELERADORES EM HARDWARE …..
43/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
katherine
moraes
daniel
carlosrodrigo
Sumário
1. PROJETO DE SISTEMAS DIGITAIS USANDO CAD
2. FLUXO DE PROJETO EM PROTOTIPAÇÃO
3. PLATAFORMAS DE PROTOTIPAÇÃO
4. Estudo de Caso: PLACA XSV
FPGA
44/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
4. PLACA LIRMM (1996)
DSP FPGA FPGA FPGA
RAM RAM RAMRAM
RAM
RAM
RAM
communication Protocols
Carte FPGAMother Board : HUNT ENGINEERING
Carte TIM 40
HOST
LIRMM Board (Logic Inside Reconfigurable Micro Machine)
HDL
Architectural synthesis
Logic Synthesis
Mapping
C
C compiler (TI)
CAD TOOLS
MACH (Lirmm)
Synopsys
XACT
45/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Ambiente de Prototipação LIRMM
Placa com FPGAsPlaca com processador DSP
Placa mãeHunt Engineering
Vista inferior
Vista Superior
PLACALIRMM
46/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Dois XILINX XC 4013 - 208 Pins : 1152 CLBs (26 000 gates)barramento entre FPGAs : 34 BITSPossibilidade de utilizar 4013/ 4010 / 4020
Protocolo de comunicação :implementado com máquinas de estado : 80 CLBS (7%)
CLOCK : 40 MHZ outros pads de clock disponíveis
Decodificador : endereça a RAM endereça o barramento global de controle
Comunicação DSP/FPGA:16 MEGA BYTE PER SECOND (AVERAGE) - 70 ns PER BYTE
Características
47/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Arquitetura da placa LIRMM (FPGAs)
XILINX
xc4013208 pads
Transmitter Receiver
XILINX
xc4013208 pads
Transmitter ReceiverXchecker
34 bits
18 bits18 bitsDECODER
ClockBlock
ADDRESS
RAM
128KB
RAM
128KB
FPGA Switchconfiguration
DSP TMS 320C40PORT 0 PORT 1 PORT 2 PORT 3
Global bus address
48/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
ACESSO ÀS MEMÓRIAS
• CADA FPGA TEM 128 KB - estática 40ns
• Mesma pinagem em ambos FPGAs, possibilitando a utilização do mesmo código para ambos
• O usuário deve gerenciar o protocolo de acesso às memórias
49/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Cache512 byte
Registers
RAM 04 kbyte
RAM 14 kbyte
X +
DMA
Controler
Port 0
Port 5{
GLOBAL BUSAddress bus (32 bits)
6 Communication ports : 20 Mbyte/s
Documentação abundante da TI !!!
Hardware do DSP - TMS320 C40 BOARD
Data Bus (32 bits)
50/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
4.1. PROTOCOLO DE COMUNICAÇÃO/VHDL
• PROTOCOLO DE COMUNICAÇÃO– send / receive– externamente 8 bits / internamente 32
51/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
MÓDULO DE RECEPÇÃO (1/3)
• FUNCIONAMENTO– INIT reseta bloco de controle– 4 descidas em CSTRBIN (DSP) disponibilizam 32 bits em OUT
– na 4# subida de CSTRBIN FR desce, indicado Fim de Recepção
InitCstrbin
FRCrdyout
IN 8 32OUTRECEPÇÃO
FPGA
52/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
MÓDULO DE RECEPÇÃO (2/3)
• Implementação
CstrbinInit
S R R R
FRFFD FFD FFDFFD
R
R
IN D Q
R
Q
R R
Q
R R
Q
R
Cstrbin
Init
out[7:0] out[15:8] out[23:16] out[31:24]
D D D8 FD8 FD8 FD8 FD8
Bloco de Controle do Módulo de Recepção
Bloco de Dados do Módulo de Recepção
1000 - reset0100 - 1# cstrbin0010 - 2# cstrbin0001 - 3# cstrbin1000 - 4# cstrbin
53/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
INIT
MÓDULO DE RECEPÇÃO (3/3)
• Simulação recebeu 4 bytes e avisa FR (fim de recepção)
armazena em addition os 32 bits
54/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
MÓDULO DE EMISSÃO (1/4)
• FUNCIONAMENTO– FR da emissão, gerenciado pelo FPGA, sobe quando o processamento interno está
pronto.– Processo controlado pelo DSP:
» DSP envia PE» Depois o DSP envia 4 pulsos em CRDYIN
IN328
OUT
FR
FE
CrdyinCstrbout
InitPE
EMISSÃO
FPGA
FR sobe, armazenando os 32 bits de saída
PE inicializa a emissão
byte
0
fim de emissão
byte
1
byte
2
byte
3
CRDYIN
CSTRBOUT
55/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
MÓDULO DE EMISSÃO (2/4)
• Implementação (dados - gerência pelo FPGA)
Com1
FD8In [0,7] Q1 MUX 2x8
FD8In [8,15] Q2
Com 1
FD8In [16,23] Q3
MUX 2x8
FD8In [24,31] Q4
Q34 Com2
out
InitFR
Q12
8
8
8
8
8
8
88
8
8
8
FPG
A
controle
56/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
MÓDULO DE EMISSÃO (3/4)
• Implementação (controle - gerência pelo DSP)CRDYIN
bloco finemi no VHDL
PE
CSTRBOUT
cstrbout_tmp
ContadorCom1Com2
PE‘0’D QSetINIT start1
reset
ck
S R R R R
FEFFD FFD FFD FFDFFD
R
para obloco dedados
PEINIT
PE
10000 - reset01000 - 1# cstrbout00100 - 2# cstrbout00010 - 3# cstrbout00001 - 4# cstrbout
57/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
MÓDULO DE EMISSÃO (4/4)• Simulação
– INIT: subindo coloca em ‘1’ o CSTRBOUT e o registrador de deslocamento em “10000” – PE (pulso): DSP envia este dado quando quer receber uma palavra de 32 bits
ações: (1) reseta o contador, (2) desce o CSTRBOUT e (3) também inicializa registrador de deslocamento– a cada pulso de CRDYIN (a porta XOR estará funcionando como um inversor) gera-se um pulso em CSTRBOUT
o DSP envia quatro pulsos em CRDYIN, pois pede sempre 32 bits
CRDYIN
bloco finemi no VHDL
PE
CSTRBOUT
cstrbout_tmp
ContadorCom1Com2
PE‘0’D QSetINIT start1
reset
ck
S R R R R
FEFFD FFD FFD FFDFFD
R
para obloco dedados
PEINIT
PE
FR sobe, armazenando os 32 bits de saída
PE inicializa a emissão
byte
0
fim de emissão
byte
1
byte
2
byte
3
CRDYIN
CSTRBOUT
10000 - reset01000 - 1# cstrbout00100 - 2# cstrbout00010 - 3# cstrbout00001 - 4# cstrbout (no quarto cstrbout TRANCA O cstrbout )
58/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
4.2. UM PRIMEIRO EXEMPLO
• Circuito acumulador• Basicamente deve haver um processo que detecte descida em FR
na recepção.• Este evento sinaliza chegada de 32 bits, enviado pelo processador.
• Ao final do processamento no VHDL armazenar os resultados e espera PE.
• COMO DESCREVER EM VHDL ?– CHAMAR O PACKAGE E USAR OS MÓDULOS EMISSÃO E RECEPÇÃO
59/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
VHDL DO ACUMULADOR
Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;use work.comunic.all;
Entity examples is Port( frombus : in std_logic_vector (7 downto 0); tobus : out std_logic_vector (7 downto 0); INIT,CSTRBIN,CRDYIN,PE : in std_logic; CSTRBOUT,CRDYOUT: out std_logic );end examples;
Architecture Structure of examples is
signal FE, FR,FR2 : std_logic ; signal Addition,OpA :std_logic_vector (31 downto 0); signal count:integer range 0 to 5;
begin
U1 : reception Port Map ( input=>frombus, INIT=>INIT, CSTRBIN=>CSTRBIN, FR=>FR, CRDYOUT=>CRDYOUT, output=>OpA );
U2 : emission Port Map ( PE=>PE , FR=>FR2, INIT=>INIT ,CRDYIN =>CRDYIN, input=>Addition, output=>tobus, FE=>FE, CSTRBOUT=>CSTRBOUT );
-- este processo coloca na entrada do somador opA e a soma -- anterior, quando 32 bits foram recebidos (descida em FR) process (FR,INIT) begin if (INIT='1') then Addition<=(others=>'0'); elsif (FR'event and FR='0') then Addition<=Addition+OpA; end if; end process;
-- controla quantas palavras foram somadas. Ao somar 4 palavras -- envia um sinal de write para a emissao (FR2) process (FR,INIT) begin if (INIT='1') then count<=0; FR2<='0'; elsif (FR'event and FR='0' ) then if (count=3) then FR2<='1'; count<=0; else FR2<='0'; count<=count+1; end if; end if; end process;
end;
O que é necessário para o usuário: na recepção o “output” na emissão o “input”
60/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
SIMULAÇÃO VHDL - test bench simula o processador
Library IEEE;use IEEE.std_logic_1164.all;use IEEE.Std_Logic_unsigned.all; -- uso conv_integer
Entity tb isend tb;
Architecture comp of tb is
Component examples is Port( frombus : in std_logic_vector (7 downto 0); tobus : out std_logic_vector (7 downto 0); INIT,CSTRBIN,CRDYIN,PE : in std_logic; CSTRBOUT,CRDYOUT: out std_logic ); end component;
signal init, strbin, rdyin, rdyout ,strbout,pedsp: std_logic; signal frombus, tobus: std_logic_vector(7 downto 0); signal deslocamento: integer;
type ram is array (0 to 128) of std_logic_vector(7 downto 0); constant entrada : ram := (x"04", dados… , others=>x"00");
begin
x1: examples port map ( frombus=>frombus, tobus=>tobus, init=>init, cstrbin=>strbin, crdyin=>rdyin,
crdyout=>rdyout, cstrbout=>strbout, pe=>pedsp);
rdyin <= '1', '0' after 740ns, '1' after 760ns,'0' after 780ns, '1' after 800ns,'0' after 820ns, '1' after 840ns,
'0' after 860ns, '1' after 880ns;
init <= '1', '0' after 5ns, '1' after 1600ns, '0' after 1610ns;
pedsp <= '0', '1' after 700ns, '0' after 710 ns;process
begin deslocamento <=0; strbin <='1';
for i in 0 to 3 loop
wait for 50ns;
for w in 0 to 3 loopstrbin<='0';if (w+deslocamento)>=0 and (w+deslocamento)<=128
then frombus <= entrada(w+deslocamento);
end if; wait for 10ns; strbin<='1'; wait for 10ns;
end loop;
deslocamento <= deslocamento + 4;
end loop;
wait for 1000000 ns; -- tempo infinito !!!!!!!!!!
end process;
end comp;
61/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
SIMULAÇÃO
INIT
recebeu 4 bytes e avisa FR (fim de recepção)
2a RECEP 3a RECEP 4a RECEP
FR2 sobe na quarta palavra recebida(sinal para armazenar os 32 bits de saída)
PE inicializa a emissão
fim de emissão
byte 0byte 1byte 2byte 3
62/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
FERRAMENTAS UTILIZADAS
• Ambiente integrado de síntese :
1. Descrever e simular no ACTIVE-VHDL
2. Síntese lógica no FPGA-EXPRESS (Integrado ao Foundation)
3. Posicionamento e Roteamento no (Foundation)
CUIDADOS NAS FERRAMENTAS:
buffers, código sintetizável, pinagem correta ...
63/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
4.3 COMPILAÇÃO DE CÓDIGO C
• O que o fonte C deve conter para comunicar-se com o FPGA:
– comandos para os FPGAs (PE, INIT, DIR, RAZ)
– portas de comunicação
– buffers das portas de comunicação (DSP)
– direção das portas
– boot loader
– aplicação
– svr_exit(0)
Com o boot_loader temos entrada/saída
64/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Código C - Compilação (1/3)
• O código de saída estará em <file>.out
• <FILE>.CMD-c /* LINK USING C CONVENTIONS*/-stack 0x01000 /* 1K STACK */-heap 0x40000 /* 1K HEAP */tst.obj-o tst.out
<file>.c<file>.cmd hunt.cmd
Cl30 / lnk30
<file>.out <file>.obj <file>.map
65/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Código C - Compilação (2/3) - Arquivo HUNT.CMD
/* DESCREVE AS CONEXÕES DA PLACA MÃE */
MEMORY { IRAM0: org = 0x002ff800 len = 0x00000400 IRAM1: org = 0x002ffC00 len = 0x00000400 SRAML: org = 0x00300000 len = 0x0040000 SRAMG: org = 0x80000000 len = 0x00100000 }
SECTIONS { .const: > SRAML .cinit: > SRAML .text: > SRAML .stack: > SRAML .sysmem: > SRAMG .data: > SRAML .bss: > SRAML
}
(opcional)
66/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Código C - Compilação (3/3) - Arquivo MAKEFILE#**************************************************************************** DirectoriesC40LIB = d:\dspC40\320toolsC40BIN = d:\dspC40\320toolsLIB = d:\dspC40\load-too\libINC = d:\dspC40\load-too\inc#**************************************************************************** Compiler/OptionsCC = cl30CO = -qq -c -v40 -mx -mxx -g -as -i$(C40LIB) -i$(INC)AO = -qq -c -v40 -i$(C40LIB)LO = -i$(C40LIB) -ar#**************************************************************************** Rules.SUFFIXES: .c .asm .obj.c.obj:
$(CC) $(CO) $*.c#**************************************************************************** Targetsall: tst.out
tst.obj: tst.c $(INC)\stdioc40.h $(CC) $(CO) tst.c
tst.out: tst.obj tst.cmd $(LIB)\stdio_ss.lib lnk30 $(LO) hunt.cmd tst.cmd -l$(LIB)\stdio_ss.lib -lrts40.lib -lprts40.lib -cr -m tst.map
compilação
(opcional)
67/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Código C - Execução
• Para rodar o programa C é necessário executar um batch, que chama o arquivo network:
<file>.bat ==> network ===> file.out• Batch:
emurst
emuload d:\dspc40\320tools\inira PARA O PGAxchecker - load examples.bit
d:\dspc40\load-too\bin\c40serve -Id:\dspc40\load-too\lib -rlvs network
• Network:– configura a placa mãe (HUNT)– chama dois programas: idrom.out e file.out– conteúdo (sem os comentários):
BD HEPC2M 150ND 0 NODE0 ROOT 00000000 00000000 002FF800 idrom.out tst.outHOSTLINK 3
(opcional)
68/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Código C - Exemplo de controle do acumulador
#include <string.h>#include <stdlib.h>#include <stdioc40.h>#include <compt40.h>#include <timer40.h>
void main(){
/* Adresses de commande du Xilinx pour decodage */#define PE1 (int*) 0xb0000000#define PE2 (int*) 0xb8000000#define INIT1 (int*) 0xbF000000#define INIT2 (int*) 0xb4000000#define DIR (int*) 0xb7000000#define RAZ (int*) 0xb2000000
/* Adresses des ports de communication */#define comm_port1_output (int*) 0x00100052#define comm_port4_input (int*) 0x00100081#define comm_port0_output (int*) 0x00100042#define comm_port5_input (int*) 0x00100091
/* Registres de controle des ports de communication */#define CPCR1 (int*) 0x00100050#define CPCR0 (int*) 0x00100040#define CPCR5 (int*) 0x00100090#define CPCR4 (int*) 0x00100080
long a,b;int i;
cp_out_release(1); /* initialisation du port 1 en emission */cp_in_release(4); /* initialisation du port 4 en reception */cp_out_release(0); /* initialisation du port 0 en emission */cp_in_release(5); /* initialisation du port 5 en reception */
bootloader();
Endereços de controle do FPGA
Endereços das portas de comunicação
Buffers das portas de comunicação
Direção das portas
Rotinas de Entrada e Saída do DSP
69/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Código C - parte 2
Envio das 4 palavras de 32 bits
PE indica que o DSP vai querer ler um dado do FPGA
printf(" \n******************> Digitar -1 para sair\n ");
for(;;) { *INIT1=0; /* initialisation du XILINX1 */ *RAZ=0;
for (i=0;i<4;i++) { printf ("\nValor? ");
scanf("%d",&a); if(a==-1) break; printf("%ld\n",a); *comm_port1_output=a;
}
if(a==-1) break;
*PE1=0; *RAZ=0;
/*reception du Xilinx*/ b=*comm_port4_input;
printf("\n The rusult is : %ld\n",b);
}
printf(" OK \n\n");
srv_exit(0);}
DSP lê a soma do FPGA
Finaliza o servidor
70/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
4.4. Processador Cleópatra na Placa LIRMM
cerw
ADDRESS
DATA
CONTROLBLOCK
µinst IRc z n
ck
MEMORY
ckreset
reset
DATA-PATH
c z n IRµinst
ckreset
MAR
MDR
IR
RS
PC
AC
ULA
BUS_B BUS_A0mux1 sel
Write into memory
Read from memory
ADDRESS (memory)
DATA (memory)
Codificação de escrita
Codificação de leitura
write_reg
read_reg
op_ula
lnzlc
CERW
CE RW
N Z C
BUS_C
71/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Integração do processador (core) na placa LIRMM
• Procedimento em 3 etapas
1. Download do programa em código binário na memória do FPGA
2. Execução do programa pelo core
3. Envio do resultado ao DSP
• Controle : máquina de estados controlada pelo sinal PEDSP
• Organização da memória: programa, dados e resultados
72/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Core e blocos de controle no FPGA
8
M1
8
M2
32BUSREC
A1ck_intstart
state
TODSPcrdyin
cstrbout
reset
EFRE
PEE
8
FROMDSPcstrbin
crdyout
reset
R
FR
8
32BUSEMI24
08
IOR
D Q
ck
D Q
ck
D Q
ck
FR
8[7,0]
8[15,8]
8[23,16]
8
8busrec2
st1
ecr
PDATA_OUT
CE
RW
ADDRESS_C
resetck
DATA_IN 8
state
st0
st1
+1 st2
end_mem
ADDRESS_C
8
90 AD17
reset
A3 FRSst2
A2 PESst2
FROM / TO DSP
ck_int
PEDSP
R2
R3
R1
CE1_N
CE2
WE_N
OE_N
FROM / TO MEMORY
FPGA
st0
73/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
8
M1
8
M2
32BUSREC
A1ck_intstart
state
TODSPcrdyin
cstrbout
reset
EFRE
PEE
8
FROMDSPcstrbin
crdyout
reset
R
FR
8
32BUSEMI24
08
IOR
D Q
ck
D Q
ck
D Q
ck
FR
8[7,0]
8[15,8]
8[23,16]
8
8
busrec2
st1
ecr
PDATA_OUT
CE
RW
ADDRESS_C
resetck
DATA_IN 8
state
st0
st1
+1 st2
end_mem
ADDRESS_C
8
90 AD17
reset
A3 FRSst2
A2 PESst2
FROM / TO DSP
ck_int
PEDSP
R2
R3
R1
CE1_N
CE2
WE_N
OE_N
FROM / TO MEMORY
FPGA
st0
Download do programa
32 bits:xxDDAAPPdd = data addressaa = memory addresspp = program code
74/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Execução do programa pelo core
8
M1
8
M2
32BUSREC
A1ck_intstart
state
TODSPcrdyin
cstrbout
reset
EFRE
PEE
8
FROMDSPcstrbin
crdyout
reset
R
FR
8
32BUSEMI24
08
IOR
D Q
ck
D Q
ck
D Q
ck
FR
8[7,0]
8[15,8]
8[23,16]
8
8busrec2
st1
ecr
PDATA_OUT
CE
RW
ADDRESS_C
resetck
DATA_IN 8
state
st0
st1
+1 st2
end_mem
ADDRESS_C
8
90 AD17
reset
A3 FRSst2
A2 PESst2
FROM / TO DSP
ck_int
PEDSP
R2
R3
R1
CE1_N
CE2
WE_N
OE_N
FROM / TO MEMORY
FPGA
st0
75/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Envio dos resultados ao DSP
8
M1
8
M2
32BUSREC
A1ck_intstart
state
TODSPcrdyin
cstrbout
reset
EFRE
PEE
8
FROMDSPcstrbin
crdyout
reset
R
FR
8
32BUSEMI24
08
IOR
D Q
ck
D Q
ck
D Q
ck
FR
8[7,0]
8[15,8]
8[23,16]
8
8busrec2
st1
ecr
PDATA_OUT
CE
RW
ADDRESS_C
resetck
DATA_IN 8
state
st0
st1
+1 st2
end_mem
ADDRESS_C
8
90 AD17
reset
A3 FRSst2
A2 PESst2
FROM / TO DSP
ck_int
PEDSP
R2
R3
R1
CE1_N
CE2
WE_N
OE_N
FROM / TO MEMORY
FPGA
st0
76/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Parte Software - Programa C de controle (simplificado)void main(){ *INIT1=0; /* RESET FPGA - state st0 */ *RAZ=0;
*comm_port1_output=0x00f00000; /* send data adress to the FPGA */ in=fopen("prog","rt"); /* read the program to be executed and send it to the FPGA */ do{ fscanf(in,"%c",&indata); *comm_port1_output=indata; } while(!feof(in)); fclose(in);
*PE1=0; /* First PEDSP –core processor is actived - state st1 */ *RAZ=0;
wait(300); /* wait the execution …. NOT NICE */
for(j=0; j<10; j++) { *PE1=0; /* send PEDSP in order to receive the results */ *RAZ=0;
b = *comm_port4_input; }}
77/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
VHDL - controle do core (1/6)Entity testmem is Port( -----------------INPUT OUTPUT vers la RAM ------------ I_OR : inout std_logic_vector (7 downto 0); AD : out std_logic_vector (16 downto 0); CE2, CE1_N, we_N, OE_N : out std_logic;
--------------INPUT OUTPUT vers le DSP -------------- Clock : in std_logic; Reset : in std_logic; from_dsp : in std_logic_vector (7 downto 0); to_dsp : out std_logic_vector (7 downto 0); CSTRBIN,CRDYIN : in std_logic; CRDYOUT, CSTRBOUT : out std_logic; PEDSP : in std_logic );end testmem;
Architecture comp of testmem is
component cleopatra port( ck, reset: in std_logic; ce, rw: out std_logic; address: out regsize; datain: in regsize;
dataout: out regsize );end component;
Type Type_STATE is ( INIT_STATE, stop, wr_1, wr_2, wr_3, le_1, le_2, le_3);
DECLARAR OS SINAIS DO CORE
Begin
(opcional)
78/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
VHDL - controle do core (2/6)
-------------------------------------------------------------------- -- Maquina de estados para a carga, operacao e leitura da memoria -- ESTA MUDANCA OCORRE NA SUBIDA DO PEDSP -------------------------------------------------------------------- process(reset, PEDSP ) Begin
if reset='1' then estado <= "00"; elsif PEDSP'event and PEDSP='1' then if estado="00" then -- enderecamento pela cleopatra estado <= "01"; ad_dados <= end_user; elsif estado="01" then -- passa para o endereco da area de dados estado <= "11"; ad_dados <= end_user; elsif estado="11" then -- incrementa end. para aceeso a area de dados ad_dados <= ad_dados + 1; end if; end if;
end process;
• Temos três estados, controlados pelo RESET e PEDSP– o reset coloca o sistema no estado “00”– o primeiro PEDSP coloca o sistema no estado “01”, ou seja,
controle pelo core– os próximos PEDSP enviam dados para o DSP, estado “11”
(opcional)
79/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
VHDL - controle do core (3/6)-------------------------------------------------------------------- -- componentes: emissao, recepcao e Processador Cleopatra de 8 bits -------------------------------------------------------------------- Ureceptio : reception Port Map( ...);
Uemission : emission Port Map( ...);
cpu: cleopatra Port Map( ...);
-------------------------------------------------------------------- -- Controle de clock para cleopatra -------------------------------------------------------------------- cka <= ck_interno and start_cleo;
Process(clock, reset, estado) Begin if reset='1' or estado="00" or estado="11" then start_cleo <= '0'; elsif clock'event and clock='1' then -- apenas ativa a cleopatra na primeira start_cleo <= '1'; -- borda de subida apos o inicio do estado 01 end if; End Process;
-- ck mais lento para controlar a cloepatra Process Begin ck_interno <= '0'; wait until clock'event and clock='1'; wait until clock'event and clock='1'; wait until clock'event and clock='1'; ck_interno <= '1'; wait until clock'event and clock='1'; wait until clock'event and clock='1'; wait until clock'event and clock='1'; End Process;
Não precisa ser tão lentoApenas para não ter problemas de timing
(opcional)
80/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
------------------------------------------------------------------------------- -- dados provenientes da memoria entram diretamente no processador e na emissao -------------------------------------------------------------------------------- bus_emi <= end_final & address_c & "00000000" & I_OR;
-------------------------------------------------------------------- -- SECAO RELATIVA A MEMORIA: habilitacao, enderecamento e origem dos -- dados no momento da escrita -------------------------------------------------------------------- CE2 <='1'; CE1_N <='0';
end_final <= enderecamento when estado="00" else address_c when estado="01" else ad_dados when estado="11" else (others=>'Z');
AD <= "000000000" & end_final;
I_OR <= bus_rec2 when STATUS_ECR='1' and estado="00" else dataout when STATUS_ECR='1' and estado="01" else (others=>'Z');
-------------------------------------------------------------------- -- armazenamento dos dados provenientes da maquina de recepcao -------------------------------------------------------------------- process(fr, reset) begin if reset='1' then enderecamento <= (others=>'0'); first <= '1'; bus_rec2 <= (others=>'0'); elsif fr'event and fr='0' then enderecamento <= bus_rec(15 downto 8); if (first='1') then end_user <= bus_rec(23 downto 16); first <= '0'; end if; bus_rec2 <= bus_rec(7 downto 0); end if; end process;
VHDL - controle do core (4/6)Saída com debug:- último endereço lido- endereço- DADO
Seleciona que vai endereçar a memória:- endereçamento: na carga do programa- processador: durante execução- área de dados: durante o envio
Escrita na memória(processador ou download)
A cada borda de descida de FR (recepção):- determina o endereço (endereçamento)- determina o dado (bus_rec2)- na PRIMEIRA recepção armazena o endereço da área de dados
(opcional)
81/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
VHDL - controle do core (5/6)--------------------------------------------------- -- maquina de estados para acesso a memoria --------------------------------------------------- Process (clock, reset, Curr_STATE, wait_state, rw_c, to_wr, to_rd, estado) Begin
if Reset='1' then Curr_STATE<=INIT_STATE; Next_STATE<=stop; elsif clock'event and clock='0' then Curr_STATE<=Next_STATE; end if;
Case (Curr_STATE) is
When INIT_STATE=> STATUS_ECR<='0';
we_N <= '1'; oe_N<='1';peE<='0'; frE<='0';
Next_STATE<=stop;
When stop => STATUS_ECR<='0';
we_N<='1'; oe_N<='1';peE<='0'; frE<='0';
if (wait_state='1' and rw_c='0') or (to_wr='1' and estado="00") then
Next_STATE<=wr_1; elsif (wait_state='1' and rw_c='1') or (to_rd='1' and estado="11") then Next_STATE<=le_1; else Next_STATE <= stop; end if;
When wr_1=> we_N <= '0'; STATUS_ECR<='1'; Next_STATE<=wr_2;
When wr_2=> we_N <= '0'; STATUS_ECR<='1'; Next_STATE<=wr_3;
When wr_3=> we_N <= '1'; STATUS_ECR<='0'; Next_STATE<=stop;
When le_1=> oe_N<='0'; Next_STATE<=le_2;
When le_2=> oe_N<='0'; if (estado="11") then frE<='1'; else frE<='0'; end if; Next_STATE<=le_3;
When le_3=> oe_N<='0'; FrE <='0'; If (estado="11") then peE<='1'; else peE<='0'; end if; Next_STATE<=stop;
End Case;end Process;
Controles da máquina de
emissão
(opcional)
82/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
VHDL (6/6) - sincronização de sinais assíncronos -------------------------------------------------------------------- -- 3 processos que ativam controle para a maquina de leitura/escrita: -- (1) BORDA de descida de FR ativa WR0 -- (2) BORDA de subida de CE_C ativa wait_state -- (3) BORDA de subida de PEDSP ativa PE2 -------------------------------------------------------------------- Process(reset, Curr_STATE, fr) Begin if Curr_STATE=wr_2 or reset='1' then WR0<='0'; elsif fr'event and fr='0' then WR0<='1'; end if; End Process;
Process(reset, Curr_STATE, ce_c) -- este e' sincrono com a borda de subida Begin if Curr_STATE = wr_3 or Curr_STATE = le_3 or reset='1' then wait_state <= '0'; elsif ce_c'event and ce_c='1' then wait_state <= '1'; end if; End process;
Process(reset, Curr_STATE, PEDSP) Begin if Curr_STATE=le_2 or reset='1' then PE0<='0'; elsif PEDSP'event and PEDSP='1' then PE0<='1'; end if; End Process;
Process(clock) -- sincroniza PE0 e WR0 comm a borda de subida Begin if clock'event and clock='1' then to_rd <= PE0; to_wr <= WR0; end if; End Process;
end comp;
Recepção de dados: ASSÍNCRONA
Envio de dados: ASSÌNCRONO
Sincroniza os pedidos de recepção ou envio com a borda de subida do clock
(opcional)
83/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
VHDL - test_bench
• Acompanhar na listagem anexa
• Quatro ações realizadas pelo test_bench:
1. Gerar clock e reset
2. Gerar envio de dados: STRBIN e from_dsp
3. Receber dados: PEDSP e RDYIN
4. Ler e escrever na memória
84/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Simulação - fase de recepção
• Envio dos dados “44 00 90 00”, “50 01 00 00”, “54 02 00 00”, etc
• Observar os barramentos AD (endereço da RAM e I_OR dados)
• Estado sempre em “00”
• Ao final da recepção é enviado o sinal PEDSP
85/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Simulação - fase de execução
• Fase contida entre dois pulsos do sinal PEDSP• Observar que o clock do processador (cka) é muito mais lento que o clock do sistema• Estado do processamento: “01”
86/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Simulação - fase de envio
• A cada PEDSP são gerados os sinas “frE” e “peE”, os quais colocam em to DSP os dados da área de dados
• Observar AD e IO_R (nesta simulação estamos lendo apenas um dado válido - A3 )
87/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Inpu
ts (t
est_
benc
h)Simulação apenas do processador
New instruction beginning Memory writeCurrent micro-instruction
Conteúdo da 1a posição do vetor 1
Conteúdo da 1a posição do vetor 2
SUM
Ponteiro para 1a posição do vetor 3
Endereço do vetor 3
Data to be writen in memory
88/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
Alguns dados da síntese
• Pode-se escrever o programa diretamente em linguagem de montagem
• Síntese física
Number of CLBs: 270 out of 576 46% CLB Flip Flops: 192 4 input LUTs: 390 (2 used as route-throughs) 3 input LUTs: 153 (65 used as route-throughs) Number of bonded IOBs: 52 out of 160 32% IOB Flops: 0 IOB Latches: 0 Number of global buffers: 1 out of 8 12% Number of primary CLKs: 1 out of 4 25% Number of secondary CLKs: 3 out of 4 75% Number of TBUFs: 40 out of 1248 3% Number of RPM macros: 1Total equivalent gate count for design: 4045
89/85
PLA
TAFO
RM
AS
DE
PRO
TOTI
PAÇ
ÃO
Fernando Gehm Moraes / Ney Calazans
PLACA LIRMM - CONCLUSÃO
• Fácil implementação:– Incluir dois módulos: recepção e emissão– Para receber dados de 32 apenas monitorar o sinal FR (borda de descida)– Para enviar: gravar 32 bits no módulo de emissão
• Deficiência do sistema– Recepção é assíncrona, necessitando inserir por vezes um delay no código em
linguagem ‘C’– Os buffers das portas evitam erro de “over-run”
• Permite implementações mistas, com parte hardware/parte software– Exemplo: processamento de imagens com redes neurais (ROLF)– HARDWARE/SOFTWARE CODESIGN