Você está na página 1de 30

Dispositivos Lgicos Programveis

Maio de 2006

Dispositivos Lgicos Programveis


Mrio P. Vstias Instituto Superior de Engenharia de Lisboa - ISEL

ii

NDICE 1 Introduo ............................................................................................................... 1 1.1 2 Tipos de dispositivos lgicos programveis..................................................... 6

ROM ...................................................................................................................... 11 2.1 2.2 Estrutura interna da ROM .............................................................................. 12 Implementao de funes lgicas com ROM ............................................... 14

ROM Programvel ............................................................................................... 19 3.1 ROM comerciais............................................................................................. 20

Dispositivo PLA .................................................................................................... 21 4.1 4.2 Implementao de funes lgicas com PLA................................................. 22 PLA comerciais .............................................................................................. 25

Dispositivo PAL .................................................................................................... 26 5.1 Implementao de funes lgicas com PAL................................................. 27 5.2 PAL comerciais .............................................................................................. 29 5.2.1 Arquitectura da PAL combinatria 16L8 ............................................. 29 5.2.2 Arquitectura de PAL sequencial PAL16R8 ......................................... 33 5.2.3 Arquitectura de PAL sequencial ATF22V10 ....................................... 34 5.2.4 Arquitectura de PAL sequencial ATF750C/CL ................................... 39 5.3 Configurao das PAL com a linguagem CUPL.......................................... 46 5.3.1 Configurao da PAL ATF22V10 usando CUPL ................................ 46 5.3.2 Configurao da PAL ATF750C/CL usando CUPL ............................ 48

Dispositivo CPLD ................................................................................................. 53 6.1 CPLD Comerciais........................................................................................... 54 6.1.1 Famlia Xilinx XC9500 .......................................................................... 54

Dispositivo FPGA ................................................................................................. 57 7.1 FPGA Comerciais........................................................................................... 58 7.1.1 Famlia Xilinx Spartan-II ....................................................................... 58

Bibliografia............................................................................................................ 62

iii

5 Dispositivo PAL
A PAL um dispositivo programvel cuja marca foi registada pela American Micro
Devices (AMD). Os primeiros dispositivos programveis PAL surgiram no final da

dcada de 70 e o seu sucesso crescente levou a PAL a ser actualmente um dos dispositivos lgicos programveis mais utilizado. As PAL baseiam-se no mesmo princpio de implementao da forma AND-OR. No entanto, consideram que a flexibilidade de programao associada matriz de sada no traz grandes benefcios capacidade de produo de funes lgicas. Consequentemente, enquanto que na PLA as matrizes de entrada e de sada so ambas programveis, na PAL apenas a matriz de entrada programvel. A matriz de sada tem uma estrutura fixa no programvel. Por este motivo, a PAL mais fcil de programar e tem um custo mais baixo quando comparada com a PLA. No entanto, no to flexvel em termos de programao, pois a matriz de sada fixa. Para ilustrar a arquitectura tpica de uma PAL, consideremos uma configurao exemplo com apenas quatro entradas e quatro sadas (ver figura 14).
Clula Lgica

O1

I1
Clula Lgica

O2

I2
Clula Lgica

O3 I3
Clula Lgica

O4

I4

Figura 14 Exemplo de arquitectura de uma pequena PAL

Dispositivos Lgicos Programveis

26

O dispositivo da figura apresenta uma estrutura regular formada pela matriz de entrada programvel, por quatro entradas (In) complementadas e no complementadas e por quatro sadas. Cada uma das sadas gerada por uma estrutura AND-OR que, neste caso particular, idntica para todas as sadas e formada por trs portas AND com entradas programveis. Cada uma das portas AND tem dezasseis ligaes de entrada programveis cujos sinais provm das quatro entradas, complementadas e no complementadas, e das quatro sadas, complementadas e no complementadas, que so reintroduzidas na matriz de entrada atravs de um buffer. Ao conjunto de lgica associada a cada uma das sadas (no exemplo, a estrutura AND-OR com trs portas AND e o buffer de realimentao) designa-se clula ou macroclula. O nmero de entradas e de sadas, bem como a estrutura da macroclula, so os principais parmetros lgicos diferenciadores do tipo de PAL.

5.1 Implementao de funes lgicas com PAL


A implementao de um conjunto de funes com uma determinada PAL est dependente do nmero de entradas e de sadas e do nmero de termos de produto. Devido limitao do nmero de termos de produto por clula, as funes devem ser previamente simplificadas antes de serem implementadas na PAL. Se, mesmo aps simplificao, o nmero de produtos for superior ao existente numa nica clula, ento necessrio usar duas ou mais clulas para implementar a funo recorrendo realimentao das sadas das clulas atravs dos buffers. Ao contrrio da PLA, em que um termo de produto podia ser directamente partilhado por duas ou mais portas OR, na PAL isso no possvel. Como tal, as funes podem ser simplificadas individualmente sem ter em conta a partilha de termos de produto (simplificao multifuno). Por outro lado, uma vez que possvel realimentar o valor da funo de sada, pode ser til identificar termos AND-OR comuns a duas ou mais funes. Consideremos, como exemplo, a utilizao da PAL da figura 14 para implementao de quatro funes lgicas, F0, F1, F2, F3: F3 = ABC + ABCD ; F2 = AB + A CD + ABCD ; F1 = AD + BC ; F0 = AD + BC + ABD + BD ;

Dispositivos Lgicos Programveis

27

