ERK'2021, Portorož, 10-13 10 Pregled programirljivih logiˇ cnih vezij vgrajenih v C2000 druˇ zino mikrokrmilnikov Andrej Kenda, Mitja Nemec Univerza v Ljubljani, Fakulteta za elektrotehniko, Trˇ zaˇ ska 25, 1000 Ljubljana, Slovenija E-poˇ sta: andrej@kenda.one Povzetek FPGA integrated circuits are often indispensable in prac- tice, but their integration into the system is often de- manding and costly. In this article, we explore one of the answers to this problem offered by the manufac- turer Texas Instruments. In their microcontrollers se- ries C2000, there is an additional coprocessor, called “CLB”, which is similar to a FPGA. The article offers an overview of said coprocessor, its detailed structure, how it is connected to the rest of the microcontroller and its capabilities. 1 Uvod Pri oblikovanju vdelanih sistemov se zaradi preprostega programiranja in cenovne ugodnosti najpogosteje po- sluˇ zujemo mikrokrmilnikov razliˇ cnih proizvajalcev. Na zaˇ cetku oblikovalnega procesa, v vˇ casih preveliki po- nudbi, izberemo ˇ cip, ki najbolje ustreza naˇ sim zahtevam. Obstajajo pa tudi aplikacije, ki jim konvencionalni mikrokrmilniki niso kos. Tu nastopi iskanje drugaˇ cnih reˇ sitev. ˇ Ce imamo sreˇ co, morda odkrijemo kakˇ sen ASIC (angl. application specific integrated circuit), ki ustreza naˇ sim potrebam, vendar je na doloˇ cenih podroˇ cjih teh do- kaj malo. V doloˇ cenih aplikacijah nam ne preostane dru- gega kot uporaba FPGA (angl. field-programable gate array) vezja. Ti nam omogoˇ cajo postavitev sistema na nizkem nivoju, ki ga lahko prikrojimo natanko naˇ sim zah- tevam. FPGA v veliko aplikacijah namestimo poleg prej omenjenega mikrokrmilnika in ga uporabimo kot dodaten procesor [2]. Kljub temu, da so FPGA ˇ cipi precej zmogljivi, pa je njihova integracija v sistem teˇ zka. Kadra, ki ima globoko znanje takˇ snih sistemov je zaradi zahtevnosti precej malo. FPGA vezja namreˇ c pogosto zahtevajo uporabo zunanjih RAM in FLASH vezij ter ADC in/ali DAC pretvornikov. Tako ˇ ze naˇ crtovanje tiskanega vezja okoli FPGA vezja zahteva veˇ c truda, dodaten trud pa zahteva tudi komu- nikacija med posameznimi moduli. V kolikor pa je po- leg poleg FPGA prisoten tudi mikrokrmilnik je tak sis- tem v primerjavi s sistemom, ki temelji samo na mikro- krmilniku draˇ zji tako za naˇ crtovanje, razvoj programske opreme kot tudi za izdelavo. Proizvajalci FPGA vezij na te probleme odgovarjajo z vgradnjo mikrkrmilnika v samo FPGA vezje [5]. Z druge strani na naˇ stete teˇ zave odgovarja proizvaja- lec Texas Instruments s koprocesorjem CLB (angl. con- figurable logic block), ki je vdelan v nekaj njihovih mi- krokrmilnikov. Ta naj bi po proizvajalˇ cevih trditvah tako nadomestil dodaten FPGA, kot tudi omogoˇ cil programi- ranje s preprostim vmesnikom (in s tem razvijalcu prihra- nil marsikatero uro) [1]. 2 Predstavitev CLB CLB koprocesor, ki je del mikrokrmilnika F28379D, pro- izvajalca Texas Instruments je sestavljen iz ˇ stirih med se- boj enakih podsklopov (angl. Tile). Vsak podsklop je sestavljen iz procesorja (angl. CELL) ter vmesnika za “priklop” signalov iz matiˇ cne naprave (angl. CPU I/F). Ti signali lahko izvirajo iz razliˇ cnih perifernih naprav, kot so eCAP, ePWM, GPIO... iz CLB-ja pa lahko v prav te periferne naprave tudi “pripeljemo” izhodni signal, kot njihov vhod. Interakcija pa ni omejena le z dodatnimi napravami in matiˇ cnim procesorjem, temveˇ c je mogoˇ ca tudi med razliˇ cnimi podsklopi CLB-ja. Moˇ zno pa je tudi proˇ zenje prekinitev, na katere lahko procesor ustrezno reagira. 3 Zgradba CLB modulov V poglavju 2 je omeneno, da je sam CLB sestavljen iz ˇ stirih podsklopov. Na sliki 1 je videti, da vsak podsklop vsebuje [6, Pogl. 26.4]: • 3 ˇ stirivhodne LUT4 (angl. 4-input lookup table), • 8 trivhodnih izhodnih LUT3 (angl. 3-input lookup table), • 3 ˇ stevce, • 3 avtomate stanj FSM (angl. finite state machine), • 1 HLC (angl. high level controller) in • 1 nastavljiv preklopni blok. 3.1 LUT moduli “LUT4” modul preslika kombinacijo vhodnih signalov v en izhodni signal na podlagi prireditvene tabele (slika 2 - “IN0”-“IN3”). Tako lahko implementiramo po- ljubno kombinacijo logiˇ cnih operacij nad vhodnimi si- gnali. Preslikava pa se zapiˇ se preko orodja “CLB Tool” 11 Figure 2-11. CLB Tile The following sections highlight internal details of the three types of Logic Primitives comprising the CLB Tile: Look-up Tables, Finite State Machines and Counters. CLB Description From the Hardware Perspective www.ti.com 14 How to Migrate Custom Logic From an FPGA/CPLD to C2000™ Microcontrollers SPRACO2A – SEPTEMBER 2019 – REVISED JULY 2020 Submit Document Feedback Copyright © 2020 Texas Instruments Incorporated Slika 1: Shematski prikaz modulov na podsklopu CLB koprocesorja [4, Pogl. 2.3.3] samo z logiˇ cnimi operacijami “AND”, “OR”, “NOT” in “XOR”[3, Pogl. 3.3]. LUT4 Block OUT IN0 IN2 IN3 16-bit output function can be uts of or by uts IN1 This output can drive inputs of other blocks Slika 2: Shematski prikaz ˇ stirivhodnega LUT4 modula CLB koprocesorja [6, Pogl. 26.4.4] “LUT3” modul je enak “LUT4” modulu, le da ima tri namesto ˇ stirih vhodov, ter njegov izhod predstavlja izhod podsklopa (“tile”) [6, Pogl. 26.4.4-26.4.5]. 3.2 ˇ Stevci ˇ Stevec je precej kompleksen modul v CLB-ju, ki omogoˇ ca veˇ c razliˇ cnih naˇ cinov delovanja. Lako de- luje kot ˇ stevec/komparator, samo ko komparator, ki pri- merja dve 32-bitni ˇ stevili, ali pa kot aritmetiˇ cna enota, ki priˇ steva oz. odˇ steva dve ˇ stevili ali pa nad enim ˇ stevilom izvede opreacijo dvojiˇ skega premika v levo oz. desno. S slike 3 je moˇ c razbrati ˇ stiri funkcijske vhode; “RESET”, “MODE 0”, “MODE 1” in “EVENT”. “RESET” ob vi- soki vrednosti ˇ stevec postavi na vrednost 0, “MODE 0” ob visoki vrednosti omogoˇ ci ˇ stetje, “MODE 1” nastavi smer ˇ stetja (visoko - navzgor, nizko - navzdol), signal “EVENT” pa ob pozitivnem robu sproˇ zi dogodek, na ka- terega ta odreagira z nastavljeno raˇ cunsko operacijo, ka- tere parametre nastavimo z drugima signaloma (slika 3 - “Static controls” in “LOAD V ALUE”). Do vsebine ˇ stevca lahko dostopamo preko HLC modula (pogl. 3.4), kjer je ta oznaˇ cena z zaporedno ˇ stevilko ˇ stevca (npr. ˇ stevec 1 - C1). MODE 0 Counter Block ZERO MATCH1 MATCH2 Counter Value RESET MODE 1 EVENT MATCH1 REF MATCH2 REF LOAD VALUE Static Controls for ADD/SHIFT/ DIR Slika 3: Shematski prikaz ˇ stevca CLB koprocesorja [6, Pogl. 26.4.2.1] Kot izhod iz ˇ stevca lahko spremljamo signale “ZERO”, “MATCH1” in “MATCH2”. Prvi prevzame vi- soko vrednost kadar je vrednost ˇ stevca 0, ostala dva pa se vklopita, kadar je vrednost ˇ stevca enaka nastavljeni pripadajoˇ ci vrednosti. Ko ˇ stevec doseˇ ze svojo maksi- malno vrednost (2 32 ) ta “prelije” in zaˇ cne ˇ steti od 0. [6, Pogl. 26.4.2]. 12 3.3 FSM moduli FSM modul omogoˇ ca implementacijo avtomata stanj, ki ima do ˇ stiri razliˇ cna stanja zakodirana s signali “S0” in “S1”. Avtomat je implementiran z dvema LUT blokoma: “S0 Next State LUT” in “S1 Next State LUT” (slika 4), ki sta po zgradbi povsem enake opisanim v poglavju 3.1. Ta sluˇ zita interni modulaciji signalov in operirata z zu- nanjima signaloma “EXT IN0”, “EXT IN1” in vhodoma “S0” in “S1”, ki prevzameta prejˇ snjo vrednost izhoda pri- padajoˇ ce tabele. Izhod avtomata stanj pa doloˇ ca “Output LUT” tabela. ˇ Ce aplikacija ne potrebuje uporabe FSM modula, se lahko posluˇ zimo ˇ se vhodov “EXTRA EXT IN0” in “EXTRA EXT IN1”. V tem primeru celoten modul de- luje kot ˇ stirivhodni LUT modul. FSM_LUT_OUT FSM_S0 FSM_S1 EXTRA_EXT_IN1 EXT_IN1 EXT_IN0 16-bit S0 next state function EXTRA_EXT_IN0 Output LUT S0 Next State LUT S1 Next State LUT S0 S1 16-bit S1 next state function 16-bit FSM_LUT_OUT state function Slika 4: Shematski prikaz FSM modula CLB koprocesorja [6, Pogl. 26.4.3] 3.4 HLC modul HLC modul je za razliko od ostale naprave veliko bolj kompleksen (slika 5). Gre pravzaprav za zelo okrnjeno procesno jedro, kateremu lahko sprogramiramo rudimen- tarno sekvenco ukazov v zbirniku [6, Pogl. 26.4.6.2]: • ADD/SUB - seˇ stevanje in odˇ stevanje, • MOV/MOV T1/MOV T2 - premikanje, • PUSH/PULL - pisanje in branje v skupnem spo- minu, • INTR - proˇ zenje prekinitev. To sekvenco pa sproˇ zimo preko zunanjih signalov. Tako lahko s HLC modulom preko lastnih registrov “R0”-“R3” [6, Pogl. 26.4.6] prenaˇ samo podatke med CLB enoto in glavnim jedrom, kot tudi med trenutno vre- dnostjo ˇ stevcev “C0”-“C2” in pripadajoˇ cimi “MATCH” vrednostmi. 3.5 Preklopni modul Ta modul je namenjen izbiri vhodnih signalov, ki lahko izvirajo iz zunanjih virov, drugih CLB podkslopov (angl. tile) ali pa signal generira modul sam. Zadnji vir se upo- rablja le za simulacijske namene. Modul je v orodju “CLB Tool” (Pogl. 4) zaradi postavitve predstavljen pod imenom “BOUNDARY” [3, Pogl. 3.3]. Instruction Memory Global access path for CPU system interface to write to the registers and instruction memory. s ll Event Processing Block Pull data from shared memory Push data to shared memory Event 0 Event 1 Event 2 Event 3 R0 R1 R2 R3 Slika 5: Shematski prikaz HLC modula CLB koprocesorja [6, Pogl. 26.4.6] 4 Uporaba CLB Za samo programiranje CLB koprocesorja v praksi je proizvajalec Texas Instruments postavil vmesnik “CLB Tool” (slika 6), ki nam preko izbire doloˇ cenih parame- trov zgenerira kodo za uporabo v naˇ sem projektu. Slika 6: Grafiˇ cno okolje “CLB Tool” Grafiˇ cni vmesnik za vsako od komponent, naˇ stetih v poglavju 3, dovoljuje izbiro opisanih parametrov, vho- dnih in izhodnih signalov ter sploˇ sno konfiguracijo mo- dulov. Kot je prikazano na sliki 7, orodje generira 2 apli- kacijski datoteki; “clb config.h” ter “clb config.c”. Ti da- toteki lahko seveda brez teˇ zav vkljuˇ cimo v naˇ s “C” pro- gram. Poleg aplikacijske kode, pa nam ob orodje ob pre- vodu (angl. build) avtomatsko zgenerira tudi simulacij- sko datoteko “CLB.vcd”. V principu je CLB v primer- javi z FPGA relativno preprost in simulacija ne vkljuˇ cuje internih zakasnitev, ter se zato izvede zelo hitro. V ome- njeni datoteki je zapisan potek ˇ casovnih signalov v ko- procesorju. Odpremo jo lahko z zunanjim programom, ki omogoˇ ca prikaz njene vsebine, s ˇ cimer posredno prido- bimo vpogled v vse signale v CLB-ju. Na primeru s slike 8 je v ta namen uporabljen program “GTK wave”. Orodje avtomatsko generira tudi datoteko za grafiˇ cni 13 Generated Files from CLB Tool (SysConfig) C28x Application Code Main.c Driverlib.lib Other application specific files CLB SysConfig tool files clb_config.c clb_config.h CLB Tool (SysConfig) Configured through .syscfg file inside the project Graphical User Interface to configure the CLB Tiles Generate Generated Files from CLB Tool (SysConfig) clb_config.h clb_sim.cpp clb_config.c Application Code Simulation Code Visualization Diagram clb.dot Slika 7: Struktura projekta pri uporabi orodja “CLB Tool” [3, Pogl. 1] Slika 8: Pregled notranjih signalov CLB-ja s programom “GTK Wave” pregled povezav v koprocesorju. Ta se prevede v obliko “.html”, ki jo lahko odpremo v vsakem brskalniku (slika 9) [3, Pogl. 1]. i0 TILE1_OUTLUT_0 out = (~i0 & i1) | (i0 & (~i0)) i1 out i2 TILE1_BOUNDARY out0 out1 out2 out3 out4 out5 out6 out7 reset TILE1_COUNTER_0 evAction = None zero event match1 mode0 match2 mode1 reset TILE1_COUNTER_1 evAction = None zero event match1 mode0 match2 mode1 i0 TILE1_LUT_0 out = ~i0 i1 out i2 i3 TILE1_BOUNDARY in0  → in1  → in2  → in3  → in4  → in5  → in6  → in7  → 1 reset TILE1_COUNTER_2 evAction = None zero event match1 mode0 match2 mode1 Slika 9: Primer generiranega “.html” diagrama 5 Zakljuˇ cek Za programerja FPGA vezij so stvari, opisane v tem ˇ clanku verjetno precej domaˇ ce. Lahko pa opazimo da sam CLB ni le FPGA vdelan v mikrokrmilnik, vendar prinaˇ sa tudi nekatere novosti (npr. HLC), zaradi katerih je marsikatera aplikacija dokaj laˇ zja za implementacijo. Poleg tega so na voljo tudi precej moˇ cna tudi orodja v opisanem ekosistemu. Grafiˇ cno orodje omogoˇ ca upo- rabo tudi manj veˇ sˇ cim programerjem. Dodatne generi- rane simulacijske datoteke pa so v veliko situacijah ne- pogreˇ sljive, saj s samim opazovanjem zunanjih signalov teˇ zko odkrijemo morebitno napako. Enako velja za ge- nerirani diagram, ki je (ˇ ce ˇ ze ne drugaˇ ce) uporaben za odkrivanje napaˇ cnih in nepotrebnih povezav med posa- meznimi moduli v koprocesorju. Vendar pa tudi CLB, kot vsaka stvar ne pride brez pomankljivosti. Skoraj vsaka “izboljˇ sava” nad FPGA s seboj prinese tudi kakˇ sno frustracijo za programerja; grafiˇ cni vmesnih “CLB Tool” je na prvi pogled res pri- jazen, a se zaradi velike abstrakcije kaj hitro izgubimo med neˇ stetimi nastavitvenimi meniji. Kljub temu pa lahko reˇ cemo, da je takˇ sna izvedba do- datnega modula zelo smiselna. Nemalokrat se znajdemo v situaciji, kjer bi bilo potrebno modulirati nek signal, vendar je samo zanj uporaba dodatnega ˇ cipa nesmiselna. Poleg tega pa je s staliˇ sˇ ca delodajalcev velikokrat bolj smiselno uporabiti reˇ sitev, ki jo lahko implementira ob- stojeˇ c kader, kot pa iskanje znanja izven podjetja. Literatura [1] C2000™ Configurable Logic Block (CLB) in- troduction. Texas Instruments Inc. 2021. URL: https://training.ti.com/c2000- configurable - logic - block - clb - introduction. [2] Deming Chen, Jason Cong in Peichan Pan. FPGA Design Automation: A Survey, Foundations and Trends®in Electronic Design Automation. Zv. 1. 3. ZDA: now Publishers Inc., nov. 2006. [3] CLB Tool. SPRUIR8A. Rev. A. Texas Instruments Inc. ZDA, sep. 2019. URL: https://www.ti. com/lit/ug/spruir8a/spruir8a.pdf? ts=1608498444631&ref_url=https% 253A%252F%252Ftraining.ti.com% 252Fclb-training-c2000-mcus. [4] Peter Galicki. How to Migrate Custom Logic From an FPGA/CPLD to C2000™ Microcontrol- lers. SPRACO2A. Rev. 2020-7. Texas Instruments Inc. ZDA, sep. 2019. URL: https://www.ti. com/lit/an/spraco2a/spraco2a.pdf? ts=1618290495856&ref_url=https% 253A%252F%252Ftraining.ti.com% 252F. [5] A. Arockia Bazil Raj. FPGA-Based Embedded Sy- stem Developer’s Guide. ZDA: CRC Press, Taylor & Francis Group, 2018. [6] TMS320F2837xD Dual-Core Microcontrollers Te- chnical Reference Manual. SPRUHM8I. Rev. 2019- 9. Texas Instruments Inc. ZDA, dec. 2013. URL: https : / / www . ti . com / lit / ug / spruhm8i / spruhm8i . pdf ? ts = 1616431731212&ref_url=https%253A% 252F%252Fwww.ti.com%252Fproduct% 252FTMS320F28377D.