Cov txheej txheem:

Arduino Raws Li Tus Nqi Nqis Nqis FPGA Pheej Yig: 5 Kauj Ruam (nrog Duab)
Arduino Raws Li Tus Nqi Nqis Nqis FPGA Pheej Yig: 5 Kauj Ruam (nrog Duab)

Video: Arduino Raws Li Tus Nqi Nqis Nqis FPGA Pheej Yig: 5 Kauj Ruam (nrog Duab)

Video: Arduino Raws Li Tus Nqi Nqis Nqis FPGA Pheej Yig: 5 Kauj Ruam (nrog Duab)
Video: Yasmi - Hlub Los Ntev (Official Music Video) 2024, Kaum ib hlis
Anonim
Arduino Raws li pheej yig Breadboard FPGA
Arduino Raws li pheej yig Breadboard FPGA

Tsim cov cuab yeej siv logic circuits tuaj yeem lom zem. Txoj kev tsev kawm ntawv qub los ua qhov no yog nrog NAND rooj vag, ntawm lub rooj mov ci, xaim xaim xaim xaim. Qhov no tseem tuaj yeem ua tau, tab sis nws tsis siv sijhawm ntau ua ntej tus naj npawb ntawm cov rooj vag tawm ntawm txhais tes. Qhov kev xaiv tshiab dua yog siv FPGA (Qhov Chaw Ua Haujlwm Qhov Rooj Qhov Rooj). Cov chips no tuaj yeem rov ua lawv tus kheej los ua ib qho digital logic Circuit uas koj tuaj yeem tsim, tab sis tsis pheej yig thiab npaj tau. Kuv yuav qhia yuav ua li cas FPGA no tuaj yeem hloov pauv nrog pheej yig Atmega nti los ntawm Arduino UNO, ua kom muaj txiaj ntsig zoo tso rau hauv digital Circuit rau hauv DIP pob, uas yog cov phooj ywg zoo heev.

Kauj Ruam 1: Tsim Circuit Court uas "FPGA" Yuav Sawv Cev

Tsim Circuit Court uas
Tsim Circuit Court uas
Tsim Circuit Court uas
Tsim Circuit Court uas
Tsim Circuit Court uas
Tsim Circuit Court uas

Kuv yuav tsim 2 ntsis + 2 ntsis ntxiv. Nws yuav siv ob khub ntawm cov logic nkag pins, thiab tso tawm ib triplett ntawm cov pins tso tawm.

Txhawm rau ua qhov no nrog NAND rooj vag, saib cov duab hauv daim duab. Nws xav tau 14 NAND rooj vag. Kuv siv 4 quad NAND rooj vag TTL chips, thiab txuas lawv rau ntawm lub rooj mov ci.

Kuv ntxiv qee qhov LEDs (tsis txhob hnov qab cov kev txwv tam sim no) los qhia thaum cov tswv yim thiab cov pins tawm ntawm (siab), thiab thaum lawv tawm (qis). Txhawm rau tsav cov pins nkag, Kuv tau jumpered lawv mus rau hauv av tsheb nqaj hlau lossis txoj kev tsheb nqaj hlau zoo.

Lub voj voog no ua haujlwm, tab sis nws twb tau siv 4 TTL chips, thiab yog nas lub zes ntawm cov xov hlau. Yog xav tau cov khoom ntxiv, yuav muaj cov laug cam ntau dua, thiab ntau tus dhia. Sai sai qhov loj ntawm lub Circuit Court yuav tawm ntawm tes.

Ntawm ib sab ntawv, thaum ua haujlwm nrog TTL lub rooj vag, lawv tsis tso tawm 0V lossis 5V raws li qhov xav tau. Lawv feem ntau tso tawm ib puag ncig 3V rau "siab", tab sis qhov tseeb qhov hluav taws xob nyob hauv ntau qhov dav. Tib lub voj voog siv CMOS sib npaug sib npaug yuav muaj qhov zoo dua raws nraim 0V rau 5V viav vias.

Kauj ruam 2: Nkag mus rau FPGA

Nkag mus rau FPGA
Nkag mus rau FPGA
Nkag mus rau FPGA
Nkag mus rau FPGA

