|
Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática Grupo de Apoio ao Projeto de Hardware gaph onde Buscar Mais Informações?
|
tarix | 30.10.2018 | ölçüsü | 4,8 Mb. | | #75923 |
|
Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática Grupo de Apoio ao Projeto de Hardware - GAPH
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
1 - Projeto de SDs usando CAD
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
Exemplo de Sistema de Projeto - Foundation, da Xilinx
Edição de esquemático (ou captura de esquemático)
Simulação lógica
Síntese Física
Relatórios (de posicionamento e roteamento)
Análise de Caminhos Críticos
Edição do layout do FPGA
PLANTA BAIXA, ou floorplaning (posicionamento relativo)
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)
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
2. FLUXO DE PROJETO EM PROTOTIPAÇÃO
Ontem e o FUTURO Componentes de um projeto de hardware moderno e complexo
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
Prototipação rápida - 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
CODESIGN: projeto integrado de hardware e software
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
3 - Plataformas de Prototipação Rápida
Características e Classificação
Taxonomia de Plataformas de Prototipação
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!!!!
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
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 de prototipação AEE Muito semelhante a XS40, porém com menos recurso de E/S. Positivo: - ISA
- ROM que guarda a programação
Placa de prototipação XS40
Placa de prototipação XS40/XST-1
XS40 / XStend
XSV - XSV800 - 2 PLATAFORMAS
Xess XSV - XSV800
VCC VW300 - Virtual Workbench (US$ 1295 - ago/2000)
Virtual Workbench - VW300
VCC HOTII-XL - 2 PLATAFORMAS - Barramento PCI
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
4. PLACA LIRMM (1996)
Ambiente de Prototipação LIRMM
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
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
4.1. PROTOCOLO DE COMUNICAÇÃO/VHDL PROTOCOLO DE COMUNICAÇÃO - 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
MÓDULO DE RECEPÇÃO (2/3)
MÓDULO DE RECEPÇÃO (3/3)
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
MÓDULO DE EMISSÃO (2/4) Implementação (dados - gerência pelo FPGA)
MÓDULO DE EMISSÃO (3/4) 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
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
SIMULAÇÃO VHDL - test bench simula o processador
SIMULAÇÃ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 ...
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)
Código C - Compilação (1/3) O código de saída estará em .out .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 /* 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 #**************************************************************************** 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
Código C - Execução Para rodar o programa C é necessário executar um batch, que chama o arquivo network: .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
Código C - parte 2
4.4. Processador Cleópatra na Placa LIRMM
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
Core e blocos de controle no FPGA
Download do programa
Execução do programa pelo core
Envio dos resultados ao DSP
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; } }
VHDL - controle do core (1/6)
VHDL - controle do core (2/6) 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)
VHDL - controle do core (4/6)
VHDL - controle do core (5/6)
VHDL (6/6) - sincronização de sinais assíncronos
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
Simulação - fase de execução
Simulação apenas do processador
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
Dostları ilə paylaş: |
|
|