ရှုပ်ထွေးတဲ့ programmable logic device (CPLD) ဟာ သင့်ရဲ့ hardware ထဲမှာ မရှိမဖြစ်လိုအပ်တဲ့ အစိတ်အပိုင်းတစ်ခုပါ။ နာမည်အတိုင်းပါပဲ၊ သင်လိုအပ်တဲ့ logic function တွေကို ပံ့ပိုးပေးဖို့ ဒီ chip တွေကို program လုပ်နိုင်ပါတယ်။ ဒါက ခေတ်မမီတော့တဲ့ chip တွေကို အစားထိုးတာ ဒါမှမဟုတ် နည်းပညာအမျိုးမျိုးကို လေ့လာပြီး စမ်းသုံးကြည့်ဖို့ နည်းလမ်းတစ်ခု ဖြစ်နိုင်ပါတယ်။ CPLD ကိုသုံးပြီး စမ်းသုံးကြည့်တာထက် ပိုကောင်းတဲ့ သင်ယူနည်း ဘာရှိဦးမှာလဲ။
solderless breadboard တွေအပါအဝင် အရာအများစုမှာ ချိတ်ဆက်နိုင်အောင် CPLD module တစ်ခု ဖန်တီးခဲ့ပေမယ့် အဆင်မပြေခဲ့ပါဘူး။ solderless breadboard မှာ ရနိုင်တဲ့ plug-in နေရာက ၁.၁ လက်မပဲ ရှိပုံရပါတယ်။ footprint ကို ၁ လက်မ အကျယ် လုပ်ထားတာကြောင့် နှစ်ဖက်စလုံးမှာ ဝါယာကြိုးတန်းတွေအတွက် နေရာမကျန်တော့ပါဘူး။
ဒါပေမယ့် ကျွန်တော်ဘာလုပ်နေလဲဆိုတာကို ပြန်ပြောပြပါရစေ၊ ကိရိယာတစ်ခုအဖြစ် တည်ဆောက်နိုင်တဲ့၊ အိမ်မှာ အလွယ်တကူ ဂဟေဆက်နိုင်တဲ့၊ ဆားကစ်ထဲမှာ ပရိုဂရမ်ရေးနိုင်ပြီး 3.3 ဗို့ ဒါမှမဟုတ် 5 ဗို့မှာ အလုပ်လုပ်နိုင်တဲ့ ပရိုဂရမ်ရေးသားနိုင်တဲ့ ယုတ္တိဗေဒတစ်ခုကို ကျွန်တော် လုပ်ချင်ပါတယ်။
ဂဟေဆက်ရလွယ်ကူတဲ့ ကိရိယာတစ်ခုကို ဖန်တီးဖို့အတွက်၊ 3.3v နဲ့ 5v ဗားရှင်းတွေမှာလည်း ရရှိနိုင်ပြီး ပါဝါထောက်ပံ့မှု မည်သို့ပင်ရှိစေကာမူ ၎င်းရဲ့ ပရိုဂရမ်ကို ထိန်းသိမ်းပေးမယ့် CPLD အစိတ်အပိုင်းဟောင်းတစ်ခုကို ကျွန်တော်အသုံးပြုခဲ့ပါတယ်။ လော့ဂျစ်ကိုယ်တိုင်က Altera Max စီးရီးက CPLD IC တစ်ခုဖြစ်ပြီး ဗားရှင်းနှစ်မျိုးနဲ့ ရရှိနိုင်ပါတယ်။ မက်ခရိုဆဲလ် ၃၂ ခု ဒါမှမဟုတ် ၆၄ ခုပါတဲ့ ဆားကစ်ဘုတ်တွေအတွက် သင့်တော်ပါတယ်။ မက်ခရိုဆဲလ်တွေဟာ လော့ဂျစ် "အသုံးအနှုန်း" တွေကို အသုံးပြုပြီး ပရိုဂရမ်ရေးသားပြီးနောက် ပရိုဂရမ်ထည့်သွင်းနိုင်တဲ့ ချိတ်ဆက်မှုတွေကတစ်ဆင့် အခြားမက်ခရိုဆဲလ်တွေနဲ့ ချိတ်ဆက်ထားတဲ့ အခြေခံ လော့ဂျစ်တည်ဆောက်မှုတုံးတွေ ဖြစ်ပါတယ်။
ပုံကြမ်းကို ကြည့်ရင် ၎င်းမှာ အကြောင်းအရာ အများကြီး မပါဝင်တာကို တွေ့မြင်နိုင်ပါတယ်- အခြေခံအားဖြင့် CPLD၊ in-circuit programming circuit နဲ့ CPLD logic ကို မောင်းနှင်တဲ့ oscillator တို့ပဲ ဖြစ်ပါတယ်။
ဒီအပိုင်းကို EPM7032 နဲ့ EPM7064 လို့ခေါ်ပြီး 44-pin plastic lead chip carrier (PLCC) ကို အသုံးပြုထားပြီး lead lead ရဲ့ J ပုံသဏ္ဍာန်ကြောင့် J lead လို့လည်း ခေါ်ပါတယ်။ ဒီထုပ်ကို through-hole socket ထဲကို ထည့်သွင်းနိုင်သလို PCB နဲ့ တိုက်ရိုက်ဂဟေဆက်နိုင်ပါတယ်။
CPLD တွင် oscillator တစ်ခုပါဝင်သောကြောင့် CPLD သည် statefully လုပ်ဆောင်နိုင်ပြီး external clock မလိုအပ်ဘဲ ၎င်းကိုယ်တိုင် fast counters များကို ဖန်တီးနိုင်သည်။ external clock ရှိပါက module ရှိ high-speed clock ကို external clock ၏ အတက်အဆင်းအစွန်းတိုင်းတွင် clock event တစ်ခုဖန်တီးရန်အသုံးပြုနိုင်ပြီး CPLD/FPGA လမ်းညွှန်ချက်များကို လိုက်နာနိုင်သည်။ ဆိုလိုသည်မှာ clock input ကို "Asynchronous" မောင်းနှင်မည့်အစား internal global clock network ကို အသုံးပြုသင့်သည်။ ဤ oscillator ၏ rated power supply voltage သည် 1.8 မှ 5.5 volts အကြားတွင်ရှိသည်။
ဗီဒီယိုကိုကြည့်ရင် oscillator ပေါ်က "INH" pin ကို ဘယ်လိုကိုင်တွယ်ရမလဲဆိုတဲ့ ကျွန်တော့်ရဲ့ကိုယ်ပိုင်နှစ်သက်မှုကို ဆွေးနွေးထားတာကို တွေ့ရပါလိမ့်မယ်။ ရိုးရိုးလေးပြောရရင် spec sheet က တရားဝင်လားဆိုတာ စစ်ဆေးပြီးရင် float ထားလေ့ရှိပါတယ်။
ဒီလိုလုပ်ဆောင်ချက်တွေကို ကိုင်တွယ်ဖြေရှင်းတဲ့အခါ ကျွန်တော့်စိတ်ထဲ ဖျတ်ခနဲပေါ်လာတဲ့ အကြောင်းရင်းတွေထဲမှာ input pin တွေကို power rail တွေနဲ့ တိုက်ရိုက်ချိတ်ဆက်ရတာကို မကြိုက်တာ (ဖြစ်နိုင်ရင်) ပါဝင်ပါတယ်။ ဆိုလိုတာက transient တွေအတွင်းမှာ လျှပ်စီးကြောင်းကို ကန့်သတ်ဖို့ series resistor တွေကို အသုံးပြုရန် ပိုနှစ်သက်ပါတယ်၊ မလိုအပ်ရင်တောင်မှပါ။
နှစ်တွေတစ်လျှောက်မှာ ထုတ်လုပ်မှု (အသုတ်ကြီးတွေ) မှာ ပြဿနာတချို့ကို ကျွန်တော်မြင်တွေ့ခဲ့ရပြီး တစ်ခါတစ်ရံမှာ power cycling လိုမျိုးအရာတွေက power rail နဲ့ တိုက်ရိုက်ချိတ်ဆက်ထားတဲ့ pin တွေကို chip ကိုယ်တိုင်ထက် voltage ပိုများစေတာကြောင့် ဒါက မကောင်းပါဘူး။ နောက်ဆုံးအနေနဲ့ pin ကို resistor (power ဒါမှမဟုတ် ground ပဲဖြစ်ဖြစ်) ကနေတစ်ဆင့် power rail နဲ့ ချိတ်ဆက်လိုက်ရင် လူတွေက နောက်ပိုင်းမှာ စိတ်ပြောင်းပြီး pin ကိုသုံးနိုင်ပါတယ်။ အသုံးမပြုတဲ့တံခါးတွေနဲ့ ကျွန်တော့်ရဲ့အတွေ့အကြုံအရ ဒါက အထူးသဖြင့် မှန်ကန်ပါတယ်။ ဒီတံခါးတွေကို ဘယ်တော့မှ ပေါလောမျောနေတာ ဒါမှမဟုတ် ချိတ်ဆက်မထားဘဲ မထားသင့်ဘူးဆိုတာ သင်သိပါလိမ့်မယ်။ pull-up resistor ကိုသုံးခြင်းအားဖြင့် ကြေးနီအစအနတွေကို မဖြတ်တောက်ဘဲ signal ကိုချိတ်ဆက်ပြီး gate ကိုသုံးနိုင်ပါတယ်။
10-pin connector နဲ့ resistor အနည်းငယ်က programming circuit ကို ဖွဲ့စည်းထားပါတယ်။ resistor အားလုံးက pull-up resistor တွေဆိုရင် resistor network ကိုသုံးမှာပါ၊ ဒါပေမယ့် တစ်ခုကတော့ grounded ပါ။
ဒီလို သီးခြား CPLD တစ်ခုကို ပရိုဂရမ်ရေးဖို့အတွက် သီးသန့်ပရိုဂရမ်မာတစ်ယောက် လိုအပ်ပါတယ်။ ကျွန်တော့်ဘေးမှာ ပရိုဂရမ်အနည်းငယ်ရှိတတ်လို့ ဒါက ကျွန်တော့်အတွက် လွယ်ပါတယ်၊ ဒါပေမယ့် ပရိုဂရမ်မရေးထားရင်တော့ ဂိမ်းထဲဝင်ဖို့ သိပ်မခက်ပါဘူး။ အတည်ပြုထားတဲ့ "Altera USB Blaster" ကို ဒေါ်လာ ၅၀ နဲ့ ရောင်းချပြီး Digikey နဲ့ တခြားနေရာတွေကနေ ဝယ်ယူနိုင်ပါတယ်။ Ebay ကနေ clone တွေ အများကြီးရှိပါတယ်၊ အဲဒီထဲက တစ်ခုကတော့ Altera, Xilinx နဲ့ Lattice ကို တစ်ပြိုင်နက်တည်း ပံ့ပိုးပေးတဲ့ clone တစ်ခုပါ။ အင်တာနက်ပေါ်မှာ ကိုယ်ပိုင် clone တစ်ခုလုပ်ဖို့ အသုံးပြုနိုင်တဲ့ project နဲ့ code တစ်ခုရှိပါတယ်၊ programmer clone တွေ ဖန်တီးတဲ့ project အတွက် ဖြစ်နိုင်ချေရှိတဲ့ ဗီဒီယိုစာရင်းမှာ ဒါကို ဖော်ပြပါမယ်။ motherboard, Arduino, PIC စတာတွေကို ပရိုဂရမ်ရေးနိုင်တဲ့ shield design တစ်ခုကိုလည်း ပြသပါမယ်။
CPLD ကို compile လုပ်ပြီး program လုပ်ဖို့ လိုအပ်တဲ့ software ကို Altera မှာ အခမဲ့ရယူနိုင်ပေမယ့် ဒီအပိုင်းဟောင်းကို အသုံးပြုဖို့အတွက် 9.1 ဗားရှင်းဟောင်း လိုအပ်ပါတယ်။ သတင်းကောင်းကတော့ ကျွန်တော့်အကြိုက်ဆုံး ဗားရှင်းဟောင်းပါပဲ။ အလိုလိုသိနိုင်တဲ့ timing analyzer ပါပေမယ့် နောက်ပိုင်းဗားရှင်းမှာတော့ ဖယ်ရှားလိုက်ပါတယ်။
PCB က ရိုးရှင်းတဲ့ နှစ်ဖက်ဒီဇိုင်းပါ။ ဆားကစ်ဘုတ်က အံဝင်ခွင်ကျဖြစ်သရွေ့ ကျွန်တော်က ကြေးနီကို မြေချိတ်ဆက်ဖို့နဲ့ တစ်ခါတလေ ပါဝါထောက်ပံ့ဖို့ သုံးလေ့ရှိပါတယ်။ တစ်ခါတလေ ကြေးနီလောင်းတာက အရမ်းပျက်စီးသွားလို့ ပြဿနာတွေ ဒါမှမဟုတ် ပေါ့လျော့တဲ့ရလဒ်တွေ ဖြစ်စေနိုင်တာကြောင့် ကြေးနီပြန်လောင်းတာက ကိရိယာတစ်ခုဖြစ်ပေမယ့် စီမံခန့်ခွဲဖို့ လိုအပ်ပါတယ်။
ယနေ့ခေတ်တွင် CAD software package အများစု (အများစုမဟုတ်လျှင်) တွင် နောက်ဆုံးထုတ်ကုန်၏ 3D မြင်ကွင်းများ ပါဝင်သော်လည်း ရုပ်ပုံများ၏ တိကျမှုသည် အစိတ်အပိုင်းများကို ကိုယ်စားပြုရန် အသုံးပြုသည့် 3D မော်ဒယ်များကဲ့သို့သာ တိကျမှုရှိပါသည်။ 44-pin socket၊ programming connector နှင့် oscillator အတွက် 3D မော်ဒယ်ကို ရွေးချယ်ခဲ့သည့်နေရာကို ဤနေရာတွင် သင်တွေ့မြင်နိုင်ပါသည်။ ကျွန်ုပ်အသုံးပြုလိုသော 3D package အချို့ကို ဤနေရာတွင် ဖော်ပြထားပါသည်။
ကုမ္ပဏီများစွာတွင်လည်း ၎င်းတို့၏ အစိတ်အပိုင်းများ၏ 3D မော်ဒယ်များရှိသည်။ Molex သည် ဤနယ်ပယ်တွင် ကောင်းမွန်သောအလုပ်တစ်ခုကို လုပ်ဆောင်ခဲ့သော ကုမ္ပဏီတစ်ခု၏ ဥပမာတစ်ခုမျှသာဖြစ်သည်။
ကျွန်တော်လုပ်ခဲ့တဲ့အမှားက အလှအပလိုမျိုး လုပ်ဆောင်ချက်ကို မထိခိုက်ပါဘူး၊ အဓိကပြဿနာလည်း မဟုတ်ပါဘူး၊ ဆိုလိုတာက ဂဟေမပါတဲ့ breadboard တစ်ခုတည်းအတွက် မသင့်တော်ပါဘူး။
ဒီဇိုင်းကို ဘယ်သူနဲ့မဆို မျှဝေနိုင်မယ်လို့ တွေးမိတာနဲ့ CPLD ရဲ့ ပုံစံသင်္ကေတတွေနဲ့ 40-pin connector ရဲ့ pinout ကို ချက်ချင်းပဲ မကျေမနပ်ဖြစ်သွားတယ်။ အဲဒါက သူ့ရဲ့ အလုံးစုံ footprint ပဲ။ 40-pin double-row connector သင်္ကေတကိုယူပြီး ၁ လက်မ footprint ဖြစ်အောင် ချိန်ညှိလိုက်ပေမယ့် pin နံပါတ်တွေက ၁၊ ၂၊ ၃၊ ၄ မဟုတ်ဘဲ DIP package ၃၊ ၅၊ ၇ လိုမျိုး ဘေးမှာ ၁ နံပါတ်တပ်ထားတယ်... ribbon cable connector တွေလိုပဲ။ ဒါကြောင့် module နဲ့ ဘယ်လိုချိတ်ဆက်ရမလဲဆိုတာနဲ့ troubleshooting လုပ်ရမလဲဆိုတာ ဆုံးဖြတ်ဖို့ အာရုံမစိုက်ရတဲ့ footprint ပါ။
အလားတူပဲ၊ CPLD pin assignments တွေက နည်းနည်းရှုပ်ထွေးပြီး symbol တွေဖန်တီးဖို့ Boundary Scan Description Language (BSDL) ကို အားကိုးတဲ့ utilities တွေကို ကျွန်တော်သုံးခဲ့ပါတယ်။ အဓိက vendor အများစုမှာ သူတို့ရဲ့ mainstream components တွေအတွက် BSDL files တွေရှိပြီး symbol တွေနဲ့ package တွေကို (တစ်ပိုင်း) အလိုအလျောက်ဖန်တီးနိုင်ပါတယ်။ automation တိုင်းလိုပဲ၊ tool တစ်ခုအဖြစ် ရှုမြင်ဖို့ လိုအပ်ပြီး အကောင်းဆုံးရလဒ်တွေအတွက် နောက်ထပ် massage လိုအပ်နိုင်ပါတယ်။ ဒီကိစ္စမှာတော့ pin တွေကို အက္ခရာစဉ်အတိုင်း စာရင်းပြုစုထားပါတယ်၊ အဲဒါက board ပေါ်က pin တွေကို ခြေရာခံတဲ့အခါ random နီးပါးပါပဲ။ အဲဒီနေ့မှာ ကျွန်တော် အရမ်းစိတ်ပူနေခဲ့တယ်လို့ပဲ ပြောနိုင်ပါတယ်။
ဒီ shortcut တွေအတွက် ခရီးမှာ တစ်ချိန်ချိန်မှာ ပိုက်ဆံပေးရပါတယ်။ ဒီ module ကို ပြုပြင်ဖို့ သွားတဲ့အခါ အစိတ်အပိုင်းနဲ့ ကိုက်ညီတဲ့ pin နေရာချထားမှုကို ဆုံးဖြတ်ပြီး ပေးပါမယ်။ ဒါကြောင့် oscilloscope probe ကို ဘယ်မှာထားရမလဲဆိုတာ သိဖို့ schematic symbol ကို ကြည့်လိုက်တာနဲ့ အလွယ်တကူ သိနိုင်ပါတယ်။
ဆားကစ်ဘုတ်တွေကိုသုံးတဲ့အခါ အဓိကအားဖြင့် အလှအပ ဒါမှမဟုတ် အသုံးဝင်တဲ့ တခြားတိုးတက်မှုတွေရှိပါတယ်။ pin 1 indicator ဟာ package အတော်များများမှာ ပိုပြီးအသုံးများဖို့ လိုအပ်ပြီး oscilloscope ground ဒါမှမဟုတ် VOM lead ကိုချိတ်ဆက်ဖို့ ရိုးရှင်းတဲ့ ground point တစ်ခုကိုပဲ ကျွန်တော်အမြဲပိုနှစ်သက်ပါတယ်။ power နဲ့ ground ကို အောက်ခြေ pin တွေမှာ ညှပ်ထားမယ့်အစား board ကိုတိုက်ရိုက်သက်ရောက်အောင် two-pin connector တစ်ခုထည့်ခြင်းအားဖြင့် ဒါကိုထပ်ထည့်နိုင်ပါတယ်။
ဆားကစ်ဘုတ်ကို မပြုပြင်ခင်မှာ ရုပ်ပိုင်းဆိုင်ရာနဲ့ အလှအပဆိုင်ရာ ပြဿနာတွေအောက်မှာ ကောင်းမွန်စွာ အလုပ်လုပ်မလုပ် သေချာစစ်ဆေးချင်ပါတယ်။ ပါဝါဖွင့်ပြီး oscillator ကောင်းကောင်းအလုပ်လုပ်နေတယ်ဆိုတာ အတည်ပြုပြီးတဲ့နောက်မှာ programmer ကို ပလပ်ထိုးလိုက်ပါတယ်။ 3.3v ဗားရှင်းက programming software ထက် ပိုသစ်ပေမယ့် CPLD ကို ထောက်လှမ်းပြီး "မသိရသော" device အဖြစ် ပြသပါတယ်။
နောက်တစ်ခုအနေနဲ့ Quartus မှာ counter တစ်ခု ဖန်တီးပြီး pin နံပါတ်တွေကို သတ်မှတ်ပေးခဲ့ပါတယ်။ compile လုပ်တာနဲ့ download လုပ်တဲ့ မြန်ဆန်မှုနဲ့ oscilloscope မှာ မြင်ရတဲ့ counter function တွေက ဒီဇိုင်းက လက်တွေ့ကျတယ်ဆိုတာ အတည်ပြုပေးပါတယ်။
Verilog မှာ quick test circuit က အရမ်းရိုးရှင်းပါတယ်။ code ကို အောက်မှာ ဖော်ပြထားပါတယ်။ Quartus II project အနေနဲ့ schematic နဲ့ Verilog test circuit ပါတဲ့ ZIP file ကို download လုပ်နိုင်ပါတယ် (version 9.1 လိုအပ်ပါတယ်)။
ကျွန်တော်ပြောခဲ့သလိုပဲ၊ ဒီဇိုင်းကိုမျှဝေတဲ့အခါ ဒါမှမဟုတ် ပြဿနာရှာဖွေတဲ့အခါ လိုအပ်တဲ့အသေးစိတ်အချက်အလက်တွေကို ပိုမိုအာရုံစိုက်နိုင်အောင် circuit board ကို ဒုတိယအကြိမ်ပြင်ဆင်ပါမယ်။ အောက်ခြေ connector ရဲ့အကျယ်ကို ၀.၉ လက်မ ဒါမှမဟုတ် ဒီထက်နည်းအောင် သတ်မှတ်ရမှာဖြစ်တဲ့အတွက် ၀.၆ လက်မအထိ ဆက်သတ်မှတ်နိုင်ပါတယ်၊ အဲဒါက စံ "ကျယ်" DIP package တစ်ခုပါ။ ဒီလိုလုပ်ခြင်းအားဖြင့် အောက်ခြေ pin တွေကို CPLD socket footprint ကနေ ထွက်နေစေရမှာပါ။ အဲဒီအချိန်တုန်းက လက်နဲ့တပ်ဆင်ခဲ့လို့ ထုတ်လုပ်မှုအခြေအနေမှာ ကျွန်တော် ဒီလိုမလုပ်ပါဘူး၊ ဒါပေမယ့် ရည်မှန်းချက်တစ်ခုက လက်နဲ့ဂဟေဆက်တဲ့ kit တစ်ခုလုပ်ဖို့ပါ။ လက်နဲ့ဂဟေဆက်တဲ့ ညှိနှိုင်းမှုကတော့ oscillator ဟာ SMD surface mount housing မှာ ရှိဖို့ လိုအပ်ပါတယ်၊ through-hole version က အရမ်းကြီးပြီး ကျွန်တော်လိုချင်တဲ့ voltage range ကို မထောက်ပံ့ပါဘူး။
ဒီမော်ဂျူးတွေကိုသုံးပြီး ရိုးရှင်းတဲ့ ကွန်ပျူတာတစ်လုံး တည်ဆောက်လို့ရလား။ မန်မိုရီထပ်ထည့်ဖို့ လိုမယ်ထင်တယ်။
ဟားဟား...ဟုတ်တယ်၊ ဘယ်လိုကွန်ပျူတာမျိုးလဲဆိုတဲ့အပေါ်မှာ မူတည်တယ်။ ဒါပေမယ့် "တကယ့်" မိုက်ခရိုကွန်ထရိုလာ/မိုက်ခရိုကွန်ပျူတာတွေဟာ မော်ဂျူးရဲ့ "pin bonding" ရဲ့ သက်ရောက်မှုကို ခံရပါတယ်၊ ဆိုလိုတာက မော်ဂျူးကနေ အသုံးဝင်တဲ့အရာတစ်ခုခုလုပ်ဖို့ လုံလောက်တဲ့ ဝေါဟာရတွေကို ရနိုင်မှာမဟုတ်ပါဘူး။
ကျွန်တော် အရွယ်အစား 64 ရှိတဲ့ NTSC ကင်မရာ timing and mode controller အပြည့်အစုံကို လုပ်ထားတာမို့ processor မလိုအပ်ပါဘူး။
Nand to Tetris စာအုပ်တွင် အသုံးပြုထားသော Structural Verilog နှင့် HDL တို့သည် အနည်းနှင့်အများ အတူတူပင်ဖြစ်သည်။
ဘာကြောင့် through-hole အစိတ်အပိုင်းတွေလဲ။ 0805 ဂဟေဆော်ရတာ လွယ်ကူပါတယ်။ အခုအချိန်ဟာ tinker တိုင်း ဒီကျွမ်းကျင်မှုကို သင်ယူဖို့ အချိန်ပါပဲ။
အပေါ် socket ကို အောက်ခြေကနေ ဂဟေဆက်ထားတဲ့ pin တွေကို ထပ်အောင်လုပ်မယ်ဆိုရင် "အလယ် ၆ ခု (40-pin chip ကို တုပခြင်း) ဒါမှမဟုတ် ထောင့်ဖြတ်စတဲ့ဟာတွေကို သုံးနိုင်ပါတယ်။ ဒါက အောက်ခြေ lead တွေကို ဂဟေဆက်ဖို့အတွက် အစိတ်အပိုင်းတွေကို လက်ဖြင့်ဂဟေဆက်တာ သက်သက်ပါ။ အပေါ် socket ကို ခြေထောက်နောက်က တပ်ဆင်တာပါ။
ဒါပေမယ့် အစပြုသူတွေအတွက် အောက်ခြေကနေ ဂဟေဆက်ဖို့ ခက်ခဲပါတယ်။ breadboard ရဲ့ PCB အတွက် header တွေကို ဂဟေဆက်တဲ့အခါ (eBay မှာ သုံးလို့ရတဲ့ ဈေးသက်သာတဲ့ SMD adapter board တွေကို prototyping အတွက် သုံးနိုင်ပါတယ်)၊ header တွေကို breadboard ထဲထည့်ပြီးရင် PCB ကို တပ်ဆင်လိုက်တဲ့အခါ အလွယ်တကူ ဂဟေဆက်နိုင်ပါတယ်။ breadboard တွေအတွက် အရမ်းသင့်တော်ပါတယ်။ အောက်ခြေကနေ ဂဟေဆက်ဖို့ လိုအပ်ရင် ပိုခက်ပါတယ်။
CPLD သည် အလယ်တွင်ရှိပါက (ဝါယာကြိုးချိတ်ရန် ပိုမိုလွယ်ကူနိုင်သည်)၊ ၎င်းကို ထပ်မနေဘဲ ထောင့်ဖြတ်တပ်ဆင်နိုင်သည်၊ အတန်း ၄ တန်းရှိနိုင်သည်၊ သို့မဟုတ် CPLD ကို တစ်ဖက်တွင် ရှိနိုင်သည်။
ဂဟေဆက်ခြင်းမပြုမီ ချိတ်ဆက်ကိရိယာကို breadboard ထဲသို့ ထည့်သွင်းရန် အကြံပေးသည့်အတွက် ကျေးဇူးတင်ပါသည်။ ကျွန်တော့်ဟာက နည်းနည်းမတည်ငြိမ်ပါဘူး။
တစ်ဖက်စွန်းမှာရှိတဲ့ DIP format breadboard pin တွေနဲ့ နောက်တစ်ဖက်စွန်းမှာရှိတဲ့ chip socket ရဲ့ "dongle" အမျိုးအစားကော။ ချစ်ပ်ကို breadboard ရဲ့ အဆုံးမှာ ချိတ်ဆွဲထားနိုင်ပါတယ်။ routing က ကျဉ်းမြောင်းပါလိမ့်မယ်။
|####### **************** |. ဟုတ်ကဲ့၊ Xilinx နဲ့ Lattice မှာ "အခမဲ့" ဗားရှင်းတွေရှိသလိုပဲ Altera ရဲ့ "အခမဲ့" ဗားရှင်းကိုသုံးဖို့ ဆုံးဖြတ်လိုက်ပါတယ်။ open support အားလုံးက ဘာတွေကို support လုပ်လဲဆိုတာ နားလည်ဖို့ Al Williams နဲ့ cycle ကို အဆုံးသတ်ဖို့ လိုပါတယ်။ အဲဒီ open support တွေမှာ device series ရဲ့ သီးခြား attribute တွေ ပါဝင်ရပါမယ်။ ဒါပေမယ့် free version နဲ့တော့ အများကြီး လုပ်ဖူးပါတယ်။
ဟုတ်ကဲ့၊ CPLD ဟာ ကျွန်တော်ယုံကြည်တဲ့ pin တွေနဲ့ ထပ်နေတယ်ဆိုတာ ပြနေတာပါ။ ကျွန်တော် မှန်မှန်ကန်ကန် လိုက်နာမယ်ဆိုရင် ဒါက rev 2 လို ဖြစ်နိုင်ပါတယ်။ (အစုလိုက်အပြုံလိုက်) ထုတ်လုပ်မှုအတွက် ဒီဇိုင်းဆွဲတဲ့အခါ “လက်နဲ့ ဂဟေဆက်တပ်ဆင်ခြင်း” အဆင့်ကို ကျွန်တော် အမြဲတမ်း ဓာတ်မတည့်ပါဘူး၊ ဘာလို့လဲဆိုတော့ သူတို့က ထပ်နေလို့ပါ (တကယ်တော့ အစိတ်အပိုင်းမဟုတ်တဲ့ဘက်ခြမ်းက ဂဟေဆက်တံတွေ)။ (လက်နဲ့ ဂဟေဆက်ထားတဲ့ အစိတ်အပိုင်းတစ်ခု ဖြစ်နေပါပြီ)။ ဒါပေမယ့် ဒါက ထုတ်လုပ်မှုဦးတည်တဲ့ ဒီဇိုင်းမဟုတ်ဘဲ ကိရိယာငယ်လေးတစ်ခုသာ ဖြစ်ပါတယ်။ ကျွန်တော့်အသက်အရွယ်မှာ ဖယ်ရှားရခက်တဲ့ အကျင့်တချို့ ရှိပါတယ်။ 
CPLD နဲ့ passive components တွေပါတဲ့ T-ပုံသဏ္ဌာန် circuit board တစ်ခုဟာ breadboard ရဲ့အနားမှာ ချိတ်ဆွဲထားရင် အရမ်းအသုံးဝင်မယ်လို့ ကျွန်တော်ထင်ပါတယ်။ Adafruit RasPi T-Cobbler (http://www.adafruit.com/products/2028) နဲ့ ဆင်တူတဲ့ အရာတစ်ခုပါ။ ဒါကြောင့် breadboard ဧရိယာအများစုကို အသုံးပြုနိုင်မှာပါ။
ကံမကောင်းစွာပဲ၊ ရပ်ဆိုင်းလိုက်ခြင်းက XR2206 နှင့် ICL8038 ကိုအခြေခံသည့် function generator အားလုံးကဲ့သို့ပင် ဘေးထွက်ပရောဂျက်များတွင် ၎င်း၏အသုံးပြုမှုကို ပြင်းထန်စွာကန့်သတ်လိမ့်မည်။
စိတ်ဝင်စားစရာ အိုင်ဒီယာပဲ။ ဒီချစ်ပ်နှစ်ခုကို ကျွန်တော်ကြိုက်တယ်။ CPLD က ခေတ်နောက်ကျတာမဟုတ်ပါဘူး၊ 3.3v မှာ ဝယ်လို့ရတဲ့ ဈေးသက်သာတဲ့ နည်းလမ်းတစ်ခုပါ။
မင်းရဲ့ "အဓိပ္ပါယ်မရှိတဲ့" အတွေးနဲ့ ပတ်သက်ပြီး... မင်းက breadboard မှာ တပ်ဆင်ဖို့ layout အသစ်တစ်ခု မလုပ်ထားဘူး။ ဝါယာကြိုးကို breadboard မှာ အရင်တပ်ပြီးမှ cpld ကို ဝါယာကြိုးပေါ်မှာ တပ်လိုက်ပါ။ ဒါမှမဟုတ် တစ်ခုခုကနေ power နဲ့ ground strips တွေကို ဆွဲဖြုတ်နိုင်ရင် breadboard နှစ်ခုကို သုံးပါ။
Altium နဲ့ Eagle အကြောင်း။ KiCad ကို စဉ်းစားဖူးလား။ Eagle ထက် Altium ကို ပိုနှစ်သက်တယ်ဆိုတဲ့ ကန့်သတ်ချက်တွေ မရှိပါဘူး၊ ပြီးတော့ default အားဖြင့် ချိတ်ဆက်မထားတဲ့ pin အားလုံးအတွက် DRC error တွေကို ထုတ်ပေးပါတယ်။ pin တစ်ခုကို တကယ်ဖွင့်ချင်ရင်တော့ ပြောပြရပါမယ်။ (input အတွက်ပဲ ဖြစ်နိုင်ပြီး output အတွက် မဟုတ်ပါဘူး၊ ပြီးတော့ ဒါကို မစစ်ဆေးရသေးပါဘူး)။ နောက်ထပ် ကောင်းမွန်တဲ့ feature တစ်ခုကတော့ သင်ယူရတာ အရမ်းလွယ်ကူတာပါပဲ။ နေ့လည်ခင်းတစ်ခုပဲ ကြာပြီး ကောင်းမွန်တဲ့ မိတ်ဆက်လက်စွဲစာအုပ်က ကျွန်တော့်ကို စတင်စေခဲ့ပါတယ်။
ကျွန်တော်ကတော့ through hole ရဲ့အပေါ်က (ပိုကြီးတဲ့အပိုင်း) smd ကို ပိုကြိုက်တယ်။ သုံးရတာ ပိုလွယ်တယ်။ pcb ကို အမြဲလှည့်နေစရာ မလိုဘူး။ (mirroring လုပ်လို့ အမှားတွေ လုပ်မိသွားတယ်...)။ ပြီးတော့ resistor ရဲ့ lead ကို ဖြတ်စရာ မလိုဘူး။ ဒီဇိုင်းတစ်ခုကို မျှဝေတဲ့အခါ PCB တစ်ခုတည်းမှာ ဒါမှမဟုတ် အစိတ်အပိုင်းတစ်ခုတည်းမှာ package အများကြီးကို အဆင်ပြေပြေ ထားလို့ရတယ်။ SMD resistor TH။ (ဒါက layout ကို နည်းနည်း ရှုပ်ထွေးစေတယ်)။
ကျွန်တော် "KiCad Getting Started" ကို pdf format နဲ့သုံးခဲ့ပါတယ်။ ကျွန်တော်သုံးခဲ့တဲ့ version အဟောင်းက စာမျက်နှာ ၂၉ မျက်နှာရှိပြီး နောက်ဆုံး version မှာတော့ စာမျက်နှာ ၅၂ မျက်နှာရှိပါတယ်။ တခြား tutorial တွေမှာ (ဗီဒီယိုလင့်ခ်တွေအပါအဝင်) ရှာတွေ့နိုင်ပါတယ်- http://kicad-pcb.org/help/tutorials/
Hackaday နဲ့ The Amp Hour က [Chris Gemmell] က Kicad http://kicad-pcb.org/help/tutorials/ မှာ စီးရီးတစ်ခု လုပ်ခဲ့တယ်ဆိုတာ ကျွန်တော်သိပါတယ်။
Kicad က အသုံးဝင်နိုင်ပါတယ်၊ Rev 2 မှာ ဘာတွေဖြစ်လာမလဲဆိုတာ ကြည့်ရအောင်။ အကြံပြုချက်တွေအတွက် ကျေးဇူးတင်ပါတယ်။ ချိတ်ဆက်မထားတဲ့ input တွေက DRC (ERC) အတွက် ကောင်းတဲ့အရာတစ်ခုဖြစ်ပြီး connector တွေနဲ့ soft ဒါမှမဟုတ် IO ကို ထိန်းသိမ်းပေးတဲ့ တခြားအရာတွေအတွက် CAD disconnect message အများစုကို ရှောင်ရှားနိုင်ပါတယ်။
အမြန်စမ်းသပ်မှုတစ်ခုလုပ်ပြီး connector ကို ဗလာဇယားတစ်ခုထဲသို့ထည့်ပါ၊ annotation များနှင့် DRC ကိုလုပ်ဆောင်ပါ။ ၎င်းက pin တစ်ခုစီအတွက် drc အမှားများပေးခဲ့သည်။ သို့သော် ချိတ်ဆက်မထားသော pin များကို မှတ်သားရန် အလွန်ရိုးရှင်းပါသည်။
passive သို့ သတ်မှတ်ပါ။ ကျွန်တော် ရှာဖွေရပါမယ် (Component ကို Edit -> Library Editor ဖြင့် Edit)။ library editor က ပွင့်လာပြီး သင့်ရဲ့ component ကို သီးခြား window တစ်ခုမှာ load လုပ်ပါတယ်၊ component ရဲ့ မည်သည့်အစိတ်အပိုင်းကိုမဆို စစ်ဆေး သို့မဟုတ် ပြောင်းလဲနိုင်ပါတယ်။ ပြောင်းလဲလိုက်တဲ့ component ကို သင့်ရဲ့ schematic မှာ save လုပ် ဒါမှမဟုတ် update လုပ်နိုင်ပါတယ်။ ဒါကြောင့် component တွေကို ပြောင်းလဲဖို့ အရမ်းလွယ်ကူစေပါတယ်။ ကျွန်တော် library ကို သိပ်ဂရုမစိုက်ပါဘူး။ ဥပမာ၊ cpld ကိုသုံးရင် pin တွေကို အဓိပ္ပာယ်ရှိတဲ့ အမည်တွေ သတ်မှတ်ချင်ပါတယ်။ ပိုအရေးကြီးတာက သင့်ရဲ့ကိုယ်ပိုင် component တွေကို ဒီဇိုင်းဆွဲဖို့ ကောင်းမွန်တဲ့ interface တစ်ခုရှိပါတယ်။
KiCad ရဲ့ ERC မှာ "unconnected" pin တွေက "passive pin" တွေနဲ့ မတူတဲ့ pin အမျိုးအစားဖြစ်ပြီး "unconnected" pin အားလုံးက error တွေ ထုတ်ပေးပါလိမ့်မယ်။ ERC အလုပ်လုပ်ပုံကို သင့်စိတ်ကြိုက်ပြင်ဆင်နိုင်ပါတယ်- Tools -> Electrical Rules Checker -> Options။
ပို့စ်တင်ချိန်: ၂၀၂၁ ခုနှစ်၊ နိုဝင်ဘာလ ၁၈ ရက်





