Komplexné programovateľné logické zariadenie (CPLD) je nevyhnutnou súčasťou vášho hardvéru. Ako už názov napovedá, tieto čipy môžete naprogramovať tak, aby poskytovali logické funkcie, ktoré potrebujete. Môže to byť náhrada zastaraných čipov alebo len spôsob, ako sa učiť a vyskúšať rôzne technológie. Existuje lepší spôsob, ako sa učiť, než používať CPLD a vyskúšať si ho?
Vytvoril som CPLD modul, aby som ho mohol zapojiť do mnohých vecí, vrátane bezspájkovacích dosiek, ale urobil som chybu. Zdá sa, že dostupný priestor na bezspájkovanej doske je 1,1 palca. Urobil som základňu širokú 1 palec, takže na oboch stranách nezostal priestor pre rad vodičov. Ehm.
Ale dovoľte mi vrátiť sa späť a ukázať viac o tom, čo robím. Chcem vytvoriť programovateľnú logiku, ktorú je možné zostaviť ako stavebnicu, ľahko spájkovať doma, naprogramovať v obvode a ktorá môže pracovať na 3,3 alebo 5 voltoch.
Aby som vytvoril ľahko spájkovateľnú súpravu, použil som starý CPLD komponent, ktorý je dostupný aj vo verziách na 3,3 V a 5 V a zachová si svoje naprogramovanie bez ohľadu na napájanie. Samotná logika je CPLD integrovaný obvod zo série Altera Max, dostupný v dvoch verziách, vhodných pre dosky plošných spojov s 32 alebo 64 makrobunkami. Makrobunky sú základné logické stavebné bloky, ktoré sa programujú pomocou logických „termínov“ a potom sa prepájajú s inými makrobunkami pomocou programovateľných prepojení.
Pri pohľade na schému vidíte, že nemá veľa obsahu: v podstate CPLD, obvod pre programovanie v obvode a oscilátor, ktorý riadi logiku CPLD.
Táto súčiastka sa nazýva EPM7032 a EPM7064 a používa 44-pinový plastový nosič čipov (PLCC), niekedy nazývaný J-vodič kvôli tvaru J. Toto puzdro je možné vložiť do pätice s priechodným otvorom alebo priamo prispájkovať na dosku plošných spojov.
Obsahuje integrovaný oscilátor, takže CPLD môže vykonávať operácie stavovo a vytvárať rýchle čítače samostatne bez potreby externých hodín. Ak sú k dispozícii externé hodiny, vysokorýchlostné hodiny na module sa môžu použiť na vytvorenie udalosti hodín na každej stúpajúcej alebo klesajúcej hrane externých hodín a stále sa dodržiavajú pokyny CPLD/FPGA, to znamená, že by ste mali použiť internú globálnu sieť hodín namiesto „asynchrónneho“ riadenia vstupu hodín. Menovité napájacie napätie tohto oscilátora je medzi 1,8 a 5,5 voltami.
Ak si pozriete video, uvidíte, že hovorím o svojich osobných preferenciách, ako zaobchádzať s pinom „INH“ na oscilátore; jednoducho povedané, po overení, či sú technické údaje v poriadku, mám tendenciu to nechať tak.
Pri riešení takýchto funkcií mi napadla aj moja nechuť pripájať vstupné piny priamo k napájacím koľajniciam (ak je to možné). To znamená, že uprednostňujem použitie sériových rezistorov na obmedzenie prúdu počas prechodových javov, aj keď by to nemalo byť potrebné.
V priebehu rokov som sa pri výrobe (veľké série) stretol s určitými problémami a občasné veci, ako napríklad cyklovanie napájania, spôsobili, že piny priamo pripojené k napájacej lište mali vyššie napätie ako samotný čip, čo je zlé. Nakoniec, ak pripojíte pin k napájacej lište cez rezistor (či už napájací alebo zemniaci), ľudia si to môžu rozmyslieť a pin použiť neskôr. Toto platí najmä podľa mojich skúseností s nepoužívanými dvierkami, pravdepodobne viete, že tieto dvierka by nikdy nemali zostať voľné alebo nezapojené. Použitím pull-up rezistora môžete pripojiť signál a používať bránu bez prerezania medených vodičov.
10-pinový konektor a niekoľko rezistorov tvoria programovací obvod. Ak sú všetky rezistory pull-up rezistory, použil by som rezistorovú sieť, ale bohužiaľ, jeden je uzemnený.
Na naprogramovanie takéhoto nezávislého CPLD je potrebný špecializovaný programátor. Ľahko sa mi to hovorí, pretože ich zvyčajne mám po ruke niekoľko, ale ak ho nemáte, nebude pre vás vstup do hry príliš bolestivý. Schválený „Altera USB Blaster“ sa predáva za 50 dolárov a dá sa kúpiť na Digikey a iných miestach. Mám niekoľko klonov z Ebay, jeden z nich je klon, ktorý súčasne podporuje Alteru, Xilinx a Lattice. Na internete je projekt a kód, ktoré môžete použiť na vytvorenie vlastného klonu, uvediem ho v mojom zozname možných videí k projektu výroby klonov programátora. Ukážem aj návrh shieldového panelu, v ktorom je možné naprogramovať základnú dosku, Arduino, PIC atď.
Softvér potrebný na kompiláciu a programovanie CPLD je voľne dostupný od spoločnosti Altera, ale táto stará časť vyžaduje starú verziu 9.1. Dobrou správou je, že to bola moja obľúbená stará verzia. Mala intuitívny analyzátor časovania, ale v neskoršej verzii bol odstránený.
Doska plošných spojov má jednoduchý obojstranný dizajn, pokiaľ sa do nej zmestí doska plošných spojov, zvyčajne používam meď na uzemnenie a niekedy aj na napájanie. Niekedy sa zalievanie medi tak rozbije, že to môže spôsobiť problémy alebo nedbalé konečné výsledky, takže zalievanie medi je opäť nástroj, ale treba ho zvládnuť.
Dnes mnoho (ak nie väčšina) CAD softvérových balíkov obsahuje 3D pohľady na konečný produkt, hoci presnosť obrázkov je len taká presná, ako presnosť 3D modelov použitých na znázornenie súčiastok. Tu vidíte, kde som si vybral 3D model pre 44-pinovú zásuvku, programovací konektor a oscilátor. Tu je niekoľko 3D balíkov, ktoré rád používam:
Mnoho spoločností má tiež 3D modely svojich komponentov. Molex je len jedným príkladom spoločnosti, ktorá v tejto oblasti odviedla dobrú prácu.
Chyba, ktorú som urobil, neovplyvňuje funkciu, ako je estetika, a nie je to hlavný problém, teda nie je vhodná pre jednu bezspájkovaciu dosku.
Keď som si pomyslel, že by som sa o návrh mohol s niekým podeliť, okamžite som bol nespokojný so schematickými symbolmi CPLD a rozložením pinov 40-pinového konektora, čo je jeho celková veľkosť. Zobral som symbol 40-pinového dvojradového konektora a upravil ho na 1-palcovú veľkosť, ale čísla pinov nie sú 1, 2, 3, 4... ale sú očíslované 1 na boku ako DIP puzdro 3, 5, 7... rovnako ako konektory plochého kábla. Preto je to neintuitívny spôsob pripojenia k modulu a riešenia problémov.
Podobne je priradenie pinov CPLD trochu mätúce a na vytváranie symbolov som použil sadu nástrojov, ktoré sa spoliehajú na jazyk BSDL (Boundary Scan Description Language). Väčšina hlavných dodávateľov má pre svoje bežné komponenty k dispozícii súbory BSDL, ktoré vám umožňujú (polo)automaticky vytvárať symboly a puzdrá. Ako každá automatizácia, aj táto musí byť vnímaná ako nástroj a pre dosiahnutie najlepších výsledkov môže vyžadovať ďalšiu úpravu. V tomto prípade som nechal zoradiť piny v abecednom poradí, čo je pri sledovaní pinov na doske takmer náhodné. Môžem len povedať, že som bol v ten deň veľmi nervózny.
Za tieto skratky zaplatíte niekedy na cestách. Keď pôjdem tento modul upravovať, určím a priradím mu umiestnenie pinov, ktoré zodpovedá samotnej súčiastke, takže vedieť, kam umiestniť sondu osciloskopu, je rovnako jednoduché ako letmý pohľad na schematický symbol.
Pri použití dosiek plošných spojov existujú aj ďalšie vylepšenia, ktoré sú prevažne estetické alebo užitočné. Indikátor pinu 1 by mal byť v niekoľkých puzdrách bežnejší a ja vždy uprednostňujem jednoduchý uzemňovací bod na pripojenie uzemnenia osciloskopu alebo vodiča VOM. Toto by som mohol pridať pridaním dvojpinového konektora, aby sa napájanie a uzemnenie mohli privádzať priamo na dosku namiesto toho, aby boli pripojené k spodným pinom.
Predtým, ako upravím dosku plošných spojov, chcem sa uistiť, že funguje správne z hľadiska fyzických a estetických problémov. Po zapnutí a overení, že oscilátor funguje správne, som zapojil programátor. Hoci je 3,3V verzia novšia ako programovací softvér, detekovala CPLD a zobrazila ho ako „neznáme“ zariadenie.
Následne som v Quartuse vytvoril počítadlo a priradil mu čísla pinov. Rýchla kompilácia a sťahovanie a funkcia počítadla, ktorú videl osciloskop, potvrdili, že návrh je uskutočniteľný.
Rýchly testovací obvod vo Verilogu je veľmi jednoduchý. Kód je uvedený nižšie. ZIP súbor obsahujúci schému a testovací obvod Verilogu si môžete stiahnuť ako projekt Quartus II (vyžaduje verziu 9.1).
Ako som už spomenul, urobím druhú revíziu dosky plošných spojov, aby som venoval viac pozornosti detailom potrebným pri zdieľaní návrhu alebo riešení akýchkoľvek problémov. Keďže musím nastaviť šírku spodného konektora na 0,9 palca alebo menej, môžem ju naďalej nastavovať na 0,6 palca, čo je štandardné „široké“ DIP puzdro. To znamená, že spodné piny musia vyčnievať z pätice CPLD. V produkčnej situácii by som to nerobil, pretože v tom čase sa montovala ručne, ale jedným z cieľov bolo vyrobiť sadu na ručné spájkovanie. Kompromisom pri ručnom spájkovaní je, že oscilátor musí byť v SMD puzdre na povrchovú montáž, verzia s priechodným otvorom je veľmi veľká a zvyčajne nepodporuje požadovaný rozsah napätia.
Je možné použiť tieto moduly na zostavenie kompletného jednoduchého počítača? Myslím, že potrebujem pridať pamäť.
Lol...áno, záleží na type počítača. „Skutočné“ mikrokontroléry/mikropočítače sú však ovplyvnené „prepojením pinov“ modulu, čo znamená, že z modulu nezískate dostatok terminológie na to, aby ste z neho urobili niečo užitočné.
Vytvoril som kompletný ovládač časovania a režimu kamery NTSC s veľkosťou 64, takže nie je potrebný žiadny procesor.
Štrukturálne Verilog a HDL použité v knihe Nand to Tetris sú viac-menej rovnaké.
Prečo sú diely s priechodnými otvormi? Zváranie 0805 je jednoduché! Teraz je čas, aby sa túto zručnosť naučil každý drotár.
Ak urobím tak, aby horná pätica prekrývala piny spájkované zospodu, môžem použiť „6 stredov“ (simulujúc 40-pinový čip) alebo diagonálu atď. Toto bude prísne manuálne spájkovanie súčiastok na spájkovanie spodných vývodov. Horná pätica je za nožičkami.
Pre začiatočníkov je však ťažké spájkovať to zospodu. Keď spájkujem headery pre dosku plošných spojov na nepájivom poli (tieto lacné SMD adaptérové dosky, ktoré sa dajú kúpiť na eBay, sa dajú použiť na prototypovanie), vložím headery do nepájivého pole, potom naň položím dosku plošných spojov a potom môžem ľahko spájkovať. Je to veľmi vhodné pre nepájivé pole. Ak to potrebujete spájkovať zospodu, je to ešte ťažšie.
Ak je CPLD v strede (môže byť jednoduchšie ho zapojiť), môže byť nainštalovaný diagonálne bez prekrývania, sú tam 4 rady, alebo môže byť CPLD na jednej strane:
Ďakujem za tip, aby som pred spájkovaním vložil konektor do nepájivého pole. Ten môj je trochu nestabilný.
A čo tak DIP piny na nepájivom poli na jednom konci a „dongle“ typ samotnej pätice čipu na druhom konci? Čip sa dá zavesiť na koniec nepájivého polia. Smerovanie bude pevné.
|####### ******************** |. Áno, rozhodol som sa použiť „bezplatnú“ verziu od spoločnosti Altera, rovnako ako majú „bezplatné“ verzie Xilinx a Lattice. Potrebujem ukončiť cyklus s Alom Williamsom, aby som pochopil, čo všetko otvorená podpora podporuje, čo musí zahŕňať špecifické atribúty série zariadení. Napriek tomu som s bezplatnou verziou urobil veľa.
Áno, ukazujete, že CPLD sa prekrýva s pinmi, myslím. Ak to sledujem správne, mohlo by to vyzerať ako rev 2. Pri navrhovaní pre (hromadnú) výrobu som vždy alergický na krok „ručného spájkovania“, pretože sa prekrývajú (vlastne spájkovacie piny na strane, ktorá nie je súčasťou súčiastky). ) Už je to ručne spájkovaná súčiastka), ale toto je len malá stavebnica, nie dizajn zameraný na výrobu. Mám len nejaké zvyky, ktorých sa v mojom veku ťažko zbavujem. 
Myslím si, že doska plošných spojov v tvare T s CPLD a pasívnymi súčiastkami so širokou časťou v tvare T bude veľmi užitočná, keď sa zavesí na okraj nepájivého pole. Niečo podobné ako Adafruit RasPi T-Cobbler (http://www.adafruit.com/products/2028). Vďaka tomu bude väčšina plochy nepájivého pole k dispozícii.
Bohužiaľ, ukončenie výroby výrazne obmedzí jeho použitie vo vedľajších projektoch, rovnako ako všetky tie generátory funkcií založené na XR2206 a ICL8038.
Zaujímavý nápad. Páčia sa mi tieto dva čipy. CPLD nie je zastarané, je to len lacnejší spôsob, ako ho kúpiť na 3,3 V.
Čo sa týka tvojich „nezmyslov“... naozaj si nevytvoril novú rozloženie, aby si to umiestnil na nepájivú dosku. Najprv si na nepájivú dosku umiestnil kábel a potom na kábel umiestnil CPLD. Alebo, ak môžeš z jednej z nich stiahnuť napájací a uzemňovací pásik, použite dva nepájivé panely.
Ohľadom Altia a Eagle. Zvažovali ste KiCad? Nemá žiadne obmedzenia, ktoré by uprednostňovali Altium pred Eagle a štandardne generuje chyby DRC pre všetky nepripojené piny. Ak naozaj chcete otvoriť pin, musíte mu to povedať. (Možno len pre vstup, nie pre výstup, a ešte to nebolo overené). Ďalšou skvelou funkciou je, že sa veľmi ľahko učí. Trvalo mi to len popoludnie a vynikajúci úvodný manuál mi pomohol začať.
Uprednostňujem (väčšiu časť) SMD nad priechodným otvorom. Sú jednoduchšie na použitie. Nemusíte stále otáčať dosku plošných spojov. (Kvôli zrkadleniu sa urobili nejaké hlúpe chyby...). A nemusíte strihať vývody odporu. Pri zdieľaní návrhu je možné pohodlne umiestniť viacero puzdier na dosku plošných spojov alebo na jednu súčiastku. SMD rezistor TH. (Trochu to komplikuje rozloženie).
Použil som návod „KiCad Getting Started“ vo formáte PDF. Stará verzia, ktorú som používal, má 29 strán a najnovšia verzia má 52 strán. Nájdete ho v iných návodoch (vrátane video odkazov): http://kicad-pcb.org/help/tutorials/
Viem, že [Chris Gemmell] z Hackaday a The Amp Hour urobil sériu článkov o Kicade http://kicad-pcb.org/help/tutorials/
Kicad by mohol byť užitočný, uvidím, čo sa stane v Rev 2. Ďakujem za vaše návrhy. Nepripojené vstupy sú dobré pre DRC (ERC) a pre konektory a iné veci, ktoré ich udržiavajú mäkké alebo IO, sa väčšine hlásení o odpojení CAD zvyčajne dá vyhnúť.
Spustite rýchly test a vložte konektor do prázdnej tabuľky, spustite anotácie a DRC. Pre každý pin mi to vyvolalo chyby drc. Označenie známych nepripojených pinov je však veľmi jednoduché.
Nastavené na pasívne. Musím vyhľadávať (Upraviť komponent -> Upraviť pomocou editora knižnice). Editor knižnice sa otvorí a načíta váš komponent v samostatnom okne, kde môžete skontrolovať alebo zmeniť ľubovoľnú časť komponentu. Zmenený komponent je možné uložiť alebo aktualizovať vo vašej schéme. Vďaka tomu je zmena komponentov veľmi jednoduchá. O knižnicu sa veľmi nestarám. Napríklad, ak používate cpld, chcete priradiť zmysluplné názvy pinom. A čo je dôležitejšie, existuje dobré rozhranie na navrhovanie vlastných komponentov.
V ERC v KiCade sú „nepripojené“ piny iným typom pinov ako „pasívne piny“ a všetky „nepripojené“ piny budú generovať chyby. Spôsob, akým ERC funguje, si môžete jednoducho upraviť podľa vlastných preferencií: Nástroje -> Kontrola elektrických pravidiel -> Možnosti.
Čas uverejnenia: 18. novembra 2021





