• Nenhum resultado encontrado

Blocos Lógicos baseados em Multiplexadores

3.3 Topologia dos Blocos Lógicos Programáveis

3.3.2 Blocos Lógicos baseados em Multiplexadores

com as demais; ou qualquer função de 5 variáveis; ou qualquer função de 4 variáveis juntamente com algumas funções de 6 variáveis; ou algumas funções de até 9 variáveis.

Cada CLB contém dois flip-flops que podem ser usados para armazenar o vetor de saída do CLB. Os flip-flops e os geradores de funções podem ser utilizados em separado. Implementando um grande número de funções em um mesmo CLB reduz-se o número de blocos necessários para implementar o circuito e o atraso médio do circuito.

A família de FPGAs FLEX10K da empresa Altera também possui blocos lógicos baseados em LUTs. Este bloco lógico está sendo apresentado na Figura 3.10. Ele possui uma Lookup Table (LUT) juntamente com um registrador (flip-flop) programável. No modo normal, o bloco lógico possui uma LUT de 4 entradas. Esta LUT é capaz de implementar qualquer função de 4 variáveis. Existem outros modos de operação como o aritmético, onde o elemento lógico possui duas LUTs de 3 entradas cada uma. O registrador pode ser utilizado junto com a lógica ou pode ser acessado separadamente.

Os blocos lógicos nesta família de FPGAs estão agrupados em conjuntos de 8. Tanto os FPGAs da família FLEX10K da Altera como os da família SPARTAN da Xilinx apresentam propagação rápida de carry.

FIGURA 3.10 – Bloco lógico da família FLEX10K da Altera

segunda coluna mostra os resultados levando em consideração a possibilidade de entradas negadas.

Analisando os dados da tabela 3.1, nota-se que para implementar uma função mais complexa de 4 ou 5 entradas em um bloco lógico composto por multiplexadores é preciso um número elevado de multiplexadores e, consequentemente, uma grande área, um grande número de conexões internas e de pinos de entradas e saída. Como já foi mencionado, um bloco lógico com muitos pinos de entrada e saída pode ser muito custoso para um FPGA, e para atingir uma alta densidade lógica é preciso então que o número de blocos necessários para implementar a lógica seja pequeno, compensando a área ocupada por apenas um bloco lógico.

TABELA 3.1 – Número de funções implementadas em relação ao número de multiplexadores

Número de MUX

Número Funções (sem entradas negadas)

Número de funções (com entradas negadas)

Número de entradas e

saídas

1 < 16 16 (todas de 2-ent) 4

3 16 (todas de 2-ent) 256 (todas de 3-ent) 8

7 256 (todas de 3-ent) 65536 (todas de 4-ent) 16 15 65536 (todas de 4-ent) 4294967296 (todas de 5-ent) 32 31 4294967296 (todas de 5-ent) 264 (todas de 6-ent) 64

Podem-se encontrar soluções intermediárias, buscando blocos lógicos com 2, 4, 5 e 6 multiplexadores. Nestas soluções o número de funções implementadas dificilmente irá cobrir todas as funções de n entradas, em compensação este bloco torna-se mais flexível em termos de área e detorna-sempenho elétrico.

A Figura 3.11 ilustra uma célula baseada em 7 multiplexadores. Se um inversor for colocado na entrada destes multiplexadores fornecendo o sinal nas duas polaridades na entrada do bloco lógico, este bloco lógico poderá realizar um maior número de funções lógicas.

O multiplexador pode ser implementado através de portas de transmissão como mostra a Figura 3.12 (a), de transistores de passagem como mostra a Figura 3.12 (b), de portas lógicas CMOS estáticas como mostra a Figura 3.12 (c) ou através de uma porta lógica complexa como mostra a Figura 3.12 (d). Para cada uma destas soluções a área de silício ocupada e o desempenho elétrico são diferentes.

A

C2 C1 B

C D

C5

saída

C7 E

C4 C3 F

G

H C6

FIGURA 3.11 – Bloco Lógico composto por 7 multiplexadores

out A

B

C

out A

B

C

(a) (b)

C A

B

C A

B

(c) (d)

