Мазмуну:
- 1 -кадам: "FPGA" көрсөтө турган схеманы долбоорлоо
- 2 -кадам: FPGAга кирүү
- 3 -кадам: FPGAдан Arduinoго
- 4 -кадам: Arduinoдон DIP Chipге нан тактасында
- 5 -кадам: Жыйынтык
Video: Arduino арзан нанды FPGA катары: 5 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
Аппараттык логикалык схемаларды долбоорлоо кызыктуу болушу мүмкүн. Муну мектептин эски жолу NAND дарбазалары менен, нан тактасында, секирүүчү зымдар менен зым менен жабылган. Бул дагы деле мүмкүн, бирок дарбазалардын саны колго тийгенге чейин көп нерсе талап кылынбайт. Жаңы вариант - FPGA (Field Programmable Gate Array) колдонуу. Бул чиптер сиз ойлогон каалаган санариптик логикалык схемага айланып кетиши мүмкүн, бирок арзан жана жеткиликтүү эмес. Мен бул FPGAны Arduino UNOнун арзан Atmega чипине кантип алмаштырууга болорун көрсөтөм, бул санариптик схеманы DIP пакетине эффективдүү киргизет, бул абдан нанга ылайыктуу.
1 -кадам: "FPGA" көрсөтө турган схеманы долбоорлоо
Мен 2 бит + 2 бит кошуучу курам. Бул логикалык кирүү казыктарын эки жуп алат, жана чыгаруу казыктары бир триплет чыгарат.
Бул үчүн NAND дарбазасы менен иштөө үчүн сүрөттөгү схеманы караңыз. Ага 14 NAND дарбазасы керек. Мен 4 квадрат NAND дарбазасы TTL чиптерин колдонуп, аларды нан тактасына байладым.
Мен кээ бир светодиоддорду коштум (учурдагы чектөөчү резисторлорду унутпаңыз), кириш жана чыгуу казыктары качан (жогорку), качан өчкөнүн (төмөн) көрсөтүү үчүн. Кирүү казыктарын айдаш үчүн, мен аларды жер темир жолуна же оң электр темир жолуна секирдим.
Бул схема иштейт, бирок ал 4 TTL чиптерин ээлейт жана чычкандардын уясынын зымдары. Эгерде көбүрөөк бит керек болсо, анда нан табактары жана секирүүчүлөр көп болмок. Абдан тез эле схеманын өлчөмү колунан чыгып кетет.
Кошумча маалымат катары, TTL дарбазалары менен иштөөдө алар күткөндөй так 0V же 5V чыгарышпайт. Алар көп учурда "жогорку" үчүн 3V тегерегинде чыгарышат, бирок так чыңалуу абдан кеңири диапазондо. Ошол эле схема CMOS эквивалент чиптерин колдонуп, так 0Vдан 5Vга чейин жакшыраак болмок.
2 -кадам: FPGAга кирүү
FPGA - бул фантастикалык чип, ал кандайдыр бир комбинацияда бириктирилген логикалык дарбазалардын айкалышына айлана алат. Бирөө "схеманы" аппараттык дизайн тилинде (HDL) иштеп чыгат. Мындай тилдер көп, алардын бири Verilog деп аталат. Сүрөттөгү.v файлы Verilog эквиваленти болуп саналат. Төмөндөгү.pch файлы верилог файлында аталган кирүү жана чыгуу казыктарын чиптеги чыныгы аппараттык казыктарга дайындоо үчүн дагы керек.
Бул учурда мен торчолордун жарым өткөргүчтөрүнүн iCEstick өнүктүрүү тактасын колдонуп жатам (https://www.latticesemi.com/icestick). Чыныгы FPGA чипи-бул iCE40HX-1k, 1000ден ашык дарбазасы бар, алардын ар бири логикалык дарбаза боло алат. Бул ар бир дарбаза NAND дарбазасы же OR дарбазасы, дарбаза эмес, NOR, XOR ж.б. болушу мүмкүн дегенди билдирет. Бул ар бир өндүрүүчүгө мүнөздүү, бирок iCE40тын ар бир дарбазасы 4 кирүүнү башкара алат. Ошентип, ар бир дарбаза NAND 2 дарбазасына караганда алда канча жөндөмдүү.
Мен тийиштүү түрдө 91, 90, 88, 87, 81, 80 жана 79 физикалык казыктарга 4 кире карагайды жана 3 чыгуучу казыкты дайындоого туура келди. Бул fpga чипине жана анын үстүндөгү сынык тактасына жана ал казыктар PMOD портуна кантип туташканына мүнөздүү. Бул FPGA тактасынын маалымат барагында жеткиликтүү.
Lattice Verilogдан схемаларды синтездөө үчүн (CPUлар үчүн компиляцияга барабар FPGA) камсыз кылат, бирок мен бекер ачык булак куралы чынжыры музун колдондум (https://www.clifford.at/icestorm/). Орнотуу көрсөтмөлөрү ошол сайтта жеткиликтүү. Icestorm орнотулганда, жана верилогдо жана pcf файлында, бул схеманы FPGAга жүктөө буйруктары:
yosys -p "synth_ice40 -blif twoBitAdder.v" twoBitAdder.blif
arachne -pnr -d 1k -p iCEstick.pcf twoBitAdder.blif -o twoBitAdder.asc
icepack twoBitAdder.asc twoBitAdder.bin
iceprog twoBitAdder.bin
Бул сонун иштейт, бирок бул iCEstickти жеткирүүнү кошкондо болжол менен 30 доллар турат. Бул санариптик схеманы куруунун эң арзан жолу эмес, бирок ал күчтүү. Анын 1000ден ашык дарбазасы бар жана бул кичинекей схема үчүн ал алардын 3үн гана колдонот. NAND дарбазасынын эквиваленти 14 дарбазаны колдонгон. Бул ар бир дарбаза ар кандай дарбаза болуп калышы мүмкүн экендигине байланыштуу жана ар бир дарбаза чындыгында 4 кирүүчү дарбаза. Ар бир дарбаза дагы көп нерсени кыла алат. Эгер сизге көбүрөөк дарбаза керек болсо, iCEstickтин 8000 дарбазасы бар чоңураак бир тууганы бар, анын баасы эки эсе кымбат. Башка өндүрүүчүлөрдүн башка сунуштары бар, бирок баасы кыйла кескин көтөрүлүшү мүмкүн.
3 -кадам: FPGAдан Arduinoго
FPGAлар сонун, бирок кымбат болушу мүмкүн, келиши кыйын жана нанга ылайыктуу эмес. Нан үчүн ыңгайлуу жана арзан чип - бул Atmega 328 P, ал тыкан DIP пакетинде келет, нан бышыруу үчүн идеалдуу. Аны болжол менен 4 долларга чейин сатып алса болот. Бул Arduino UNOнун жүрөгү. Сиз, албетте, бүткүл БУУну колдоно аласыз, бирок арзан болсоңуз, биз Атмега 328 Рди БУУдан сууруп алып, өзүбүз колдоно алабыз. Мен БУУнун кеңешин Атмега программисти катары колдондум.
Бул учурда сизге керек болот
1. An Arduino UNO, алынуучу Atmega 328P CPU менен.
2. Дагы бир Atmega 328P, Arduino жүктөгүчү менен, биз БУУдан чыгарабыз деп жатканынын ордуна. (Сиз дагы эле колдонууга жарамдуу БУУга ээ болгуңуз келсе).
Максаты - верилог файлын 328Pге жүктөлүүчү arduino долбооруна айландыруу. Arduino C ++ негизделген. Ыңгайлуу түрдө Verilogдан C ++ га котормочу бар, Verilator (https://www.veripool.org/wiki/verilator). Verilator, бул дизайнды кымбат жабдыктарга жасоодон мурун, алардын дизайнын окшоштурушу керек болгон аппараттык дизайнерлер тарабынан колдонууга арналган. Verilator cross верилогду C ++ тилине түзөт, андан кийин колдонуучу симуляцияланган кирүү сигналдарын берүү жана чыгуу сигналдарын жазуу үчүн сыноо жабдыгын камсыз кылат. Биз аны Arduino инструменттер тизмегинин жардамы менен верилогдун дизайнын Atmega 328Pге киргизиш үчүн колдонобуз.
Биринчи Verilator орнотуу. Https://www.veripool.org/projects/verilator/wiki/I… дарегиндеги көрсөтмөлөрдү аткарыңыз
Ошондой эле Arduino IDE орнотуп, USB аркылуу Arduino UNOго туташа аларын текшериңиз.
Биз FPGAдагыдай верилог файлын колдонобуз, бирок казыктардын аталыштарын өзгөртүү керек. Ар биринин башына астынкы сызыкты (_) коштум. Бул керек, анткени arduino китепканаларында B0, B001 ж.б сыяктуу нерселерди экилик сандарга которгон баш файл бар. Башка киргизүү пин аттары мурдагыдай эле жакшы болмок, бирок B0 жана B1 куруунун бузулушуна алып келмек.
TwoBitAdder.v жана iCEstick.pcf камтыган каталогдо төмөнкүлөрдү аткарыңыз:
verilator -Wall --cc twoBitAdder.v
Бул бир нече жаңы файлдарды камтыган obj_dir деп аталган каталогду түзөт. Бизге баш жана cpp файлдары гана керек, VtwoBitAdder.h, VtwoBitAdder.cpp, VtwoBitAdder_Syms.h жана VtwoBitAdder_Syms.cpp.
Arduino IDEде, twoBitAdder.ino деп аталган жаңы эскиз түзүңүз. Бул ino файлын Arduino эскиздер каталогунун ичинде twoBitAdder деп аталган жаңы каталогдо түзөт. VtwoBitAdder.h жана VtwoBitAdder.cpp файлдарыңызды Arduino папкаңыздагы ушул экиBitAdder папкасына көчүрүңүз.
Эми верилятор орнотуудан баш файлдарды көчүрүңүз.
cp/usr/local/share/verilator/include/verilated*.
акыры https://github.com/maniacbug/StandardCplusplus тартып std c ++ китепканасына көчүрүңүз. Алардын орнотуу көрсөтмөлөрүнө ылайык "Бул кадимки Arduino китепканасы сыяктуу эле орнотулган. Таркатуунун мазмунун эскиз китебиңиздин астындагы" китепканалар "папкасына салып коюңуз. Мисалы, менин эскиз китебим/home/maniacbug/Source/Arduino, ошондуктан бул китепкана /home/maniacbug/Source/Arduino/library/StandardCplusplus ичинде.
Орноткондон кийин Arduino IDEди кайра орнотууну унутпаңыз."
Эми twoBitAdder.ino мазмунун бул кадамда каралганга алмаштырыңыз. Бул верилятордун күткөн сыноо түйүнү, ал кириш/чыгаруу казыктарын орнотот, анан циклда, кирүү казыктарын окуйт, аларды VtwoBitAdderге (биздин схеманын которулган версиясы) берет, андан кийин VtwoBitAdderден чыккан чыгымдарды окуйт жана колдонулат аларды чыгаруу казыктарына.
Бул программа Arduino UNO боюнча түзүлүп, аткарылышы керек.
4 -кадам: Arduinoдон DIP Chipге нан тактасында
Эми программа Arduinoдо иштеп жаткандыктан, бизге Arduino тактасынын өзү кереги жок болуп калды. Бизге болгону CPU гана керек.
Atmega 328Pти Arduino UNO розеткасынан кылдаттык менен алып салыңыз жана каалагандай алмаштырууну салыңыз.
Atmega 328Pди нан тактасына коюңуз. Дивотту нан тактасында өйдө көрсөтүп, аягына коюңуз. Pin 1 - жогорку сол жак пин. 2 -пин кийинки ылдый жакта, ошону менен сол жактын астындагы 14 -пинге. Андан кийин 15 -пин төмөнкү оң жакта, ал эми 16дан 28ге чейинки төөнөгүчтөр чиптин оң жагын кайра эсептейт.
8 жана 22 -казыктарды жерге туташтырыңыз.
7 -пинди VCCге (+5V) туташтырыңыз.
16 жана 9 кнопкалардын ортосунда 16 МГц кварц кристаллын туташтырыңыз. Ошондой эле, пин менен жердин ортосунда, жана пин менен жердин ортосунда кичинекей конденсатор (22pF). Бул Atmega 328Pке 16 МГц саат ылдамдыгын берет. Башка жерде 328Pге анын ички 8 МГц саатын колдонууну үйрөтүү боюнча көрсөтмөлөр бар, бул эки бөлүктү үнөмдөйт, бирок бул процессорду жайлатат.
Биз киргизүү казыктары үчүн колдонгон Arduino GPIO порттору 5, 6, 7 жана 8, чындыгында, физикалык казыктар 11, 12, 13, 14 Atmega 328P. Бул сол жактагы төрт түбүндөгү казык болмок.
Ардуино GPIO порттору 11, 10 жана 9, биз чыгаруучу казыктар үчүн колдонгон Atmega 328P боюнча физикалык казыктар 17, 16, 15. Бул оң жактагы эң төмөнкү үч казык болмок.
Мен LEDлерди бул казыктарга мурдагыдай эле илип койгом.
5 -кадам: Жыйынтык
TTL чиптери иштейт, бирок бир нерсени куруу үчүн көп нерсе талап кылынат. FPGAлар чындыгында жакшы иштейт, бирок арзан эмес. Эгерде сиз азыраак IO казыктары менен жана төмөн ылдамдыкта жашай алсаңыз, анда Atmega 328P сиз үчүн чип болушу мүмкүн.
Кээ бир нерселерди эстен чыгарбоо керек:
FPGA:
Pro
- Жогорку ылдамдыктагы сигналдарды башкара алат. Бир убакта бир көрсөтмөгө чейин иштөө үчүн тоскоолдук кылуучу процессор жок болгондуктан, чектөөчү фактор - бул берилген схеманын дарбазалары аркылуу таралышынын кечигиши. Көп учурларда бул чип менен камсыздалган саатка караганда алда канча ылдамыраак болушу мүмкүн. Менин дизайным үчүн, эсептелген кечигүү экиBitAdderге борттогу саат болгону 12 МГц кристалл болсо дагы, секундасына 100 миллион кирүү маанисиндеги (100 МГц) өзгөрүүлөргө жооп берүүгө мүмкүндүк бермек.
- Дизайн татаалдашкан сайын, учурдагы микросхемалардын иштеши төмөндөбөйт (көп). Анткени кездемеге микросхемаларды кошуу колдонулбай турган кыймылсыз мүлккө жаңы нерсени киргизгендиктен, ал учурдагы схемага таасир этпейт.
- FPGAга жараша, жеткиликтүү IO төөнөгүчтөрүнүн саны абдан көп болушу мүмкүн жана алар негизинен кандайдыр бир максатта бекитилген эмес.
Con
- Кымбат жана/же келип калышы мүмкүн.
- Адатта BGA пакетинде келет, ал кандайдыр бир ышкыбоздук долбоордо чип менен иштөө үчүн кандайдыр бир сынык тактасын талап кылат. Эгер сиз аны көп катмарлуу SMT ПХБ менен дизайнга айландырсаңыз, бул көйгөй эмес.
- Көпчүлүк FPGA өндүрүүчүлөрү кээ бир учурларда акча талап кылышы мүмкүн болгон жабык булак дизайн программасын камсыздашат же лицензиянын жарактуулук мөөнөтү бар.
FPGA катары Arduino:
Pro
- Арзан жана алуу оңой. Жөн гана Amazon боюнча atmega328p-pu издеңиз. Алар болжол менен $ 4/даана болушу керек. Бир нече сатуучулар аларды 3 же 4 лот менен сатышат.
- Бул DIP пакети, анын мааниси сырткы казыктары менен нан тактайына туура келет.
- Бул 5В түзмөк, ал башка 5В түзмөктөр менен иштөөнү жеңилдетет.
Con
- ATMEGA328P чектелген сандагы IO казыктарына ээ (23), жана алардын бир нечеси конкреттүү тапшырмалар үчүн корголгон.
- Райондун татаалдыгы жогорулаган сайын, Arduino цикл ыкмасы менен иштеген коддун көлөмү көбөйөт, башкача айтканда, ар бир циклдин узактыгы узагыраак болот.
- Райондун татаалдыгы төмөн болсо дагы, ар бир цикл кирүү пининин маанилерин алуу үчүн көптөгөн CPU көрсөтмөлөрүн талап кылат жана чыгаруу пиндин маанилерин жазат жана укуруктун башына кайтып келет. 16 МГц кристаллы менен, ал тургай саат циклине бир гана көрсөтмө менен, цикл секундасына 1 миллион эседен ашык иштебейт (1МГц). Көпчүлүк ышкыбоздук электроника долбоорлору үчүн, бул керектүүдөн тезирээк.
Сунушталууда:
Ардуино ISP катары -- AVRде Hex файлын жазуу -- AVRдеги сактандыруучу -- Ардуино программист катары: 10 кадам
Ардуино ISP катары || AVRде Hex файлын жазуу || AVRдеги сактандыруучу || Ардуино программист катары: ……………………… Сураныч, дагы видеолор үчүн менин YouTube каналыма ЖАЗЫЛЫҢЫЗ …….. Бул макала isp сыяктуу ардуино жөнүндө. Эгерде сиз он алтылык файлды жүктөгүңүз келсе же AVRде сактандыргычты орноткуңуз келсе, анда программистти сатып алуунун кажети жок, сиз жасай аласыз
Stepper мотору менен башкарылуучу локомотив модели - Ротари Encoder катары Step Motor: 11 кадам (Сүрөттөр менен)
Stepper мотору менен башкарылуучу локомотив модели | Stepper мотору ротациялык кодер катары: Мурунку көрсөтмөлөрдүн биринде, биз тепкичтүү моторду айлануучу коддогуч катары кантип колдонууну үйрөндүк. Бул долбоордо биз азыр Arduino микроконтроллерин колдонуп, тепловоздун моделин башкаруу үчүн ошол тепкичтүү мотор айлануучу коддогучту колдонобуз. Ошентип, фу жок
Кантип Ланктагы Нанды Тактаны Азайтса болот.: 7 кадам
Кантип нан бышыруучу тактаны кантип жасоо керек: Мен электрониканы хобби катары жакшы көргөн баламын. Өзүңүздүн нан тактаңызды жасап, комментарий жазыңыз, дагы сонун нерселер үчүн мени ээрчиңиз. Издөө: oluwadimimu342
PSPди компьютердик джойстик катары колдонуу жана компьютериңизди PSP менен башкаруу: 5 кадам (сүрөттөр менен)
PSPди компьютердик джойстик катары колдонуу жана андан кийин компьютериңизди PSP менен башкаруу: Сиз PSP homebrew менен көптөгөн сонун нерселерди жасай аласыз, жана бул нускамада мен сизге PSPти оюндарды ойноо үчүн джойстик катары кантип колдонууну үйрөтөм. джойстикти чычкан катары колдонууга мүмкүнчүлүк берген программа. Мына апа
Шамдарды сенсор катары колдонуп, Wiimoteту компьютердик чычкан катары кантип колдонуу керек?: 3 кадам
Шамдарды сенсор катары колдонуп, Wiimoteту компьютердик чычкан катары кантип колдонуу керек !!: Бул колдонмо Wii Remote (Wiimote) компьютериңизге кантип туташтырып, чычкан катары колдонууну көрсөтөт