Plataformas de Prototipação de Hardware

Slides:



Advertisements
Apresentações semelhantes
«Forte do Bom Sucesso (Lisboa) – Lápides 1, 2, 3» «nomes gravados, 21 de Agosto de 2008» «Ultramar.TerraWeb»
Advertisements

IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
INFORMAÇÕES COMPLEMENTARES
Arquitetura de Computadores
A busca das mulheres para alcançar seu espaço dentro das organizações
Vamos contar D U De 10 até 69 Professor Vaz Nunes 1999 (Ovar-Portugal). Nenhuns direitos reservados, excepto para fins comerciais. Por favor, não coloque.
Operadores e Funções do LINGO
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 32 Departamento de Informática Centro.
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
Nome : Resolve estas operações começando no centro de cada espiral. Nos rectângulos põe o resultado de cada operação. Comprova se no final.
Copyright (c) 2003 by Valery Sklyarov and Iouliia Skliarova: DETUA, IEETA, Aveiro University, Portugal.
Dispositivos lógicos programáveis (DLP)
Projeto de sistemas computacionais
Fernando Gehm Moraes Ney Laert Vilar Calazans
Ney Laert Vilar Calazans
Pontifícia Universidade Católica do Rio Grande do Sul
Aula 12 – Prototipação de Processadores e Entrada e Saída LABORG 1º/junho/2009 Ney Laert Vilar Calazans.
Parte 9 – Prototipação de Processadores e Entrada e Saída LABORG 27/novembro/2009 Ney Laert Vilar Calazans.
Campus Curitiba Departamento Acadêmico de Matemática Angela Olandoski Barboza UTFPR – Damat.
Curso de ADMINISTRAÇÃO
Arquitetura de Sistemas Operacionais
MC542 Organização de Computadores Teoria e Prática
Arquiteturas Diferentes
MC542 Organização de Computadores Teoria e Prática
EXPRESSÕES ARITMÉTICAS
Maria Aparecida Castro Livi
Maria Aparecida Castro Livi
Descrição de hardware em SystemC
Plataformas de Prototipação de Hardware
Estudo de Caso 1: UNIX e LINUX
UNIDADE DE CONTROLE MICROPROGRAMADA PARA O FEMTOJAVA
Componentes do Computador e noções de Arquitetura de Computadores
Implementação da CPU Análise de um computador simplificado Implementação da Unidade de Controle para o computador simplificado.
Aula 2 Aspectos Preliminares
Aula 4 Nomes, Vinculações, Tipos e Escopos
Aula 5 Tipos de Dados Universidade do Vale do Rio dos Sinos
DSP – TMS320LF2407A.
Classes e objetos P. O. O. Prof. Grace.
Provas de Concursos Anteriores
Renda até 2 SM.
Professor Felipe Monteiro Lima
Introdução à Programação
Diagnósticos Educativos = Diagnósticos Preenchidos 100% = 1.539
PROGRAMAÇÃO I UNIDADE 1.
CATÁLOGO GÉIA PÁG. 1 GÉIA PÁG. 2 HESTIA PÁG. 3.
Sistemas Operacionais
PROCESSOS PRINCIPAIS Alunos - Grau de Satisfação 4971 avaliações * Questões que entraram em vigor em 2011 ** N.A. = Não Aplicável Versão: 07/02/2012 INDICADORES.
Dispositivos Lógicos Programáveis (DLP) Ideia e Arquiteturas
Uma Linguagem de Especificação de Sistemas
Placa de prototipação H.O.T. II
GAPH Integração de Hardware do Usuário ao CoreConnect Leandro Heleno Möller e Leonel Pablo Tedesco Prototipação Rápida e Computação.
Coordenação Geral de Ensino da Faculdade
Plataforma Brasil – Submissão de pesquisa
Sistemas Operacionais
PERFIL DOS BENEFICIÁRIOS E NÃO-BENEFICIÁRIOS DO PROGRAMA BOLSA FAMÍLIA EM TERMOS DE MERCADO DE TRABALHO: CONSIDERAÇÕES METODOLÓGICAS E SUBSTANTIVAS Alessandra.
Tributação da Exportação nas Empresas optantes pelo Simples Nacional
Arquitetura de computadores
Projeto Marcas que Eu Gosto 1 PROJETO MARCAS QUE EU GOSTO Estudos Quantitativo de Consumidores Janeiro / 2005.
Projeto Medindo minha escola.
Semântica de Linguagens de Programação
MO801 - Tópicos em Arquitetura e Hardware Michele Tamberlini 05/2006
ENGA78 – Síntese de Circuitos Digitais
ELETRÔNICA DIGITAL Circuitos Aritméticos
Organização e Arquitetura de Computadores
Agenda - Aula 2 Introdução (Computador Digital) Processadores
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
Olhe fixamente para a Bruxa Nariguda
Máquina de Turing Universal
Equipe Bárbara Régis Lissa Lourenço Lucas Hakim Ricardo Spada Coordenador: Gabriel Pascutti.
Lógica Programável PTC2527 – EPUSP Guido Stolfi.
Transcrição da apresentação:

