.. vim: noexpandtab fileencoding=utf-8 nomodified wrap textwidth=200 foldmethod=marker foldmarker={{{,}}} foldcolumn=4 ruler showcmd lcs=tab\:|- list :date: 2023.06.13 23:31:02 :tags: HW :authors: Gilhad :summary: ATF16V8BQL :title: ATF16V8BQL :nice_title: |logo| %title% |logo| %HEADER% Poznámky -------------------------------------------------------------------------------- * datasheet ``__ zde * pro `<.root/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? ``__ * někdo něco zkoušel ``__ 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) * taky zmiňuje `minipro `__ pro ovládání MiniPRO TL866xx series of chip programmers (ale ještě ne T48 a T56 - BACHA na to) * zkusím koupit `tohle `__ jestli to s tím bude fungovat, tak bych byl docela za vodou :) A naostro -------------------------------------------------------------------------------- .. sidebar:: `<./SMdec01.chp>`__ :class: right-sidebar .. code:: GAL16V8 -------\___/------- NC | 1 20 | VCC | | /WR | 2 19 | /Q0 | | A0 | 3 18 | /Q1 | | A1 | 4 17 | /Q2 | | A2 | 5 16 | /Q3 | | /RD | 6 15 | /Q4 | | /CS | 7 14 | /Q5 | | NC | 8 13 | /Q6 | | NC | 9 12 | /Q7 | | GND | 10 11 | NC ------------------- * Takže jsem to všechno postahal, nainstaloval, zupgradoval (no, aspoň trochu, chtělo by to prý víc, ale funguje to) .. code:: 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 <.root/6809/Expanduino/Expanduino_I.html>`__ * 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>`__ .. code:: 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>`__ .. code:: 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 .. code:: while read line; do for i in `seq 10`; do echo;done; minipro -p 74373 -T; date "+ %H:%M:%S"; done .. Toto dál je komentář Ahoj, potřeboval bych naprogramovat (= "[b]vypálit[/b]") dvě stejné [b]ATF16V8BQL-PU15[/b] Vymýšlím přídavnou desku pro 6809 počítač (OMEN kilo od Martina Malého [url]https://github.com/omenmicro/kilo[/url]), kam by šlo připojit "cokoliv" - teda pro začátek nějakou klávesnici (asi PS/2 kvůli snadnému ovládání) a nějaké zobrazovadlo jako několikařádkový OLED, nebo tak něco. Což by narychlo šlo pomocí nějakého Arduina, protože pro ty je takových návodů bambilión. Jenomže 6809 běží na téměř 2MHz (krystal skoro 8MHz, kvůli dělitelnosti pro ACIA MC6850 která dělá sériový vstup/výstup na 115.200Bd. A zařízení mapuje do paměti, takže data tečou přez stejné dráty jako vykonávané instrukce. a to nemá Arduino absolutně šanci nějak softwarově ustíhat. Takže ta přídavná karta bude mít směrem k 6809 vystrčené 2R+2W registry podobně jako ta ACIA a směrem k Arduinu vystrčené SPI shiftregistry pro čtení a zápis a uvnitř si bude sama udržovat, zda má data ten či onen směr. (Zní to složitě, prakticky tam budou 2x74595 pro paralelní výstup, 1x74165 pro paralelní vstup, 1x 74373 pro stavový registr, 3xSR hradla a nějaká "bižuterie" pro výběr adresy a ovládání Enable.) No a to dekódování adresy (a čísla desky a Read a Write) bych právě udělal raději přez jeden PAL, než přez spoustu 7400, protože vlastně potřebuju jen pro 8 výstupních pinů definovat, kdy na kterém má být nula nebo jedna. Pro každý výstupní pin je daná kombinace (0,1,nezáleží) na 6 vstupních linkách, kdy má být aktivován ( = 0 a ve všech ostatních případech má být neaktivní = 1, protože příslušné vstupy jsou negované) - což je přesně to, co tyhle PAL umí dobře. Já bych potřeboval [b]pomoct a poradit s tím vypalováním[/b] - co jsem zatím hledal po netu, tak mám sílící pocit, že by to mělo nějak jít pomocí nějakého "programátoru", kterému by mělo stačit asi tak Arduino, nějaký DC-DC 5->12V, patice a pár součátestek okolo a všechno ostatní by odřel nějaký program v PC přez USB komunikaci s tím Arduinem - až na to, že jsem nedohledal jaký program pro Arduino, jak to konkrétně zapojit a jaký program pro PC (já mám linux). A mám z nějaké Číny právě 10 těch ATF16V8BQL-PU15. A tady mi přišlo, že víte o čem mluvíte a máte s tím zkušenosti, tak jsem chtěl poprosit o nasměrování jak si moct dělat "libovolné kombinační obvody" (čili[b] postavit si programátor[/b], stáhnout někde programy a naučit se zapisovat příslušná propojení uvnitř) a případně i jako první pomoc, zda byste mi někdo (v Praze a okolí - dojedu si rád skoro kdykoli skoro kamkoli autem) za mírnou odměnu [b]nevypálil ty první dva chipy[/b] (pokud mi řeknete, jak by měly vypadat podklady, tak se je pokusím připravit). Takže předem děkuju za všechny rady (a případné nasměrování, kam by se můj dotaz/přání hodil líp).