A PAL tem entradas suficientes para implementar as funes de quatro variveis cada. Alm disso, numa primeira aproximao, o nmero de sadas tambm suficiente para implementar as quatro funes. No entanto, o nmero de termos de produto da funo F0 superior ao de uma nica clula, que tem apenas trs. Neste caso, necessrio usar mais do que uma clula para implementar a funo F0. Consequentemente, primeira vista, a PAL proposta no seria soluo, pois apenas suportaria a implementao de apenas trs das quatro funes. Contudo, ao analisarmos as funes, verificamos que a expresso lgica da F1 ( AD + BC ) faz parte da expresso lgica de F0 ( AD + BC + ABD + BD ). Assim, a funo F0 pode ser escrita como: F0 = F1 + ABD + BD e desta vez j s tem trs termos de produto, suportvel por uma nica clula da PAL. Caso o conjunto de funes fosse formado apenas por F3, F2 e F0, apenas teramos de criar uma nova funo que realizaria parte de F0. Por exemplo, F5 = BC + ABD + BD ou F5 = A D + BC . Depois de simplificar as funes, basta programar a matriz da PAL (ver figura 15).
Clula Lgica

F0

A
Clula Lgica

F1

B
Clula Lgica

F2 C
Clula Lgica

F3

Figura 15 Implementao das quatro funes na PAL


Dispositivos Lgicos Programveis

28

Na implementao ilustrada na figura, a representao das ligaes idntica usada nos dispositivo anteriores, ou seja, uma cruz na interseco indica que o sinal dessa coluna entra na porta AND da linha respectiva. Felizmente, como acontece com todos os outros dispositivos programveis, o fabricante disponibiliza ferramentas de CAD para gerao do ficheiro de programao a partir da descrio das funes lgicas e para programao da PAL, tendo como entrada o ficheiro de programao.

5.2 PAL comerciais


As PAL comerciais so consideravelmente maiores que a utilizada no exemplo anterior. De entre as PAL comerciais, existem as que apenas implementam lgica combinatria e as que tambm implementam lgica sequencial, pois incluem elementos de memria nas macroclulas. Nesta seco, vamos descrever a estrutura de uma PAL combinatria, PAL16L8, e duas PAL sequenciais bastante utilizadas, PAL22V10 e ATF750C.

5.2.1 Arquitectura da PAL combinatria 16L8


A PAL16L8 suporta um mximo de 16 entradas e 8 sadas (daqui advm os nmeros usados na designao 16L8) e tem uma matriz programvel com 64 linhas e 32 colunas, perfazendo um total de 2048 ligaes programveis (ver figura 16). As clulas de sada so formadas por: uma estrutura AND-OR com 7 portas AND de 32 entradas cada, correspondentes ao conjunto das 16 entradas complementadas e no complementadas; uma porta three-state inversora sada da porta OR cuja entrada de enable controlada por uma oitava porta AND tambm com 32 entradas. As entradas no conectadas so interpretadas pela porta AND como sendo o valor lgico 1. Assim, por exemplo, caso se pretenda que a porta three-state esteja sempre activa, basta no ligar nenhum sinal porta AND de controlo; um buffer de realimentao da sada respectiva para a matriz de entrada. Embora a PAL tenha 16 pinos de entrada e 8 pinos de sada, o encapsulamento do integrado apenas tem 20 pinos, incluindo os dois pinos de alimentao. Para que tal seja

Dispositivos Lgicos Programveis

29

possvel, 6 dos 20 pinos so bidireccionais, podendo ser usados como entrada, como sada ou como entrada/sada.
I1

O1

I2

IO2

I3

IO3

I4

IO4

I5

IO5

I6

IO6

I7

IO7

I8

O8

I9

I10

Figura 16 Arquitectura da PAL 16L8

Dispositivos Lgicos Programveis

30

Os pinos bidireccinais podem ser usados de vrias formas, dependendo da funo que se atribui ao pino: pode ser usado como entrada. Para tal, necessrio que a porta three-state de sada esteja sempre inactiva; pode ser usado como sada. Para tal, basta activar o three-state. Neste caso, o sinal sada pode ser realimentado para a matriz, atravs do buffer de realimentao, como se se tratasse de uma entrada. Esta realimentao usada sempre que o nmero de termos de produto de uma clula no suficiente para implementar uma funo, como foi visto na seco anterior; pode ser usado como pino de entrada/sada. Nesta configurao, o estado do pino controlado pela porta three-state de sada. Quando se quer enviar dados para o exterior, activa-se a porta three-state. No caso de se querer receber dados pelo pino, desactiva-se a porta three-state e a entrada de dados feita atravs do buffer de realimentao; uma outra configurao interessante, a de realimentao da funo de sada para a mesma clula que produziu a sada. Isto permite implementar circuitos lgicos com realimentao.

NOTA: Uma questo que se coloca nesta altura a de saber se uma PAL com m termos de produto suporta ou no a implementao de todas as funes de n entradas (na PAL16L8, temos 16 entradas e 7 termos de produto). De facto, como era de esperar, o nmero de termos de produto disponibilizados por uma PAL est longe de suportar todas as funes com o mesmo nmero de entradas da PAL. Sabemos que a funo que necessita de mais termos de produto o XOR, sendo que um XOR de n entradas requer 2n-1 termos de produto (e.g., para 8 entradas, seriam necessrios 128 termos de produto!). O que se passa que, na maioria dos casos, no somos confrontados com funes to extensas. Na maioria dos projectos de pequena e mdia complexidade, em que a PAL tida como implementao preferencial, na pior das hipteses surge a necessidade de recorrer realimentao das funes de sada para implementar uma estrutura AND-OR-AND-OR ... A desvantagem desta realimentao reside na duplicao do atraso de propagao da funo lgica.

