Projekt ELEKTRONIČKA META
- Uvod
- Senzori
- Detektorska elektronika (diskretna)
- Detektorska elektronika (CPLD)
- Monitor
- Bežični link
Već smo rekli da bi za našu metu sa 2×64 senzora trebalo 22 x SN74HC14 (Schmitt inverter), 32 x CD4044 (RS Latch) i 8 x CD74HC4067 (16-bitni multipleksori). Ako ne postignemo dovoljno otvaranje senzora trebat ćemo Schmitt invertere zamijeniti brzim komparatorima (32 x MCP 6564). Ovo je prilična količina čipova koje je treba što kompaktnije posložiti na tiskane pločice unutar okvira mete. Iako sam uspio nacrtati pločice koje bi to podržavale, sada ipak želim razmotriti jednostavnije alternative u vidu MCU, FPGA i CPLD.
MCU
Da bi 128 bita podataka obradili preko mikrokontrolera (programski) u tom kratkom vremenu, potreban nam je vrlo brz mikrokontroler (MCU) sa puno paralelnih ulaznih linija (najbolje neki 128 bitni MCU). Jeftine MCU razvojne pločice poput popularnog Arduina su prespore za taj zadatak (tipično 16 MHz) i premalog kapaciteta ulazno/izlaznih linija (I/O). Čak i sa najbržim (najskupljim) MCU platformama, poput Teensy 4.1 (600 – 816 MHz), Arduino Giga R1 (480 MHz) ili ESP32-P4 (400 MHz), te čak i uz dobru optimizaciju programskog koda, čitanje i obrada podataka sa svih 128 senzora teško bi se mogla obaviti za vrijeme brže od nekoliko mikrosekundi. To je za naš projekt presporo.
FPGA i CPLD
FPGA (Field-Programmable Gate Array) i CPLD (Complex Programmable Logic Device) su jednostavno rečeno „univerzalni“ logički čipovi koji omogućuju korisniku da ih sam programira na hardversku logiku koja mu je potrebna. To znači da jedan takav čip možemo konfigurirati da sadrži invertere, RS latcheve, multipleksore i sve druge logičke krugove koji su nam potrebni. Komparatore ne možemo konfigurirati jer to nisu digitalni nego analogni čipovi.
Pitanje je sada koju tehnologiju, FPGA ili CPLD, odabrati za naš projekt. FPGA nudi golem broj logičkih vrata, ugrađenu memoriju (RAM) i specijalizirane blokove za digitalnu obradu signala (DSP) te je primarno namijenjen za kompleksne zadatke poput obrade videa, umjetne inteligencije i mrežne infrastrukture. Nedostatak je što se arhitektura čipa temelji se na SRAM tehnologiji, što znači da je volatilan, odnosno gubi konfiguraciju čim nestane napajanja i mora je ponovno učitati iz vanjske memorije pri svakom pokretanju.
CPLD je jednostavniji čip koji se razvio iz rane programabilne logike (PAL/PLA) te se i koristi za kreiranje jednostavnijih logičkih krugova. Temelji se na Flash ili EEPROM memoriji, što ga čini nevolatilnim, odnosno zadržava program i nakon isključenja te je spreman za rad trenutno nakon paljenja. Zbog jednostavnijih internih veza, kašnjenje signala je fiksno i lako predvidljivo. Za naš konkretni projekt jasno je da je CPLD bolji, a također i jeftiniji izbor.
Nama treba CPLD koji podržava najmanje 128 I/O linija za senzore, te još desetak I/O linija za komunikaciju i eventualna proširenja. Također, umjesto čistog CPLD čipa, za samogradnju je puno bolja opcija odabrati neku CPLD razvojnu platformu koja već ima izvedene vanjske konektore, ugrađen regulator napona i oscilator i ostale popratne sklopove. Pretražio sam kinesku ponudu takvih CPLD platformi uspoređujući dva osnovna kriterija: broj dostupnih I/O linija i cijena samog CPLD-a.
EPM570 MAX II CPLD Development Module
Konačni izbor je razvojna platforma sa CPLD čipom EPM570 (EPM570T100C5N) iz Intel/Altera MAX II serije. Na platformi su dostupna 72 I/O pina i ugrađen je takt oscilator na 50 MHz. Sama pločica je dimenzija 9×6 cm i košta oko 16 eura. Može se kupiti i 1 euro jeftinija inačica sa EPM240 čipom. Razlika između EPM240 i EPM570 je samo u logičkom kapacitetu (240 prema 570 logičkih elemenata) dok su po fizičkom obliku i većini funkcija gotovo identični. Prednost pločice sa EPM240 je što ima 4 I/O pina više, no to nama ne igra ulogu jer je za mrežu 2×32 senzora u oba slučaja dovoljna jedna pločica, dok za mrežu 2×64 senzora svakako moramo koristiti dvije takve pločice. Razlike u brzini su također zanemarive, kod EPM240 je kašnjenje 4,7 ns, a kod EPM570 je kašnjenje od 5,4 ns. Ovo su dakle vrlo brzi čipovi, 4 do 5 puta brži od najbržih diskretnih logičkih čipova.
Čitav hardver za senzorsku mrežu 2×64 senzora može se svesti na dvije CPLD pločice EPM570 i jednu ESP32 (ili Arduino) mikrokontrolersku pločicu. Za senzorsku mrežu 2×32 senzora dovoljna je jedna CPLD EPM570 pločica.
Programiranje CPLD-a
CPLD u teoriji zvuči privlačno, no kako uopće programirati ovaj čip, odnosno kako ga konfigurirati na željene logičke krugove. Za programiranje EPM570 (kao i raznih drugih FPGA i CPLD čipova) namijenjen je programski softver Quartus II (Intel Quartus Prime), a programski jezik za opis hardvera (HDL) zove se Verilog. Quartus II omogućuje cijeli proces razvoja FPGA, od pisanja koda i crtanja logičkih shema do simulacije, optimizacije i konačnog prebacivanja dizajna na hardver. Softver također uključuje alate za analizu i sintezu (pretvaranje koda u logička vrata), analizu vremena (timing analysis) te programiranje samog uređaja.
Kad smo već kod programiranja, morate kupiti i namjenski USB Blaster Programmer koji košta oko 3 eura. Ovaj programator se s jedne strane spaja na USB port računala, a s druge strane na 10-pinski JTAG konektor na razvojnoj pločici EPM570. Jednostavnije ne može biti.
Verilog je kao što smo već spomenuli jezik za opis hardvera (HDL) koji se koristi za modeliranje i simulaciju elektroničkih sustava. Ovaj programski jezik se bitno razlikuje od standardnih programskih jezika (poput C-a) jer ne opisuje slijedne naredbe za MCU (softver) nego opisuje strukturu i ponašanje hardvera, odnosno kako su žice povezane i kako logička vrata međusobno komuniciraju. U tipičnom radnom procesu, Verilog se koristi za pisanje koda koji opisuje kako bi digitalni sklop trebao raditi, a zatim se koristi Quartus II kako bi taj kod kompajlirao i fizički implementirao u FPGA/CPLD čip.
Sve ovo na prvi pogled djeluje komplicirano, odnosno djeluje kao nešto čemu treba posvetiti ogromno vremena za učenje. Međutim, jednostavno programiranje kao ovo za naš projekt u potpunosti može za vas odraditi AI. Uz pomoć AI meni su bila dovoljna 2-3 sata da naučim rad u Quartus II do dovoljne razine da konfiguriran I/O pinove i programiram CPLD pomoću Verilog koda kojeg mi je u potpunosti generirala AI. Za programiranje svih onih logičkih čipova za svaki pojedinačni senzor (Schmitt inverteri, RS Latchevi, multipleksori) treba napisati svega 30-tak linija Verilog koda.
I to nije sve. Unutar CPLD također je sada programirana logika koja detektira promjenu stanja na bilo kojem senzoru kao prolazak metka. Time ESP32 ne mora stalno brzo skenirati sve senzonske linije ne bi li otkrio prolaz metka, već to za njega neusporedivo brže radi sam CPLD i informacije prema ESP32 šalje samo kada postoji neka promjena na senzorima. Ovime smo dobili izuzetno brz detektorski sustav kojeg ćemo u ESP32 morati znatno usporiti jer bi jedna dijabola (zbog svog oblika) mogla izazvati nekoliko brzih detekcija.

