ERK'2021, Portorož, 14-17 14 Emulacija inkrementalnega dajalnika Andrej Kenda, Mitja Nemec Univerza v Ljubljani, Fakulteta za elektrotehniko, Trˇ zaˇ ska 25, 1000 Ljubljana, Slovenija E-poˇ sta: andrej@kenda.one Povzetek Configurable Logic Block (CLB) is a response from Texas Instruments to the often difficult implementation of FPGA integrated circuits. This article presents how CLB can be used in order to implement an emulation of incremental encoder signals. In addition to presentation how the em- ulation is designed, the paper discusses how the CLB be- haves in practice and what are the experiences using the tooling to program the CLB. 1 Uvod V prejˇ snjem ˇ clanku smo pregledali zgradbo in delovanje sistema CLB (angl. configurable logic block), ki je od- govor proizvajalca Texas Instruments na ˇ stevilne teˇ zave pri implementaciji FPGA (angl. field-programable gate array). Kot je bilo opisano v prejˇ snjem ˇ clanku, za progra- miranje omenjenega koprocesorja uporabljamo orodje “CLB Tool”. To nam preko grafiˇ cnega vmesnika omogoˇ ca nastavljanje razliˇ cnih podsklopov ter generira kodo za uporabo v programu. Poleg generirane kode pa nam omogoˇ ca vpogled v vse podsklope preko simulacij- skih datotek ter dodatnega diagrama povezav. Primer praktiˇ cne uporabe CLB koprocesorja je emu- lacija inkrementalnega dajalnika. Emulacija inkremen- talnega dajalnika je uporabna predvsem v HIL in PHIL sistemih [3] [4], kateri so v zadnjem ˇ casu vedno bolj po- gosto v uporabi za preizkuˇ sanje elektronike namenjene za krmiljenje oziroma regulacijo elektriˇ cnih strojev. 2 Idejna zasnova Inkrementalni dajalnik je senzor kota gredi, ki generira dva digitalna signala A, B. Signala sta pravokotne oblike z vklopnim razmerjem 50% in sta med seboj zamaknjena za 90°. Tako preko faznega premika med njima sklepamo o smeri vrtenja, frekvenca signalov pa nosi informacijo o hitrosti vrtenja. Za emulacijo inkrementalnega dajalnika bomo za po- datek o hitrosti vrtenja vzeli vhodni pravokotni signal, ka- teremu lahko spreminjamo frekvenco in ga generiramo s ustrezno periferno enoto, ki omogoˇ ca generiranje takih signalov (PWM ˇ stevec). V CLB koprocesorju se vhodni signal uporabi kot vir takta in iz njega izpelje dva izhodna signala, ki sta drug drugemu zamaknjena za 90°. Poleg tega pa je potrebno dodati tudi sposobnost za spremembo smeri “vrtenja”, kar pomeni da ob doloˇ cenih pogojih zaˇ cne “prehitevati” prej poˇ casnejˇ si signal. Cilnji potek signalov simuliranega inkrementalnega dajalnika je prikazan na sliki 1, kjer lahko opazimo da je na vhod CLB koprocesorja prikljuˇ cen kvadratni signal z vklopnim razmerjem 50%. Kot je to dejstvo na veliko podroˇ cjih, je tudi tu moˇ znih veˇ c pristopov. Tako implementacija, opisana v nadaljevanju ni bila oˇ citna ˇ ze od samega zaˇ cetka in tudi samo raziskovanje je vkljuˇ cevalo nemalo neuspelih po- skusov. Vhod Izhod 1 Izhod 2 Izhod 1 Izhod 2 Vrtenje: Vrtenje v obratno smer: Slika 1: Cilnji potek signalov simuliranega inkrementalnega da- jalnika z uporabo CLB koprocesorja 3 Nastavljanje CLB podkslopov Nastavljanje CLB enote je najlaˇ zje preko uporabe orodja “CLB Tool”. Le-to orodje generira ustrezne “C” dato- teke, ki jih vkljuˇ cimo v projekt s katerimi potem glavno jedro MCU-ja ustrezno nastavi CLB enoto. V kolikor pa ˇ zelimo CLB enoto vkljuˇ citi v ˇ ze nare- jen projekt, ki temelji na drugaˇ cni arhitekturi programske opreme, ki ne podpira uporabe “CLB Tool” orodja lahko omenjene datoteke generiramo tudi s spletnim orodjem “SysConfig”, ki vsebuje povsem enak vmesnik [5]. 3.1 Sploˇ sne nastavitve Ker je v naˇ sem primeru CLB enota uporabljana relativno samostojno je pri razvoju programa za CLB za preverja- nje, ali je CLB enota pravilno nastavljena, najlaˇ zje upo- rabiti simulacijo. V ta namen je v orodju “CLB Tool” 15 za modul “BOUNDARY”, ki doloˇ ca vhode v CLB mo- dul, na voljo moˇ znost izbire simuliranega kvadratnega si- gnala. Za implementacijo inkrementalnega dajalnika je kot simuliran vhod definiran vhod “in2”, kar prikazuje tudi slika 2. Slika 2: Konfiguracija modula “BOUNDARY” v orodju “CLB Tool” 3.2 Nastavljanje parametrov Emulacijo inkrementalnega dajalnika smo implementirali na naslednji naˇ cin: • Za vir ure/hitrosti smo uporabili eCAP modul v funkciji PWM generatorja s katerim smo generi- rali 50% PWM signal, ki mu lahko nastavljamo frekvenco. • Preko ˇ stevca 0 in HLC-ja temu urinemu signalu prepolovimo frekvenco. • Preko ˇ stevca 1 in HLC-ja generiramo fazno zama- knjen signal s prepolovljeno frekvenco. Dodatno lahko ta signal invertiramo. Zasnova inkrementalnega dajalnika je prikazana na sliki 3 in uporablja 1 LUT4 modul, 2 ˇ stevca in HLC mo- dul. Implemetirana je v naslednjih korakih, ki se navezu- jejo na poteke signalov s slike 3 in 4. • Vhod “in2” je direktno in negirano preko LUT4 modula speljan v vhoda “e0” in “e1” HLC modula (vhoda za proˇ zenje dogodkov). • V HLC modulu se dogodki proˇ zijo ob pozitivnem robu proˇ zilnega signala, torej se pripadajoˇ c dogo- dek sproˇ zi na vsako periodo signala “in2” (s 180° zamikom). • HLC modul operira z vrednostmi “R0”, “R1”, “C0” in “C1”, pri tem je zaˇ cetna vrednost “R0” na- stavljena na 1. • Oba ˇ stevca sta nastavljena, da ne ˇ stejeta, nimata vhodnih signalov, le vrednost “MATCH1” je nasta- vljena na 1 - uporabljena sta le kot komparatorja. • Ob dogodku “e0” HLC modul zamenja vrednosti “C0” in “R0”, pri tem se izvrˇ sijo naslednji ukazi: – MOV C0, R1 - premakni vrednost C0 v R1, – MOV R0, C0 - premakni vrednost R0 v C0, – MOV R1, R0 - premakni vrednost R1 v R0, • Pri tem se ob vsakem pozitivnem robu vhodnega signala “e0” zamenja polariteta izhodnega signala “MATCH1”, ˇ stevca 0 - perioda signala je dvakrat veˇ cja od vhodnega. • Ob dogodku “e1”, ki se izvrˇ si s 180° zamikom glede na “e0”, se v ˇ stevec 1 vpiˇ se vrednost ˇ stevca 0 - “MATCH1” ˇ stevca 1 je tako enak signalu “MATCH1” ˇ stevca 0, le da je zakasnjen za ˇ cetrtino njegove periode. Pri tem se izvrˇ si ukaz: – MOV C0, C1 - premakni vrednost C0 v R1, • Signala “MATCH1” obeh ˇ stevcev sta speljana na izhod. LUT ! !in2 in2 Izhod 0 MATCH1 Števec 0 C0 e0: R0 MATCH1 Števec 1 C1 e1: C0 e0 e1 Izhod 2 HLC Slika 3: Shema boljˇ se zasnove inkrementalnega dajalnika s pomoˇ cjo CLB koprocesorja in2 Števec 0 MATCH1 !in2 Števec 1 MATCH1 Izhod 0 Izhod 2 Vhodni signal Izhodna signala števcev e0 e0 e1 e1 e0 e0 ... e1 e1 ... Slika 4: Potek signalov boljˇ se zasnove inkrementalnega dajal- nika s slike 3 3.3 Obraˇ canje smeri inkrementalnega dajalnika V drugem primeru iz poglavja 3.2 smo parametre nasta- vili tako, da je signal “MATCH1” iz ˇ stevca 1 vedno za- kasnjen glede na signal “MATCH1” iz ˇ stevca 0. Zato je potrebno dodati tudi logiko za obraˇ canje smeri simuli- ranega inkrementalnega dajalnika, saj ˇ zelimo simulacijo obeh smeri vrtenja. Za to uporabimo dodaten vhod “in0” v “BOUNDARY” modulu. Tega prav tako nastavimo 16 na simuliran kvadraten signal, le da mu periodo obˇ cutno poveˇ camo (pribl. 10-kratnik periode signala “in2”). Simulirani signal obravnavamo kot zunanjo tipko, ki v normalnem stanju zavzema logiˇ cno 1, ob pritisku pa logiˇ cno 0. To uporabimo pri izhodu iz CLB koprocesorja, kjer je signal potrebno speljati preko izhodnega LUT3 modula; • Signal “MATCH1” ˇ stevca 0 je speljan preko izho- dnega LUT3 modula 0, pri tem se ne spremeni. • Signal “MATCH1” ˇ stevca 1 pa je speljan preko iz- hodnega LUT3 modula 2. Pri tem se njegova negi- rana vrednost z logiˇ cno operacijo “XOR” primerja s signalom “in0”. Kot prikazuje slika 5, je signal izhodnega LUT3 modula 0 vedno enak, signal izhodnega LUT3 modula 2 pa se spreminja glede na stanje signala “in0”. Pri tem prejˇ snji signal glede na to stanje prehiteva oz. za njim zaostaja. Izhod LUT 2 in2 Izhod LUT 0 in0 sprememba smeri Vhodna signala Izhodna Signala izhodnih LUT modulov Slika 5: Prikaz izhodnih signalov iz CLB koprocesorja pri si- mulaciji inkrementalnega dajalnika, glede na simulirane vhodne signale Celotna shema konˇ cne implementacije je prikazana na sliki 6. LUT ! !in2 in2 MATCH1 Števec 0 C0 e0: R0 MATCH1 Števec 1 C1 e1: C0 e0 e1 HLC izh. LUT = izh. LUT !MA ^ in0 in0 Izhod 0 Izhod 2 Slika 6: Shema konˇ cne implementacije simuliranega inkremen- talnega dajalnika z uporabo CLB koprocesorja 4 Vhodni signali v CLB vhodni signali v poglavju 3 so bili za ˇ cas nastavljanja podsklopov zaradi enostavnejˇ sega dela le simulirani. Za delovanje pa je potrebno signal speljati iz enega od mo- dulov na integriranem vezju. Kot je razbrati iz poglavja 3.2, potrebujemo kvadratni vhodni signal z nastavljivo frekvenco ter signal za obraˇ canje smeri, ki bo v narav- nem stanju prevzel logiˇ cno 1, ob pritisku pa logiˇ cno 0. 4.1 Generiranje kvadratnega signala Za vhodni signal v CLB je uporabljen izhod iz “eCAP” modula, ki je v osnovi ˇ stevec. Ta odloˇ citev je nastala zgolj zaradi 32-bitnega ˇ stevca v omenjenem modulu, kar omogoˇ ca natanˇ cnajˇ so doloˇ citev periode predvsem pri nizkih frekvencah (najniˇ zja frekvenca = 200MHz=2 32 0;046Hz). Modul preko pulzno- ˇ sirinske modulacije generira kvadratni signal s po- loviˇ cnim delovnim ciklom. Implementacija funkcije za usposobitev “eCAP” modula v naˇ cinu “apwm” je prika- zana na seznamu 1. void ECAP apwm init ( f l o a t f r e q , f l o a t du ty ) f / * S e t u p APWM mode on CAP1 , * / / * s e t p e r i o d and compare r e g i s t e r s * / / * Enable APWM mode * / ECap1Regs . ECCTL2 . b i t .CAP APWM = 1 ; / * S e t P e r i o d v a l u e * / ECap1Regs . CAP1 = CPU FREQ / f r e q ; ECap1Regs . CAP3 = CPU FREQ / f r e q ; / * S e t Compare v a l u e * / ECap1Regs . CAP2 = ECap1Regs . CAP1 * du ty ; ECap1Regs . CAP4 = ECap1Regs . CAP3 * du ty ; / * I n i t i a l i z e GPIO p i n s f o r APWM1. * / InitAPwm1Gpio ( ) ; g Seznam 1: Implementacija funkcije za usposobitev “eCAP” modula v “apwm” naˇ cinu Opazimo lahko, da je za nastavitev delovanja po- trebno doloˇ citi le dolˇ zino periode in primerjalne vredno- sti. Slednja je namenjena preklopu iz visokega v nizko stanje pri generiranju PWM signala. Preko te funkcije tako generiramo signal z doloˇ citvijo frekvence in vklo- pnega razmerja (“freq” in “duty”) Za boljˇ si vpogled v sistem je preko “GPIO” modula ta signal speljan tudi iz naprave, kjer ga lahko opazujemo z osciloskopom ali logiˇ cnim analizatorjem. Ta signal je nato prikljuˇ cen na lokalni vhod 2 CLB koprocesorja, ter opravlja vlogo prej simuliranega vhoda “in2”. 4.2 Signal za obraˇ canje smeri Za obraˇ canje smeri je bil izbran signal “GPIO24”. Ta je nastavljen kot vhod z notranjim “pull-up” uporom, kar pomeni, da bo v odprtem poloˇ zaju zavzel logiˇ cno 1. Preko vhodnega vodila je prikljuˇ cen na vhod 0 CLB ko- procesorja in s tem prevzema mesto prej simuliranega si- gnala “in0”. 5 Delovanje inkrementalnega dajalnika Za laˇ zjo uporabo simuliranega inkrementalnega dajalnika so vse nastavitve, ki niso del orodja “CLB Tool” zapaki- rane v funkciji “CLB1 init”. Za konˇ cnega uporabnika pa je vse skupaj razkrito v funkciji, prikazani na seznamu 2. 17 void I n i t E n c o d e r ( f l o a t f r e q u e n c y ) f / * I n i t i a l i z e ECAP i n APWM mode * / / * w i t h 1 / 2 d u t y c y c l e . * / ECAP apwm init ( f r e q u e n c y * 2 , 0 . 5 ) ; / * I n i t i a l i z e t h e CLB1 b l o c k . * / C L B 1 i n i t ( CLB1 BASE ) ; g Seznam 2: Implementacija funkcije za nastavitev inkremental- nega dajalnika Funkciji nastavimo frekvenco inkrementalnega dajal- nika in preko tega se nastavi “eCAP” modul z dvokratni- kom te frekvence. Ta ima seveda vlogo vhodnega signala v CLB koprocesor. S seznama 2 lahko vidimo tudi klic prej omenjene funkcije “CLB1 init”, ki skrbi za nastavi- tev vseh ostalih parametrov CLB koprocesorja. Lastnosti tako implementirane emulacije inkremen- talnega dajalnika v veˇ cji meri doloˇ ca vir pravokotnega signala, s katerim nastavljamo hitrost vrtenja inkremen- talnega dajalnika. CAP enota, ki sluˇ zi kot vir tega si- gnala omogoˇ ca, da se perioda signala nastavlja na 5 ns natanˇ cno (pri mikrokrmilniku, ki ima sistemsko uro 200 MHz). Najkrajˇ sa perioda tako znaˇ sa 10 ns, najdaljˇ sa pa 0,0465 s (5ns 2 32 ). Korak periode znaˇ sa 5 ns. V primeru, da ˇ zelimo emulirati inkrementalni dajal- nik, ki ima 4096 pulzov na obrat to pomeni, da lahko emuliramo hitrosti od 0,157 vrt/min do neˇ zivljanskih 1,4 mijonov vrt/min, kar veˇ c kot zadoˇ sˇ ca za emulacijo danaˇ snjih pogonov. 6 Zakljuˇ cek Iz praktiˇ cnega primera lahko razberemo, da je CLB ko- procesor uporaben dodatek za marsikatero aplikacijo, kjer bi z njim lahko nadomestili FPGA ˇ cip. V gro- bem lahko reˇ cemo, da trditve proizvajalca (ob ignorira- nju trˇ znih izmiˇ sljotink seveda) v veliki meri drˇ zijo. CLB lahko marsikje nadomesti FPGA, je laˇ zji za programira- nje, ter je seveda nameˇ sˇ cen direktno na samem integri- ranem vezju, kar med drugim v veliko primerih pomeni tudi niˇ zjo ceno. Grafiˇ cni vmesnik “CLB Tool” zaradi svoje narave zahteva veliko potrpeˇ zljivosti. ˇ Ce je to teˇ zava pri tako majhni aplikaciji, si je lahko predstavljati teˇ zavnost pri obseˇ znih projektih. Koprocesor pa ˇ zari pri majhnih projektih, kjer je bi- stvenega pomena hitra implementacija ter se manipu- lira z manjˇ sim ˇ stevilom signalov. Prav tako je vsakemu programerju omogoˇ cena enostavna uporaba, brez da bi se popolnoma posveˇ cal takˇ snim vezjem. Predvsem pa povezave CLB-ja z ostalimi perifernimi napravami [2] omogoˇ cajo, da se CLB uporabi tudi samo za razˇ siritev funkcionalnosti periferne naprave (e.g. SPI vodilu lahko dodamo kompenzacijo zamika signalov med prenosom, zdruˇ zujemo veˇ c PWM signalov za generiranje priˇ zilnih pulzov pri eksotiˇ cnih toplogijah moˇ cnostne elektronike... 7 Dodatno branje Veˇ c informacij o sami implementaciji CLB je opisanih v [1]. Za migracijo obstojeˇ cih FPGA projektov na CLB in razliˇ cnih moˇ znostih uporabe CBL-ja pa je precej dober uvod vir [2]. Literatura [1] Nima Eskandari. Designing With the C2000™ Con- figurable Logic Block (CLB). SPRACL3. ZDA, avg. 2019. URL: https://www.ti.com/ lit/an/spracl3/spracl3.pdf?ts= 1608544448925&ref_url=https%253A% 252F%252Ftraining.ti.com%252F. [2] 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. [3] G. F. Lauss in sod. “Characteristics and Design of Power Hardware-in-the-Loop Simulations for Elec- trical Power Systems”. V: IEEE Transactions on In- dustrial Electronics 63.1 (jan. 2016), str. 406–417. DOI:10.1109/TIE.2015.2464308. [4] J. Nibert, M. E. Herniter in Z. Chambers. “Model- Based System Design for MIL, SIL, and HIL”. V: World Electric Vehicle Journal 5.4 (dec. 2012), str. 1121–1130. DOI:10.3390/wevj5041121. [5] SysConfig. Texas Instruments Inc. 2021. URL: https://dev.ti.com/sysconfig/.