Para ilustrar a utilizao da PAL16L8 na implementao de funes lgicas combinatrias, vamos implementar o multiplicador de dois bits, a partir das suas

Dispositivos Lgicos Programveis

31

funes complementares que se apresentam de seguida (no esquecer que a sada da clula inverte a funo):
M3 = I3 + I2 + I1 + I0 M2 = I3 + I1 + I2 I0 M1 = I3 I1 + I1 I0 + I3 I2 + I2 I0 + I3 I2 I1 I0 M0 = I2 + I0

Estas funes so facilmente implementveis na PAL sem recorrer realimentao, uma vez que o nmero de termos de produto de qualquer uma das funes inferior a 7 (ver implementao na figura 17).
I0

M0

I1

M1

I2

M2

I3

M3

I5

IO5

Figura 17 Implementao do multiplicador de 2-bits na PAL 16L8 No exemplo, todos os three-states associados s sadas das funes tm de estar activos. Para tal, basta no ligar qualquer entrada s AND de controlo respectivas.

Dispositivos Lgicos Programveis

32

5.2.2 Arquitectura de PAL sequencial PAL16R8


A PAL 16L8 apenas implementa funes combinatrias porque no tem elementos de memria, como latches ou flip-flops. Com o objectivo de implementar circuitos sequencias em PAL, surgiu a primeira gerao de PAL sequenciais com a designao PAL16R8. Este dispositivo programvel tem 8 entradas e 8 oito sadas, uma entrada de relgio comum a todos os flip-flops tipo D e uma entrada de controlo comum a todos as portas three-state de sada (ver figura 18).
CLK O1

S D R

SET

Q Q

CL R

I1

S D R

SET

O2

CL R

I2

S D R

SET

Q
SET

S D
CL R

Q
CL R

O3 O6

I6

S D R

SET

O7

CL R

I7

S D R

SET

O8

CL R

I8

OE_L

Figur

a 18 Arquitectura da PAL 16R8 As sadas complementares dos flip-flop tipo D so realimentadas para a malha, facilitando a implementao de contadores, de registos de deslocamento, etc. Note-se que as sadas dos flip-flops esto disponveis sem passar pelas portas three-state. Assim, os flip-flops podem mudar para um outro estado funo do estado presente, independentemente do estado das portas three-state, porque as sadas so realimentadas antes dos three-states. 33

Dispositivos Lgicos Programveis

Apesar da sua aplicabilidade, as PAL 16L8 e 16R8 esto limitadas pelo facto de apenas poderem ser usadas unicamente na implementao de circuitos combinatrios ou de circuitos sequencias e nunca em simultneo. Uma vez que muitas aplicaes necessitam de sadas combinatrias juntamente com sadas sequenciais, surgiram depois variantes destas PAL em que algumas das sadas eram combinatrias, a clula no tinha flip-flop, e outras eram sequencias, a clula continha um flip-flop (e.g., PAL16R6). Apesar da sua aplicabilidade, o facto de uma sada estar partida definida como combinatria ou sequencial restringia consideravelmente o tipo de PAL ao projecto. Para ultrapassar esta limitao, surgiram as famlias de PAL em que cada macroclula podia ser configurada individualmente como combinatria ou como sequencial. Nas seces seguintes, descrevem-se duas destas PAL, nomeadamente a ATF22V10 e a ATF750C.

5.2.3 Arquitectura de PAL sequencial ATF22V10


A ATF22V10 tem as seguintes caractersticas (ver figura 19): 12 pinos de entrada dedicados e 10 pinos de sada que podem ser configurados como entrada, sada ou entrada/sada. As entradas no utilizadas devem ser ligadas a Vcc ou a GND; 10 macroclulas programveis como combinatrias ou sequenciais e activas a HIGH ou activas a LOW; nmero de termos de produto por macroclula varivel de 8 a 16 termos. Pela figura 19 possvel identificar o nmero de termos de produto associados a cada uma das macroclulas atravs do nmero escrito na linha de entrada. Por exemplo, a macroclula associada sada IO1 tem 8 termos de produto, enquanto que a associada sada IO4 tem 14 termos de produto; Cada um dos flip-flops recebe sinais comuns de relgio (activo no flanco ascendente), de reset assncrono e de preset sncrono; Os termos de produto com todas as ligaes em aberto assumem o estado lgico HIGH; As sadas incluem um buffer three-state controlado por um termo de produto. Sempre que o pino usado para entrada, o three-state configurado por forma a

Dispositivos Lgicos Programveis

34

estar sempre inactivo. Caso o pino seja configurado como sada, o three-state est sempre activo. ainda importante referir que a realimentao combinatria feita a partir da sada do three-state. Como tal, a realimentao combinatria s possvel se o pino for configurado como sada. Atravs do controlo do three-state, possvel usar um pino I/O como bidireccional.
I1/CLK
Reset assncrono Preset sncrono

Macroclula

IO1

10

I2

Macroclula

IO2

12

I3

Macroclula

IO3

14

I4
CLK/IN IN IN IN IN IN IN IN IN IN IN GND 1 2 3 4 5 6 7 8 9 10 11 12 PAL 24 22V10 23 22 21 20 19 18 17 16 15 14 13 VCC I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O IN
14 16

Macroclula

IO4

I5

Macroclula

IO5

Matriz Programvel 132 x 44


I6

16

Macroclula

