Sie sind auf Seite 1von 7

Arquitectura de Computadores 2007/08

Introduo lgica programvel


At agora, para implementar um dado projecto lgico, utilizmos
circuitos discretos da srie 7400 da famlia TTL. Esta famlia inclui
uma variedade de blocos bsicos tais como portas lgicas (NOT,
NAND, NOR, AND, OR), descodificadores (DEMUX), flip-flops (tipo-D,
JK, etc.) que escolhemos a partir de um catlogo de circuitos
integrados (disponvel na pgina Web da unidade curricular) de
acordo com o resultado do projecto lgico que realizmos e que
queremos implementar na prtica.
Para implementar uma equao lgica do tipo Y = A + BC poderamos
utilizar um circuito 74LS32 (OR), um circuito 74LS08 (AND) e um
circuito 74LS04 (NOT).
Quando o nmero de portas lgicas pequeno esta metodologia
razovel mas quando a complexidade do projecto aumenta, o nmero
de circuitos integrados e, consequentemente, o nmero de fios que
usamos para os interligar adquirem uma dimenso que se traduz
num gasto de tempo de laboratrio sem valor pedaggico.
Ao contrrio dos circuitos nomeados anteriormente (e.g. 74LS08) que
possuem uma funo lgica pr-definida e imutvel, um circuito
lgico programvel possui uma funo lgica indefinida na altura da
fabricao. Antes de ser usado o circuito deve ser programado (de
forma elctrica). Aps esse passo um s circuito programvel pode
substituir um conjunto grande de portas lgicas e flip-flops reduzindo
deste modo a complexidade da montagem e aumentando o grau de
sucesso do projecto.
Existem vrios tipos de circuitos programveis com designaes
vrias: PAL (Programmable Array Logic), PLD (Programmable Logic
Device), FPGA (Field-Programmable Gate Array), designaes estas
que dependem da arquitectura interna utilizada. Esta matria ser
abordada nas aulas no contexto das memrias.
Os primeiros circuitos programveis possuam fusveis de titniotungstnio que eram queimados de acordo com as ligaes que se
pretendia obter (ver figura). Podiam, portanto, ser programveis
apenas uma vez.

Pg. 1

Arquitectura de Computadores 2007/08

Mais tarde foram desenvolvidas tcnicas de fabrico que permitem que


esses circuitos possam hoje ser re-programveis, do mesmo modo
como podemos gravar e re-gravar msicas na memria flash de um
leitor de MP3 ou dados numa pen USB sem que a informao se
perca quando se desliga a alimentao do circuito.

A programao de um circuito lgico


programvel realizada atravs de um
aparelho designado por programador de
circuitos. No nosso laboratrio usamos o
modelo
SP580U
da
Xeltek.
Este
aparelho liga-se a um PC atravs de um
cabo USB.

O circuito lgico programvel que


vamos utilizar designa-se por GAL
(Generic Array Logic) do fabricante
Lattice. A referncia GAL16V8 designa
um circuito com 20 pinos os quais (aps
configurados) podem ser usados como
entradas/sadas combinatrias e/ou 8
sadas de flip-flops tipo-D.

Programao de circuitos lgicos


Para programar um circuito temos que especificar quais as ligaes
que devem ser activadas (para interligar os blocos no seu interior).
Essa especificao realizada num ficheiro de texto com um formato
especfico que obedece ao standard designado por JEDEC. Esse
ficheiro (*.jed) lido pelo programador de circuitos que por sua vez
gera os sinais elctricos necessrios programao das ligaes
entre blocos. Embora pudssemos escrever mo o ficheiro JEDEC
mais fcil (e mais fivel) utilizar um programa designado por

Pg. 2

Arquitectura de Computadores 2007/08

compilador lgico 1 que gera esse ficheiro a partir das equaes


lgicas que queremos implementar. Esse programa chama-se
WinCUPL e est instalado nos computadores do nosso laboratrio.

Metodologia
A figura seguinte ilustra o conjunto de passos necessrios
implementao de um projecto lgico num circuito programvel.

1 passo: Realizar o projecto lgico (tabelas de verdade, mapas de


Karnaugh, diagrama de estados etc.) obtendo as equaes lgicas
(combinatrias e/ou sequenciais) necessrias. No caso dos circuitos
sequenciais devem ser utilizados flip-flops do tipo-D uma vez que so
estes que existem no circuito programvel que temos disponvel.
2 passo: Abrir o programa WinCUPL. Escrever um ficheiro de texto
(*.pld) indicando os pinos de entrada e sada e a descrio textual
das equaes lgicas a implementar. A sintaxe da descrio est
explicada no menu de ajuda da aplicao. Uma vez concluda pode
utilizar o simulador para garantir que a descrio textual est de
acordo com a funcionalidade pretendida. Compilar o ficheiro *.pld de
modo a gerar a verso no formato JEDEC, isto , *.jed.
3 passo: Solicitar ao docente que utilize o ficheiro *.jed para
programar o circuito.
4 passo: Testar, como habitualmente, o circuito na base de
montagem.

Exemplos
Nesta seco vamos apresentar alguns exemplos de programao,
primeiro com um circuito combinatrio e depois com um sequencial.
1