Plataformas de Prototipação de Hardware Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática Grupo de Apoio ao Projeto de Hardware - GAPH Plataformas de Prototipação de Hardware Princípios, Taxonomia, Características e Exemplos Tópicos Especiais em Sistemas Digitais I Fernando Gehm Moraes / Ney Calazans Março / 2002

Onde Buscar Mais Informações? 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

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 moraes daniel carlos rodrigo katherine 2

1 - Projeto de SDs usando CAD Descrições Programas Arcabouço Interface Gráfico -Textual de Projeto Bibliotecas Estrutura Geral de CAD: Interface Gráfico-textual Arcabouço de Projeto (framework) Descrições de projeto Ferramentas de projeto Bibliotecas

Fluxo de Projeto p/ a Família XC4000 (revisão) 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

Exemplo de Sistema de Projeto - Foundation, da Xilinx Janela Principal = fluxo de projeto Componentes de projeto restrições temporais e de pinagem simulação funcional bibliotecas simulação lógica síntese lógica Ferramentas de projeto simulação física síntese física download Janela de mensagens

Edição de esquemático (ou captura de esquemático) Editor hierárquico de esquemas

Simulador Lógico: Funcional e de Temporização Simulação lógica Simulador Lógico: Funcional e de Temporização Janela de Simulação Janela de Estimulação Janela de Controle

Ferramentas Individuais ou conjunto de ferramentas Síntese Física Andamento da Síntese: Execução passo-a-passo ou automática Ferramentas Individuais ou conjunto de ferramentas

Relatórios (de posicionamento e roteamento) pads USO DE BLOCOS LÓGICOS Recursos internos

Análise de Caminhos Críticos

Edição do layout do FPGA visualização da síntese física edição manual análise de ocupação

PLANTA BAIXA, ou floorplaning (posicionamento relativo)

Download A cada utilização Permanente Via cabo serial ou paralelo Arquivo de configuração armazenado em memória não volátil (EPROM, EEPROM ou Flash) XC4000

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 moraes daniel carlos rodrigo katherine 2

2. FLUXO DE PROJETO EM PROTOTIPAÇÃO Técnicas de Implementação

Componentes de um projeto de hardware moderno e complexo Ontem e o FUTURO Componentes de um projeto de hardware moderno e complexo Glue Logic RAM/ ROM RAM/ ROM Glue Logic integração Analog µC DSP µC DSP Analog

Fluxo de projeto em prototipação Ontem: µP memória Sistemas baseados em CIs de prateleira “System on a chip” A/D D/A S P Core µP Glue Logic DSP Core DMA RAM ROM P S Futuro: Sistemas Complexos ULSI µP ASIC memória FPGA Hoje: Sistemas baseados em ASICs Hoje - CIs com 60Mtransistores Daqui há 8 anos - Cis com 960 Mtransistores!

Como construir / validar um sistema complexo ? 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 CI final A/D D/A S P Core µP Glue Logic DSP Core DMA RAM ROM P S Sistemas Programáveis µP FPGA FPGA FPGA FPGA FPGA FPGA Analog memória memória

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,...

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