IO6

I7

Macroclula

IO7

12

I8

Macroclula

IO8

10

I9

Macroclula

IO9

I 10

Macroclula

IO10

I11

I12

Figura 19 Arquitectura da PAL ATF22V10

Dispositivos Lgicos Programveis

35

A macroclula de sada pode ser configurada de acordo com uma de quatro configuraes diferentes: sada combinatria activa a HIGH, sada combinatria activa a LOW, sada sequencial activa a HIGH ou sada sequencial activa a LOW. A escolha da configurao feita de acordo com a aplicao do utilizador e conseguida atravs de dois bit de configurao: S0 e S1 (ver figura 20).

AR
S D
SET

MUX

I/O

CLK

CL R

SP

S1

S0

MUX

S1 0 0 1 1

S0 0 1 0 1

Configurao Sequencial/activa a LOW Sequencial/activa a HIGH Combinatria/activa LOW Combinatria/activa HIGH

Figura 20 Arquitectura da macroclula da PAL 22V10 A configurao sequencial activa a LOW conseguida com ambos os bits de S1 e S0 ao nvel lgico 0. Neste caso, o multiplexer de sada coloca entrada do three-state o sinal proveniente da sada Q do flip-flop. Por outro lado, o MUX de entrada (em baixo, na figura), realimenta a matriz programvel com a sada complementada do flip-flop (ver figura 21). Na mesma figura, est ilustrado o circuito lgico equivalente aps a configurao da macroclula

AR
S D
SET

MUX

I/O
AR
S D
SET

I/O
Q Q

CLK

CL R

SP

CLK S1 S0

CL R

SP

MUX

Figura 21 Configurao sequencial activa a LOW da macroclula da ATF22V10 Para obter uma sada registada activa a HIGH, o multiplexer encaminha a sada complementada do flip-flop que depois invertida pelo three-state (ver figura 22).
Dispositivos Lgicos Programveis

36

AR
S D
SET

MUX

I/O
AR
S D
SET

I/O
Q Q

CLK

CL R

SP

CLK S1 S0

CL R

SP

MUX

Figura 22 Configurao sequencial activa a HIGH da macroclula da ATF22V10 Para ter sadas combinatrias, basta seleccionar as entradas do multiplexer que no passam pelo flip-flop. Para a sada activa a LOW, selecciona a entrada negada e o multiplexer de entrada selecciona o sinal vindo da sada do three-state (ver figura 23).

AR
S D
SET

MUX

I/O I/O

CLK

CL R

SP

S1

S0

MUX

Figura 23 Configurao combinatria activa a LOW da macroclula da ATF22V10 Para a sada activa a HIGH, selecciona a entrada no negada e o multiplexer de entrada selecciona o sinal vindo da sada do three-state (ver figura 24).

AR
S D
SET

MUX

I/O I/O

CLK

CL R

SP

S1

S0

MUX

Figura 24 Configurao combinatria activa a HIGH da macroclula da ATF22V10

Dispositivos Lgicos Programveis

37

A figura 25 ilustra a arquitectura completa da PAL ATF22V10.

Figura 25 Arquitectura completa da PAL ATF22V10 (imagem extrada de [7])

Dispositivos Lgicos Programveis

38

5.2.4 Arquitectura de PAL sequencial ATF750C/CL


A PAL ATF22V10 foi um passo em frente na flexibilizao da arquitectura da PAL. No entanto, ainda apresenta algumas limitaes, como o nmero reduzido de flip-flops, um sinal de relgio comum a todos os flip-flops, inviabilizando a implementao na mesma PAL de mquinas sequencias com relgios diferentes, tipo de flip-flop fixo, no permitindo optimizar a lgica combinatria com a utilizao de flip-flops mais adequados ao problema, etc. Com vista a melhorar todos estes aspectos, surgiu recentemente uma nova famlia de PAL - ATF750C/ATF750CL - mais flexvel e com maior densidade de integrao que ultrapassa as limitaes descritas anteriormente. A ATF750C(L) tem as seguintes caractersticas principais: uma extenso lgica da 22V10 e compatvel com as PAL ATV750B/BL e ATV750/L (verses anteriores desta famlia de PAL); Tem 12 pinos de entrada dedicados e 10 pinos de sada que podem ser configurados como entrada, sada ou entrada/sada; Tem 20 flip-flops que pode ser configurados individualmente como sendo do tipo D ou do tipo T. As sadas dos flip-flops podem realimentar a matriz programvel de entrada. Todos os flip-flops so inicializados a 0 aps activao da alimentao; Tem 10 macroclulas programveis como combinatrias ou sequenciais com termos de soma combinados ou separados; Tem um total de 171 termos de produto e dois termos de soma por sada. Os termos de soma tm associados entre quatro e oito termos de produto. Pela figura 26 possvel identificar o nmero de termos de produto associados a cada uma das macroclulas atravs do nmero escrito na linha de entrada; O sinal de relgio e de reset de cada um dos flip-flops pode ser controlado individualmente por um termo de produto. Adicionalmente, cada um dos flip-flops pode ser configurado individualmente com uma entrada de relgio proveniente do pino de entrada directa de relgio. O preset de todos os flip-flops controlado por um sinal sncrono comum a todos proveniente de um termo de produto;

Dispositivos Lgicos Programveis

39

I1/CLK
Q1 Q0 4 4 CLK

CK0 Macroclula CK1 AR 0 AR1 OE SP

IO1

Q1 Q0

CLK

I2

CK0 Macroclula CK1 AR 0 AR1 OE SP

