Obsah
1 Poznámky
- datasheet ATF16V8BQL.pdf zde
- pro ../6809/OMENkilo.html
- ATF22V10C programování
- možný programátor?
- diskuze na Arduino.cc
- Možná to někdo umí na Nuke
- Možná i tady? http://www.ebastlirna.cz/modules.php?name=Forums&file=viewtopic&p=446339&highlight=16v8#446339
- někdo něco zkoušel https://github.com/blurpy/minipro
2 Pátrání
- Pro programování PAL je potřeba nějaký HW programátor, který to tam vypálí a nějaký JEDEC soubor, který řiká, co se má vypálit
- JEDEC je nějaká organizace, která dělá bambilión standardů a nedá se tam nic najít
- naštěstí jsem narazil na článek PLD Series - Part 1 - Programmed My First GAL a PLD Series - Part 2 - External ZX81 Keyboard Interface GAL kde je zmíněný GALasm, který ty magické JEDECy umí nějak udělat (a taky, že ATF16V8BQL by mělo být dost blízko GAL16V8)
3 A naostro
Takže jsem to všechno postahal, nainstaloval, zupgradoval (no, aspoň trochu, chtělo by to prý víc, ale funguje to)
git clone https://gitlab.com/DavidGriffith/minipro.git make make install https://github.com/Kreeblah/XGecu_Software unrar x xgproV1090_setup.rar unrar x XgproV1090_Setup.exe # http://www.xgecu.com/EN/download.html - novější verze minipro -F updateII.dat # read https://github.com/blurpy/minipro git clone https://github.com/daveho/GALasm.git make cp galasm ~/bin
- a vyrobil návrh na dekodér adres a signálů pro Expanduino_I
v návrhu se nejdřív definují piny (ty dva řádky s NC na začátku - pokud tam uvede negaci, tak to znamená na schématu na krabičce přilepit zvenku kolečko pro negaci. Znamená to, že daný signál je aktivní v nule. Uvnitř (a tedy ve výrazech dál) už jen uvažuju signály jako aktivní/neaktivní, bez ohledu na to, jaké napětí na nožičkách to znamená. Takže pokud tam mám /RD, tak to znamená, že tou nožičkou jde dovnitř signál aktivní v nule, čili přez kolečko, uvnitř už se s ním počítá normílně, teda RD*cosi znamená pokud je RD aktivní a přitom cosi. A pokud to přiřadím do Q0 a ono bude aktivní (výraz platí), tak protože v definicích je s negací, tak se ta aktivita projeví GND na pinu.
návrh je tady ./SMdec01.pld
GAL16V8 ; DEVICE SMdec01 ; COMMENT max 8 char NC /WR A0 A1 A2 /RD /CS NC NC GND ; pokus zde uvedu /CS, tak v soucinech uz chci * CS aby to slo, kdyz na ten pin privedu 0 NC /Q7 /Q6 /Q5 /Q4 /Q3 /Q2 /Q1 /Q0 VCC ; a tady jsou vsechny Q negovane, takze jsou aktivni v nule Q0 = RD * /WR * /A0 * /A1 * /A2 * CS ; /Q0 = GND prave kdyz na /RD dam 0 a na /WR dám 1 a na A0, A1, A2 dam 0 (Status Register) Q1 = /RD * WR * /A0 * /A1 * /A2 * CS ; /Q1 = GND pri zapisu na adresu 000 (Control Register) Q2 = RD * /WR * A0 * /A1 * /A2 * CS ; R1 Q3 = /RD * WR * A0 * /A1 * /A2 * CS ; W1 Q4 = RD * /WR * /A0 * A1 * /A2 * CS ; R2 Q5 = /RD * WR * /A0 * A1 * /A2 * CS ; W2 Q6 = RD * /WR * A0 * A1 * /A2 * CS ; R3 Q7 = /RD * WR * A0 * A1 * /A2 * CS ; W3 DESCRIPTION Dekoder pro 6809 rozsirovaci desku s arduinem a 4R+4W registry
a z něj se vygeneruje magický ./SMdec01.jed, který už se dá vypálit a taky řada dalších souborů ./SMdec01.chp ./SMdec01.fus ./SMdec01.pin
galasm SMdec01.pld # > SMdec01.chp SMdec01.fus SMdec01.jed SMdec01.pin minipro -p ATF16V8BQL -w SMdec01.jed minipro -p ATF16V8BQL -r SMdec01.readed
a taky stáhnout záloha ./SMdec01.readed
a vyzkoušet výsledek a ono to doopravdy funguje :)
(a v tom .jed/.readed je i vidět ta struktura - řádek 32 bitů odpovídá součinu, 4bity na signál (normální, negovaný, ??, ??), 8 řádků se sčítá do výsledku, od pozice 2056 je uložený ten COMMENT - a zbytek zatím nechápu)
(nějaký převodník bin-text například tady )
Takže mám svůj první funkční PAL
- testování IC
while read line; do for i in `seq 10`; do echo;done; minipro -p 74373 -T; date "+ %H:%M:%S"; done