Do mesmo modo que um compilador traduz um programa Java num conjunto de instrues
(cdigo mquina) para correr num processador especfico.
Pg. 3

Arquitectura de Computadores 2007/08

Circuito combinatrio
Neste exemplo vamos assumir que pretendamos implementar uma
funo lgica de 3 variveis com a seguinte equao:
Z = ABC + A C + B C

Seguindo a metodologia apresentada anteriormente no primeiro


passo vamos descrever textualmente esta equao num ficheiro com
extenso pld. Abrimos a aplicao WinCUPL e seleccionamos a opo
File | New | Design File. Isto permite-nos criar um modelo
(template) para o ficheiro que necessitamos. No campo Name
escrevemos o nome que pretendemos, neste caso comb e no
campo Device a identificao do circuito programvel, neste caso
g16v8. Depois de fazer OK indicamos o nmero de pinos (3 de
entrada, 1 de sada e 0 para ns internos).

O ficheiro comb.pld que gerado tem o seguinte contedo:


Name
PartNo
Date
Revision
Designer
Company
Assembly
Location
Device

comb ;
00 ;
25-09-2007 ;
01 ;
Engineer ;
DCTI ;
None ;
;
g16v8 ;

/* *************** INPUT PINS ******************/


PIN
=
; /*
*/
PIN
=
; /*
*/
PIN
=
; /*
*/
/* *************** OUTPUT PINS *****************/
PIN
=
; /*
*/

A aplicao gera um
ficheiro com um
cabealho pr-definido e
divide o texto em
seces, separando os
pinos de entrada dos de
sada. Inclui ainda
campos de comentrio
que podem (devem) ser
preenchidos.

Pg. 4

Arquitectura de Computadores 2007/08

Resta-nos agora completar o contedo do ficheiro de acordo com a


funcionalidade pretendida. Consultando o ficheiro .pdf do circuito
programvel GAL16V8 vemos que podemos escolher os pinos 1,2 e 3
como entradas e o pino 12 como sada. Depois acrescentamos a
equao que relaciona a sada Z como funo das entradas.
/* *************** INPUT PINS ******************/
PIN 1 = A
; /* Input A
*/
PIN 2 = B
; /* Input B
*/
PIN 3 = C
; /* Input C
*/
/* *************** OUTPUT PINS *****************/
PIN 12 = Z
; /* Output Z
*/
/* Function Z */
Z = A & B & !C # !A & C # !B & C;

Note que o smbolo & representa a operao AND, o smbolo ! a


operao NOT e o smbolo # a operao OR. Note ainda que os
comentrios aqui usados so inspidos e de pouco significado porque
se trata de um exemplo. Uma vez terminadas as alteraes grave o
ficheiro.
Seguidamente vamos compilar este ficheiro para gerar a verso com
extenso .jed necessria ao programador de circuitos. Para isso
carregue em F9 ou utilize a opo do menu Run. Anote a localizao
da pasta onde o ficheiro vai ser guardado (geralmente,
c:\wincupl\wincupl\).
De acordo com a metodologia, o passo seguinte facultar ao docente
o ficheiro comb.jed que o programa gerou para que se possa
programar electricamente o circuito. Uma vez concluda a
programao pode utilizar o circuito como se tratasse de um circuito
do tipo TTL s que agora com a sua funo lgica.

Circuito sequencial
Neste exemplo pretende-se implementar uma mquina de estados
que activa a sada Z quando reconhece (na entrada X) a sequncia
binria 01 Aps a realizao do projecto chegamos s seguintes
equaes:

Q1+ = Q0
Q0+ = X
Z = Q0 Q1
Pg. 5

Arquitectura de Computadores 2007/08

O ficheiro correspondente seq.pld teria um contedo do tipo:


/* *************** INPUT PINS ******************/
PIN 1 = clk;
/* Clock Input */
PIN 2 = X;
/* Input bits X */
PIN 11 = !oe;
/* Out enable
*/
/* *************** OUTPUT PINS *****************/
PIN 12 = Z
; /* O1 Detect
*/
PIN 13 = q0
; /* Flip-flop 0 */
PIN 14 = q1
; /* Flip-flop 1 */

/* State machine */
q0.d = X;
q1.d = q0;
Z = !q1 & q0;

Note que o pino 1 agora utilizado como relgio e no como entrada.


A entrada D dos flip-flops especificada com o nome da varivel e a
extenso .d.
Quando testar o circuito, o pino 11 referente ao Output Enable, por
ser activo a 0, deve ser ligado ao GND (0 volt) de modo a permitir as
sadas dos flip-flops.

Referncias:
Wikipedia http://en.wikipedia.org
Bebop to the Boolean Boogie, 2nd Ed., Newnes 2003
Contemporary Logic Design, 2nd Ed., Pearson Education, 2005

Pg. 6

Arquitectura de Computadores 2007/08

INTRODUO LGICA PROGRAMVEL ....................................................................................1


PROGRAMAO DE CIRCUITOS LGICOS ...................................................................................................2
METODOLOGIA .........................................................................................................................................3
EXEMPLOS ................................................................................................................................................3
Circuito combinatrio.........................................................................................................................4
Circuito sequencial .............................................................................................................................5
REFERNCIAS: ..........................................................................................................................................6

Pg. 7

Das könnte Ihnen auch gefallen