IO2

Q1 Q0

CLK

I3

CK0 Macroclula CK1 AR0 AR1 OE SP

IO3

Q1 Q0

CLK

I4
CLK/IN IN IN IN IN IN IN IN IN IN IN GND 1 2 3 4 5 6 7 8 9 10 11 12 PAL 24 ATF750 23 22 21 20 19 18 17 16 15 14 13 VCC I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O IN

CK0 Macroclula CK1 AR0 AR1 OE SP

IO4

Q1 Q0

CLK

I5

Matriz Programvel 171 x 84


I6

CK0 Macroclula CK1 AR 0 AR1 OE SP

IO5

Q1 Q0 8 8

CLK

CK0 Macroclula CK1 AR 0 AR1 OE SP

IO6

Q1 Q0

CLK

I7

CK0 Macroclula CK1 AR0 AR1 OE SP

IO7

Q1 Q0 6 6

CLK

I8

CK0 Macroclula CK1 AR 0 AR1 SP OE

IO8

Q1 Q0

CLK

I9

CK0 Macroclula CK1 AR0 AR1 OE SP

IO9

Q1 Q0

CLK

I 10

CK0 Macroclula CK1 AR0 AR1 OE SP

IO10

I 11

I12

Figura 26 Arquitectura completa da PAL ATF750C/CL

Dispositivos Lgicos Programveis

40

Os termos de produto com todas as ligaes em aberto assumem o estado lgico HIGH;

As sadas incluem um buffer three-state controlado por um termo de produto. Sempre que o pino usado para entrada, o three-state configurado por forma a estar sempre inactivo. Caso o pino seja configurado como sada, o three-state est sempre activo. ainda importante referir que a realimentao combinatria feita a partir da sada do three-state. Como tal, a realimentao combinatria s possvel se o pino for configurado como sada. Atravs do controlo do three-state, possvel usar um pino I/O como bidireccional. Os pinos de sada incluem ainda um controlo para programao da polaridade.

Quando comparado com a PAL 22V10, a ATF750C(L) tem o dobro da densidade lgica, incluindo o dobro do nmero de flip-flops, e mais flexvel. A flexibilidade traduz-se por ter sinais de relgio e sinais de reset independentes para cada um dos flipflops e caminhos de realimentao a partir das sadas dos flip-flops que permitem a utilizao destes sem utilizar pinos de entrada/sada. Alm disso, ao poder configurar os flip-flops como sendo do tipo D ou do tipo T facilita a implementao de contadores neste tipo de PAL. A macroclula da ATF750C(L) formada pelos termos de produto (o nmero de termos de produto da macroclula depende do pino a que esta associada. Na figura 26 possvel identificar o nmero de termos de produto associados a cada uma das macroclulas atravs do nmero escrito na linha de entrada. Por exemplo, a macroclula associada sada IO1 tem 4 termos de produto associados a cada um dos termos de soma), por dois termos de soma, por dois flip-flops e por lgica de programao para configurar a clula como combinatria ou sequencial, bem como o tipo de polaridade associado sada. Existe ainda um multiplexer que selecciona a origem do sinal de relgio aplicado a cada um dos flip-flops (ver figura 27). Na figura, possvel identificar os termos de produto associados a cada um dos termos de soma, os dois flip-flops e o three-state de sada. A escolha entre sequencial e combinatrio feita pelo multiplexer de sada atravs do selector Sel1 configurvel.

Dispositivos Lgicos Programveis

41

Dependendo do valor deste selector, a sada vem do flip-flop (sequencial) ou do termo de soma (combinatrio).
Q1 Q0

. . .
CK0 AR0

SP D/T CLK MUX Sel0


R
CL R

MUX
Q

I/O
0/1

SET

Q0 Sel1

AR

. . .
CK1 AR1 OE

Sel3 D/T CLK MUX Sel 2


R

SP
S
SET

Q Q

Q1

CL R

AR

Figura 27 Arquitectura da macroclula de sada da PAL ATF750C/CL O nmero de termos de produto do termo de soma superior pode ser aumentado com a utilizao dos termos de produto associados ao termo de soma inferior. Para tal, basta ligar o selector Sel3. A origem do sinal de relgio controlada pelo multiplexer ligado entrada de relgio dos flip-flops que escolhe entre o sinal de relgio sncrono ligado ao pino 1 da PAL (CLK), comum a todos os flip-flops, ou o sinal gerado por um termo de produto (CLK0 e CLK1). A polaridade de sada configurada atravs de uma porta XOR que funciona como
buffer inversor ou no inversor. Os sinais de reset assncrono (AR0 e AR1) e de

controlo do three-state de sada (OE) so provenientes de um termo de produto. Todas as clulas tm trs caminhos de realimentao para a matriz configurvel (representado na zona superior da figura 27), um vindo de cada um dos flip-flops e outro do pino de sada. No caso de uma sada combinatria, a realimentao vem sempre do prprio pino. No caso de uma sada sequencial, a realimentao pode vir do pino ou do registo. A macroclula da ATF750C/CL permite vrias configuraes. De seguida, descrevemos algumas das mais utilizadas:

Dispositivos Lgicos Programveis

42

a) Sada combinatria; b) Sada combinatria mais um flip-flop; c) Sada sequencial; d) Sada sequencial mais um flip-flop; e) Utilizao de dois flip-flops com pino de I/O usado como entrada; f) Sada combinatria com registo do valor no flip-flop. Em todas as configuraes, um flip-flop no associado a um pino de sada designado flip-flop interno. Na PAL ATF750 o flip-flop Q1 sempre interno, enquanto que o flip-flop Q0 pode ser interno ou estar associado a um pino.
a) Configurao com sada combinatria

