Мазмұны:

Arduino арзан FPGA тақтасы ретінде: 5 қадам (суреттермен)
Arduino арзан FPGA тақтасы ретінде: 5 қадам (суреттермен)

Бейне: Arduino арзан FPGA тақтасы ретінде: 5 қадам (суреттермен)

Бейне: Arduino арзан FPGA тақтасы ретінде: 5 қадам (суреттермен)
Бейне: [Audio Fixed] Robojax Arduino Course: What is Arduino? Lesson 00 2024, Қараша
Anonim
Arduino FPGA арзан тақтасы ретінде
Arduino FPGA арзан тақтасы ретінде

Аппараттық логикалық схемаларды жобалау қызықты болуы мүмкін. Ескі мектептегі әдіс - бұл NAND қақпалары, нан тақтасында, секіргіш сымдармен бекітілген. Бұл әлі де мүмкін, бірақ қақпалар саны қолынан шыққанша көп уақыт қажет емес. Жаңа нұсқа - FPGA (далалық бағдарламаланатын шлюз массиві). Бұл чиптер сіз жасай алатын кез келген цифрлық логикалық схемаға айналуы мүмкін, бірақ олар арзан емес. Мен бұл FPGA -ны Arduino UNO арзан Atmega чипімен қалай алмастыруға болатынын көрсетемін, бұл цифрлық схеманы DIP пакетіне тиімді түрде енгізеді, ол нанға өте ыңғайлы.

1 -қадам: «FPGA» ұсынатын схеманы жасаңыз

Бұл тізбекті жобалаңыз
Бұл тізбекті жобалаңыз
Бұл тізбекті жобалаңыз
Бұл тізбекті жобалаңыз
Бұл тізбекті жобалаңыз
Бұл тізбекті жобалаңыз

Мен 2 биттік + 2 биттік қосқыш құрамын. Ол логикалық кіріс түйреуіштерінің екі жұбын алады және шығыс түйреуіштердің бір триплетін шығарады.

NAND қақпаларымен мұны істеу үшін суреттегі схеманы қараңыз. Оған 14 NAND қақпасы қажет. Мен 4 квадрат NAND қақпасы TTL чиптерін қолдандым және оларды нан тақтасына жалғадым.

Мен кіріс және шығыс түйреуіштері қосылған кезде (жоғары) және өшірілгенде (төмен) көрсету үшін кейбір светодиодтарды (ағымдағы шектеу резисторларын ұмытпаңыз) қостым. Кіріс түйреуіштерді қозғау үшін мен оларды жердегі рельске немесе оң қуат рельсіне қостым.

Бұл схема жұмыс істейді, бірақ ол 4 TTL чипін алады және егеуқұйрықтың сым ұясы болып табылады. Егер көбірек бит қажет болса, онда нан тақталары мен секіргіштер көп болар еді. Өте тез тізбектің өлшемі қолдан шығып кетеді.

Ескерту, TTL қақпаларымен жұмыс кезінде олар күткендей дәл 0В немесе 5В шығармайды. Олар көбінесе «жоғары» үшін 3В шамасында шығарады, бірақ дәл кернеу өте кең диапазонда. CMOS эквивалентті микросхемаларын қолданатын сол тізбекте дәл 0В -тан 5В -қа дейінгі бұрылыстар жақсы болар еді.

2 -қадам: FPGA енгізіңіз

FPGA енгізіңіз
FPGA енгізіңіз
FPGA енгізіңіз
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 кіретін қақпасынан әлдеқайда қабілетті.

Мен 4 кіріс қарағай мен 3 шығыс түйреуіштерді сәйкесінше 91, 90, 88, 87, 81, 80 және 79 физикалық түйреуіштерге тағайындауға тура келді. Бұл fpga микросхемасына және оның ажырату тақтасына және бұл түйреуіштердің PMOD портына қалай қосылғанына тән. Бұл FPGA тақтасының деректер кестесінде қол жетімді.

