Tartalomjegyzék:

Arduino, mint olcsó kenyeretábla FPGA: 5 lépés (képekkel)
Arduino, mint olcsó kenyeretábla FPGA: 5 lépés (képekkel)

Videó: Arduino, mint olcsó kenyeretábla FPGA: 5 lépés (képekkel)

Videó: Arduino, mint olcsó kenyeretábla FPGA: 5 lépés (képekkel)
Videó: Arduino IDE Linux Install ( установка ардуино в линукс) 2024, November
Anonim
Az Arduino olcsó kenyérlapként FPGA
Az Arduino olcsó kenyérlapként FPGA

A hardver logikai áramkörök tervezése szórakoztató lehet. Ezt a régi iskola módján NAND kapukkal, kenyértáblán, jumper drótokkal kötötték össze. Ez még lehetséges, de nem sok kell ahhoz, hogy a kapuk száma kiessen a kezéből. Újabb lehetőség az FPGA (Field Programmable Gate Array) használata. Ezek a chipek átalakíthatják magukat, és bármilyen digitális logikai áramkörré válhatnak, de nem olcsók és könnyen hozzáférhetők. Megmutatom, hogyan lehet ezt az FPGA -t kicserélni egy Arduino UNO olcsó Atmega chipjére, hatékonyan behelyezve a digitális áramkört egy DIP csomagba, ami nagyon kenyérpirítóbarát.

1. lépés: Tervezze meg azt az áramkört, amelyet az "FPGA" képvisel

Tervezze meg azt az áramkört, amely
Tervezze meg azt az áramkört, amely
Tervezze meg azt az áramkört, amely
Tervezze meg azt az áramkört, amely
Tervezze meg azt az áramkört, amely
Tervezze meg azt az áramkört, amely

Építek egy 2 bites + 2 bites összeadót. Két pár logikai bemeneti tüskére van szükség, és egy triplett kimeneti tüskét ad ki.

Ehhez a NAND kapukkal lásd a képen látható vázlatot. 14 NAND kapu kell hozzá. Négy quad NAND gate TTL chipet használtam, és bekötöttem a kenyértáblára.

Hozzáadtam néhány LED -et (ne felejtsük el az áramkorlátozó ellenállásokat), hogy megmutassák, mikor a bemeneti és kimeneti érintkezők be vannak kapcsolva (magas), és amikor ki vannak kapcsolva (alacsony). A bemeneti csapok meghajtásához vagy a földi sínre ugrottam, vagy a pozitív teljesítményű sínre.

Ez az áramkör működik, de már 4 TTL chipet vesz fel, és patkány fészekalja a vezetékeknek. Ha több darabra lenne szükség, több kenyértábla és több jumper lenne. Nagyon gyorsan kiszakadna az áramkör mérete.

Megjegyzendő, hogy a TTL kapukkal való munkavégzés során nem adnak ki pontosan 0V vagy 5V kimenetet, mint az várható lenne. Gyakran 3V körüli kimenetet adnak "magas" értékre, de a pontos feszültség nagyon széles tartományban van. Ugyanaz az áramkör, amely a CMOS -egyenértékű chipeket használja, jobb lenne pontosan 0V és 5V között.

2. lépés: Adja meg az FPGA -t

Adja meg az FPGA -t
Adja meg az FPGA -t
Adja meg az FPGA -t
Adja meg az FPGA -t

Az FPGA egy fantasztikus chip, amely szó szerint a logikai kapuk bármilyen kombinációjává válhat, bármilyen kombinációban összekapcsolva. Az egyik hardver tervezési nyelven (HDL) tervezi az "áramkört". Több ilyen nyelv létezik, amelyek közül az egyik a Verilog. A képen látható.v fájl a kétbites összeadó Verilog megfelelője. Az alatta lévő.pch fájl a verilog fájlban megnevezett bemeneti és kimeneti tűk hozzárendeléséhez is szükséges a chip valós hardvercsapjaihoz.