CODESIGN: projeto integrado de hardware e software Especificação do sistema Partição Co-Síntese Síntese HDL C Compilação Co-Simulação Módulos pré-definidos de hardware (cores) Bibliotecas de funções FPGA FPGA FPGA µP FPGA FPGA FPGA A/D D/A S P Core µP Glue Logic DSP Core DMA RAM ROM P S memória memória Analog

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 moraes daniel carlos rodrigo katherine 2

3 - Plataformas de Prototipação Rápida de Sistemas Digitais Definição: São sistemas digitais cujo hardware pode ser alterado de 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

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 Computador Hospedeiro Recursos Programáveis Recursos de Interconexão

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

Computação Reconfigurável Nova área de pesquisa e desenvolvimento O que é? Hardware VLSI reconfigurável em ms ou ms 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!!!!

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!

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)

DEMOBOARD

Placa LIRMM (detalhada em detalhes na Seção posterior) Placa mãe Hunt Engineering Placa com processador DSP Placa com FPGAs Vista Superior Vista inferior

Placa de prototipação AEE Placa comercial de prototipação (brasileira) Muito semelhante a XS40, porém com menos recurso de E/S. Positivo: ISA ROM que guarda a programação http:/www.aee.com.br/fpga.htm

Placa de prototipação XS40

Placa de prototipação XS40/XST-1 Interface de áudio ÁREA DE Clock de PROTOTIPAÇÃO 12 MHz CHAVES Interface Paralela com o PC 7-segmentos e Leds Microprocessador 8031 FPGA Xilinx 4010 32 KB SRAM Interface VGA

XS40 / XStend

XSV - XSV800 - 2 PLATAFORMAS POSITIVO: 800 KGATES E ABUNDÂNCIA DE E/S (US$ 1599)

Xess XSV - XSV800

VCC VW300 - Virtual Workbench (US$ 1295 - ago/2000) http:/www.vcc.com./vw.html FPGA XCV300 com 300K gates

Virtual Workbench - VW300

VCC HOTII-XL - 2 PLATAFORMAS - Barramento PCI POSITIVO: INTERFACE PCI (33/32) reduz o gargalo de comunicação hospedeiro-FPGA US$ 1995,00 Bancos de memória, para o FPGA Dispositivo Programável tipo Interface PCI para comunicação FPGA com o host (PC)

Ambiente de Prototipação Aptix (> US$ 30000) Recursos de interconexão abundantes (FPICs)

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 …..

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 moraes daniel carlos rodrigo katherine 2

4. PLACA LIRMM (1996) LIRMM Board (Logic Inside Reconfigurable Micro Machine) CAD TOOLS C HDL C compiler (TI) Architectural synthesis MACH (Lirmm) Logic Synthesis Synopsys XACT Mapping HOST communication Protocols DSP FPGA FPGA FPGA Carte TIM 40 RAM RAM RAM RAM RAM RAM RAM Carte FPGA Mother Board : HUNT ENGINEERING

Ambiente de Prototipação LIRMM Placa mãe Hunt Engineering Placa com processador DSP Placa com FPGAs PLACA LIRMM Vista Superior Vista inferior

Características Dois XILINX XC 4013 - 208 Pins : 1152 CLBs (26 000 gates) barramento entre FPGAs : 34 BITS Possibilidade 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

Arquitetura da placa LIRMM (FPGAs)

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