Esta a configurao mais simples, em que no so utilizados flip-flops (ver figura 28).
Q1 Q0

. . .
CK0 AR0

SP D/T CLK MUX Sel0


R
CL R

MUX
Q

I/O
0/1

SET

Q0 Sel1

. . . . . .

I/O

AR

. . .
CK1 AR1 OE

Sel3 D/T CLK MUX Sel 2


R S

SP
SET

Q Q

Q1 OE

CL R

AR

Figura 28 Configurao com sada combinatria O multiplexer de sada configurado para a entrada combinatria. O Sel3 ligado caso sejam necessrios mais termos de produto para produzir a sada combinatria. A utilizao dos termos de produto provenientes do termo de soma inferior possvel porque o segundo flip-flop no est a ser usado.
b) Configurao com sada combinatria mais um flip-flop

Nesta configurao, produzida uma sada combinatria com o termo de soma superior e o termo de soma inferior suado juntamente com o seu flip-flop para produzir uma varivel Q1 registada (ver figura 29).

Dispositivos Lgicos Programveis

43

Q1 Q0

. . .
CK0 AR0

SP D/T CLK MUX Sel0


R
CL R

MUX
Q

I/O
0/1

Q1

SET

Q0 Sel1

AR

. . . . . .
CK1 AR1 OE SP D/T CLK MUX Sel 2
R
CL R

I/O

. . .
CK1 AR1 OE

Sel3 D/T CLK MUX Sel 2


R S

SP
SET

Q Q

Q1

SET

Q Q

Q1

CL R

AR

AR

Figura 29 Configurao com sada combinatria mais um flip-flop Nesta configurao no possvel associar os termos de produto do termo de soma inferior aos do termo de soma superior, uma vez que esto a ser usados pelo flip-flop inferior. Esta configurao pode ser usada, por exemplo, quando o circuito a implementar inclui uma sada combinatria e uma varivel registada que no tem de ser enviada para um pino de sada.
c) Sada sequencial

O modo mais simples de gerar uma sada sequencial utilizando o flip-flop superior que tem um caminho directo para o pino de sada. Tambm possvel usar o flip-flop inferior, mas, neste caso, a sada do flip-flop no tem um caminho directo para uma sada, tendo de ser realimentado para a matriz para poder aparecer numa sada combinatria (ver figura 30).
Q1 Q0 Q0

. . .
CK0 AR0

SP D/T CLK MUX Sel0


R
CLR

MUX
Q

I/O
0/ 1

SET

Q0 Sel1

. . .
CK0 AR0

SP D/T CLK MUX Sel0


R
CL R

SET

Q0

I/O

AR

AR

. . .
CK1 AR1 OE

Sel3 D/T CLK MUX Sel 2


R S

SP
SET

Q Q

Q1

. . .
OE

CLR

AR

Figura 30 Configurao com sada sequencial


Dispositivos Lgicos Programveis

44

Tambm nesta configurao, pode-se adicionar os termos de produto inferiores ao OR superior, uma vez que o flip-flop inferior no est a ser usado.
d) Sada sequencial mais um flip-flop

Esta configurao usa o flip-flop superior para gerar uma sada registada e o inferior para registar uma varivel interna (ver figura 31).
Q1 Q0 Q1 Q0 SP D/T CLK MUX CK0 AR0 Sel0
R
CL R

. . .

MUX
Q

I/O
0/1

SET

Q0 Sel1

. . .
CK0 AR0

SP D/T CLK MUX Sel 0


R
CL R

SET

Q0

I/O

AR

AR

. . .
CK1 AR1 OE

Sel3 D/T CLK MUX Sel 2


R S

SP
SET

Q Q

Q1

CL R

. . .
CK1 AR1 OE

SP D/T CLK MUX


R
CL R

SET

Q1

AR Sel2

AR

Figura 31 Configurao com sada sequencial mais um flip-flop interno


e) Utilizao de dois flip-flops com pino de I/O usado como entrada

A ATF750C/CL tem a vantagem de ter realimentaes directamente das sadas dos flipflops. Como tal, os flip-flops podem ser usados sem estarem associados a qualquer pino I/O, libertando o pino I/O para poder ser usado como entrada (ver figura 32).
Q1 Q0

Q1 Q0 SP D/T
S
SET

. . .
CK0 AR0

MUX
Q

I/O
0/1

Q0 Sel1

CLK MUX Sel0


R
CL R

. . .
CK0 AR0

SP D/T CLK MUX Sel 0


R
CL R

SET

Q0 0

I/O

AR

AR

. . .
CK1 AR1 0 OE

Sel3 D/T CLK MUX Sel 2


R S

SP
SET

Q Q

Q1

CL R

. . .
CK1 AR1

SP D/T CLK MUX


R
CL R

SET

Q1

AR Sel2

AR

Figura 32 Configurao com dois flip-flops internos e o pino usado como entrada combinatria

Dispositivos Lgicos Programveis

45

Repare que nesta configurao o three-state de sada est sempre inactivo (entrada de controlo a 0). Isto permite que se utilize o pino como entrada sem gerar qualquer conflito com o valor sada do flip-flop superior.
f) Sada combinatria com registo do valor no flip-flop

Esta ltima configurao ilustra a utilizao de uma macroclula com sada combinatria, em que o valor de sada registado no flip-flop respectivo (ver figura 33).