Ebben az esetben egy Lattice Semiconductors iCEstick fejlesztőlapot használok (https://www.latticesemi.com/icestick). A tényleges FPGA chip egy iCE40HX-1k, valamivel több mint 1000 kapuval, amelyek mindegyike bármilyen logikai kapuvá válhat. Ez azt jelenti, hogy minden kapu lehet NAND kapu, vagy VAGY kapu, NEM kapu, NOR, XOR stb. Ezen kívül minden kapu több mint két bemenetet képes kezelni. Ez minden gyártóra jellemző, de az iCE40 -en minden kapu 4 bemenetet képes kezelni. Így minden kapu sokkal képesebb, mint a 2 bemeneti NAND kapu.

A 4 bemeneti fenyőt és a 3 kimeneti tűt hozzá kellett rendelnem a fizikai, 91, 90, 88, 87, 81, 80 és 79 csapokhoz. Ez jellemző az fpga chipre és a kioldólapra, amelyen van, valamint arra, hogyan kell ezeket a csapokat a PMOD porthoz csatlakoztatni. Ez elérhető az FPGA kártya adatlapjain.

A Lattice saját eszközláncot biztosít a Verilogból származó áramkörök szintetizálására (az FPGA megfelel a CPU -k fordításának), de én az ingyenes nyílt forráskódú eszközlánc icestorm -ot használtam (https://www.clifford.at/icestorm/). A telepítési utasítások elérhetők ezen a webhelyen. Ha az icestorm telepítve van, valamint a verilog és a pcf fájl, az áramkör FPGA -ra való betöltésére vonatkozó parancsok a következők:

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

Ez remekül működik, de az iCEstick szállításával együtt körülbelül 30 dollárba kerül. Ez nem a legolcsóbb módja a digitális áramkör építésének, de erős. Több mint 1000 kapuval rendelkezik, és ehhez az apró körhöz csak 3 -at használ. A NAND kapu megfelelője 14 kaput használt. Ez annak köszönhető, hogy minden kapu bármilyen kapu lehet, és minden kapu valójában 4 bemeneti kapu. Minden kapu többre képes. Ha több kapura van szüksége, az iCEsticknek van egy nagyobb testvére, 8000 kapuval, ami körülbelül duplája. Más gyártók más ajánlatokat is kínálnak, de az ár meglehetősen meredek lehet.

3. lépés: FPGA -ról Arduino -ra

Az FPGA -tól az Arduino -ig
Az FPGA -tól az Arduino -ig

Az FPGA -k nagyszerűek, de drágák, nehezen beszerezhetőek, és nem túl barátságosak a kenyeretábla számára. Kenyérsütő deszkához barátságos és olcsó chip az Atmega 328 P, amely tiszta DIP csomagolásban érkezik, tökéletes a panelezéshez. 4 dollár körül is kapható. Ez az Arduino UNO szíve. Természetesen használhatja az egész UNO -t, de olcsó, lehúzhatjuk az Atmega 328 P -t az UNO -ról, és önmagában használhatjuk. Az UNO táblát azonban az Atmega programozójaként használtam.

Ezen a ponton szüksége lesz

1. Arduino UNO, eltávolítható Atmega 328P CPU -val.

2. Egy másik Atmega 328P az Arduino rendszerbetöltővel, előre beégetve, az UNO-ból való kivonás helyére. (Választható, feltéve, hogy továbbra is használható UNO -t szeretne).

A cél az, hogy a verilog fájlt arduino -projektgé alakítsuk át, amely betölthető a 328P -be. Az Arduino C ++ alapú. Kényelmesen van egy fordító a Verilogról a C ++ nyelvre, amelyet Verilatornak hívnak (https://www.veripool.org/wiki/verilator). A Verilatort olyan hardvertervezők használják, akiknek szimulálniuk kell a terveiket, mielőtt drága hardverekre tervezik őket. A Verilator cross lefordítja a verilogot C ++ - ra, majd a felhasználó tesztköteget biztosít a szimulált bemeneti jelek biztosítására és a kimeneti jelek rögzítésére. Arra fogjuk használni, hogy a verilog dizájnt az Arduino szerszámlánc segítségével betömje az Atmega 328P -be.

Először telepítse a Verilatort. Kövesse a https://www.veripool.org/projects/verilator/wiki/I… címen található utasításokat.

Telepítse az Arduino IDE -t is, és ellenőrizze, hogy USB -n keresztül tud -e csatlakozni az Arduino UNO -hoz.

Ugyanazt a verilog fájlt fogjuk használni, mint az FPGA esetében, kivéve, hogy a csapok nevét meg kell változtatni. Mindegyik elejéhez aláhúzást (_) tettem. Erre azért van szükség, mert az arduino könyvtárak tartalmaznak egy fejlécfájlt, amely B0, B001 stb. A többi bemeneti pin név rendben volt, ahogy van, de a B0 és a B1 miatt a build sikertelen lett volna.

A twoBitAdder.v és iCEstick.pcf fájlokat tartalmazó könyvtárban futtassa a következőt:

verilátor -Fal --cc twoBitAdder.v

Ezzel létrejön egy obj_dir nevű alkönyvtár, amely több új fájlt tartalmaz. Csak a fejlécre és a cpp fájlokra van szükségünk, VtwoBitAdder.h, VtwoBitAdder.cpp, VtwoBitAdder_Syms.h és VtwoBitAdder_Syms.cpp.

Az Arduino IDE -ben hozzon létre egy új vázlatot twoBitAdder.ino néven. Ez létrehozza az ino fájlt egy új, kétBitAdder nevű könyvtárban, az Arduino vázlatfüzet könyvtárában. Másolja a VtwoBitAdder.h és a VtwoBitAdder.cpp fájlokat ebbe a kétBitAdder mappába az Arduino mappában.

Most másolja a fejlécfájlokat a verilator telepítéséből.

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

végül másolja be az std c ++ könyvtárba a https://github.com/maniacbug/StandardCplusplus webhelyről. A telepítési utasításaik szerint "Ez ugyanúgy van telepítve, mint egy normál Arduino könyvtár. Csomagolja ki a terjesztés tartalmát a vázlatfüzet alatt található" könyvtárak "mappába. Például a vázlatfüzetem a/home/maniacbug/Source/Arduino címen található, tehát ez a könyvtár itt található:/home/maniacbug/Source/Arduino/libraries/StandardCplusplus.

A telepítés után mindenképpen állítsa alaphelyzetbe az Arduino IDE -t."

Most cserélje le a twoBitAdder.ino tartalmát az ebben a lépésben megadott tartalommal. Ez egy olyan tesztköteg, amelyet a verilátor vár, amely beállítja a bemeneti/kimeneti csapokat, majd a hurokban, beolvassa a bemeneti csapokat, táplálja azokat a VtwoBitAdder (áramkörünk lefordított változata), majd beolvassa a VtwoBitAdder kimeneteit és alkalmazza a kimeneti csapokhoz.

Ennek a programnak össze kell állítania és végrehajtania az Arduino UNO -n.

4. lépés: Az Arduino -tól a DIP Chip -ig egy kenyértáblán

Arduinótól a DIP Chipig egy kenyértáblán
Arduinótól a DIP Chipig egy kenyértáblán

Most, hogy a program az Arduino -n fut, már nincs szükségünk magára az Arduino táblára. Csak a CPU -ra van szükségünk.

Óvatosan távolítsa el az Atmega 328P -t az Arduino UNO foglalatból, és adott esetben helyezze be a cserét.

Tegye az Atmega 328P -t a kenyérsütő táblára. Tegye a végét úgy, hogy a felosztás felfelé mutasson a kenyértáblára. Az 1 -es csap a bal felső csap. A 2 -es csap a következő lefelé, és így tovább a 14 -es tűre, amely a bal alsó sarokban található. Ezután a 15 -ös csap a jobb alsó sarokban van, és a 16-28.

Csatlakoztassa a 8 -as és 22 -es csapokat a földhöz.

Csatlakoztassa a 7. csapot a VCC -hez (+5V).

Csatlakoztasson egy 16 MHz -es kvarckristályt a 9. és a 10. érintkező közé. Szintén egy kis kondenzátort (22 pF) a 9. érintkező és a föld közé, valamint a 10. és a föld közé. Ez adja az Atmega 328P 16Mhz órajelét. Vannak más utasítások a 328P megtanítására, hogy ehelyett használja a belső 8 MHz -es óráját, amely néhány részt megtakarít, de ez lelassítja a processzort.

Az Arduino GPIO 5, 6, 7 és 8 portjai, amelyeket a bemeneti tüskékhez használtunk, valójában az Atmega 328P 11, 12, 13, 14 fizikai tűi. Ez lenne a bal alsó négy csap.

Az Arduino GPIO 11, 10 és 9 portjai, amelyeket a kimeneti tüskékhez használtunk, valójában az Atmega 328P 17, 16, 15 fizikai tűi. Ez lenne az alsó három csap a jobb oldalon.

A LED -eket ezekhez a csapokhoz csatlakoztattam, mint korábban.

5. lépés: Következtetés

Következtetés
Következtetés

A TTL chipek működnek, de sok kell belőlük, hogy bármit felépítsenek. Az FPGA -k nagyon jól működnek, de nem olcsók. Ha kevesebb IO tűvel és alacsonyabb sebességgel tud élni, akkor az Atmega 328P lehet a chip az Ön számára.

Néhány dolog, amit szem előtt kell tartani:

FPGA:

Pro

- Nagy sebességű jeleket képes kezelni. Mivel nincs CPU, amely szűk keresztmetszetet szüntetne meg a feldolgozásra egy -egy utasításig, ezért a korlátozó tényező a terjedési késleltetés az adott áramkör kapuin keresztül. Ez sok esetben sokkal gyorsabb lehet, mint a chiphez mellékelt óra. A tervezésem szerint a számított késleltetés lehetővé tette volna, hogy a twoBitAdder reagáljon a másodpercenként körülbelül 100 millió bemeneti érték változására (100 MHz), annak ellenére, hogy a fedélzeti óra csak 12 MHz-es kristály.

- Ahogy a tervezés összetettebbé válik, a meglévő áramkörök teljesítménye nem romlik (sokat). Mivel az áramkörök hozzáadása a szövethez egyszerűen valami újat tesz a fel nem használt ingatlanokba, ez nem befolyásolja a meglévő áramköröket.

- Az FPGA -tól függően a rendelkezésre álló IO -tűk száma nagyon magas lehet, és általában nincsenek meghatározott célokra bezárva.

Con

- Drága lehet és/vagy nehezen elérhető.

- Általában BGA csomagban érkezik, amelyhez valamilyen kitörési tábla szükséges, hogy bármilyen amatőr projektben működjön a chip. Ha egyedi többrétegű SMT PCB-vel tervezi, ez nem jelent problémát.

- A legtöbb FPGA gyártó saját zárt forráskódú tervezőszoftvert biztosít, amely bizonyos esetekben pénzbe kerülhet, vagy a licenc lejárati dátumával rendelkezik.

Arduino FPGA -ként:

Pro

- Olcsó és könnyen beszerezhető. Csak keressen az atmega328p-pu-ra az Amazon-on. 4 dollárnak kell lenniük darabonként. Sok eladó 3 vagy 4 darabban értékesíti őket.

- Ez egy DIP csomag, vagyis tökéletesen illeszkedik a kenyérsütő táblához a külső csapokkal.

- Ez egy 5 V -os eszköz, amely megkönnyíti az interfészt más 5 V -os eszközökkel.

Con

- Az ATMEGA328P korlátozott számú IO érintkezővel rendelkezik (23), és több közülük bizonyos feladatokra van fenntartva.

- Ahogy az áramkör összetettsége nő, az Arduino ciklus módszerben futó kód mennyisége növekszik, vagyis az egyes ciklusok időtartama hosszabb.

- Még ha az áramkör összetettsége is kicsi, minden ciklushoz sok CPU utasításra van szükség a bemeneti pin értékek lekéréséhez, a kimeneti pin értékek írásához és a hurok tetejére való visszatéréshez. A 16Mhz -es kristálynál, még egy óra / óra ciklus esetén is, a hurok nem fog többet futni, mint 1 milliószor másodpercenként (1Mhz). A legtöbb amatőr elektronikai projekt esetében azonban a szükségesnél sokkal gyorsabb.

Ajánlott: