Informações

(3/3) Por que o FPGA não funciona corretamente - desmontando as primeiras razões de análise de chips FPGA

  • Autor:ROGER.
  • Lançamento em:2021-05-06

5.

Corrente de bit e armazenamento de configuração

As informações de configuração no XC2064 são armazenadas na célula de memória de configuração. A memória do FPGA não é armazenada usando o bloco RAM, mas é distribuído no chip na grade de 160x71 para garantir que cada bit esteja localizado ao lado de seu circuito de controle.

A figura a seguir mostra como a configuração bitstream é carregada no FPGA. O bitstream é enviado para o registrador de turno que corre para baixo do centro de chips (rosa). Depois de carregar 71 bits no registro de deslocamento, o circuito de seleção de coluna (azul) selecionará uma coluna de memória específica e carregará nesta coluna em paralelo.

Em seguida, carregue os próximos 71 bits no registro Shift, a próxima coluna à esquerda será a coluna selecionada. Este processo irá repetir todas as 160 colunas do FPGA, carregarão todo o bitstream no chip.Use o registro Shift para evitar um grande número de circuitos de endereçamento de memória.

Como carregar o bitstream para o FPGA

É importante que a distribuição do Bittream seja idêntica à distribuição no arquivo:O layout do bit no arquivo Bittream corresponde ao layout físico no chip.Como mostrado abaixo, cada bit é armazenado ao lado do circuito de controle FPGA.

Portanto, o formato de arquivo Bittream é determinado diretamente pelo layout do circuito de hardware. Por exemplo, quando há uma lacuna entre a fatia FPGA devido ao circuito de buffer, a mesma lacuna aparece no bitstream. O conteúdo do Bittream não é projetado em torno do conceito de software em torno do campo, folha de dados ou bloco de configuração.Entender o bitstream depende da perspectiva do hardware em vez de software.

Cada bit da memória de configuração é implementado conforme mostrado abaixo, e cada unidade de memória contém dois inversores conectados no loop.O circuito tem dois estados estacionários, para que ele possa armazenar um bit: o inversor superior é 1, o inversor inferior é 0, e vice-versa.

Para escrever a unidade, o transistor de transmissão à esquerda é ativado para passar o sinal de dados. O sinal na linha de dados só fará sobrecarregar o inversor, escrevendo assim o bit desejado. (Você também pode ler dados de configuração do FPGA usando o mesmo caminho.)

Q e controle de saída q invertido Controle as funções necessárias no FPGA, como desligar o roteamento, fornecendo bits para tabelas de pesquisa ou controla o circuito de trava. (Na maioria dos casos, apenas q saída é usada.)

Exibindo um pouco de configuração de memória da tabela de dados

A parte superior Q é a saída, a menor Q é a saída invertida

A figura abaixo mostra o layout físico da unidade de armazenamento. A figura esquerda mostra oito unidades de armazenamento, uma das quais é destacada.Cada linha de dados de nível é alimentada em todas as unidades de armazenamento na linha.Cada coluna seleciona uma linha para selecionar todas as unidades de armazenamento nesta coluna para gravação. A foto intermediária aumenta um transistor de silício e polissilismo de uma célula de memória.

Layout físico da unidade de armazenamento

Encontre um multiplexador de mesa

Como mencionado anteriormente, o FPGA implementa qualquer função lógica usando uma tabela de pesquisa.A figura a seguir mostra como implementar uma tabela de pesquisa em XC2064.

Os oito valores à esquerda são armazenados em oito unidades de armazenamento, e os quatro multiplexadores selecionam um de cada par de valores de acordo com o valor de entrada. Se A é 0, selecione o valor mais alto; se A é 1, selecione o valor mais baixo. Em seguida, um multiplexador maior é baseado em um de B e seleciona quatro valores.

Neste caso, o resultado é o valor desejado a XOR B Xor C.Você pode alterar a função lógica conforme necessário, colocando valores diferentes na tabela de pesquisa.

Use a tabela de pesquisa para implementar xor

Cada multiplexador é alcançado por um transistor. De acordo com o sinal de controle, um dos transistores de transferência é ativado e a entrada é transmitida para a saída.

A figura abaixo mostra uma parte do circuito LUT, multiplexando dois bits e a direita é duas células de memória. Cada bit deve ser aumentado por um inversor e, em seguida, passar pelo transistor do multiplexador intermediário, selecione um dos bits.

Close-up do circuito de implementação do LUT

EDA365 Fórum Eletrônico

6.

Trava

Cada CLB contém um gatilho que permite ao FPGA implementar trinco, máquina de estado e outros circuitos sem estado.A figura abaixo mostra a implementação do gatilho, que usa o design mestre / auxiliar.

Quando o relógio estiver baixo, o primeiro multiplexador permite os dados na trava principal. Quando o relógio é alto, o multiplexador desliga o anel da primeira trava e mantém esse valor. (Este bit é revertido duas vezes através de "ou" porta "e não" portas e inversores, permanecendo inalterados.) Ao mesmo tempo, quando o relógio é alto, o multiplexador da trava auxiliar é desde a primeira trava que recebe este bit (note que o relógio foi revertido).