Q0

Q0 SP D/T
S
SET

. . .
CK0 AR0

MUX Q0 Q Sel1 0/1


Q

I/O

CLK MUX Sel0


R
CL R

. . .
CK0 AR0

I/O
SP D/T CLK MUX Sel0
R
CL R

SET

Q0

AR

AR

. . .
CK1 AR1 0 OE

Sel3 D/T CLK MUX Sel 2


R S

SP
SET

Q Q

Q1

CL R

. . .
OE

AR

Figura 33 Configurao com sada combinatria registada num flip-flop interno Neste caso, o segundo flip-flop pode ser usado ou no. No exemplo da figura no foi utilizado, permitindo usar os seus termos de produto no termo de soma superior.

5.3 Configurao das PAL com a linguagem CUPL


Esta seco descreve o modo de configurao das PAL recorrendo linguagem de descrio de hardware Atmel-CUPL. Nesta descrio, vamos considerar apenas as PAL ATF22V10 e ATF750C/CL.

5.3.1 Configurao da PAL ATF22V10 usando CUPL


Recordando a macroclula da ATF22V10 (ver figura 34), verifica-se que na sua configurao tem de se indicar se se trata de uma sada combinatria ou sequencial com flip-flop tipo D. No caso de ser uma sada sequencial, ainda necessrio configurar os sinais ligados s entradas AR, SP e D do flip-flop. Para qualquer tipo de sada, tem de se indicar a funo lgica associada entrada de controlo do three-state de sada. Por omisso, o valor colocado no valor lgico 1.

Dispositivos Lgicos Programveis

46

O sinal de relgio no exige qualquer configurao pois comum a todos os flipflops e est sempre associado ao pino 1 da PAL.

AR
S D
SET

MUX

I/O

CLK

CL R

SP

S1

S0

MUX

Figura 34 Macroclula da ATF22V10 Deste modo, as extenses CUPL vlidas para este dispositivo programvel so: OE (controlo do three-state de sada), AR, SP e D (sinais associados ao flip-flop). Para configurar a sada como combinatria, basta indicar a funo lgica associada a essa sada. Por exemplo:
O21 = I1 # I2;

Para configurar a sada como sequencial, necessrio indicar as expresses lgicas associadas entrada do flip-flop. Por exemplo:
O21.d = I1 # I2; O21.ar = reset; O21.sp = b0;

Adicionalmente, pode-se especificar um sinal de controlo do three-state de sada, quer seja uma sada combinatria, quer seja sequencial. Por exemplo:
O21.oe = enable;

A indicao de que se pretende usar o valor presente numa sada combinatria ou sequencial para realimentao da matriz feita utilizando o nome associado ao pino no lado direito de uma expresso sem qualquer extenso. Por exemplo:
O22 = O21 & I2;

significa que a sada combinatria O22 igual ao produto lgico entre a entrada I2 e a funo lgica da sada O21.

Dispositivos Lgicos Programveis

47

5.3.2 Configurao da PAL ATF750C/CL usando CUPL


A programao da macroclula da PAL ATF750 inclui a configurao do pino como entrada, sada ou entrada/sada e do sinal de controlo do three-state de sada. Alm disso, um pino de sada ou de entrada/sada pode ser configurado como combinatrio ou sequencial. Sempre que se utiliza um flip-flop, necessrio configurar as entradas de reset (AR), preset (SP) e de relgio, bem como o tipo de flip-flop (D ou T). Deste modo, as extenses CUPL vlidas para este dispositivo so: OE (controlo do three-state de sada), AR, SP, D, T, DFB (sinais associados aos flip-flops), CK, CKMUX (sinais associados configurao do sinal de relgio) e IO (sinal associado identificao da realimentao do pino). Para melhor percebermos a configurao da macroclula, recorda-se a sua configurao na figura 35.
Q1 Q0

. . .
CK0 AR0

SP D/T CLK MUX Sel0


R
CL R

MUX Q0 Q Sel1
Q

I/O
0/1

SET

AR

. . .
CK1 AR1 OE

Sel3 D/T CLK MUX Sel 2


R

SP
S
SET

Q Q

Q1

CL R

AR

Figura 35 Macroclula da ATF750X


ATRIBUIO DE NS E PINOS

O flip-flop Q1 interno identificado por um nmero de n. O flip-flop Q0 identificado por um nmero de n quando usado como interno e um nmero de pino quando associado a um pino (ver tabela 5). Na tabela, uma linha corresponde a uma macroclula. Por exemplo, o registo Q0 do pino 17 (ou do n 38) e o registo Q1 do n 28 pertencem mesma macroclula.

Dispositivos Lgicos Programveis

48

Pino Q0 14 15 16 17 18 19 20 21 22 23

N Q0 35 36 37 38 39 40 41 42 43 44

N Q1 25 26 27 28 29 30 31 32 33 34

Tabela 5 identificao dos ns e dos pinos Considere os exemplos seguintes:


pin [2, 3, 4, 5] = [I1, I2, I3, I4]; pin [20, 21, 22, 23] = [O20, O21, O22, O23]; pinnode [34, 31, 44] = [O23Q1, O20Q1, O23Q0];

Na primeira declarao atriburam-se quatro pinos de entrada. Depois, de acordo com a tabela 5, atriburam-se quatro pinos 20, 21, 22 e 23 que podem ser usados como combinatrios ou sequencias. Na declarao seguinte atriburam-se trs ns internos, dois com o registo Q1 e um terceiro com o registo Q0. O primeiro registo Q1 e o registo Q0 definidos como ns pertencem mesma macroclula, de acordo com a tabela 5.
IDENTIFICAO DAS REALIMENTAES

