මේ පාඩමෙන් මම උත්සහා කරන්නේ අලුත් tinyAVR-0, tinyAVR-1 සහ megaAVR-0 ඛාණ්ඩ වල තියෙන ඔයාලා මීට පෙර වැඩිය අහලා දැකලා නැති දෙයක් ගැන කියලා දෙන්න. මෙය නමින් හදුන්වන්නේ Configurable Custom Logic (CCL) ලෙසටයි. මේ අවයවය භාවිතා වෙන්නේ software එකේ මැදිහත් වීමක් නැතුව ක්ෂණිකව logic output එකක් ලබා ගන්න. ගුවන් යානා, කර්මාන්ත ශාලා නිෂ්පාදන යන්ත්ර හෝ මෝටර් රථ වැනි වේගයෙන් ක්රියාකරන යන්ත්ර වලට ඉක්මණින් ප්රතිචාර දැක්විය යුතු electronic පරිපථ නිර්මාණය කරන්න බලාපොරොත්තු වෙනවා නම් CCL ඔබට සැහෙන ප්රයෝජනවත් වෙනවා නිසැකයි. ඒ නිසා මේ ගැන දැන ඉඳගෙන ගන්න එක සෑහෙන හොඳ දෙයක්. මෙය අලුත් අංගයක් නිසා පළමුවෙන්ම අපි CCL වල වැදගත්කම සහ එහි යෙදීම් තේරුම් ගනිමු!
ඔබ දන්නවා MCU එකකට ලැබෙන input අනුව අපිට අවශ්ය output එකක් සකසා ගන්න code එකක් භාවිතා කරන්න වෙන බව. අපි සරල උදාහරණයක් ලෙස බොත්තම් දෙකක් තද කලොත් LED එකක් පත්තු කරන්න ඕනෑ වන අවස්ථාවක් සිතමු. මෙහි input ලෙස A0 සහ A1 ද output එක සඳහා B1 තෝරා ගමු.
එවිට A0 සහ A1 යන දෙකම “1” නම් පමණක් B1 වල අගය “1” බවට පත් කරන C code එක තමා පහතින් තියෙන්නේ.
බැලූ බැල්මට මේ C code එක ඉතාම සරලයි, ඇත්තේ පේලි 5ක් පමණයි. ඒ නිසා ඔබට හිතෙන්න පුළුවන් ඉක්මනටම අවශ්යය ප්රතිචාරය දක්වන්න පුළුවන් කියලා. ඇත්තටම එය වැරදි උපකල්පනයක්! C කියන්නේ අපේ පහසුවට හදපු පරිගණක භාෂාවක්. එය අපිට සරල උනාට MCU එක ක්රියාත්මක කරන්නේ machine language එකක් බවට පරිවර්තනය (Compile) කරපු කේතයි. පහතින් පෙන්වා ඇත්තේ උඩින් පෙන්වපු C code එක machine code එකක් බවට පරිවර්තනය කළ විට ලැබෙන කේත සමුහයයි.
දැන් ඔබට පේනවා ඇති අවශ්යය දේ වෙන්න අඩුම වශයෙන් machine instructions 10ක් වත් සැබෑවට ක්රියාත්මක වෙන බව. Interrupts වැනි දෑ නිසා මෙය තවත් ප්රමාද වෙන්න පුළුවන්. ඒ නිසා මෙහි නිගමනය වන්නේ A0 සහ A1 වල වෙනස්කම් වලට B1 ප්රතිචාර දක්වන්න අපි හිතනවාට වඩා සැලකිය යුතු කාලයක් වැය වන බවයි. ඒ නිසා input වල වෙනසකට ක්ෂණිකව output එක වෙනස් කරන්න සම්ප්රදායික ක්රමය වන code එකෙක් භාවිතා කිරීම සුදුසු නැති බව ඔබට දැන් වැටහෙනවා ඇති.
සාමාන්යයෙන් ක්ෂණිකව output සදා ගන්න භාවිතා වන පිළිගත් ක්රමය වන්නේ logic gates භාවිතා කිරීමයි. ඒ සඳහා අමතර logic IC එකක් භාවිතා කරන්න වෙනවා. නමුත් MCU එකට අමතරව තවත් logic IC එකක් භාවිතා කලොත් අමතර පිරිවැයක් සහ PCB ඉඩක් අවශ්ය කරනවා. ඒ දේවල් මගහරවා ගෙන පහසුවෙන් පරිපථ නිර්මාණය කරන්න තමයි Microchip ආයතනය අලුත් AVR IC වලට CCL කියන අවයවය හදුන්වා දී තියෙන්නේ.
CCL කියන්නේ අපිට ඕනෑ විදිහට program කළහැකි logic gates පද්ධතියක්. අපිට අවශ්ය output එක ලැබිය යුත්තේ කුමන input සංයෝජන වලටද කියන එක boolean සමීකරණයක් මගින් අපිට පෙන්වා දෙන්න පුළුවන්. පහත රූපයෙන් පෙන්වා ඇත්තේ CCL අවයවය එසේ AND gate එකක් ලෙසට සකසා එසේ අවශ්යතාව සම්පූර්ණ කරගෙන ඇති අයුරුයි. A0, A1 input සහ B1 අතර තියෙන්නේ AND කියන boolean සම්බන්ධය (B1 = A0 AND A1) නිසා රූපයේ පෙන්වා ඇති CCL එක program කරලා තියෙන්නේ AND logic gate එකක් ලෙස ක්රියා කරන්න. මෙහිදී CPU එකට යලි යලිත් code එකකින් A0 සහ A1 ගැන සොයන්න ඕනේ වෙන්නේ නෑ මොකද hardware එකෙන්ම B1 පාලනය කරනු ලබනවා. මේ ක්රමය ඉතා වේගවත්! ඒ වගේම CPU එක sleep mode එකේ තියලා විදුලිය ඉතුරු කර ගන්නත් පුළුවන්.
ඔබට දැන් CCL වල වැදගත්කම තේරුම් ගන්න පුළුවන් කියලා මම විශ්වාස කරනවා. මින් ඉදිරියට අපි CCL භාවිතා කරන ආකාරය ඉගෙන ගමු. මේ පාඩම programmable logic ගැන පොඩි හැදින්වීමක් සහ AVR වල ඇති CCL භාවිතා කරන අයුරු ලෙස කොටස් දෙකකට බෙදා තියෙනවා. ඔබට කැමතිනම් පළමු කොටස මගහැර යන්නත් පුළුවන්. නමුත් CCL වල අභ්යන්තර ක්රියාව තේරුම් ගන්න කැමතිනම් ඒ පාඩමත් බලන්න කියන එක තමා මගේ උපදේශය වෙන්නේ. සුපුරුදු විදිහටම අත්හදා බලන්න මේ පාඩමේ අගටත් ප්රයෝගික ව්යාපෘතියකුත් එකතු කරලා තියෙනවා.
මොකක්ද මේ Programmable Logic Gate කියන්නේ?
Logic gate එකක් ලෙස නම් කරන්නේ ලැබෙන input එකකට අනුව තාර්කික output ලබාදෙන ඉතා කුඩා පරිපථයකට. AND, OR, NOT සහ XOR කියන්නේ එවැනි logic පරිපථ කීපයක්. මේ logic gate ක්රියා කරන්නේ එය නිර්මණය කරපු අරමුණ වෙනුවෙන් පමණයි. උදාහරණයක් ලෙස AND gate එකක් සෑම විටම ප්රතිදානය කරන්නේ input වල AND කියන ගණිතමය විසඳුම. මෙයට OR ප්රතිදානයක් කිසිවිටකත් ලබා දෙන්න බෑ. නමුත් කාලයත් සමඟ electronic තාක්ෂණය දියුණු වෙද්දී විවිධ යෙදීම් සඳහා ඕනෑ විටක වෙනස් කල හැකි logic පරිපථ අවශ්යය උනා. ඒ අනුව කරපු පර්යේෂණ ඔස්සේ තමයි මේ Programmable Logic Gate කියන දේ නිර්මාණය උනේ. මෙයට Programmable Logic Gate එකක් කියනවාට වඩා වෙනස් කල හැකි (configurable) සංකීර්ණ logic පද්ධතියක් කිව්වොත් මම වඩා නිවැරදියි. ඊට හේතුව මේ පරිපථය “program” කියන වචනයෙන් අර්ථ දක්වන්නේ අපිට අවශ්ය ලෙස input-output සම්බන්ධය තෝරා ගන්න (හෝ වෙනස් කරන්න) පුළුවන් හැකියාවක් මෙහි තිබීමයි. මේ නිසා ඔබ සාමාන්යයෙන් කරන C/Assembly programming වලට වඩා වෙනස් දෙයක් තමා සිදුවෙන්නේ. මම එය සරල උදාහරණයක් මඟින් තේරුම් කරලා දෙන්න උත්සහා කරන්නම්.
මේ රූපයේ තියෙන්නේ ඒ සඳහා හදපු සරල පරිපථයක කැටි සටහනක්. එයට ඇත්තේ A, B සහ C නම් input කීපයක් සහ Y නම් output එකක්. ඊට අමතරව SW1, SW2 සහ SW3 නම් switch ටිකකුත් තියෙනවා. මෙන්න මේ switch මඟින් අපිට අවශ්යය logic output එක multiplexer එක හරහා තෝරා ගන්න පුළුවන්.
- SW1 මඟින් AND
- SW2 මඟින් OR
- SW3 මඟින් XOR
තෝරා දෙනවා යැයි උපකල්පනය කලොත්, පහත රූප වල දැක්වෙන පරිදි අපිට අවශ්යය logic output සකසා ගන්න පුළුවන්.
AND logic output එක තෝරාගනු ලබන අවස්ථාව.
SW1 = “1” , SW1:SW2 =”0″
OR logic output එක තෝරාගනු ලබන අවස්ථාව.
SW2 = “1” , SW1:SW3 =”0″
XOR logic output එක තෝරාගනු ලබන අවස්ථාව.
SW3 = “1” , SW1:SW2 =”0″
මේ වාගේ අපිට අවශ්ය logic output තෝරා දිය හැකි පරිපථ තමයි අපි Programmable Logic Gate එකක් කියලා නම් කරන්නේ. මෙතන දී program කරනවා කියලා අදහස් කරන්නේ පරිපථයේ ඇති මුලික අවයව (logic elements) වෙනස් කිරීම නොව අපිට ඕනෑ Boolean ප්රතිදානය පරිපථයේ ඇති ඒවා අතරින් තෝරා දෙන එක පමණයි. මම නිර්මාණය කල පරිපථයේ ඇත්තේ AND, OR සහ XOR පමණක් නිසා output ලෙස ලබා ගන්න පුළුවන් වන්නේ A.B.C, A+B+C සහ A⊕B⊕C යන ඒවා වලින් එකක් පමණයි. මේ නිසා මගේ නිර්මාණය ඒ තරම් හොඳ නූතත් ඔබට මේ සංකල්පය තේරුම් කර දෙන්න එය ප්රමාණවත් විය යුතුයි!
ලැබෙන ඕනෑම input එකකට එනම් A.B.C හෝ [A.B.C + A.B.C] වැනි ඕනෑම Boolean ප්රකාශනයකට output ලබා ගන්න වර්තමානයේ භාවිතා කරන්නේ Look Up Table (LUT) නම් පරිපථයයි. පහත රූපයේ පෙන්වා තියෙන්නේ A, B සහ C නම් input තුනක් සහිත look up table එකක්. එහි ප්රතිදානය Y ලෙස ලකුණු කර තියෙනවා. මෙහි පෙර මෙන් switches ඇත්තේ නෑ. Switch වල කාර්යය සිදුකරන්නේ input line වලින්මයි. ඒ වගේම AND, OR, NOT වැනි විවිධ boolean ප්රකාශන ගොඩනගන logic element පවා මෙහි ඇත්තේ නෑ. ඒ වෙනුවට register ( හෝ memory element) එකක් භාවිතා කරලා අපිට අවශ්ය boolean ප්රතිදානය තෝරා දෙන එක තමා මෙය සිදුකරන්නේ.
මෙහිදී Y වල අගය තීරණය කරන්නේ A, B සහ C යන input වලින් තෝරාගන්න multiplexer මාර්ගයේ ඇති register bit එකේ අගයයි. උදාහරණ කීපයක් ගෙන මම එය පෙන්වන්නම්.
Y = A.B.C යන boolean සමීකරණය සඳහා LUT එක program කරන අයුරු.
පහතින් පෙන්වා තියෙන්නේ Y = A.B.C සඳහා වන සත්යතා වගුවයි. ඒ අනුව අපිට අපේ register එකේ අගය 100000002 කලොත් A, B සහ C තුනම “1” විට පමණක් Y වල අගය “1” ලෙසට ලබා දීමට පරිපථයේ ඇති multiplexers ක්රියාත්මක වෙනවා. අනිත් සියලුම A,B සහ C input අගයන් වලට ලැබෙන්නේ “0” පමණයි. පහත පෙන්වා ඇති A = B = C = 1 වන අවස්ථාවේ LUT පරිපථය දෙස බැලුවොත් එය පසුවෙන් වටහා ගන්න පුළුවන්.
Y = A.B.C යන boolean සමීකරණය සඳහා LUT එක program කරන අයුරු.
පහතින් පෙන්වා තියෙන්නේ Y = A.B.C සඳහා වන සත්යතා වගුවයි. ඒ අනුව අපිට අපේ register එකේ අගය 000010002 කලොත් A = “0” සහ B,C = “1” විට පමණක් Y වල අගය “1” ලෙසට ලබා දීමට පරිපථයේ ඇති multiplexers ක්රියාත්මක වෙනවා. අනිත් සියලුම A,B සහ C input අගයන් වලට ලැබෙන්නේ “0” පමණයි. පහත පෙන්වා ඇති A = 0, B = C = 1 වන අවස්ථාවේ LUT පරිපථය දෙස බැලුවොත් එය පසුවෙන් වටහා ගන්න පුළුවන්.
Y = A.B.C + A.B.C යන boolean සමීකරණය සඳහා LUT එක program කරන අයුරු.
පහතින් පෙන්වා තියෙන්නේ Y = A.B.C + A.B.C සඳහා වන සත්යතා වගුවයි. ඒ අනුව අපිට අපේ register එකේ අගය 001010002 කලොත් අපිට අවශ්ය Y ප්රතිදානයන් ලබා ගන්න පුළුවන්. පහත පෙන්වා ඇති Y = A.B.C සහ Y = A.B.C යන අවස්ථාවලට අදාල LUT පරිපථ සටහන් දෙක දෙස බැලුවොත් එය පසුවෙන් වටහා ගන්න පුළුවන්.
මේ විදිහට program කළහැකි Look Up Tables වර්තමානයේ සෑහෙන ප්රයෝජනයට ගන්නවා. විශේෂයෙන්ම Artificial Intelligence, RADAR, video encoders/decoders සහ missile guiding systems වැනි ඉතා සූක්ෂම යෙදීම් වලට. ඊට ප්රධාන ම හේතුව මේවාට ඉතා වේගයෙන් output ලබාදෙන්න පුළුවන් වීමයි. FPGA කියන්නේ මෙවැනි LUT විශාල ගණනක් එකට එකතු කරලා පෙර කියපු යෙදීම් වලටම නිර්මාණය කරපු ඇති දියුණු IC විශේෂයක්. ඉතින් Microchip ආයතනය මේ තාක්ෂනය AVR වැනි කුඩා MCU එකට භාවිතා කරපු එකත් අගයකල යුතු දෙයක්. AVR වල තියෙන CCL කියන්නෙත් මේ වගේම LUT වලින් සැකසුන පරිපථයක්. ඉතින මේ ලැබුන Look Up Table පිළිබඳ අවබෝදය හොඳටම ප්රමාණවත් නිසා තවත් කාලය විඩංගු කරන්නේ නැතුව අපි CCL ගැන ඉගෙන ගන්න පටන්ගමු.
AVR වල තියෙන CCL හඳුනා ගනිමු
tinyAVR-0, tinyAVR-1 සහ megaAVR-0 යන ඛාණ්ඩ තුනේම CCL අවයවය සමස්තයක් ලෙස එක සමානයි. සිදුවිය හැකි වෙනස්කම් වන්නේ ඒවා භාවිතා කරන I/O pin වෙනස සහ ඒවායේ ඇති Look Up Table (LUT) යුගලයන් ගණනේ වෙනසයි. සාමාන්යයෙන් එක IC දැකගන්න පුළුවන් වෙන්නේ එක LUT යුගලක් පමණයි. නමුත් සමහර megaAVR-0 ඛාණ්ඩයේ IC වල LUT යුගල 2ක් දැකගන්න පුළුවන්. මම මේ පාඩමට භාවිතා කරන්නේ පහත රූපයේ පෙන්වා තියෙන්නේ tinyAVR-1 ඛාණ්ඩයට අයත් ATtiny1614 IC එකේ datasheet එකෙන් උපුටා ගත එවැනි CCL අවයවයක කැටි සටහනක්. එහි ඇත්තේ එක LUT යුගලක් පමණයි. නමුත් මේ පාඩම පෙර සඳහන් කල ඛාණ්ඩ තුනටම එකසේ වලංගුයි.
බැලු බැල්මට සංකීරණ ලෙස පෙනුනත් මෙහි ඇත්තේ කොටස් දෙකක් පමණයි. ඒ රූපයේ පෙන්වා ඇති LUT0 සහ LUT1 කියන Look Up Table යුගල සහ Sequential (SEQ) කියන program කළහැකි Sequantial logic block එකයි. LUT0 සහ LUT1 වලින් තමා අපිට අවශ්යය කරන Boolean ප්රතිදාන නිර්මාණය කරලා දෙන්නේ. SEQ කොටස තියෙන්නේ සෑදෙන output වලට තවත් වෙනස්කම් කරගන්න ඕනෑ උනොත් භාවිතා කරන්න. මම මේ දේවල් අනු කොටස් දෙකකට වෙන් කරලා ඔයාලට තේරුම් කරලා දෙන්නම්.
LUT0 සහ LUT1 තේරුම් ගනිමු.
CCL වල ප්රධානම කොටස වන්නේ මේ LUT0 සහ LUT1 යුගලයි. මේ දෙකේ භාවිතා කරන IO pin වල වෙනස හැරෙන්න අනිත් සියලුම ක්රියාකාරිත්වය 100% සමානයි. මේවාට එකිනෙකට ස්වාධීනව ක්රියාකරන්න පුළුවන්. ඒ නිසා එකවර එකිනෙකට වෙනස් logic output දෙකක් සාදා ගන්න පුළුවන්. මේ LUT එකේ ක්රියාකාරිත්වය සරලව ඔයාලාට තේරුම් කරලා දෙන්න ඕනෑ නිසා කොටස් 4කට පහත රූපයේ පරිදි වෙන් කළා.
අංක 1න් පෙන්වන්නේ input තෝරා ගන්න භාවිතා කරන කොටස. CCL වල LUT එකකට ලබා දෙන්න පුළුවන් උපරිම input ගණන 03කට සීමා වෙනවා. ඒවා නම් කරන්නේ IN[0], IN[1] සහ IN[2] ලෙසටයි. මෙකි input සඳහා තෝරා ගන්න පුළුවන් signal sources විශාල ප්රමාණයක් මේ IC එකේ තියෙනවා. තෝරා ගැනීමට භාවිතා කරන්නේ LUT0CTRLB සහ LUT0CTRLC නම් register වල තියෙන INSELx [3:0] (x = 0,1,2) කියන bit කීපයයි. පහතින් ලැයිස්තු ගත කර තියෙන්නේ එසේ තෝරා ගන්න පුළුවන් input sources වර්ගයි.
- LUTn-IN0, LUTn-IN1 සහ LUTn-IN2 යන IO pin මේ සඳහා තෝරාගන්න පුළුවන්. මෙහිදී ඔබ උපයෝගී කරගන්නා LUT එක අනුව අදාළ pin තෝරාගන්න වගබලා ගන්න ඕනෑ. ඒ pin මොනවාද කියලා දැන ගන්න IC datasheet එකේ තියෙන PORT function multiplexing කියන වගුව බලන්න. පහතින් පෙන්වා තියෙන්නේ ATtiny1614 IC එකේ වගුවයි.
- තමාගේම output එක input එකක් ලෙස තෝරාගන්න පුළුවන්. එවිට FEEDBACK එකක් ලෙස හඳුන්වනවා. මේ විදිහට භාවිතා කරන්න නම් Sequential logic gate එක හරහා output එක ගෙන්වාගත යුතුවෙනවා. පහත රූපයේ පෙන්වා ඇත්තේ FEEDBACK භාවිතා වෙන ආකාරයයි.
- අනිත් LUT එකේ output එක තමාගේ input එකක් ලෙස භාවිතා කරන්න පුළුවන්. එවිට LINK එකක් ලෙසට හඳුන්වනවා. පහත රූපයේ පෙන්වා ඇත්තේ එවැනි අවස්ථාවක්.
- EVENT0 සහ EVENT1 කියන event එකක් හෝ TCB0, TCB1, TCA0, TCD0, SPI0, AC0, AC1 සහ AC2 වැනි අනිත් අවයව වල ප්රතිදානයන් LUT එකේ input එක ලෙස තෝරාගන්න පුළුවන්. මේ වර්ගයේ input භාවිතා කලොත් වෙනත් අවයවත් එක්ක සහයෝගයෙන් වැඩ කරන සංකීර්ණ logic පරිපථ සාදා ගන්න පුළුවන්. උදා :- TCA0 භාවිතා කලොත් සැම 10ms (හෝ අභිමත කාලයකට) වාරයක් පාඩමේ මුලින්ම සඳහන් කරපු උදාහරණයේ බොත්තම් 2ම “1” නම් පමණක් අදාළ output එක “1” කරන්න පුළුවන්.
- අවශ්යය නම් input තුනෙන් ඔබට කැමති ඒවා disable කරන්නත් පුළුවන්. මෙය හඳුන්වන්නේ MASK නමින්. MASK කලවිට අදාළ input එක නොසලකා හරිනවා.
Programmable logic ගැන තේරුම් කරද්දී මම කිව්වා අපිට අවශ්ය boolean ප්රකාශන වලට logic output සකසන්න register එකක් සහ multiplexer පරිපථයක් භාවිතා කරන වග. අංක 02න් පෙන්වලා තියෙන්නේ එම logic output එක සකසන කොටසයි. මෙහි ඇති TRUTH0 register එකට අපි ලබාදෙන අගය අනුව තමා output boolean ප්රකාශනය නිර්මාණය වෙන්නේ. Input සහ TRUTH0 register එකේ bit අතර සම්බන්ධය පහත වගුවේ පෙන්වලා තියෙනවා.
අංක 03 කොටසෙන් පෙන්වලා තියෙන්නේ Filter පරිපථයයි. Noise නිසා ඇතිවිය හැකි input වල ක්ෂණික අනවශ්ය වෙනස්වීම් output එකට ඍජුවම බලපානවා. අපිට පුළුවන් ඒවා මේ filter එක භාවිතා කර මගහරවා ගන්න. මෙහිදී කරන්නේ කුඩා කාලයක් ඇතුලත වෙන්න පුළුවන් output දොලනයන් මකා දමන එක. LUT0CTRLA register එකේ තියෙන FILTSEL[1:0] කියන bit වලින් තමා මෙය පාලනය කරන්නේ. මේ ක්රියාවලියට අවශ්ය clock signal සැපයෙන්න LUT0CTRLA වල CLKSRC කියන bit එකෙන් ඔබ තෝරගන්න clock source එක. එනම් CLK_PER කියන peripheral clock source හෝ IN[2] ඔස්සේ ලබා දෙන input එක යන දෙකෙන් එකක් පමණයි. පසෙකින් දැක්වෙන්නේ Filter පරිපථයේ අභ්යන්තර ව්යුහයයි.
අංක 04න් පෙන්වලා තියෙන්නේ edge detect කරන පරිපථය. ඔබ නිර්මාණය කරන පරිපථයට logic output වල “1” සිට “0” (Falling edge) හෝ “0” සිට “1” (Rising edge) වෙනස්කම් හඳුනා ගන්න අවශ්යය නම් මේ කොටස සක්රිය කරලා භාවිතා කරන්න පුළුවන්. මේ සඳහා භාවිතා කරන්නේ LUT0CTRLA register එකේ තියෙන EDGEDET කියන bit එක. පසෙකින් දැක්වෙන්නේ Filter පරිපථයේ අභ්යන්තර ව්යුහයයි.
Sequential Logic Block තේරුම් ගනිමු.
CCL වල දෙවන ප්රධාන කොටස වෙන්නේ මේ Sequential Logic block (SEQ) එක. LUT වලින් නිර්මාණය කරන logic output එකට තවත් වෙනස්කම් කරන්න මේ කොටසට පුළුවන්. උදාහරනයක් ලෙස අවසාන output එක LUT0 සහ LUT1 දෙකේ සංයෝජනයක් කරන්න පුළුවන්. අපිගේ අවශ්යතාව අනුව SEQට ක්රියා කරන්න පුළුවන් ආකාර කීපයක් තියෙනවා. එය පාලනය කරන්නේ SEQCTRL0 register මගින්. පහත සටහන් වල පෙන්වා තියෙන්නේ එම සැකසුම් කීපයයි. මෙහි even LUT/odd LUT ලෙස පෙන්වා ඇත්තේ පිළිවලින් LUT0 සහ LUT1 වල output දෙකයි.
D Flip-Flop ලෙස ක්රියා කරන්න සකස් කර ඇති අයුරු.
JK Flop-Flop ලෙස ක්රියා කරන්න සකස් කර ඇති අයුරු.
Gated D latch ලෙස ක්රියා කරන්න සකස් කර ඇති අයුරු.
Gated RS latch ලෙස ක්රියා කරන්න සකස් කර ඇති අයුරු.
ඔබ මේ වෙනකොට CCL වල දැනගන්න ඕනෑ කරන මුලික දේවල් ඉගෙන ගෙන ඉවරයි. දැන් අපි ප්රයෝගික ක්රියාකාරකම් කීපයක් කරලා CCL ප්රයෝජනයට ගන්න හැටි අත්හදා බලමු.
Project 01 : CCL භාවිතා කර XOR gate එකක් සදා ගමු.
<මෙම කොටස තවම සාදමින් පවතී>
Hardware එක නිර්මාණය කිරීම.
<මෙම කොටස තවම සාදමින් පවතී>
Firmware එක නිර්මාණය කිරීම.
සකසමින් පවතී
Project 02 : CCL අවයවය TCA සමඟ සම්බන්ධ කර alarm system එකක් නිර්මාණය කරමු.
<මෙම කොටස තවම සාදමින් පවතී>
Hardware එක නිර්මාණය කිරීම.
<මෙම කොටස තවම සාදමින් පවතී>
Firmware එක නිර්මාණය කිරීම.
සකසමින් පවතී
Great work godaaaak watina wedak godaaaak isthuthi me karana puda sath karayata