GALER − programator GAL−i do Amigi
41
Elektronika Praktyczna 2/2002
P R O J E K T Y
GALER − programator
GAL−i do Amigi, część 2
AVT−5049
Programy dla GALERa
Zabierzmy siÍ teraz do opisa-
nia uk³adu, ktÛry chcemy zreali-
zowaÊ w†GAL-u. Uruchamiamy
edytor z†menu (Tools/Call Editor)
lub naciskaj¹c praw¹ AmigÍ+E.
NastÍpnie wpisujemy opis przy-
k³adowego uk³adu (list. 1). Jak
widaÊ na listingu, w†pierwszej
linii okreúlamy typ uk³adu GAL,
w†drugiej sygnaturÍ (maks. 8†zna-
kÛw), ktÛra zostanie wpisana do
uk³adu. SygnaturÍ moøna odczy-
taÊ wybieraj¹c z†menu GAL-Disas-
sembler/Read signature.
W†kolejnych liniach wpisujemy
etykiety pinÛw (identyfikatory syg-
na³Ûw wejúciowych i†wyjúciowych)
poczynaj¹c od 1. Niøej znajduj¹
siÍ rÛwnania opisuj¹ce dzia³anie
uk³adu. Wszystko co znajdzie siÍ
za s³owem kluczowym Description
nie bÍdzie interpretowane. W†kaø-
dej linii moøna umieúciÊ komen-
tarz po znaku úrednika. Zestaw
dostÍpnych komend kompilatora
jest doúÊ skromny. Mamy do dys-
pozycji nastÍpuj¹ce operacje:
- OR - w†opisie ürÛd³owym ozna-
czan¹ jako ì#î lub ì+î,
- AND - w†opisie ürÛd³owym
oznaczan¹ jako ì&î lub ì*î,
- NOT - w†opisie ürÛd³owym
oznaczan¹ jako ì!î lub ì/î.
Za pomoc¹ powyøszych opera-
cji moøna zapisaÊ dowoln¹ funkcjÍ
prze³¹czaj¹c¹. Otrzymamy po
skompilowaniu plik do programo-
W†drugiej czÍúÊ artyku³u
przedstawiamy jÍzyk opisu
uk³adÛw implementowanych
w†strukturach PLD.
Omawiamy rÛwnieø
oprogramowanie steruj¹ce
prac¹ programatora oraz jego
obs³ugÍ.
wania moøna po zapi-
saniu w GAL-u zabezpieczyÊ
przed odczytem wybieraj¹c w†me-
nu GAL/set security bit.
Wyjúcia uk³adu GAL mog¹ byÊ
trÛjstanowe. WÛwczas nazwÍ wyj-
úcie deklarujemy z†rozszerzeniem
.T. Potrzebna jest teø deklaracja
wejúcia steruj¹cego wyjúciem trÛj-
stanowym. Przy nazwie sygna³u
wpisuje siÍ wÛwczas rozszerzenie
.E. Przyk³ad takiego zapisu moøna
zobaczyÊ na list. 1. Wyjúcie ANDT
przyjmie stan trzeci, jeúli wejúcie
En znajdzie siÍ na poziomie L.
Wyjúcia GAL-a mog¹ byÊ typu
rejestrowego. Pozwala to tworzyÊ
liczniki, zatrzaski, rejestry prze-
suwne itp. Przyk³ad opisu liczni-
ka zamieszcono na list. 2.
Synchronicznie z†narastaj¹cym
zboczem sygna³u Clock zwiÍksza siÍ
zawartoúÊ licznika o†1. Przy po-
ziomie H†na wejúciu Clear i†naras-
taj¹cym zboczu zegarowego sygna³u
zeruje siÍ licznik, natomiast przy
wysokim poziomie na wejúciu Set
i†aktywnym zboczu Clock zostan¹
przepisane dane z†wejúÊ usta-
Rys. 11. Okno z widokiem
rozmieszczenia wyprowadzeń
projektowanego układu.
GALER − programator GAL−i do Amigi
Elektronika Praktyczna 2/2002
42
wiaj¹cych na wyjúcia. Wejúcie Clear
ma wyøszy priorytet niø wejúcie Set.
Wyjúcia rejestrowe mog¹ przyj¹Ê
stan trzeci (wysokiej impedancji) za
spraw¹ sygna³u /OE EN. Na list. 3
pokazano opis uk³adu 74574. Zalet¹
GAL-a jest m.in. to, øe moøna doúÊ
dowolnie rozmieszczaÊ wyprowa-
dzenia projektowanego uk³adu, co
uczyniono w†tym przyk³adzie. DziÍ-
ki moøliwoúci prawie dowolnego
rozmieszczenia wyprowadzeÒ moø-
na znacznie uproúciÊ uk³ad úcieøek
obwodu drukowanego.
W†pliku zawieraj¹cym archiwum
(dostÍpny w†Internecie na stronie
www.ep.com.pl w†dziale Download
oraz na CD-EP1/2002B) w†katalogu
ìExamplesî znajduj¹ siÍ wszystkie
przedstawione tu opisy i†wiele in-
nych. Znajdziecie tam m.in. opis
transkodera z†kodu BCD na kod
wyúwietlacza 7-segmentowego.
DziÍki moøliwoúci zmiany roz-
mieszczenia wyprowadzeÒ, zarÛ-
wno wejúciowych jak i†wyjúcio-
wych, bez problemu moøna do
transkodera pod³¹czyÊ dowolny
licznik i†dowolny wyúwietlacz, za-
chowuj¹c bezpoúrednie po³¹czenia
na p³ytce. Ponadto moøna dowol-
nie zmieniaÊ wygl¹d znakÛw.
W†trybie rejestrowym umiejs-
cowienie wyprowadzeÒ dla sygna-
³Ûw Clock i†Enable jest úciúle
okreúlone. W†tab. 1 zestawiono
wszystkie moøliwe funkcje pe³-
nione przez poszczegÛlne wypro-
wadzenia w†rÛønych trybach.
Standardowo (Mode 1) wypro-
wadzenia mog¹ teø pe³niÊ funkcjÍ
wejúÊ, poza dwoma wyprowadze-
niami, ktÛre mog¹ byÊ tylko wyj-
úciami. Jeúli wykorzystamy moøli-
woúÊ pracy trÛjstanowej (Mode 2),
wszystkie wyprowadzenia mog¹
byÊ wejúciami poza dwoma.
W†trybie rejestrowym (Mode 3)
wejúcie sygna³u zegarowego i†ste-
rowania wyjúciem trÛjstanowym
jest przypisane na sta³e do wypro-
wadzeÒ 1 i†13 dla GAL20V8 (11
dla GAL16V8). Przerzutniki s¹
prze³¹czone zboczem narastaj¹cym.
Jeúli chcielibyúmy, aby by³y prze-
³¹czane zboczem opadaj¹cym, na-
leøa³oby wprowadziÊ w†uk³adzie
negator i†jego wyjúcie po³¹czyÊ
z†wyprowadzeniem 1 uk³adu. Kaø-
de wyjúcie moøe byÊ wyjúciem
rejestrowym trÛjstanowym, wyj-
úciem kombinacyjnym trÛjstano-
wym lub wyjúciem kombinacyj-
nym. Naleøy zaznaczyÊ, øe dla
wyjúÊ rejestrowych stan trzeci jest
wy³¹czany sygna³em z†wyprowa-
dzenia 13 dla GAL20V8 (11 dla
GAL16V8) - wyjúcia w†stanie trze-
cim przy poziomie H. Wyjúcia,
ktÛre nie s¹ wyjúciami rejestrowy-
mi mog¹ przechodziÊ w†stan trzeci
za spraw¹ sygna³u z†dowolnego
wejúcia i†dowolnym poziomem (ak-
tywny poziom niski lub wysoki).
Zosta³o do opisania jeszcze kilka
funkcji menu, o†ktÛrych nie wspo-
mnia³em. Menu ìproject/Aboutî wy-
úwietli okno z†adresem kontakto-
wym do autora programu. W†menu
ìGalî moøna wybraÊ typ obs³ugiwa-
nego uk³adu. Menu ìGAL/Copyî
kopiuje uk³ad. Najpierw jesteúmy
proszeni o†umieszczenie uk³adu
ürÛd³owego, a†po odczycie jego za-
wartoúci - docelowego. ìGAL/Eraseî
kasuje zawartoúÊ pamiÍci uk³adu,
ìGAL/Compareî umoøliwia porÛw-
nanie zawartoúci dwÛch uk³adÛw.
ìGAL/Blank testî sprawdza czy
uk³ad nie jest zapisany, ìGAL/Test
security bitî sprawdza stan bitÛw
zabezpieczaj¹cych. W†ìGAL/Write
Accessî moøemy ustawiÊ jakie ope-
racje bÍd¹ wykonywane:
- przy programowaniu uk³adu:
- ìwith blank testî - sprawdza-
nie przed programowaniem
czy czysty - polecam ustawiÊ
tÍ opcjÍ, poniewaø przed za-
programowaniem GAL-a musi
byÊ on kasowany;
- ìwith verifyî- weryfikacja po-
prawnoúci zapisu;
- podobnie przy kopiowaniu,
- przed kasowaniem: ìwith blank
testî- sprawdzenie, czy uk³ad
jest czysty.
Rys. 12. Widok okna optymalizatora
równań.
Rys. 13. Sposób umieszczenia
układu w podstawce.
List. 1.
GAL20V8
;Typ układu
Bramki
;Sygnatura (max. 8-char.)
NC A B C D E F G H I J GND
;Deklaracja pinów
NC EN ANDT NC EXNOR EXOR NOR OR NAND AND NC VCC
AND = A*B
;Równanie opisujące bramkę AND
/NAND = C*D
;Równanie opisujące bramkę NAND
OR = E + F
;Równanie opisujące bramkę OR
/NOR = G + H
;Równanie opisujące bramkę NOR
EXOR = I*J + /I*/J
;Równanie opisujące bramkę EXOR
/EXNOR = I*J + /I*/J ;Równanie opisujące bramkę EXNOR
ANDT.T = A*B
;Bramka and w wyjście trójstanowym
ANDT.E = EN
;Sterowanie wyjściem trójstanowym ANDT
DESCRIPTION:
Na podstawie artykułu “Układy PLD” (EP 19/93 str.28) List 2a
*: AND
+: OR
/: NEGACJA
List. 2.
GAL20V8 ; 4-Bit-Counter first line: used GAL
Counter ; second line: any text (max. 8 char.)
Clock D0 D1 D2 D3 Set Clear NC NC NC NC GND
/OE NC NC NC NC Q3 Q2 Q1 Q0 NC NC VCC
Q0.R = /Clear * Set * D0
+ /Clear * /Set * /Q0
Q1.R = /Clear * Set * D1
+ /Clear * /Set * /Q1 * Q0
+ /Clear * /Set * Q1 * /Q0
Q2.R = /Clear * Set * D2
+ /Clear * /Set * Q2 * /Q1
+ /Clear * /Set * Q2 * /Q0
+ /Clear * /Set * /Q2 * Q1 * Q0
Q3.R = /Clear * Set * D3
+ /Clear * /Set * Q3 * /Q2
+ /Clear * /Set * Q3 * /Q1
+ /Clear * /Set * Q3 * /Q0
+ /Clear * /Set * /Q3 * Q2 * Q1 * Q0
DESCRIPTION
this is a 4-Bit-Counter
registered outputs are signed with the postfix.R
Pin 'Set' HIGH while clock signal (LOW-HIGH) at pin 'Clock':
load Q0-Q3 with state of D0-D3
Pin 'Clear' HIGH while clock signal:
Q0-Q3 are cleared
Clock signal while pins 'Set' and 'Clear' are LOW:
increment counter
GALER − programator GAL−i do Amigi
43
Elektronika Praktyczna 2/2002
Menu ìGAL-Disassembler/Gal-In-
foî wyúwietla informacjÍ o†produ-
cencie uk³adu i†zastosowanym al-
gorytmie programowania. ìGAL-Di-
sassembler/Generate JEDEC fileî od-
czytuje zawartoúÊ GAL-a i†zapisuje
do pliku z†rozszerzeniem ì.jedî.
Plik ten moøe pos³uøyÊ do za-
programowania innego uk³adu lub
do desasemblacji. ìGAL-Disassem-
bler/JEDEC file parametrî pozwala
ustawiÊ opcje zapisu pliku (czy ma
dodaÊ sumy kontrolne, itp). Pro-
gram jest wyposaøony w†deasemb-
ler. Z†plikÛw z†rozszerzeniem ì.jedî
(plik wynikowy do programowania
GAL-a) generuje pliki ürÛd³owe
z†rozszerzeniem ì.pldî. Po wybra-
niu tej pozycji menu, pojawi siÍ
okno z†moøliwoúci¹ przypisania ety-
kiet (identyfikatorÛw sygna³Ûw) do
fizycznych wyprowadzeÒ uk³adu
(patrz rys. 11). W†menu ìToolsî
dostÍpne jest polecenie ìClear pi-
nenamesî, ktÛre kasuje etykiety
z†okna programu. Natomiast pole-
cenie ìShow pinenamesî wyúwietla
List. 3.
GAL20V8 ; 8-Bit-Latch
74574 ;
Clock Reset D0 D1 D2 D3 D4 D5
D6 D7 NC GND
/OE NC Q0 Q1 Q2 Q3 Q4 Q5
Q6 Q7 NC VCC
/Q0.R = /D0
+ /Reset
/Q1.R = /D1
+ /Reset
/Q2.R = /D2
+ /Reset
/Q3.R = /D3
+ /Reset
/Q4.R = /D4
+ /Reset
/Q5.R = /D5
+ /Reset
/Q6.R = /D6
+ /Reset
/Q7.R = /D7
+ /Reset
DESCRIPTION
------\___/------
Clock | 1 24 | VCC
| |
Reset | 2 23 | NC
| |
D0 | 3 22 | Q7
| |
D1 | 4 21 | Q6
| |
D2 | 5 20 | Q5
| |
D3 | 6 19 | Q4
| |
D4 | 7 18 | Q3
| |
D5 | 8 17 | Q2
| |
D6 | 9 16 | Q1
| |
D7 | 10 15 | Q0
| |
NC | 11 14 | NC
| |
GND | 12 13 | /OE
-----------------
etykiety. Interesuj¹c¹ opcj¹ jest op-
timizer wybierany z†menu ìTools/
Optimizerî. Jeúli projektowany
uk³ad nie mieúci siÍ w†GAL-u, ten
program moøe nas uratowaÊ. Po
wskazaniu pliku do optymalizacji
wyúwietli siÍ okno (rys. 12), w†ktÛ-
rym jest wyúwietlone rÛwnanie
w†postaci w†jakiej znajduje siÍ
w†pliku ürÛd³owym (old equation)
oraz w†postaci zoptymalizowanej
(optimized equation), poniøej zos-
tanie wyúwietlona zuøyta na ten
cel liczba bramek matrycy AND
i†OR. Jeúli po optymalizacji liczba
bramek jest mniejsza, zmianÍ warto
zaakceptowaÊ naciskaj¹c ìuse itî.
Po optymalizacji wybieramy plik
do zapisu.
Uwagi koÒcowe
Program posiada wbudowan¹
pomoc. Jeúli nie wiemy co dany
requester, gadøet, czy opcja menu
robi, wystarczy wskazaÊ opcjÍ
w†menu (czy teø okno/gadøet)
myszk¹ i†nacisn¹Ê klawisz ìHelpî
Tab. 1.
GAL16V8:
Mode 1
Mode 2
Mode 3
Mode 1
Mode 2
Mode 3
In
In
Clock
1
20
+5V
+5V
+5V
In
In
In
2
19
In/C
T*
In/T/R
In
In
In
3
18
In/C
In/T
In/T/R
In
In
In
4
17
In/C
In/T
In/T/R
In
In
In
5
16
C
In/T
In/T/R
In
In
In
6
15
C
In/T
In/T/R
In
In
In
7
14
In/C
In/T
In/T/R
In
In
In
8
13
In/C
In/T
In/T/R
In
In
In
9
12
In/C
T*
In/T/R
GND
GND
GND
10
11
In
In
/OE
GAL20V8:
Mode 1 Mode 2
Mode 3
Mode 1
Mode 2
Mode 3
In
In
Clock
1
24
+5V
+5V
+5V
In
In
In
2
23
In
In
In
In
In
In
3
22
In/C
T*
In/T/R
In
In
In
4
21
In/C
In/T
In/T/R
In
In
In
5
20
In/C
In/T
In/T/R
In
In
In
6
19
C
In/T
In/T/R
In
In
In
7
18
C
In/T
In/T/R
In
In
In
8
17
In/C
In/T
In/T/R
In
In
In
9
16
In/C
In/T
In/T/R
In
In
In
10
15
In/C
T*
In/T/R
In
In
In
11
14
In
In
In
GND
GND
GND
12
13
In
In
/OE
Legenda:
In:
wejście
C:
wyjście
T:
wyjście trójstanowe
T*:
wyjście trójstanowe (wyprowadzenie to nie może być wejściem)
R:
wyjście rejestrowe
Clock:
wejście zegarowe dla komórek rejestrowych
/OE:
wejście sterujące pracą buforów trójstanowych dla wyjść rejestrowych
(standardowe wywo³anie pomocy
w†Amiga OS). Wtedy uruchomi
siÍ program AmigaGuide z†wybra-
nym rozdzia³em, w†ktÛrym opisa-
no interesuj¹ce nas zagadnienie.
Poniewaø podstawka progra-
muj¹ca posiada 24 styki, a†uk³ady
GAL16V8 zaledwie 20 wyprowa-
dzeÒ, naleøy zwrÛciÊ uwagÍ na
montaø tych uk³adÛw w†podstaw-
ce. SposÛb umieszczenia takiego
uk³adu w†podstawce przedstawio-
no na rys. 13.
Do programu steruj¹cego prac¹
programatora do³¹czono pliki z†ko-
dami ürÛd³owymi. Program moøna
ìúci¹gn¹Êî z†Aminetu. Jest on sha-
reware'owy. RejestracjÍ naleøy
przeprowadziÊ u†autora:
Christian Habermann
Asamstr. 17
85356 Freising, Germany
Christian.Habermann@t-online.de
Za pomoc¹ programatora pre-
zentowanego w†artykule zaprogra-
mowa³em juø wiele GAL-i. Przy
jakichkolwiek problemach proszÍ
o†kontakt.
S³awomir Skrzyñski, AVT
slawomir.skrzynski@ep.com.pl
Wzory p³ytek drukowanych w for-
macie PDF s¹ dostÍpne w Internecie
pod adresem: http://www.ep.com.pl/
?pdf/luty02.htm oraz na p³ycie
CD-EP02/2002B w katalogu PCB.