Cada macroclula tem trs caminhos de realimentao para a matriz de entrada: um de cada um dos registos e um terceiro do pino. Para um flip-flop interno Q1, o caminho de realimentao identificado pelo nome do n. Para um flip-flop associado a um pino de sada, o caminho de realimentao pode vir do registo ou do pino. No primeiro caso, identificado pelo nome do pino. No segundo caso, identificado pelo nome do pino acompanhado da extenso IO (ver figura 36).
O23.IO (n 23) O23 (n 34) O23 (n 23)
SP D/T CLK
S
SET

Q1 Q0

. . .
CK0

MUX
Q

Q0 Sel 1 0/1

O23

Macroclula

MUX Sel 0

CLR

AR

Figura 36 Identificao dos pontos de realimentao

Dispositivos Lgicos Programveis

49

Para uma sada combinatria, a realimentao vem do pino, pelo que identificada pelo nome do pino. Por exemplo:
O22.d = I1 $ I2; O23Q1.d = I2 # I3 # I4; O21 = O23 & O23Q1 & O23.io;

No exemplo, definiram-se as expresses de entrada dos registos Q0 (O23) e Q1 (O23Q1) de uma macroclula. De seguida, atribuiu-se sada O21 o produto lgico entre o valor da sada do registo Q0 (O23), o valor da sada do registo interno Q1 (O23Q1) e o valor do pino O23 (O23.io), todos pertencentes mesma macroclula.

NOTA: Se um pino de I/O for usado como entrada, esta identificada apenas com o nome do pino. A extenso .IO usada apenas para realimentao do valor de um pino de sada registado.

Existe um caso particular de realimentao, associado configurao f) descrita e ilustrada na seco anterior, correspondente configurao em que temos uma sada combinatria cujo valor registado no flip-flop associado a essa sada. Sendo uma sada combinatria, esta identificada pelo nome do pino. Como tal, a realimentao a partir do flip-flop no pode usar o mesmo nome. Para ultrapassar esta dificuldade, utiliza-se a extenso .DFB associada ao nome do pino para identificar a sada do flip-flop Q0 (ver figura 37).
O23 (n 23) O23 (n 34) O23.dfb (n 23)
SP D/T CLK MUX CK0
R
CL R

Q1 Q0

. . .

O23
Q0 Q
Q

SET

Macroclula

Sel 0

AR

Figura 37 Identificao do ponto de realimentao com flip-flop e sada combinatria Por exemplo,
O21 = I2; O23.d = O21.dfb;

Dispositivos Lgicos Programveis

50

Neste exemplo, atribuiu-se a entrada I2 sada O21 (sada combinatria) e atribuiuse ao flip-flop Q1 (O23) o valor realimentado vindo da sada do flip-flop Q0 (O21.dfb) pertencente macroclula associada sada combinatria O21.
ATRIBUIO DOS SINAIS AR, SP e OE

Os sinais AR (reset assncrono) dos flip-flops so configurados individualmente com um termo de produto. O sinal SP (preset sncrono) dos flip-flops comum a todos e configurado como um nico termo de produto. Os three-states de sada tambm so configurados individualmente atravs dum termo de produto. A configurao destes sinais faz-se com as extenses do CUPL .AR, .SP e .OE. Por exemplo:
O23.ar = I1 & I2; O23.sp = I3; O23.oe = I2 & I4;

CONFIGURAO DOS SINAIS DE RELGIO

Cada um dos registos pode ser configurado com um sinal de relgio independente proveniente de um termo de produto ou directamente do pino de relgio (pino 1 da PAL). A configurao do sinal de relgio feita com as extenses .CK e .CKMUX. No caso de se pretender usar o sinal directamente do pino de relgio, necessrio associar um nome ao pino 1 que depois atribudo entrada de relgio do flip-flop usando o nome do n ou do pino a que est associado o flip-flop seguido da extenso .CKMUX. No caso de se pretender usar um relgio proveniente de um termo de produto, deve-se usar o nome do n ou do pino a que est associado o flip-flop seguido da extenso .CK. por exemplo:
pin 1 = sync_clk; pin 2 = async_clk; O22.ckmux = sync_clk; O23.ck = async_clk & I1; O23Q1.ck = sync_clk;

Neste exemplo, o flip-flop associado sada O22 recebe um sinal de relgio directo do pino 1. O flip-flop Q0 associado ao pino O23 (O23) recebe um sinal de relgio vindo de um termo de produto (async_clk & I1). O flip-flop Q1 associado ao n O23 (O23Q1)

Dispositivos Lgicos Programveis

51

recebe um sinal de relgio de um termo de produto, que neste exemplo formado apenas pelo sinal aplicado ao pino 1 (sync_clk). Repare que embora o O22 e o O23Q1 recebam o mesmo sinal de relgio, o primeiro recebe o sinal directamente, enquanto que o segundo recebe o sinal atravs de um termo de produto.
IDENTIFICAO DO TIPO DE FLIP-FLOP

Na PAL ATF750, o flip-flop pode ser configurado como sendo do tipo D ou do tipo T. Para tal, basta usar a extenso .D ou .T, respectivamente, quando se definem as funes de entrada dos flip-flops. Por exemplo,
O23.d = I1 & I2; O22.t = I1 & I2;

O primeiro caso configura o flip-flop como tipo D e o segundo como tipo T.

Dispositivos Lgicos Programveis

52