Grupo VLSI Arquitetura Virtex-4 Rodolfo Galvão Aurélio 09/09/2007 Índice • Visão Geral • Blocos de I/O (IOBs) • Blocos Lógicos Configuráveis (CLBs) • Blocos de RAM • XtremeDSP • Clock • RocketIO • PowerPC 405 • Core Ethernet MAC • Referências Bibliográficas Visão Geral • A Virtex-4 compreende um conjunto de famílias de FPGAs: – Virtex-4 LX: aplicações de alto desempenho – Virtex-4 SX: aplicações DSP de alto desempenho – Virtex-4 LX: solução completa e de alto desempenho para aplicações de plataformas embutidas • Os componentes do Virtex-4 são uma melhoria dos já existentes em outras famílias (Virtex, Virtex-E, Virtex-2, Virtex-2 Pro e Virtex-2 Pro X). • Compatibilidade upward Visão Geral (cont.) • Todos os dispositivos Virtex-4 implementam as funcionalidades: – Blocos de I/O (IOBs) – Blocos Lógicos Configuráveis (CLBs) – Blocos de RAM – XtremeDSP slices – Blocos DCM (Digital Clock Manager) • Virtex-4 FX : – RocketIO MGT (Muit-Gigabit Transceiver) – CPU RISC embutida IBM PowerPC 450 (450MHz) – Cores EMAC (Ethernet Media Access Control) de 10/100/1000 Mb/s Visão Geral (cont.) • Matriz geral de rotas (GRM) fornece um vetor de chaves de roteamento entre os componentes. • Cada elemento programável é acoplado a uma matriz de chaves, que permite múltiplas conexões com a GRM. • Os valores são carregados nas células de memória durante a configuração. • Tecnologia de fabricação: – Gate 90-nm; – Menor consumo, maior densidade, melhor performance; – 11-Layer: mais possibilidades de roteamento; Blocos de I/O • I/O blocos provê uma interface entre os pinos e a lógica configurável. • IOBs otimizados para aplicações com fontes sincronizadas. • Otimizações de fontes síncronas incluem: – Per-bit deskew; – Data serializer/deserializer; – Divisores de clock; – Recurso de gerenciamentos de clock local dedicados; Blocos de I/O(cont.) • • • • • Um conversor serial para paralelo (com o divisor de clock associado) é adicionado no caminho de entrada; Um conversor paralelo para serial é adicionado no caminho de saída; Tecnologia SelectIO™ : – 1.5V to 3.3V I/O operation; – Built-in ChipSync™ source-synchronous technology; – Digitally controlled impedance (DCI) active termination; – True differential termination; – Low-capacitance I/Os para uma melhor integridade de sinais; – Suporte à memórias: DDR and DDR-2, SDRAM, QDR-II, and RLDRAM-II; Tecnologia ChipSync: – Integrado com SelectIO para simplificar interfaces de fontes síncronas; – Memory/Networking/Telecommunication interfaces up to 1 Gb/s+ DDR. Digitally Controlled Impedance (DCI): – Terminações opcionais serial ou paralela; – Compensação de temperatura. Blocos Lógicos Configuráveis • Recurso pra implementar circuitos seqüências e combinacionais. • Cada par em uma coluna tem um carry chain independente. • Somente SLICEM possui um shift chain comum. CLBs(cont.) • SLICEM e SLICEL: – 2 LUTs de 4 entradas cada (geradores de função); • Cada gerador de função implementa funções lógicas e aritméticas além de ROM. – 2 elementos de armazenamento; • Podem ser FF D ou level sensitive latch, com sinais de CLK, CLK ENABLE, SET/RESET – Mutiplexadores (MUXF5, MUXF6, MUXF7, MUXF8); • Podem combinar LUTs dentro de um mesmo CLB ou entre CLBs. – Carry Logic; • Provê adição e subtração aritmética rápida – Portas lógicas; CLBs(cont.) • SLICEM : – Armazena dados usando RAM distribuída; • LUTs combinados para armazenar dados. – Shift dos dados com registradores de 16 bits; • Implementados por uma Look-Up Table. 4 LUTs no SLICEM • Cad LUT pode atrasar o dado serial de 1 até 64 ciclos em uma CLB. • Qualquer um dos 16 bits pode ser lido assincronamente pela variação do endereço da LUT • Conexão dedicada entre o último bit de um shift register e o primeiro bit do próximo CLBs(cont.) SLICE (1 or 3) CLBs(cont.) SLICE (2 or 4) CLBs(cont.) • Look-up Tables – Geradores de função implementados com 4 entradas. – Atrasos de propagação são independentes da função lógica gerada. – Sinais da LUT podem: • Sair do slice diretamente (através de X e Y). • Entrar em uma porta XOR dedicada. • Selecionar a entrada do multiplexador de carry lógico. • Alimentar a entrada do Flip-flop D. – Multiplexadores (MUXF5 e MUXFX) podem combinar várias LUTs para implementar funções lógicas com mais de 4 entradas. • Storage Elements – Além das entradas de CLK e CLK ENABLE temos SR (set) e REV (reset). – SR também define o estado inicial do FF. CLBs(cont.) • Distributed RAM – Cada LUT do SLICEM pode implementar um elemento de RAM síncrono 16x1 bit. – Em 1 CLB (4 LUTs disponíveis no SLICEM) podemos ter: • Single-Port 16x4-bit RAM • Single-Port 32x2-bit RAM • Single-Port 64x1-bit RAM • Dual-Port 16x2-bit RAM CLBs(cont.) – Para configurações single-port, distributed RAM tem a mesma porta de endereço para escrita síncrona e leitura assíncrona. – Para o modo single-port, leitura e escrita dividem o mesmo barramento de endereço. – Para configurações dual-port, temos uma porta para escrita síncrona e leitura assíncrona além de outra porta para leitura assíncrona. – O gerador de função (LUT) tem pinos de endereço para leitura separado dos pinos de endereço para escrita. CLBs(cont.) • Read Only Memory (ROM) – Cada LUT ( SLICEM e SLICEL) pode implementar um 16x1-bit ROM. – Esses elementos de ROM podem ser cascateados para aumentar a capacidade de armazenamento. – Quatro configurações estão disponíveis: ROM 16x1, ROM 32x1, ROM 64x1, ROM 128x1. Qual a diferença entre a RAM e ROM implementada pela CLB? (16x2) (16x4) (16x8) CLBs(cont.) • Shift Register – As LUTs do SLICEM podem implmentar shift register de 16-bits sem usar FF D disponível no slice. – Aplicações de requerem delay ou período de latência usam esses shift register para desenvolver desings eficientes. – As linha de SHIFTIN e SHIFTOUT podem ser cascateadas para formar registradores mais longos. – Para criar rapidamente um shift register de uma Virtex-4 sem usar flip-flops usamos o CORE Generator™RAM-based shift-register module. – Como isso podemos fazer uma escrita síncrona e uma leitura síncrona/assíncrona simplemente varrendo os endereços da LUT. CLBs(cont.) • Multiplexadores – Uma LUT pode implementar um 2:1 multiplexer. Totalmente Combinacionais – A associação de LUTs e multiplexadores (MUXFX e MUXF5) podem formar: • 4:1 multiplexer em 1 slice (2 lut) • 8:1 multiplexer em 2 slices (3 lut) • 16:1 multiplexer em 4 slices (1 CLB)(5 lut) • 32:1 multiplexer em 8 slices (2 CLB)(10 lut) CLBs(cont.) • Designing Large Multiplexer – 4:1 Multiplexer: CLBs(cont.) • Designing Large Multiplexer – 8:1 Multiplexer: CLBs(cont.) • Designing Large Multiplexer – 16:1 Multiplexer: CLBs(cont.) • Designing Large Multiplexer – 32:1 Multiplexer: Blocos de RAM • Cada bloco armazena 18KBit de dados; • Leitura e escrita síncronas • Pode ser configurado para 16Kx1, 8Kx2 até 512x36 • Conteúdo de memória pode ser definido/limpado pelo bitstream de configuração • Durante a escrita, a saída pode ser o dado sendo escrito ou o dado anterior a escrita. (read-during-write) • True dual-port RAM Blocos de RAM • Melhoramentos do Virtex-4: – Registradores pipeline na saída de leitura dos dados • Taxa de clock mais alta ao custo de 1 período de clock de latência. – Dois blocos de RAM adjacentes podem ser combinados (32Kx1) sem lógica adicional ou perda de velocidade. – Portas de 18 ou 36 bits com write enable individual por byte (usado para interfacear com PPC450) – Portas de leitura e escrita tem a mesma largura – Os 2 clocks podem ter freqüências diferentes (assíncronos entre si) – Não requer CLB adicional para controle da FIFO. – Operação é controlada pelas entradas read e write enable XtremeDSP Slice • Cada bloco XtremeDSP contém 2 DSP48 slice para formar a arquitetura do DSP. • Muitos DSPs seguem multiplicação e adição. Os dispositivos Virtex-4, possui circuitos multiplicadores e somadores dedicados. Mas não possui todas as funcionalidades de um DSP comum. • Suporta conexão de múltiplos DSP48 slices para formar funções matemáticas, filtros DSP e aritmética complexa sem o uso de outros recursos da FPGA. • Segue a arquitetura ASMBL™ (Application Specific Modular Blocks). O propósito desse modelo é tornar os dispositivos programáveis bem “recheados”. Com uma mistura de lógica, memória, I/O, processador, gerenciador de clock e processamento digital de sinais. XtremeDSP Slice • Multiplicador de 18 bits x 18 bits seguido por multiplexadores e adder/subtracter de 3 entradas. – Multiplicador aceita 2 operandos 18 bits e complemento de 2 e produz um resultado de 36 bits e complemento de 2 – O adder/subtracter aceita 3 operandos de 48 bits com complementos de 2 e produz um resultado de 48 bits. – O resultado de adder/subtracter pode ser registrado num acumulador. • Número de DSP48 slices : Clock • 8 a 24 regiões de clock dependendo do tamanho do dispositivo • Clock Global: – 32 linhas matched-skew que servem todo os dispositivo (CLB, Blocos de RAM, DCM, I/O) e direcionam os sinais lógicos. – As linhas de globais de clock são dirigidas somente por um buffer de clock global. – Pode selecionar entre duas fontes de clock. – Virtex-4 pode chavear de uma fonte falha de clock. – Buffer de clock global é dirigido pelo DCM para eliminar o atraso na distribuição do clock ou para ajustar o atraso relativo a um outro clock. Clock(cont.) • Clock regional e clock de I/O: – O buffer de clock regional pode ser programado para dividir a taxa de clock de entrada por 1 até 8. – Clocks de I/O são muito mais rápidos e servem circuitos locais de serialização/desserialização (que circuitos são esses ?) • Digital Clock Manager, recursos para gerenciamento do clock: – Clock deskew: • DCM contém um DLL (Delay-Locked Loop) para eliminar o atraso na distribuição do clock. • DLL contém elementos de delay (pequenos buffers) e lógica de controle. • A lógica de controle possui um detector de fase e um seletor delay-line. – Síntese de freqüência: • Saídas separadas fornecem uma freqüência dobrada (CLK2X e CLK2X180) • Outra saída (CLKDV) fornece uma freqüência que é uma fração da freqüência de entrada. Clock(cont.) – Phase shifting (2 tipos): • Baixa Resolução: – Usa as fases de 90°, 180°, e 270° de CLK0 para fazer as saídas de clock CLK90, CLK180, CLK 270. • Alta Resolução: – Permite que toda saída de clock do DCM seja phase-shifting relativo a CLKIN enquanto mantém a relação entre as saíds de baixa resolução. – Reconfiguração Dinâmica: • Há uma conexão do bus com o DCM para se mudar os atributos do DCM sem reconfigurar o resto do dispositivo. • 4 modos: fixed, variable_positive, variable, center e direct. Clock(cont.) • PMCD (Phase-Matched Clock Dividers): Dois tipos de de gerenciamento de clock: – Phase-matched divided clocks: • PMCDs criam até 4 versões frequency-divided e phase-matched de uma entrada de clock (CLKA) – Phase-matched delay clocks: • PMCDs preservam os alinhamentos de borda, relações de fase ou atraso entre o clock de entrada CLKA e os outros clocks PMCD de entrada. RocketIO MGT • Taxa de dados de 622 Mb/s até 10.3125 Gb/s • 8 a 24 transceiver por FPGA • 3-tap transmitter pre-emphasis (pre-equalization) • Receiver continuous time equalization • Equalizador DFE (Decision Feedback Equalizer) para aplicações legado backplane • Optional on-chip AC coupled receiver • Digital oversampled receiver para taxa de dados de até 1.25 Gb/s • Geração e verificação de CRC (Cyclic Redundancy Check) flexível • Reconfiguração pelo usuário através da porta de reconfiguração dinâmica (DRP) IBM PowerPC 450 • PowerPC é uma arquitetura e uma família de microprocessadores RISC (Reduced Instruction Set Computer) de 64 bits que possui um subconjunto de características de 32 bits. • PowerPC 450 (PPC450) é um processador de 32 bits que é uma implementação do PowerPC embedded environment architecture que é derivada da arquitetura PowerPC. • Aplicações embarcadas para o PPC450 são compatíveis com outras implementações de PowerPC. • Bloco do processador é uma combinação: – Core PPC405D5 (Virtex-2 Pro) ou PPC405F6 (Virtex-4) – On-chip memory logic (OCM) – Controlador APU (Auxiliary Processor Unit) (Virtex-4) – Mais lógica e interface IBM PowerPC 450(cont.) • Cache de instruções integrado • Cache de dados integrado • Dois modos de privilégios: – Modo privilegiado: Sistema operacional, drivers de baixo nível – Modo usuário: aplicações • Dois modos de tradução de endereços: – Modo real: acesso direto à memória física – Modo virtual: endereço virtual é traduzido em físico • MMU (Memory Management Unit) virtual que suporta múltiplos tamanhos de páginas e uma variedade de atributos de proteção de armazenamento e opções de controle de acesso. • Process 1.2V Core Voltage Virtex-4 FX – Ethernet MAC • Virtex-4 Ethernet MAC (Media Access Control) tem 2 Ethernet MAC compartilhando uma única host interface • Suporta taxa de dados de 10/100/1000 Mb/s • Em conjunção com o RocketIO MGT fornece uma implementação completa do 1000BASE-X on-chip • O bloco contem 2 Ethernet MACs compartilhando uma host interface • Lado físico e Lado Cliente Referências Bibliográficas • Virtex-4 Family Overview http://direct.xilinx.com/bvdocs/publications/ds112.pdf – Acessado em 05/09/2007 • Virtex-4 User Guide http://direct.xilinx.xom/bvdocs/userguides/ug070.pdf – Acessado em 05/09/2007 • PowerPC 405 Processor Block Reference Guide http://direct.xilinx.com/bvdocs/userguides/ug018.pdf – Acessado em 05/09/2007 • XtremeDSP for Virtex-4 FPGAs User Guide http://direct.xilinx.com/bvdocs/userguides/ug073.pdf – Acessado em 05/09/2007 • Virtex-4 Embedded Tri-Mode Ethernet MAC User Guide http://direct.xilinx.com/bvdocs/userguides/ug074.pdf – Acessado em 05/09/2007 FIM