FIGURA 3.12 – Opções de implementações de multiplexadores 2:1 3.3.2.1 Exemplos de blocos lógicos baseados em Multiplexadores

O bloco lógico da família FPGA pASIC3 da empresa QuickLogic [QUI98] é baseado em multiplexadores. Este bloco consiste em 2 portas ANDs de 6 entradas, 4 portas ANDs de 2 entradas, 6 multiplexadores 2:1 e 1 flip-flop tipo D com set e reset assíncrono. Possui um fan-in de 29 e pode implementar funções de até 16 entradas e

gerar até 5 saídas distintas. O flip-flop do tipo D pode ser conFigurado para funcionar como J-K, S-R ou do tipo T. Flip-Flops adicionais podem ser construídos a partir dos multiplexadores existentes na célula lógica. A Figura 3.13 mostra a esquerda o bloco lógico completo e a direita o bloco lógico realizando 5 funções lógicas pequenas ou 1 função lógica grande.

FIGURA 3.13 – Bloco lógico da família pASIC3 da QuickLogic

Os blocos lógicos dos FPGAs da família MX da Actel [ACT98] também são baseados em multiplexadores. Existem dois tipos de blocos lógicos nesta família: o bloco lógico simples I e II.

O Bloco Lógico Simples I apresenta 3 multiplexadores onde o controle do terceiro multiplexador possui uma porta lógica OR de duas entradas. Esta célula possui 8 entradas (A,B,C,D,Sa,Sb,Sc,Sd) e 1 saída. O Bloco Lógico Simples II tem uma porta lógica AND na entrada do controle dos dois primeiros multiplexadores. A Figura 3.14 exemplifica estes blocos. Esta célula possui 8 entradas (A,B,C,D,Sa,Sb,Sc,Sd) e 1 saída.

Todas as funções de 2 entradas são trivialmente implementadas usando um bloco lógico simples, porem apenas 213 das 256 funções de 3 entradas são implementadas usando apenas uma célula.

Sa

Sb A

C B

D

SdSc

Sa Sb

A

C B

D

Sc Sd

FIGURA 3.14 – Bloco Lógico Simples I e Bloco Lógico Simples II

O bloco sequencial pode armazenar valores como um registrador ou Latch. Este bloco sequencial também pode ser utilizado como apenas combinacional passando o flip-flop tipo D com clear. A Figura 3.15 mostra estes blocos lógicos.

D00 D01 D10 D11 S1 S0

Y

CLR CLK

OUT

D00 D01 D10 D11 S1 S0

Y

CLR CLK

OUT D

(a) (b)

FIGURA 3.15 – Bloco Lógico sequencial da família ACT2(a) e da família ACT3(b) Os blocos lógicos da ACTEL podem realizar funções que variam entre 2 a 8 entradas como o caso da família ACT2. Todavia, a porcentagem de funções de 4, 5, 6, 7 e 8 variáveis realizáveis pelo bloco lógico ACT2 é muito menor do que o número de funções de 2 e 3 entradas realizadas por este bloco lógico. Em experimentos [LIN97]

utilizando o mapeador tecnológico do SIS (act_map), constatou-se que 90% das funções dos blocos lógicos da ACT2 foram utilizadas para implementar funções de 2 e 3 variáveis. Os resultados mostraram que o bloco ACT2 equivale logicamente a uma LUT de 3 entradas.

Os LPGAs da empresa Chip Express [CHI98] possuem um bloco lógico também baseado em multiplexadores. Este bloco é composto por 3 multiplexadores 2:1 e uma porta AND. Este bloco pode realizar todas as funções de 2 entradas, uma grande parte das funções de 3 entradas e outras de até 8 entradas. Um latch pode ser implementado em apenas um bloco lógico e dois blocos lógicos implementam um flip-flop mestre-escravo. A programação deste bloco lógico é feita através dos pinos de entrada do bloco

que podem ser conectados a alimentação (VDD), a massa (GND) ou a uma conexão do circuito. A Figura 3.16 ilustra este bloco lógico.

A0 A1

MA0 MA1

MB0 MB1 SA

SB

FIGURA 3.16 – Bloco Lógico do LPGA da empresa Chip Express

Documentos relacionados