Hardware do DSP - TMS320 C40 BOARD Cache 512 byte RAM 0 4 kbyte RAM 1 4 kbyte { Data Bus (32 bits) GLOBAL BUS Address bus (32 bits) 6 Communication ports : 20 Mbyte/s Port 0 Registers Controler X + Port 5 DMA Documentação abundante da TI !!!

4.1. PROTOCOLO DE COMUNICAÇÃO/VHDL send / receive externamente 8 bits / internamente 32

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 32 8 IN OUT RECEPÇÃO Init Cstrbin FR Crdyout FPGA

MÓDULO DE RECEPÇÃO (2/3) Implementação out[7:0] out[15:8] out[23:16] FD8 FD8 FD8 FD8 IN D Q D Q D Q D Q R R R R R R R Cstrbin Init Bloco de Dados do Módulo de Recepção FR FFD FFD FFD FFD S R R R R 1000 - reset 0100 - 1# cstrbin 0010 - 2# cstrbin 0001 - 3# cstrbin 1000 - 4# cstrbin Cstrbin Init Bloco de Controle do Módulo de Recepção

MÓDULO DE RECEPÇÃO (3/3) Simulação recebeu 4 bytes e avisa FR (fim de recepção) INIT armazena em addition os 32 bits

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 Crdyin FR Cstrbout EMISSÃO Init FE PE 8 32 OUT IN FPGA

FPGA MÓDULO DE EMISSÃO (2/4) Implementação (dados - gerência pelo FPGA) Com1 FD8 In [0,7] Q1 MUX 2x8 In [8,15] Q2 Com 1 In [16,23] Q3 In [24,31] Q4 Q34 Com2 out Init FR Q12 8 FPGA controle

MÓDULO DE EMISSÃO (3/4) Implementação (controle - gerência pelo DSP) 10000 - reset 01000 - 1# cstrbout 00100 - 2# cstrbout 00010 - 3# cstrbout 00001 - 4# cstrbout Implementação (controle - gerência pelo DSP)

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 10000 - reset 01000 - 1# cstrbout 00100 - 2# cstrbout 00010 - 3# cstrbout 00001 - 4# cstrbout (no quarto cstrbout TRANCA O cstrbout )

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

VHDL DO ACUMULADOR O que é necessário para o usuário: na recepção o “output” na emissão o “input”

SIMULAÇÃO VHDL - test bench simula o processador

recebeu 4 bytes e avisa FR (fim de recepção) PE inicializa a emissão SIMULAÇÃO recebeu 4 bytes e avisa FR (fim de recepção) FR2 sobe na quarta palavra recebida (sinal para armazenar os 32 bits de saída) INIT PE inicializa a emissão 2a RECEP 3a RECEP 4a RECEP byte 0 byte 1 byte 2 byte 3 fim de emissão

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 ...

Com o boot_loader temos entrada/saída 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

Código C - Compilação (1/3) <file>.c <file>.cmd hunt.cmd Cl30 / lnk30 <file>.out <file>.obj <file>.map   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

Código C - Compilação (2/3) - Arquivo HUNT.CMD (opcional) 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

Código C - Compilação (3/3) - Arquivo MAKEFILE (opcional) #**************************************************************************** Directories C40LIB = d:\dspC40\320tools C40BIN = d:\dspC40\320tools LIB = d:\dspC40\load-too\lib INC = d:\dspC40\load-too\inc #**************************************************************************** Compiler/Options CC = cl30 CO = -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 #**************************************************************************** Targets all: 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

Código C - Execução <file>.bat ==> network ===> file.out (opcional) 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 PGA xchecker - 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 150 ND 0 NODE0 ROOT 00000000 00000000 002FF800 idrom.out tst.out HOSTLINK 3

Código C - Exemplo de controle do acumulador 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

Código C - parte 2 Envio das 4 palavras de 32 bits PE indica que o DSP vai querer ler um dado do FPGA DSP lê a soma do FPGA Finaliza o servidor

4.4. Processador Cleópatra na Placa LIRMM DATA (memory) Write into memory CE RW ADDRESS (memory) MAR reset CONTROL BLOCK BUS_B BUS_A ck mux 1 sel c z n IR MDR µinst ce ck rw IR reset Read from memory µinst c z n IR ADDRESS PC ck DATA-PATH DATA reset MEMORY CE RW AC RS Codificação de escrita op_ula write_reg ULA lnz lc BUS_C N Z C Codificação de leitura read_reg

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

Core e blocos de controle no FPGA TODSP crdyin cstrbout reset E FRE PEE 24 BUSEMI 32 8 8 A3 FRS st2 IOR 8 A2 PES st2 FROM / TO DSP P DATA_IN 8 ck_int PEDSP DATA_OUT CE RW ADDRESS_C 8 M2 st1 8 reset reset ck st0 ecr CE1_N CE2 WE_N OE_N ck_int start state A1 FROM / TO MEMORY FROMDSP cstrbin crdyout reset R FR BUSREC 32 8 [7,0] 8 busrec2 8 D Q ck R1 [15,8] 8 D Q ck M1 FR end_mem st0 9 17 AD R2 ADDRESS_C 8 st1 [23,16] 8 D Q ck +1 st2 R3 state

E P R Download do programa FROM / TO DSP FROM / TO MEMORY FPGA FR crdyin cstrbout reset E FRE PEE 24 BUSEMI 32 8 8 A3 FRS st2 IOR 8 A2 PES st2 FROM / TO DSP P DATA_IN 8 ck_int PEDSP DATA_OUT CE RW ADDRESS_C 8 M2 st1 8 reset reset ck st0 ecr CE1_N CE2 WE_N OE_N ck_int start state A1 FROM / TO MEMORY 8 FROMDSP cstrbin crdyout reset R FR BUSREC 32 8 [7,0] 8 D Q ck busrec2 R1 [15,8] 8 D Q ck M1 FR end_mem st0 9 17 AD R2 ADDRESS_C 8 st1 [23,16] 8 D Q ck 32 bits: xxDDAAPP dd = data address aa = memory address pp = program code +1 st2 R3 state

Execução do programa pelo core FPGA TODSP crdyin cstrbout reset E FRE PEE 24 BUSEMI 32 8 8 A3 FRS st2 IOR 8 A2 PES st2 FROM / TO DSP P DATA_IN 8 ck_int PEDSP DATA_OUT CE RW ADDRESS_C 8 M2 st1 8 reset reset ck st0 ecr CE1_N CE2 WE_N OE_N ck_int start state A1 FROM / TO MEMORY FROMDSP cstrbin crdyout reset R FR BUSREC 32 8 [7,0] 8 busrec2 8 D Q ck R1 ADDRESS_C [15,8] 8 D Q ck M1 FR end_mem st0 9 17 AD R2 8 st1 [23,16] 8 D Q ck +1 st2 R3 state

Envio dos resultados ao DSP FPGA TODSP crdyin cstrbout reset E FRE PEE 24 BUSEMI 32 8 8 A3 FRS st2 IOR 8 A2 PES st2 FROM / TO DSP P DATA_IN 8 ck_int PEDSP DATA_OUT CE RW ADDRESS_C 8 M2 st1 8 reset reset ck st0 ecr CE1_N CE2 WE_N OE_N ck_int start state A1 FROM / TO MEMORY FROMDSP cstrbin crdyout reset R FR BUSREC 32 8 [7,0] 8 busrec2 8 D Q ck R1 [15,8] 8 D Q ck M1 FR end_mem st0 9 17 AD R2 ADDRESS_C 8 st1 [23,16] 8 D Q ck +1 st2 R3 state

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 */ wait(300); /* wait the execution …. NOT NICE */ for(j=0; j<10; j++) *PE1=0; /* send PEDSP in order to receive the results */ b = *comm_port4_input; }

VHDL - controle do core (1/6) (opcional)

VHDL - controle do core (2/6) (opcional) 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”

VHDL - controle do core (3/6) (opcional) Não precisa ser tão lento Apenas para não ter problemas de timing

VHDL - controle do core (4/6) (opcional) 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

VHDL - controle do core (5/6) (opcional) Controles da máquina de emissão

VHDL (6/6) - sincronização de sinais assíncronos (opcional) 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

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

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

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”

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 )

Simulação apenas do processador Inputs (test_bench) Ponteiro para 1a posição do vetor 3 Endereço do vetor 3 Conteúdo da 1a posição do vetor 1 SUM Conteúdo da 1a posição do vetor 2 Current micro-instruction New instruction beginning Data to be writen in memory Memory write

Alguns dados da síntese Pode-se escrever o programa diretamente em linguagem de montagem Síntese física

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