Este valor é a saída do gatilho. Quando o relógio estiver baixo, o multiplexador secundário desliga o loop para bloquear o bit.Portanto, o gatilho é sensível à borda, e o valor é trancado na borda do relógio. Configuração e reiniciar os gatilhos forçados são altos ou baixos.

Implementação do gatilho, a seta apontou o primeiro multiplexador e duas portas OP-NAND

EDA365 Fórum Eletrônico

Seduzir

Matriz de troca de 8 pinos

A matriz de swap é um importante elemento de roteamento.Cada interruptor tem oito "pinos" (dois por lado), que podem ser combinados com uma intenção. Isso permite que sinais sejam mais flexíveis, divididos ou interseção do que um único nó de roteamento.

A figura abaixo mostra uma parte da rede de roteamento entre quatro CLB (ciano). A matriz de swap (verde) pode ser conectada a qualquer combinação do lado direito.

Observe que cada PIN pode ser conectado a 5 em outros sete pinos.Por exemplo, o PIN 1 pode ser conectado ao PIN 3, mas não pode ser conectado ao PIN 2 ou 4. Isso torna a matriz quase uma barra horizontal, com 20 conexões potenciais, não 28.

Manual de dados do xilinx programável

A matriz de chave é implementada por uma linha de transistores de transmissão, que é controlada por uma célula de memória acima e abaixo. Os dois lados do transistor são dois pinos de matriz de chave que podem ser conectados pelo transistor.Portanto, cada matriz de chave tem 20 bits de controle associados.

Duas matrizes cada um dos comprimidos, isto é, 40 bits de controle por telha. A figura abaixo mostra uma das células de memória, que é conectada ao portão curvo longo do transistor de transmissão inferior. O pino de controle do transistor 5 e as conexões entre os pinos 1.

Uma das unidades de armazenamento

Portanto, a conexão do switch entre os pinos de controle de bits 5 e o PIN 1 no fluxo de bits correspondente à célula de memória.Além disso, outras unidades de armazenamento e transistores relacionados são controladas por outros switches. Observe que a ordem dessas conexões não segue um modo específico. Portanto, o mapeamento entre o fluxo de bits e o pino do switch é aleatório.

EDA365 Fórum Eletrônico

8.

Roteamento de entrada

A entrada do CLB usa diferentes esquemas de codificação no Bitstream, que é explicado pela implementação de hardware. Na figura abaixo, os nós dos oito círculos são a entrada potencial da caixa CLB DD.

Esquema de codificação da entrada CLB em Bitstream

Você só pode configurar um nó para inserir porque dois sinais estão conectados à mesma entrada.Use vários multiplexadores para selecionar a entrada desejada.

Uma solução simples é usar um multiplexador de 8 vias, três dos quais selecionam um dos 8 sinais.

Outra solução simples é usar 8 através de transistores, cada transistor tem seu próprio sinal de controle, um dos quais seleciona o sinal necessário.

No entanto, o FPGA usa um método de mistura que evita o hardware de decodificação do primeiro método, mas 5 sinais de controle são usados ​​em vez dos oito sinais de controle necessários para o segundo método.

O FPGA usa vários multiplexadores para selecionar uma das oito entradas

O esquema acima mostra os métodos multiplexador de dois estágios usados ​​no FPGA:

Na primeira fase, um dos sinais de controle é ativado

A segunda fase seleciona o sinal da parte superior ou inferior como uma saída

Por exemplo, assume-se que o sinal de controle B / F é enviado para o primeiro estágio, "ABCD" é enviado para o segundo nível; a entrada B é a única B que será passada para a saída.Portanto, uma das oito insumos precisa ser usada nas unidades de armazenamento Bittream e 5..

EDA365 Fórum Eletrônico

9.

Em conclusão

O XC2064 usa uma variedade de circuitos altamente otimizados para atingir seus blocos e rotas lógicas.Este circuito requer um layout compacto para se adequar ao chip.

Mesmo assim, o XC2064 ainda é um chip muito grande, que é maior que o microprocessador na época.Portanto, é difícil de fabricar, e leva centenas de dólares.Em comparação com a FPGA moderna, o número de unidades de XC2064 é muito pequeno, mas mesmo assim, também desencadeou novas linhas revolucionárias de produtos.

A chave para o XC2064 Bittream é dois conceitos.Primeiro, o FPGA consiste em 64 blocos, que estão repetindo blocos que combinam blocos lógicos e roteamento. Embora o FPGA seja descrito como um bloco lógico que é cercado pelo roteamento, isso não é uma maneira de alcançá-los.

O segundo conceito é que não há abstração no bitstream.É mapeado diretamente ao layout bidimensional do FPGA.Portanto, apenas o layout físico considerando o FPGA, o bitstream é significativo.