Piranti logika sing bisa diprogram (CPLD) sing kompleks minangka perangkat keras penting ing repertoar sampeyan. Kaya jenenge, sampeyan bisa ngprogram chip kasebut kanggo nyedhiyakake fungsi logika sing dibutuhake. Iki bisa uga ngganti chip sing wis lawas, utawa mung cara kanggo sinau lan nyoba teknologi sing beda. Apa cara sing luwih apik kanggo sinau tinimbang nggunakake CPLD lan nyoba?
Aku nggawe modul CPLD supaya bisa dipasang ing pirang-pirang barang, kalebu breadboard tanpa solder, nanging aku salah. Koyone papan plug-in sing kasedhiya ing breadboard tanpa solder yaiku 1,1 inci. Aku wis nggawe jejak 1 inci ambane, ora ana papan kanggo deretan kabel ing loro-lorone. Eh.
Nanging keparenga kula ngaturaken malih babagan apa ingkang kula tindakaken, kula kepingin damel logika ingkang saged dipunprogram ingkang saged dipunbangun minangka kit, saged dipunsolder kanthi gampil ing griya, saged dipunprogram ing sirkuit, lan saged makarya ing voltase 3,3 utawi 5 volt.
Kanggo nggawe kit sing gampang disolder, aku nggunakake komponen CPLD lawas, sing uga kasedhiya ing versi 3.3v lan 5v, lan bakal njaga pemrogramane preduli saka catu daya. Logika kasebut dhewe yaiku IC CPLD saka seri Altera Max, kasedhiya ing rong versi, cocok kanggo papan sirkuit kanthi 32 utawa 64 makrosel. Makrosel minangka blok bangunan logis dhasar sing diprogram nggunakake "istilah" logis banjur saling terhubung karo makrosel liyane liwat interkoneksi sing bisa diprogram.
Ndeleng skema kasebut, sampeyan bisa ndeleng manawa ora akeh isine: intine CPLD, sirkuit pemrograman ing sirkuit, lan osilator sing nggerakake logika CPLD.
Bagean iki diarani EPM7032 lan EPM7064, nggunakake pembawa chip timbal plastik 44-pin (PLCC), kadhangkala diarani timbal J amarga wujud J saka timbal kasebut. Paket iki bisa dilebokake ing soket liwat bolongan utawa disolder langsung menyang PCB.
Ngandhut osilator on-board, saengga CPLD bisa nindakake operasi kanthi stateful lan nggawe counter cepet dhewe tanpa butuh jam eksternal. Yen jam eksternal kasedhiya, jam kecepatan tinggi ing modul kasebut bisa digunakake kanggo nggawe acara jam ing saben pinggir munggah utawa mudhun jam eksternal, lan isih ngetutake pandhuan CPLD/FPGA, yaiku, sampeyan pancen kudu nggunakake jaringan jam global internal tinimbang "Asynchronous" sing nggerakake input jam. Tegangan catu daya sing dirating saka osilator iki yaiku antarane 1,8 lan 5,5 volt.
Yen sampeyan nonton videone, sampeyan bakal weruh yen aku ngrembug babagan pilihan pribadiku babagan carane nangani pin "INH" ing osilator; prasajane, sawise aku mriksa lembar spesifikasi kasebut sah, aku cenderung nglilani pin kasebut ngambang.
Nalika ngurusi fungsi kaya ngono, alesan sing muncul ing pikiranku kalebu aku ora seneng nyambungake pin input langsung menyang rel daya (yen bisa). Yaiku, aku luwih seneng nggunakake resistor seri kanggo mbatesi arus sajrone transien, sanajan ora dibutuhake.
Sajrone pirang-pirang taun, aku wis ndeleng sawetara masalah ing produksi (batch gedhe), lan kadhangkala perkara kaya siklus daya bakal ngidini pin sing langsung disambungake menyang rel daya duwe voltase sing luwih dhuwur tinimbang chip kasebut dhewe, sing ala. Pungkasan, sambungake pin menyang rel daya liwat resistor (apa daya utawa ground), lan wong bisa ngganti pikirane lan nggunakake pin kasebut mengko. Iki luwih bener saka pengalamanku karo lawang sing ora digunakake, sampeyan mbokmenawa ngerti yen lawang iki ora kena ditinggal ngambang utawa ora disambungake. Kanthi nggunakake resistor pull-up, sampeyan bisa nyambungake sinyal lan nggunakake gerbang tanpa ngethok jejak tembaga.
Konektor 10-pin lan sawetara resistor mbentuk sirkuit pemrograman. Yen kabeh resistor iku resistor pull-up, aku bakal nggunakake jaringan resistor, nanging sayangé, siji wis di-ground.
Kanggo ngprogram CPLD independen kaya ngono, dibutuhake programer khusus. Iki gampang kanggo aku ngomong, amarga biasane aku duwe sawetara sing ana ing sandhingku, nanging yen sampeyan ora duwe, ora bakal angel mlebu game kasebut. "Altera USB Blaster" sing disetujoni didol kanthi rega $50 lan bisa dituku saka Digikey lan papan liya. Aku duwe sawetara klon saka Ebay, salah sijine klon sing ndhukung Altera, Xilinx lan Lattice bebarengan. Ana proyek lan kode ing Internet sing bisa digunakake kanggo nggawe klon dhewe, aku bakal ndhaptar ing dhaptar video sing bisa ditindakake kanggo proyek nggawe klon programer. Aku uga bakal nuduhake desain tameng ing ngendi motherboard, Arduino, PIC, lan liya-liyane bisa diprogram.
Piranti lunak sing dibutuhake kanggo ngompilasi lan mrogram CPLD kasedhiya kanthi gratis saka Altera, nanging bagean lawas iki mbutuhake versi lawas 9.1. Kabar apike yaiku iki versi lawas favoritku. Piranti lunak iki nduweni penganalisis wektu sing intuitif, nanging wis dibusak ing versi sing luwih anyar.
PCB-ne prasaja, desain rong sisi, anggere papan sirkuite pas, aku cenderung nggunakake tembaga kanggo grounding lan kadhangkala catu daya. Kadhangkala ngecor dadi rusak banget nganti bisa nyebabake masalah utawa asil pungkasan sing ora apik, mula ngecor tembaga maneh minangka alat, nanging kudu dikelola.
Saiki, akeh (yen ora umume) paket piranti lunak CAD ngemot tampilan 3D saka produk pungkasan, sanajan akurasi gambar mung seakurat model 3D sing digunakake kanggo makili bagean-bagean kasebut. Ing kene sampeyan bisa ndeleng ing ngendi aku milih model 3D kanggo soket 44-pin, konektor pemrograman, lan osilator. Iki sawetara paket 3D sing dakkarepake:
Akeh perusahaan uga duwe model 3D saka komponen-komponen kasebut. Molex mung salah sawijining conto perusahaan sing wis nindakake tugas sing apik ing babagan iki.
Kesalahan sing tak lakoni ora mengaruhi fungsi kaya estetika, lan iku dudu masalah utama, yaiku, ora cocok kanggo breadboard tanpa solder tunggal.
Sawise aku mikir yen aku bisa nuduhake desain iki karo sapa wae, aku langsung ora marem karo simbol skematis CPLD lan pinout konektor 40-pin, sing dadi ukuran sakabèhé. Aku njupuk simbol konektor baris ganda 40-pin lan nyetel dadi ukuran 1 inci, nanging nomer pin-e dudu 1, 2, 3, 4... nanging dinomori 1 ing sisih kaya paket DIP 3, 5, 7... kaya konektor kabel pita. Mulane, iki minangka ukuran sing ora intuitif kanggo nemtokake cara nyambung menyang modul lan ngatasi masalah.
Semono uga, penetapan pin CPLD rada mbingungake, lan aku nggunakake sakumpulan utilitas sing gumantung marang Boundary Scan Description Language (BSDL) kanggo nggawe simbol. Umume vendor utama duwe file BSDL sing kasedhiya kanggo komponen utama, sing ngidini sampeyan (semi-)otomatis nggawe simbol lan paket. Kaya otomatisasi liyane, kudu dideleng minangka alat lan bisa uga mbutuhake pijet luwih lanjut kanggo asil sing paling apik. Ing kasus iki, aku ngidini dhaptar pin miturut urutan abjad, sing meh acak nalika nglacak pin ing papan. Aku mung bisa ujar manawa aku kuwatir banget dina iku.
Sampeyan mbayar kanggo trabasan iki kapan-kapan ing dalan. Nalika aku arep ngowahi modul iki, aku bakal nemtokake lan menehi penempatan pin sing cocog karo bagean kasebut dhewe, supaya ngerti ing ngendi kudu nyelehake probe osiloskop sampeyan gampang kaya ndeleng simbol skematis.
Nalika nggunakake papan sirkuit, ana perbaikan liyane sing utamane estetis utawa migunani. Indikator pin 1 kudu luwih umum ing pirang-pirang paket, lan aku luwih seneng titik ground sing prasaja kanggo nyambungake ground osiloskop utawa kabel VOM. Aku bisa uga nambahake iki kanthi nambahake konektor rong pin supaya daya lan ground bisa ditrapake langsung menyang papan tinimbang dijepit ing pin ngisor.
Sadurunge aku ngowahi papan sirkuit, aku pengin mesthekake yen papan sirkuit iki bisa digunakake kanthi bener sanajan ana masalah fisik lan estetika. Sawise nyala lan ngonfirmasi manawa osilator wis bisa digunakake kanthi bener, aku nyolok programer. Sanajan versi 3.3v luwih anyar tinimbang piranti lunak pemrograman, nanging piranti kasebut ndeteksi CPLD lan nampilake minangka piranti "ora dingerteni".
Sabanjure, aku nggawe counter ing Quartus lan menehi nomer pin. Kompilasi lan download sing cepet lan fungsi counter sing dideleng dening osiloskop verifikasi manawa desain kasebut bisa ditindakake.
Sirkuit tes cepet ing Verilog iku gampang banget. Kode kasebut ana ing ngisor iki. Sampeyan bisa ndownload file ZIP sing ngemot skema lan sirkuit tes Verilog minangka proyek Quartus II (mbutuhake versi 9.1).
Kaya sing wis dakcritakake, aku bakal nggawe revisi kaping pindho saka papan sirkuit kanggo menehi perhatian luwih marang rincian sing dibutuhake nalika nuduhake desain utawa nindakake sawetara pemecahan masalah. Amarga aku kudu nyetel jembar konektor ngisor dadi 0,9 inci utawa kurang, aku bisa terus nyetel dadi 0,6 inci, sing minangka paket DIP "amba" standar. Nglakoni iki tegese supaya pin ngisor metu saka jejak soket CPLD. Aku ora bakal nindakake iki ing kahanan produksi amarga dirakit kanthi tangan nalika semana, nanging salah sawijining tujuane yaiku nggawe kit solder tangan. Kompromi solder tangan yaiku osilator kudu ana ing omah sing dipasang ing permukaan SMD, versi liwat bolongan gedhe banget lan biasane ora ndhukung rentang voltase sing dakkarepake.
Apa modul-modul iki bisa digunakake kanggo mbangun komputer prasaja sing lengkap? Aku mikir aku kudu nambah memori.
Lol...iya, gumantung saka jinis komputer sing digunakake. Nanging, mikrokontroler/mikrokomputer "asli" kena pengaruh "ikatan pin" modul kasebut, tegese sampeyan ora bisa entuk terminologi sing cukup saka modul kasebut kanggo nindakake apa-apa sing migunani banget.
Aku nggawe pengontrol wektu lan mode kamera NTSC lengkap kanthi ukuran 64, dadi ora perlu prosesor.
Verilog Struktural lan HDL sing digunakake ing buku Nand to Tetris kurang luwih padha.
Kenapa bagean kudu nganggo bolongan? Ngelas 0805 iku gampang! Saiki wayahe saben tukang ngelas sinau katrampilan iki.
Yen aku nggawe soket ndhuwur tumpang tindih pin sing disolder saka ngisor, mula aku bisa nggunakake "6 pusat (simulasi chip 40-pin) utawa diagonal, lsp. Iki bakal dadi komponen solder manual kanggo nyolder kabel ngisor Soket ndhuwur ing mburi sikil.
Nanging angel kanggo pamula nyolder saka ngisor. Nalika aku nyolder header kanggo PCB breadboard (papan adaptor SMD murah iki sing bisa digunakake ing eBay bisa digunakake kanggo prototipe), aku masang header menyang breadboard, banjur masang PCB ing kono, banjur aku bisa nyolder kanthi gampang. Iki cocog banget kanggo breadboard. Yen sampeyan kudu nyolder saka ngisor, luwih angel maneh.
Yen CPLD ana ing tengah (bisa uga luwih gampang dipasang kabel), bisa dipasang kanthi diagonal tanpa tumpang tindih, ana 4 larik, utawa CPLD bisa ana ing sisih siji:
Matur nuwun kanggo saran supaya masang konektor menyang breadboard sadurunge disolder. Punyaku rada ora stabil.
Kepriye babagan pin breadboard format DIP ing salah siji pucuk lan jinis "dongle" saka soket chip kasebut ing pucuk liyane? Chip kasebut bisa digantung ing pucuk breadboard. Peruteane bakal rapet.
|####### ********************** |. Ya, aku mutusake nggunakake versi "gratis" saka Altera, kaya dene Xilinx lan Lattice sing duwe versi "gratis". Aku kudu mungkasi siklus karo Al Williams kanggo ngerti apa sing didhukung kabeh dhukungan terbuka, sing kudu kalebu atribut khusus saka seri piranti kasebut. Nanging, aku wis nindakake akeh perkara karo versi gratis.
Ya, sampeyan nuduhake yen CPLD tumpang tindih karo pin sing aku percaya. Yen aku ngetutake kanthi bener, iki bisa uga katon kaya rev 2. Nalika ngrancang kanggo produksi (massal), aku mesthi alergi karo langkah "perakitan solder tangan" amarga tumpang tindih (sejatine pin solder ing sisih non-komponen). ) Wis dadi komponen sing disolder tangan) nanging iki mung kit cilik, dudu desain sing berorientasi produksi. Aku mung duwe sawetara kebiasaan sing angel diilangi ing umurku. 
Aku mikir papan sirkuit bentuk T nganggo CPLD lan komponen pasif nganggo bagean bentuk T sing amba bakal migunani banget nalika digantung ing pinggir breadboard. Kaya Adafruit RasPi T-Cobbler (http://www.adafruit.com/products/2028). Iki bakal nggawe sebagian besar area breadboard kasedhiya.
Sayange, penghentian iki bakal mbatesi banget panggunaane ing proyek sampingan, kaya kabeh generator fungsi sing adhedhasar XR2206 lan ICL8038.
Ide sing menarik. Aku seneng karo rong chip iki. CPLD ora ketinggalan jaman, mung wae cara sing luwih murah kanggo tuku kanthi voltase 3.3v.
Babagan "omong kosong"mu... kowe pancen ora nggawe tata letak anyar kanggo dipasang ing breadboard. Cukup pasang kabel ing breadboard dhisik, banjur pasang cpld ing kabel kasebut. Utawa, yen kowe bisa nyopot strip daya lan ground saka salah sijine, gunakake 2 breadboard.
Babagan Altium lan Eagle. Apa sampeyan wis nimbang KiCad? Ora ana watesan sing sampeyan luwih seneng Altium tinimbang Eagle, lan kanthi standar ngasilake kesalahan DRC kanggo kabeh pin sing ora nyambung. Yen sampeyan pancen pengin mbukak pin, sampeyan kudu ngandhani. (Mungkin mung kanggo input, ora kanggo output, lan durung dicenthang). Fitur apik liyane yaiku gampang banget sinau. Mung butuh sewengi, lan manual pengantar sing apik banget wis mbantu aku miwiti.
Aku luwih seneng smd (bagean sing luwih gedhe) ing ndhuwur bolongan tembus. Iki luwih gampang digunakake. Sampeyan ora perlu muter PCB terus-terusan. (Ana sawetara kesalahan bodho sing digawe amarga mirroring...). Lan sampeyan ora perlu ngethok kabel resistor. Nalika nuduhake desain, pirang-pirang paket bisa diselehake kanthi gampang ing PCB utawa bagean siji. Resistor SMD TH. (Iki nggawe tata letak rada rumit).
Aku nggunakake "KiCad Getting Started" ing format pdf. Versi lawas sing tak gunakake yaiku 29 kaca, lan versi paling anyar yaiku 52 kaca. Sampeyan bisa nemokake ing tutorial liyane (kalebu pranala video): http://kicad-pcb.org/help/tutorials/
Aku ngerti yen [Chris Gemmell] saka Hackaday lan The Amp Hour nggawe seri babagan Kicad http://kicad-pcb.org/help/tutorials/
Kicad bisa uga migunani, coba delengen apa sing kedadeyan ing Rev 2. Matur nuwun kanggo saran sampeyan. Input sing ora nyambung iku apik kanggo DRC (ERC), lan kanggo konektor lan barang liyane sing njaga supaya alus utawa IO, umume pesen pemutus sambungan CAD biasane bisa dihindari.
Jalanake tes cepet lan lebokake konektor menyang tabel kosong, jalanake anotasi lan DRC. Iku menehi kesalahan drc kanggo saben pin. Nanging, nandhani pin sing ora nyambung iku gampang banget.
Setel dadi pasif. Aku kudu nggoleki (Sunting Komponen -> Sunting nganggo Editor Pustaka. Editor pustaka mbukak lan mbukak komponen sampeyan ing jendela sing kapisah, sampeyan bisa mriksa utawa ngganti bagean komponen apa wae. Komponen sing diganti bisa disimpen utawa dianyari ing skema sampeyan. Iki nggampangake banget kanggo ngganti komponen. Aku ora peduli karo pustaka kasebut. Contone, yen sampeyan nggunakake cpld, sampeyan pengin menehi jeneng sing migunani kanggo pin kasebut. Sing luwih penting, ana antarmuka sing apik kanggo ngrancang komponen sampeyan dhewe.
Ing ERC KiCad, pin "ora nyambung" iku jinis pin sing béda karo "pin pasif", lan kabèh pin "ora nyambung" bakal ngasilaké kesalahan. Cara kerja ERC bisa diatur kanthi gampang miturut pilihanmu dhéwé: Piranti -> Pamriksa Aturan Listrik -> Opsi.
Wektu kiriman: 18-Nov-2021





