• Nenhum resultado encontrado

Na introdução desse trabalho foram apresentados os blocos básicos de um FPGA. Nessa seção serão apresentados os componentes específicos encontrados nos FPGAs da família Virtex-5 da Xilinx. A arquitetura do FPGA XC5VLX110T é apresentada na Figura 18. Na figura estão também destacados alguns blocos desse FPGA. Os principais blocos são:

CLB (do inglês, Configurable Logic Block) – é o elemento lógico básico e é constituído de dois slices. O slice permite a implementação de lógica combinacional e/ou sequencial e pode ser configurado para operar com um registrador de deslocamento de 32 bits ou uma RAM de 64 bits, chamada de Distributed RAM;

BRAM (do inglês, Block RAM) – módulo de armazenamento flexível que pode ser implementado como uma memória 36Kbits ou duas de 18Kbits com

duas interfaces independentes de acesso ou como uma fila;

DSP48E – é a extensão do módulo DSP (do inglês, Digital Signal Processing) da Virtex4. Os slices DSP da coluna do FPGA estão arranjados em cascata e são constituídos com um multiplicador de complemento de dois 25x18 e um somador/subtrator/acumulador de 48 bits que dão suporte a algoritmos de DSP;

IOB – bloco configurável que suporta os mais populares padrões de entrada/saída (LVCMOS, LVTTL, PCI, LVDS, entre outros). Possui recursos para a otimização de interface síncrona, como controle de escorregamento de sinal, des/serializador, divisor de clock, entre outros; PCIE – bloco integrado que permite projetos com total

funcionalidade de PCI Express Endpoint com a mínima utilização de recursos;

TEMAC (do inglês, Tri-mode Ethernet Medica Access Controller) – elemento integrado que permite projetos utilizando conexão Ethernet com a mínima utilização de recursos;

CMT (do inglês, Clock Management Tile) – Possui dois DCMs (do inglês, Digital Clock Managers) e um PLL (do inglês, Phase-Locked Loop) que buscam prover para o FPGA o sinal de relógio mais otimizado possível; GTP_DUAL – possui dois transceptores seriais gigabit

full-duplex de 100Mb/s até 3.5Gb/s que servem para dar suporte protocolos, SATA, PCIe, Gigabit Ethernet, entre outros.

Além dos principais componentes contidos no FPGA XC5VLX110T estão destacados mais dois elementos na Figura 18. Esses elementos são:

IOB_BANK – cada conjunto de IOBs possui apenas uma tensão de referência configurável que dá o suporte para diferentes padrões de entrada/saída;

PRIMITIVES – são elementos básicos que permite o acesso do usuário recursos específicos do FPGA. Esses elementos são:

o ICAP – permite acesso a memória de configuração do FPGA;

51

o USER_ACCESS – permite acesso a um registrador de 32 bits escrito durante a configuração do FPGA. Recurso utilizado principalmente para identificação de projeto; o STARTUP – permite o controle de determinados

sinais globais após a configuração do FPGA; o BSCAN – permite acesso ao controlador do

JTAG TAP;

o FRAME_ECC – permite acesso ao circuito de detecção e correção de erros de quadros de configuração;

o CAPTURE – permite a amostragem dos valores de latches/registradores de todo FPGA;

o KEY_CLEAR – permite apagar a chave de criptografia da configuração interna do FPGA; o DCI_RESET – permite reinicializar a máquina

de estados do DCI (do inglês, Digitally Controlled Impedance);

o SYSMON – permite acesso a conversores analógico/digital do FPGA.

As matrizes de roteamento e os buffers, que não estão na Figura 18, completam a lista dos principais componentes presentes no FPGA XC5VLX110T. A Tabela 1 apresenta as características do dispositivo. Tabela 1 - Especificação das características do FPGA XC5VLX110T.

CLBs

Matriz (linha X coluna) 160 X 54

Número de Slices 17.280

Máx. Distributed RAM 1.120 Kb

BRAMs 18 Kb / 36 Kb Capacidade máxima de armazenamento 296 / 148 5.328 Kb

Slices DSP48E 64

CMTs (2 x DCMs / 1 x PLL) 6

Endpoint Blocks for PCI Express (PCIE) 1

Ethernet MACs (TEMAC) 4