Тор Verilog -дан тізбектерді синтездеу үшін (процессорлар үшін компиляцияға FPGA эквиваленті) өздерінің құралдар тізбегін ұсынады, бірақ мен ақысыз құралдар тізбегінің icestorm -ды қолдандым (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 -дан Arduino -ға дейін
FPGA -дан Arduino -ға дейін

FPGA -лар өте жақсы, бірақ қымбат болуы мүмкін, келуі қиын және нанға өте ыңғайлы емес. Нанға ыңғайлы және арзан чип Atmega 328 P болып табылады, ол DIP пакетімен келеді, ол нан пісіруге өте ыңғайлы. Оны шамамен 4 долларға алуға болады. Бұл Arduino UNO -ның жүрегі. Сіз, әрине, БҰҰ -ның барлығын қолдана аласыз, бірақ арзан болыңыз, біз Atmega 328 P -ті БҰҰ -дан шығарып, оны өзіміз қолдана аламыз. Мен БҰҰ тақтасын Atmega бағдарламашысы ретінде қолдандым.

Бұл кезде сізге қажет болады

1. Arduino UNO, алынбалы Atmega 328P процессоры бар.

2. Arduino жүктеушісі бар басқа Atmega 328P, біз БҰҰ-дан шығарғалы отырғанның орнына. (Егер сіз әлі де қолдануға болатын БҰҰ алғыңыз келсе).

Мақсат - верилог файлын 328P жүктеуге болатын arduino жобасына түрлендіру. Arduino C ++ - ке негізделген. Verilog -дан C ++ тіліне Verilator деп аталатын аудармашы ыңғайлы (https://www.veripool.org/wiki/verilator). Вериляторды қондырғыларды қымбат қондырғыларға жасамас бұрын модельдеуді қажет ететін аппараттық дизайнерлер қолдануға арналған. Verilator cross верилогты C ++ тіліне құрастырады, содан кейін пайдаланушы имитацияланған кіріс сигналдарын беру және шығыс сигналдарын жазу үшін тестілік қондырғы береді. Біз оны Arduino құралдар тізбегінің көмегімен верилог дизайнын Atmega 328P -ге жабу үшін қолданамыз.

Алдымен Verilator орнатыңыз. Https://www.veripool.org/projects/verilator/wiki/I… мекенжайындағы нұсқауларды орындаңыз.

Сонымен қатар Arduino IDE орнатыңыз және Arduino UNO -ға USB арқылы қосылуға болатынын тексеріңіз.

Біз 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 эскиздер каталогында екіBitAdder деп аталатын жаңа каталогта жасайды. VtwoBitAdder.h және VtwoBitAdder.cpp файлдарын Arduino қалтасындағы осы екіBitAdder қалтасына көшіріңіз.

Енді тақырып файлдарын верилятор қондырғысынан көшіріңіз.

cp/usr/local/share/verilator/include/verilated*.

соңында std c ++ кітапханасына https://github.com/maniacbug/StandardCplusplus сайтынан көшіріңіз. Орнату нұсқаулары бойынша «Бұл кәдімгі Arduino кітапханасы сияқты орнатылған. Дистрибутив мазмұнын эскиз кітабының астындағы» кітапханалар «қалтасына салыңыз. Мысалы, менің эскиз кітабым/home/maniacbug/Source/Arduino -да орналасқан, сондықтан бұл кітапхана /home/maniacbug/Source/Arduino/library/StandardCplusplus ішінде.

Arduino IDE орнатқаннан кейін оны қалпына келтіруді ұмытпаңыз. »

Енді twoBitAdder.ino мазмұнын осы қадамда берілген мазмұнмен ауыстырыңыз. Бұл кірістіру/шығару түйреуіштерін орнататын, содан кейін циклде кіру түйреуіштерін оқитын, оларды VtwoBitAdder -ге (біздің схеманың аударылған нұсқасы) беретін, содан кейін VtwoBitAdder шығысын оқитын және қолданатын верилятор күтетін сынақ қондырғысы. оларды шығыс түйреуіштерге бекітеді.

Бұл бағдарлама Arduino UNO -да жинақталуы және орындалуы керек.

4 -қадам: Arduino -дан нан тақтасындағы DIP чипіне дейін

Ардуинодан нан тақтасындағы DIP чипіне дейін
Ардуинодан нан тақтасындағы DIP чипіне дейін

Енді бағдарлама Arduino -да жұмыс істейтіндіктен, бізге енді Arduino тақтасының қажеті жоқ. Бізге тек CPU қажет.

Atmega 328P Arduino UNO розеткасынан абайлап алып тастаңыз және оны алмастырыңыз.

Atmega 328P тақтасына салыңыз. Нанды тақтаға жоғары қаратып, нүктені қойыңыз. 1 -түйреуіш - жоғарғы сол жақ түйреуіш. 2 -ші түйреуіш - келесі төмен, сол жақ төменгі жағында орналасқан 14 -ші түйреуіш. Содан кейін 15 -штырь төменгі оң жақта, ал 16 -дан 28 -ге дейінгі түйреуіштер чиптің оң жағына қарай есептеледі.

8 және 22 түйреуіштерді жерге қосыңыз.

7 -істікшені VCC -ке (+5В) қосыңыз.

9 мен 10 түйреуіштерінің арасына 16 МГц кварц кристалын қосыңыз. Сонымен қатар, түйреуіш 9 мен жер арасындағы, ал түйреуіш 10 мен жер арасындағы шағын конденсатор (22pF). Бұл Atmega 328P -ке 16 МГц жиілік жылдамдығын береді. Басқа жерде 328P -ге өзінің ішкі 8 МГц сағатын қолдануға үйрету туралы нұсқаулар бар, бұл екі бөлікті үнемдеуге мүмкіндік береді, бірақ бұл процессордың жұмысын баяулатады.

Біз кіріс түйреуіштер үшін қолданған Arduino GPIO порттары 5, 6, 7 және 8 - бұл шын мәнінде Atmega 328P 11, 12, 13, 14 физикалық түйреуіштері. Бұл сол жақтағы төменгі төрт түйреуіш болар еді.

Біз шығыс түйреуіштер үшін қолданған Arduino GPIO 11, 10 және 9 порттары - бұл шын мәнінде Atmega 328P 17, 16, 15 физикалық түйреуіштері. Бұл оң жақтағы төменгі үш түйреуіш болар еді.

Мен светодиодтарды бұрынғыдай осы түйреуіштерге жалғадым.

5 -қадам: Қорытынды

Қорытынды
Қорытынды

TTL чиптері жұмыс істейді, бірақ кез келген нәрсені жасау үшін көп қажет. FPGA -лар өте жақсы жұмыс істейді, бірақ арзан емес. Егер сіз аз IO түйреуіштерімен және төмен жылдамдықпен өмір сүре алсаңыз, онда Atmega 328P сізге чип болуы мүмкін.

Есте сақтау керек кейбір нәрселер:

FPGA:

Pro

- жоғары жылдамдықтағы сигналдарды басқара алады. Бір уақытта бір нұсқаулыққа дейін жұмыс істеуге кедергі келтіретін процессор болмағандықтан, шектеуші фактор - берілген тізбектегі қақпалар арқылы таралу кідірісі. Көптеген жағдайларда бұл чиппен қамтамасыз етілген сағаттан әлдеқайда жылдам болуы мүмкін. Менің дизайным үшін есептелген кідіріс екіBitAdder-ге борттық сағат 12 МГц кристал болса да, секундына (100 МГц) кіріс мәндерінің шамамен 100 миллион өзгеруіне жауап беруге мүмкіндік береді.

- Дизайн күрделенген сайын қолданыстағы тізбектердің өнімділігі төмендемейді (көп). Матаға схемалар қосу-бұл пайдаланылмаған жылжымайтын мүлікке жаңа нәрсе енгізу, бұл қолданыстағы схемаға әсер етпейді.

- FPGA -ға байланысты, қол жетімді IO түйреуіштерінің саны өте көп болуы мүмкін және олар әдетте белгілі бір мақсатқа бекітілмеген.

Кон

- Қымбат және/немесе келу қиын болуы мүмкін.

- Әдетте кез -келген әуесқойлық жобада чиппен жұмыс істеу үшін сынғыш тақтаны қажет ететін BGA пакеті келеді. Егер сіз оны көп қабатты SMT ПХД бар дизайнға айналдырсаңыз, бұл мәселе емес.

- FPGA өндірушілерінің көпшілігі өздерінің жабық бастапқы бағдарламалық жасақтамасын ұсынады, олар кейбір жағдайларда ақшаға немесе лицензияның жарамдылық мерзіміне ие болуы мүмкін.

Arduino FPGA ретінде:

Pro

- Арзан, әрі алу оңай. Amazon-да atmega328p-pu іздеңіз. Олар шамамен 4 доллар болуы керек. Бірнеше сатушылар оларды 3 немесе 4 лотпен сатады.

- Бұл DIP пакеті, яғни сыртқы түйреуіштері бар тақтаға жақсы сәйкес келеді.

- Бұл 5В құрылғысы, ол басқа 5В құрылғылармен өзара әрекеттесуді жеңілдетеді.

Кон

- ATMEGA328P -де IO түйреуіштерінің саны шектеулі (23), және олардың кейбіреулері нақты тапсырмалар үшін сақталған.

- Тізбек күрделілігі артқан сайын Arduino цикл әдісінде орындалатын код көлемі артады, яғни әрбір циклдің ұзақтығы ұзағырақ болады.

- Тізбектің күрделілігі төмен болса да, әрбір цикл кіріс нүктесінің мәндерін алу, шығыс түйреуішінің мәндерін жазу және циклдің жоғарғы жағына оралу үшін көптеген процессорлық нұсқауларды қажет етеді. 16 МГц кристаллымен, тіпті сағаттық цикл үшін бір нұсқаулықта да, цикл секундына 1 миллион реттен (1 МГц) артық жұмыс істемейді. Әуесқой электроника жобаларының көпшілігі үшін бұл қажет болғаннан тезірек.

Ұсынылған: