Ang isang complex programmable logic device (CPLD) ay isang mahalagang bahagi ng hardware sa iyong repertoire. Gaya ng ipinahihiwatig ng pangalan, maaari mong i-program ang mga chip na ito upang maibigay ang mga logic function na kailangan mo. Maaaring ito ay pagpapalit ng mga lumang chip, o isang paraan lamang upang matuto at subukan ang iba't ibang teknolohiya. Ano pa bang mas mainam na paraan upang matuto kaysa sa paggamit ng CPLD at pagsubok nito?
Gumawa ako ng CPLD module para maisaksak ito sa maraming bagay, kabilang ang mga solderless breadboard, pero nagkamali ako. Mukhang 1.1 pulgada ang espasyo para sa plug-in sa solderless breadboard. Ginawa kong 1 pulgada ang lapad ng footprint, kaya wala nang espasyo para sa isang hanay ng mga wire sa magkabilang gilid. Uh.
Pero hayaan ninyong bumalik ako at ipakita ang higit pa tungkol sa aking ginagawa. Gusto kong gumawa ng programmable logic na maaaring itayo bilang isang kit, madaling i-solder sa bahay, maaaring i-program sa isang circuit, at maaaring gumana sa 3.3 o 5 volts.
Para makagawa ng isang madaling i-solder na kit, gumamit ako ng isang lumang CPLD component, na makukuha rin sa 3.3v at 5v na bersyon, at mananatili ang programming nito kahit ano pa ang power supply. Ang logic mismo ay isang CPLD IC mula sa Altera Max series, na makukuha sa dalawang bersyon, na angkop para sa mga circuit board na may 32 o 64 macrocells. Ang mga macrocell ay ang mga pangunahing logical building block na pinoprograma gamit ang mga logical "terms" at pagkatapos ay pinag-uugnay sa iba pang mga macrocell sa pamamagitan ng mga programmable interconnect.
Kung titingnan ang eskematiko, makikita mo na wala itong gaanong nilalaman: karaniwang ang CPLD, ang in-circuit programming circuit at ang oscillator na nagpapatakbo ng CPLD logic.
Ang bahaging ito ay tinatawag na EPM7032 at EPM7064, gamit ang 44-pin plastic lead chip carrier (PLCC), na minsan ay tinatawag na J lead dahil sa hugis J ng lead lead. Ang paketeng ito ay maaaring ipasok sa isang through-hole socket o direktang i-solder sa PCB.
Naglalaman ng on-board oscillator, kaya ang CPLD ay maaaring magsagawa ng mga operasyon nang stateful at lumikha ng mabibilis na counter nang mag-isa nang hindi nangangailangan ng panlabas na orasan. Kung mayroong magagamit na panlabas na orasan, ang high-speed clock sa module ay maaaring gamitin upang lumikha ng isang clock event sa bawat tumataas o bumababang gilid ng panlabas na orasan, at sundin pa rin ang mga alituntunin ng CPLD/FPGA, ibig sabihin, dapat mo talagang gamitin ang internal global clock network sa halip na "Asynchronous" na nagtutulak sa input ng orasan. Ang rated power supply voltage ng oscillator na ito ay nasa pagitan ng 1.8 at 5.5 volts.
Kung papanuorin mo ang video, makikita mo na tinatalakay ko ang aking personal na kagustuhan kung paano hawakan ang "INH" pin sa oscillator; sa madaling salita, pagkatapos kong masuri kung legal ang spec sheet, hinahayaan ko na lang itong lumutang.
Kapag tinatalakay ang mga ganitong function, ang mga dahilan na biglang pumasok sa isip ko ay ang pagkaayaw ko sa direktang pagkonekta ng mga input pin sa mga power rail (kung maaari). Ibig sabihin, mas gusto kong gumamit ng mga series resistor para limitahan ang kuryente habang may mga transient, kahit na hindi naman dapat ito kailanganin.
Sa paglipas ng mga taon, nakakita ako ng ilang problema sa produksyon (malalaking batch), at paminsan-minsan, ang mga bagay tulad ng power cycling ay nagpapahintulot sa mga pin na direktang konektado sa power rail na magkaroon ng mas mataas na boltahe kaysa sa mismong chip, na masama. Panghuli, ikonekta ang pin sa power rail sa pamamagitan ng isang resistor (power man o ground), at maaaring magbago ang isip ng mga tao at gamitin ang pin sa ibang pagkakataon. Totoo ito lalo na sa aking karanasan sa mga hindi nagamit na pinto, malamang alam mo na ang mga pintong ito ay hindi dapat iwang lumulutang o hindi nakakonekta. Sa pamamagitan ng paggamit ng pull-up resistor, maaari mong ikonekta ang signal at gamitin ang gate nang hindi pinuputol ang mga bakas ng tanso.
Ang 10-pin connector at ilang resistor ang bumubuo sa programming circuit. Kung lahat ng resistor ay pull-up resistors, gagamit ako ng resistor network, pero sayang, may isa na naka-ground.
Para makapag-program ng ganitong independent CPLD, kailangan ng isang dedikadong programmer. Madali lang itong sabihin para sa akin, dahil kadalasan ay mayroon akong ilan na nakahiga sa tabi ko, pero kung wala ka, hindi naman ito magiging mahirap para sa akin na sumali sa laro. Ang aprubadong "Altera USB Blaster" ay mabibili sa halagang $50 at mabibili sa Digikey at iba pang lugar. Mayroon akong ilang clone mula sa Ebay, isa na rito ay isang clone na sumusuporta sa Altera, Xilinx at Lattice nang sabay. May proyekto at code sa Internet na maaaring gamitin para gumawa ng sarili mong clone, ililista ko ito sa aking listahan ng mga posibleng video para sa proyekto ng paggawa ng mga programmer clone. Magpapakita rin ako ng disenyo ng shield kung saan maaaring i-program ang motherboard, Arduino, PIC, atbp.
Ang software na kinakailangan para sa pag-compile at pagprograma ng CPLD ay malayang makukuha mula sa Altera, ngunit ang lumang bahaging ito ay nangangailangan ng lumang bersyon 9.1. Ang magandang balita ay ito ang paborito kong lumang bersyon. Mayroon itong madaling gamiting timing analyzer, ngunit inalis ito sa mas bagong bersyon.
Ang PCB ay isang simpleng disenyo na doble ang panig, basta't kasya ang circuit board, may tendensiya akong gumamit ng tanso para sa grounding at minsan ay para sa power supply. Minsan ang pagbuhos ay nagiging sobrang sira na maaaring magdulot ng mga problema o hindi maayos na resulta, kaya ang pagbuhos muli ng tanso ay isang kasangkapan, ngunit kailangan itong pamahalaan.
Sa kasalukuyan, marami (kung hindi man karamihan) sa mga pakete ng software ng CAD ang naglalaman ng mga 3D view ng huling produkto, bagama't ang katumpakan ng mga imahe ay kasingtumpak lamang ng mga 3D model na ginamit upang kumatawan sa mga bahagi. Dito mo makikita kung saan ko pinili ang 3D model para sa 44-pin socket, programming connector, at oscillator. Narito ang ilang 3D package na gusto kong gamitin:
Maraming kumpanya rin ang may mga 3D model ng kanilang mga bahagi. Ang Molex ay isa lamang halimbawa ng isang kumpanyang mahusay na nagtrabaho sa larangang ito.
Ang pagkakamaling nagawa ko ay hindi nakakaapekto sa paggana tulad ng estetika, at hindi ito ang pangunahing problema, ibig sabihin, hindi ito angkop para sa isang solong solderless breadboard.
Nang maisip kong puwede kong ibahagi ang disenyo sa kahit sino, agad akong hindi nasiyahan sa mga eskematiko na simbolo ng CPLD at sa pinout ng 40-pin connector, na siyang kabuuang sukat nito. Kumuha ako ng simbolo ng 40-pin double-row connector at inayos ito sa 1-pulgadang sukat, pero ang mga numero ng pin ay hindi 1, 2, 3, 4... kundi naka-numero ng 1 sa gilid tulad ng isang DIP package 3, 5, 7...tulad ng mga ribbon cable connector. Samakatuwid, ito ay isang hindi madaling gamiting sukat para sa pagtukoy kung paano kumonekta sa module at pag-troubleshoot.
Gayundin, medyo nakakalito ang mga pagtatalaga ng pin ng CPLD, at gumamit ako ng isang hanay ng mga utility na umaasa sa Boundary Scan Description Language (BSDL) upang lumikha ng mga simbolo. Karamihan sa mga pangunahing vendor ay may mga BSDL file na magagamit para sa kanilang mga pangunahing bahagi, na nagbibigay-daan sa iyong (semi-)awtomatikong lumikha ng mga simbolo at pakete. Tulad ng anumang automation, kailangan itong makita bilang isang tool at maaaring mangailangan ng karagdagang pagmamasahe para sa pinakamahusay na mga resulta. Sa kasong ito, hinayaan kong ilista nito ang mga pin sa alpabetikong pagkakasunud-sunod, na halos random kapag sinusubaybayan ang mga pin sa board. Masasabi ko lang na labis akong nabalisa noong araw na iyon.
Magbabayad ka para sa mga shortcut na ito minsan habang nasa biyahe. Kapag babaguhin ko ang modyul na ito, tutukuyin at bibigyan ko ito ng pin placement na tumutugma sa mismong bahagi, para ang pag-alam kung saan ilalagay ang iyong oscilloscope probe ay kasingdali ng pagtingin sa eskematiko na simbolo.
Kapag gumagamit ng mga circuit board, may iba pang mga pagpapabuti na pangunahing para sa estetika o kapaki-pakinabang. Ang pin 1 indicator ay kailangang mas karaniwan sa ilang mga pakete, at lagi kong mas gusto ang isang simpleng ground point upang ikonekta ang oscilloscope ground o VOM lead. Maaari ko itong idagdag sa pamamagitan ng pagdaragdag ng isang two-pin connector upang ang power at ground ay direktang mailapat sa board sa halip na mai-clamp sa mga pin sa ibaba.
Bago ko baguhin ang circuit board, gusto kong siguraduhing gumagana ito nang maayos sa ilalim ng mga pisikal at estetikong isyu. Matapos kong i-on at kumpirmahin na gumagana nang maayos ang oscillator, isinaksak ko muna ang programmer. Bagama't mas bago ang 3.3v na bersyon kaysa sa programming software, na-detect nito ang CPLD at ipinakita ito bilang isang "hindi kilalang" device.
Sumunod, gumawa ako ng counter sa Quartus at nagtalaga ng mga pin number. Ang mabilis na pag-compile at pag-download at ang counter function na nakikita ng oscilloscope ay nagpapatunay na ang disenyo ay magagawa.
Ang mabilisang pagsubok na circuit sa Verilog ay napakasimple. Ang code ay nakalista sa ibaba. Maaari kang mag-download ng ZIP file na naglalaman ng eskematiko at Verilog test circuit bilang isang proyektong Quartus II (nangangailangan ng bersyon 9.1).
Gaya ng nabanggit ko, gagawa ako ng pangalawang rebisyon sa circuit board upang mas mabigyang-pansin ang mga detalyeng kailangan kapag ibinabahagi ang disenyo o gumagawa ng kahit anong bilang ng mga pag-troubleshoot. Dahil kailangan kong itakda ang lapad ng konektor sa ibaba sa 0.9 pulgada o mas mababa pa, maaari ko itong ipagpatuloy sa 0.6 pulgada, na isang karaniwang "malawak" na pakete ng DIP. Ang paggawa nito ay nangangahulugan ng pagpapalabas ng mga pin sa ibaba mula sa bakas ng socket ng CPLD. Hindi ko ito gagawin sa isang sitwasyon ng produksyon dahil manu-mano itong binuo noong panahong iyon, ngunit isa sa mga layunin ay gumawa ng hand-soldering kit. Ang kompromiso sa hand-soldering ay ang oscillator ay kailangang nasa isang SMD surface mount housing, ang through-hole na bersyon ay napakalaki at kadalasan ay hindi sumusuporta sa boltahe na gusto ko.
Posible bang gamitin ang mga modyul na ito upang bumuo ng isang kumpletong simpleng computer? Sa tingin ko kailangan kong magdagdag ng memorya.
Lol...oo, depende sa kung anong uri ng computer. Gayunpaman, ang mga "totoong" microcontroller/microcomputer ay apektado ng "pin bonding" ng module, na nangangahulugang hindi ka makakakuha ng sapat na terminolohiya mula sa module para makagawa ng anumang bagay na masyadong kapaki-pakinabang.
Gumawa ako ng kumpletong NTSC camera timing at mode controller na may sukat na 64, kaya hindi kinakailangan ng processor.
Ang Structural Verilog at HDL na ginamit sa aklat na Nand to Tetris ay halos pareho lang.
Bakit may mga piyesang through-hole? Madali lang ang pag-welding ng 0805! Ngayon na ang oras para matutunan ng bawat tinker ang kasanayang ito.
Kung gagawin kong nakapatong ang itaas na socket sa mga pin na ihinang mula sa ibaba, maaari akong gumamit ng "6 na sentro (ginagaya ang isang 40-pin chip) o dayagonal, atbp. Ito ay magiging mahigpit na manu-manong paghihinang ng mga bahagi para sa paghihinang ng mga leads sa ibaba Ang itaas na socket sa likod ng mga paa.
Pero mahirap para sa mga baguhan na i-solder ito mula sa ibaba. Kapag nag-solder ako ng mga header para sa PCB ng breadboard (ang mga murang SMD adapter board na ito na magagamit mo sa eBay ay maaaring gamitin para sa prototyping), ipinapasok ko ang mga header sa breadboard, pagkatapos ay inilalagay ang PCB dito, at pagkatapos ay madali ko nang na-solder. Napakaangkop nito para sa mga breadboard. Kung kailangan mo itong i-solder mula sa ibaba, mas mahirap pa ito.
Kung ang CPLD ay nasa gitna (maaaring mas madaling i-wire), maaari itong i-install nang pahilis nang hindi magkakapatong, mayroong 4 na hanay, o ang CPLD ay maaaring nasa isang gilid:
Salamat sa tip na ipasok ang connector sa breadboard bago magsolder. Medyo hindi matatag ang akin.
Kumusta naman ang mga pin na DIP format breadboard sa isang dulo at ang mismong "dongle" type ng chip socket sa kabilang dulo? Maaaring isabit ang chip sa dulo ng breadboard. Magiging masikip ang routing.
|####### ********************* |. Oo, napagdesisyunan kong gamitin ang "libreng" bersyon ng Altera, tulad ng mga "libreng" bersyon ng Xilinx at Lattice. Kailangan kong tapusin ang siklo kasama si Al Williams para maunawaan kung ano ang sinusuportahan ng lahat ng bukas na suporta, na dapat kasama ang mga partikular na katangian ng serye ng device. Gayunpaman, marami na akong nagawa sa libreng bersyon.
Oo, ipinapakita mo na ang CPLD ay nagsasapawan sa mga pin, sa palagay ko. Kung susundin ko ito nang tama, maaaring magmukhang rev 2 ito. Kapag nagdidisenyo para sa (mass) production, lagi akong allergic sa hakbang na "hand solder assembly" dahil nagsasapawan ang mga ito (sa totoo lang ang mga solder pin sa non-component side). (Isa nang hand-soldered component) pero maliit na kit lang ito, hindi production-oriented na disenyo. May mga gawi lang ako na mahirap alisin sa edad ko. 
Sa tingin ko, ang isang T-shaped circuit board na may CPLD at mga passive component na may malapad na bahaging hugis-T ay magiging lubhang kapaki-pakinabang kapag isinabit sa gilid ng breadboard. Isang bagay na katulad ng Adafruit RasPi T-Cobbler (http://www.adafruit.com/products/2028). Gagawin nitong magagamit ang halos lahat ng bahagi ng breadboard.
Sa kasamaang palad, ang paghinto ay lubhang maglilimita sa paggamit nito sa mga proyektong hindi kasama, tulad ng lahat ng mga function generator na nakabatay sa XR2206 at ICL8038.
Kawili-wiling ideya. Gusto ko ang dalawang chips na ito. Hindi naman luma ang CPLD, mas mura lang itong paraan para mabili ito sa 3.3v.
Tungkol sa "kalokohan" mo... hindi ka naman talaga gumawa ng bagong layout para ilagay ito sa breadboard. Ilagay mo lang muna ang alambre sa breadboard, at saka mo ilagay ang cpld sa alambre. O, kung kaya mong tanggalin ang power at ground strips sa isa sa mga ito, gumamit ka ng 2 breadboard.
Tungkol sa Altium at Eagle. Naisip mo na ba ang KiCad? Wala itong anumang limitasyon na mas gusto mo ang Altium kaysa sa Eagle, at bilang default ay bumubuo ng mga error sa DRC para sa lahat ng hindi konektadong mga pin. Kung gusto mo talagang magbukas ng pin, kailangan mo itong sabihin. (Siguro para sa input lamang, hindi para sa output, at hindi pa ito nasusuri). Ang isa pang magandang tampok ay napakadaling matutunan. Isang hapon lang ang lumipas, at ang mahusay na manwal na pambungad ang nakapagpasimula sa akin.
Mas gusto ko ang (mas malaking bahagi) smd sa itaas ng butas. Mas madali itong gamitin. Hindi mo kailangang iikot ang pcb sa lahat ng oras. (May ilang mga pagkakamaling nagawa dahil sa pag-mirror...). At hindi mo kailangang putulin ang lead ng resistor. Kapag nagbabahagi ng isang disenyo, maraming pakete ang maaaring ilagay nang maginhawa sa isang PCB o sa isang bahagi. SMD resistor TH. (Medyo mas nagiging kumplikado ang layout nito).
Ginamit ko ang "KiCad Getting Started" sa pdf format. Ang lumang bersyon na ginamit ko ay may 29 na pahina, at ang pinakabagong bersyon ay may 52 na pahina. Makikita mo ito sa iba pang mga tutorial (kasama ang mga link ng video): http://kicad-pcb.org/help/tutorials/
Alam ko na si [Chris Gemmell] mula sa Hackaday at The Amp Hour ay gumawa ng serye tungkol sa Kicad http://kicad-pcb.org/help/tutorials/
Maaaring makatulong ang Kicad, tingnan natin kung ano ang mangyayari sa Rev 2. Salamat sa iyong mga mungkahi. Maganda para sa DRC (ERC) ang mga unconnected input, at para sa mga konektor at iba pang bagay na nagpapanatili sa mga ito na malambot o IO, karamihan sa mga mensahe ng CAD disconnect ay karaniwang maiiwasan.
Magpatakbo ng mabilisang pagsubok at ilagay ang konektor sa isang walang laman na talahanayan, patakbuhin ang mga anotasyon at DRC. Nagbigay ito sa akin ng mga error sa drc para sa bawat pin. Gayunpaman, ang pagmamarka ng mga kilalang hindi konektadong pin ay napakasimple.
Nakatakda sa passive. Kailangan kong maghanap (I-edit ang Component -> I-edit gamit ang Library Editor. Magbubukas at maglo-load ang library editor ng iyong component sa isang hiwalay na window, maaari mong tingnan o baguhin ang anumang bahagi ng component. Ang binagong component ay maaaring i-save o i-update sa Iyong eskematiko. Ginagawa nitong napakadaling baguhin ang mga component. Wala akong masyadong pakialam sa library. Halimbawa, kung gumagamit ka ng cpld, gusto mong magtalaga ng mga makabuluhang pangalan sa mga pin. Higit sa lahat, mayroong isang mahusay na interface upang idisenyo ang Iyong sariling mga component.
Sa ERC ng KiCad, ang mga "unconnected" pin ay ibang uri ng pin mula sa mga "passive pin", at lahat ng "unconnected" pin ay bubuo ng mga error. Ang paraan ng paggana ng ERC ay madaling maiakma sa iyong sariling mga kagustuhan: Tools -> Electrical Rules Checker -> Options.
Oras ng pag-post: Nob-18-2021