FPGA yog qhov nti zoo kawg nkaus, uas tuaj yeem dhau los ua ib qho kev sib xyaw ntawm cov rooj vag logic, txuas ua ke hauv ib qho kev sib xyaw. Ib tus tsim "Circuit" hauv cov lus tsim kho vajtse (HDL). Muaj ntau hom lus zoo li no, ib qho yog hu ua Verilog. Cov ntaub ntawv.v hauv daim duab yog Verilog sib npaug ntawm ob qhov ntxiv me ntsis. Cov ntaub ntawv.pch hauv qab no nws tseem xav tau los muab cov tswv yim thiab tso tawm pins npe hauv cov ntaub ntawv verilog rau cov cuab yeej kho vajtse tiag tiag ntawm lub nti.

Hauv qhov no kuv tab tom siv Lattice Semiconductors iCEstick development board (https://www.latticesemi.com/icestick). Qhov tseeb FPGA nti yog iCE40HX-1k, nrog me ntsis dhau 1000 lub rooj vag, uas txhua tus tuaj yeem dhau los ua lub qhov rooj logic. Qhov ntawd txhais tau tias txhua lub qhov rooj tuaj yeem yog NAND rooj vag, lossis LOS YOG lub qhov rooj, TSIS lub qhov rooj, NOR, XOR, thiab lwm yam Ntxiv rau txhua lub rooj vag tuaj yeem ua haujlwm ntau dua ob qhov kev nkag. Qhov no yog qhov tshwj xeeb rau txhua lub chaw tsim khoom, tab sis ntawm iCE40's txhua lub qhov rooj tuaj yeem lis 4 lub tswv yim. Yog li txhua lub rooj vag muaj peev xwm ntau dua li 2 lub tswv yim NAND rooj vag.

Kuv yuav tsum tau muab 4 tus ntoo thuv thiab 3 tus pin tso rau lub cev pins 91, 90, 88, 87, 81, 80, thiab 79 feem. Qhov no tshwj xeeb rau fpga nti thiab pawg thawj coj tawg nws nyob, thiab yuav ua li cas cov pins txuas rau PMOD chaw nres nkoj. Qhov no muaj nyob hauv cov ntaub ntawv teev tseg rau pawg FPGA no.

Lattice muab lawv tus kheej cov cuab yeej sib txuas los sib sau ua ke (FPGA sib npaug rau kev muab tso ua ke rau CPUs) cov khoom siv los ntawm Verilog, tab sis kuv siv qhov qhib dawb qhov cuab yeej saw icestorm (https://www.clifford.at/icestorm/). Cov lus qhia teeb tsa muaj nyob ntawm qhov chaw ntawd. Nrog icestorm teeb tsa, thiab cov ntaub ntawv verilog thiab pcf, cov lus txib kom thauj khoom lub Circuit Court mus rau FPGA yog:

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

Qhov no ua haujlwm zoo, tab sis suav nrog kev xa khoom iCEstick no yuav raug nqi txog $ 30. Qhov no tsis yog txoj hauv kev pheej yig tshaj plaws los tsim digital Circuit, tab sis Nws muaj zog heev. Nws muaj ntau dua 1000 lub rooj vag thiab rau lub voj voog me me no nws tsuas yog siv 3 ntawm lawv. NAND rooj sib npaug sib npaug siv 14 rooj vag. Qhov no yog vim qhov tseeb tias txhua lub rooj vag tuaj yeem dhau los ua txhua lub qhov rooj, thiab txhua lub qhov rooj yeej yog 4 lub qhov rooj nkag. Txhua lub rooj vag tuaj yeem ua tau ntau dua. Yog tias koj xav tau ntau lub rooj vag, iCEstick muaj tus tij laug loj nrog 8000 lub rooj vag, uas raug nqi li ob npaug. Lwm cov tuam ntxhab muaj lwm cov khoom tab sis tus nqi tuaj yeem tau ntxhab heev.

Kauj Ruam 3: Los ntawm FPGA mus rau Arduino

Los ntawm FPGA rau Arduino
Los ntawm FPGA rau Arduino

FPGAs yog qhov zoo, tab sis tuaj yeem kim, nyuaj los ntawm, thiab tsis yog lub khob cij zoo heev. Cov qhob cij ua phooj ywg thiab pheej yig nti yog Atmega 328 P, uas los hauv pob DIP zoo, zoo meej rau kev ua mov ci. Nws kuj tseem tuaj yeem muaj nyob ib puag ncig $ 4. Nov yog lub plawv ntawm Arduino UNO. Koj tuaj yeem siv tau tag nrho UNO, tab sis pheej yig, peb tuaj yeem rub Atmega 328 P tawm ntawm UNO, thiab siv nws tus kheej. Kuv tau siv UNO board ua tus programmer rau Atmega tab sis.

Txij ntawm no koj yuav xav tau

1. Ib qho Arduino UNO, nrog tshem tau Atmega 328P CPU.

2. Lwm Atmega 328P nrog Arduino bootloader pre-hlawv, los hloov qhov peb tab tom yuav tawm ntawm UNO. (Tsis xav tias koj tseem xav kom siv tau UNO).

Lub hom phiaj yog hloov cov ntaub ntawv verilog rau hauv qhov project arduino uas tuaj yeem thauj mus rau hauv 328P. Arduino yog ua raws C ++. Yooj yim muaj tus txhais lus los ntawm Verilog rau C ++, hu ua Verilator (https://www.veripool.org/wiki/verilator). Verilator yog npaj los siv los ntawm cov kws tsim khoom kho vajtse uas xav tau sim lawv cov qauv ua ntej ua cov qauv ntawd rau cov cuab yeej kim. Verilator hla suav sau cov verilog rau C ++, tom qab ntawd tus neeg siv muab cov khoom siv ntsuas los muab cov cim qhia tawm simulated thiab sau cov teeb liab tso tawm. Peb yuav siv nws los sau qhov kev tsim qauv verilog rau hauv Atmega 328P siv Arduino cov cuab yeej saw.

Ua ntej nruab Verilator. Ua raws cov lus qhia ntawm

Kuj tseem nruab Arduino IDE, thiab sim tias nws tuaj yeem txuas rau Arduino UNO hla USB.

Peb yuav siv tib cov ntaub ntawv verilog ib yam li FPGA, tshwj tsis yog tias cov npe ntawm cov koob xav tau hloov pauv. Kuv ntxiv qhov tsis txaus ntseeg (_) mus rau qhov pib ntawm txhua tus. Qhov no xav tau vim tias cov tsev qiv ntawv arduino suav nrog cov ntawv header uas txhais cov khoom zoo li B0, B001, thiab lwm yam, rau cov lej binary. Lwm lub npe tus lej nkag yuav tau zoo li-yog, tab sis B0 thiab B1 yuav ua rau kev tsim ua tsis tiav.

Hauv cov npe uas muaj twoBitAdder.v thiab iCEstick.pcf, khiav cov hauv qab no:

verilator -Wall --cc twoBitAdder.v

Qhov no yuav tsim cov subdirectory hu ua obj_dir muaj ntau cov ntaub ntawv tshiab. Peb tsuas xav tau cov ntawv header thiab cpp, VtwoBitAdder.h, VtwoBitAdder.cpp, VtwoBitAdder_Syms.h, thiab VtwoBitAdder_Syms.cpp.

Hauv Arduino IDE, tsim cov duab kos tshiab hu ua twoBitAdder.ino. Qhov no yuav tsim cov ntaub ntawv ino hauv phau ntawv teev npe tshiab tseem hu ua twoBitAdder, hauv koj li Arduino sketchbook directory. Luam koj li VtwoBitAdder.h thiab VtwoBitAdder.cpp cov ntaub ntawv rau ob daim ntawv noBitAdder hauv koj daim ntawv Arduino.

Tam sim no theej cov ntaub ntawv header los ntawm kev teeb tsa verilator.

cp/usr/local/share/verilator/suav nrog/verilated*.

thaum kawg theej hauv std c ++ lub tsev qiv ntawv los ntawm https://github.com/maniacbug/StandardCplusplus. Raws li lawv cov lus qhia kev teeb tsa Qhov no tau teeb tsa zoo ib yam li lub tsev qiv ntawv Arduino ib txwm muaj. Unpack cov ntsiab lus ntawm kev faib khoom mus rau hauv 'cov tsev qiv ntawv' nplaub tshev hauv qab koj daim duab kos. nyob hauv/tsev/maniacbug/Source/Arduino/libraries/StandardCplusplus.

Nco ntsoov rov pib dua koj Arduino IDE tom qab teeb tsa nws."

Tam sim no hloov cov ntsiab lus ntawm twoBitAdder.ino nrog ib qho muab rau ntawm cov kauj ruam no. Nov yog qhov ntsuas ntsuas uas tus neeg saib xyuas kev cia siab, uas teeb tsa cov tswv yim/tso tawm pins, tom qab ntawd hauv lub voj, nyeem cov ntawv nkag, pub lawv rau VtwoBitAdder (qhov hloov pauv ntawm peb lub Circuit Court), tom qab ntawd nyeem cov ntawv los ntawm VtwoBitAdder thiab siv lawv rau cov zis pins.

Txoj haujlwm no yuav tsum suav thiab ua tiav ntawm Arduino UNO.

Kauj Ruam 4: Los ntawm Arduino mus rau DIP Chip ntawm Lub Rooj Mov Mov

Los ntawm Arduino mus rau DIP Chip ntawm Pawg Mov Ci
Los ntawm Arduino mus rau DIP Chip ntawm Pawg Mov Ci

Tam sim no qhov kev zov me nyuam tab tom ua haujlwm ntawm Arduino, peb tsis xav tau Arduino board nws tus kheej lawm. Txhua yam peb xav tau yog CPU.

Tshem tawm Atmega 328P ua tib zoo los ntawm Arduino UNO lub qhov (socket), thiab xaiv tau ntxig nws hloov.

Muab Atmega 328P tso rau ntawm daim ntawv tais. Muab qhov kawg nrog qhov sib faib taw tes rau ntawm lub rooj mov ci. Pin 1 yog tus pin sab laug sab saud. Tus Pin 2 yog tus txuas ntxiv mus, thiab ntxiv rau tus pin 14 uas yog nyob hauv qab sab laug. Tom qab ntawd tus pin 15 yog hauv qab txoj cai, thiab tus pin 16 txog 28 suav rov qab rau sab xis ntawm lub nti.

Txuas tus pin 8 thiab 22 rau hauv av.

Txuas tus pin 7 rau VCC (+5V).

Txuas 16Mhz quartz siv lead ua ntawm tus pin 9 thiab 10. Kuj tseem muaj lub capacitor me me (22pF) ntawm tus pin 9 thiab hauv av, thiab nruab nrab ntawm tus pin 10 thiab hauv av. Qhov no muab Atmega 328P lub 16Mhz moos ceev. Muaj cov lus qhia nyob rau lwm qhov ntawm kev qhia 328P los siv nws sab hauv 8Mhz moos uas yuav txuag tau ob peb ntu, tab sis qhov ntawd yuav ua rau tus txheej txheem qeeb.

Arduino GPIO cov chaw nres nkoj 5, 6, 7, thiab 8, uas peb tau siv rau cov pins nkag yog qhov kawg ntawm lub cev 11, 12, 13, 14 ntawm Atmega 328P. Qhov ntawd yuav yog plaub tus lej hauv qab ntawm sab laug.

Arduino GPIO cov chaw nres nkoj 11, 10, thiab 9, uas peb siv rau cov pins tso tawm yog qhov kawg ntawm lub cev 17, 16, 15 ntawm Atmega 328P. Qhov ntawd yuav yog peb tus lej hauv qab ntawm sab xis.

Kuv tau txuas cov LEDs rau cov pins zoo li ua ntej.

Kauj Ruam 5: Xaus

Xaus
Xaus

TTL chips ua haujlwm, tab sis nws siv sijhawm ntau los tsim txhua yam. FPGAs ua haujlwm tau zoo tiag tiag, tab sis tsis pheej yig. Yog tias koj tuaj yeem nyob nrog tus lej IO tsawg dua, thiab nrawm dua, tom qab ntawd Atmega 328P yuav yog cov nti rau koj.

Qee yam yuav tsum nco ntsoov:

FPGA:

Pro

- Muaj peev xwm tswj tau cov cim qhia nrawm. Vim tias tsis muaj CPU rau qhov ua rau lub hauv paus ua rau ib qho kev qhia ntawm ib lub sijhawm, qhov txwv txwv yog kev nthuav tawm ncua los ntawm cov rooj vag ntawm qhov muab rau hauv Circuit Court. Hauv ntau qhov xwm txheej no yuav nrawm dua li lub moos muab nrog cov nti. Txog kuv qhov kev tsim qauv, suav suav qeeb yuav tau tso cai rau obBitAdder los teb txog kwv yees li 100 lab kev hloov pauv hauv tus nqi nkag ib pliag (100Mhz) txawm hais tias lub moos nyob hauv lub moos tsuas yog 12Mhz siv lead ua.

- Raws li kev tsim qauv tau yooj yim dua qhov ua tau zoo ntawm cov hluav taws xob uas twb muaj lawm tsis poob qis (ntau). Vim tias kev ntxiv cov xov hluav taws xob rau hauv cov ntaub yog yooj yim tso qee yam tshiab hauv cov cuab yeej siv tsis tau siv, nws tsis cuam tshuam rau cov khoom siv hluav taws xob uas twb muaj lawm.

- Nyob ntawm FPGA, tus naj npawb ntawm IO pins tuaj yeem siab heev, thiab feem ntau lawv tsis raug kaw rau hauv lub hom phiaj tshwj xeeb.

Con

- Yuav kim thiab/lossis nyuaj los ntawm.

- Feem ntau los hauv pob BGA uas xav tau qee yam kev sib cais ntawm pawg thawj coj los ua haujlwm nrog cov nti hauv txhua qhov haujlwm nyiam. Yog tias koj tab tom tsim nws mus rau hauv kev tsim qauv nrog kev cai ntau txheej SMT PCB, qhov no tsis yog teeb meem.

- Feem ntau FPGA cov chaw tsim khoom muab lawv tus kheej kaw qhov tsim software, uas qee zaum yuav raug nqi nyiaj, lossis muaj hnub tso cai tas sij hawm.

Arduino ua FPGA:

Pro

- Pheej yig, thiab yooj yim kom tau txais. Tsuas yog tshawb nrhiav atmega328p-pu ntawm Amazon. Lawv yuav tsum yog kwv yees li $ 4/thooj. Ntau tus neeg muag khoom muag lawv ntau ntawm 3 lossis 4.

- Qhov no yog pob DIP, lub ntsiab lus haum zoo rau ntawm lub khob cij nrog nws cov pins sab nraud.

- Nov yog 5V ntaus ntawv, uas tuaj yeem ua rau cuam tshuam nrog lwm 5V cov cuab yeej yooj yim.

Con

- ATMEGA328P muaj tsawg tus lej IO pins (23), thiab ntau ntawm lawv tau tshwj tseg rau cov haujlwm tshwj xeeb.

- Raws li qhov teeb meem nyuaj hauv Circuit Court nce ntxiv, tus lej ntawm cov lej khiav hauv Arduino txoj kev ua haujlwm voj zuj zus, txhais tau tias lub sijhawm ntawm txhua lub voj voog ntev dua.

- Txawm hais tias qhov nyuaj ntawm Circuit Court tsawg, txhua lub voj voog xav tau ntau CPU cov lus qhia kom mus nqa tus lej tus lej nkag, thiab sau cov lej tus lej tso tawm, thiab rov qab mus rau sab saum toj ntawm lub voj. Nrog 16Mhz siv lead ua, txawm tias ntawm ib qho kev qhia hauv ib lub voj voog, lub voj yuav tsis khiav ntau dua li tej zaum 1 lab zaus ib pliag (1Mhz). Rau feem ntau cov haujlwm pib siv hluav taws xob uas yog txoj hauv kev nrawm dua li qhov xav tau.

Pom zoo: