Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Maio de 2006
ii
ROM ...................................................................................................................... 11 2.1 2.2 Estrutura interna da ROM .............................................................................. 12 Implementao de funes lgicas com ROM ............................................... 14
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
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.
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
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.
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
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
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.
32
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
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.
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
16
Macroclula
IO6
I7
Macroclula
IO7
12
I8
Macroclula
IO8
10
I9
Macroclula
IO9
I 10
Macroclula
IO10
I11
I12
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
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
37
38
39
I1/CLK
Q1 Q0 4 4 CLK
IO1
Q1 Q0
CLK
I2
IO2
Q1 Q0
CLK
I3
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
IO4
Q1 Q0
CLK
I5
IO5
Q1 Q0 8 8
CLK
IO6
Q1 Q0
CLK
I7
IO7
Q1 Q0 6 6
CLK
I8
IO8
Q1 Q0
CLK
I9
IO9
Q1 Q0
CLK
I 10
IO10
I 11
I12
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.
41
Dependendo do valor deste selector, a sada vem do flip-flop (sequencial) ou do termo de soma (combinatrio).
Q1 Q0
. . .
CK0 AR0
MUX
Q
I/O
0/1
SET
Q0 Sel1
AR
. . .
CK1 AR1 OE
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:
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
MUX
Q
I/O
0/1
SET
Q0 Sel1
. . . . . .
I/O
AR
. . .
CK1 AR1 OE
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).
43
Q1 Q0
. . .
CK0 AR0
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
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
MUX
Q
I/O
0/ 1
SET
Q0 Sel1
. . .
CK0 AR0
SET
Q0
I/O
AR
AR
. . .
CK1 AR1 OE
SP
SET
Q Q
Q1
. . .
OE
CLR
AR
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
SET
Q0
I/O
AR
AR
. . .
CK1 AR1 OE
SP
SET
Q Q
Q1
CL R
. . .
CK1 AR1 OE
SET
Q1
AR Sel2
AR
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
. . .
CK0 AR0
SET
Q0 0
I/O
AR
AR
. . .
CK1 AR1 0 OE
SP
SET
Q Q
Q1
CL R
. . .
CK1 AR1
SET
Q1
AR Sel2
AR
Figura 32 Configurao com dois flip-flops internos e o pino usado como entrada combinatria
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
I/O
. . .
CK0 AR0
I/O
SP D/T CLK MUX Sel0
R
CL R
SET
Q0
AR
AR
. . .
CK1 AR1 0 OE
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.
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.
47
. . .
CK0 AR0
MUX Q0 Q Sel1
Q
I/O
0/1
SET
AR
. . .
CK1 AR1 OE
SP
S
SET
Q Q
Q1
CL R
AR
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.
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
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
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;
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;
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)
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;
52