Gigabit Transcievers (GTP) 16

Conjuntos de IOBs (IO_BANKs) 20

IOBs que podem ser usados pelo usuário 680 Fonte: Xilinx Inc. (2009) (45).

Figura 18 - Arquitetura do FPGA XC5VLX110T.

A Figura 19 mostra uma matriz de roteamento do FPGA XC5VLX110T. A matriz é responsável por interconectar as linhas de roteamento com as portas referentes da interface do CLB. A interface do CLB por sua vez faz a interligação das portas do CLB com os respectivos sinais de entrada/saída de cada um dos slices. Na Figura 19 destaca-se ainda a linha do sinal de carry de cada slice que sem passar por uma matriz de roteamento é conectado diretamente no slice do CLB adjacente visando otimizar o atraso de circuitos aritméticos.

A Figura 20 apresenta um CLB com os dois tipos de slices existentes. Todos os slices possuem quatro geradores de funções lógicas (ou tabelas verdades), quatro elementos de armazenamento, multiplexadores e lógica de carry. Esses elementos são utilizados para implementar circuitos combinacionais/sequenciais, aritméticos ou então operar como uma ROM. Somado a isso, alguns slices suportam duas funções adicionais: armazenamento de dados como uma RAM distribuída e registrador de deslocamento de até 32 bits. Slices com essa funcionalidades adicionais são chamados de SLICEM enquanto os outros são os SLICEL.

53

Figura 19 - Matriz de roteamento.

Figura 20 - Configurable Logic Block (CLB).

Os geradores de função lógica dos FPGAs Virtex5, chamados de LUTs (do inglês, Look-up Table), possuem seis entradas independentes (A1 até A6) e duas saídas independentes (O5 e O6) em cada uma das quatro LUTs (A, B, C e D) do slice como mostra a Figura 21. A figura mostra o diagrama detalhado de um SLICEL. O gerador de função pode implementar qualquer função booleana com seis entradas ou duas funções de cinco entradas desde que as duas compartilhem das mesmas entradas. As portas O5 e O6 das LUTs são conectadas às saídas e a

outros recursos dos slice de maneira diferente e são utilizadas conforme a necessidade. Somado a isso, o slice possui três multiplexadores (F7AMUX, F7BMUX e F8MUX) ligados nas saídas das LUTs que combinados permitem a implementação de funções booleanas de sete e oito e entradas.

Os slices são compostos de quatro elementos de armazenamento que podem ser configurados como registradores do tipo D sensíveis a borda ou latches sensíveis a nível. As entradas dos elementos de armazenamento podem ser derivadas de LUTs ou direto das portas do slice. Os sinais de controle, como clock (CK), clock enable (CE), set/reset (SR) e reverse (REV) são comuns aos quatro elementos do mesmo slice. Os atributos SRHIGH e SRLOW definem para qual o nível é forçado o sinal de saída do elemento de armazenamento quando o sinal SR é acionado. Os valores iniciais de cada elemento são determinados pelos atributos INIT0 e INIT1 e podem ser definidos individualmente, ao contrário, da escolha do atributo do SR de síncrono ou assíncrono que é comum aos quatro elementos. A escolha desses atributos permite as seguintes configurações de latch ou registrador:

nem set ou reset;

set, reset ou set/reset síncronos;

set (preset), reset (clear) ou set/reset (preset/clear) assíncronos.

Além disso, cada CLB possui circuito aritmético dedicado para a soma e subtração de forma mais rápida. Esse circuito é constituído de duas cadeias de carry separadas, uma em cada slice. Essas cadeias podem ser arranjadas em cascata com o circuito de carry do CLB adjacente superior para formar um somador/subtrator maior.

Tanto o SLICEL quanto o SLICEM permitem a implementação de ROMs com capacidade de 64, 128 e 256 bits ocupando 1, 2 e 4 LUTs respectivamente. Contudo, diferentemente do SLICEL apresentado na Figura 21, o SLICEM possibilita o uso das LUTs como memórias distribuídas ou registradores de deslocamento de até 32 bits, chamados de SRL (do inglês, Shift Register LUT). São diversas as configurações de memória distribuída e SRL possíveis com o SLICEM.

55

Figura 21 - Diagrama detalhado do SLICEL.

Documentos relacionados