C166 je architektura 16bitových mikrokontrolérů, kterou vyvinula firma Siemens. Dnes ve výrobě procesorů vycházejících z architektury C166 pokračuje firma Infineon, která vznikla odštěpením od Siemense a firma STMicroelectronics. Od roku 1990 byla jádra řady C166/ST10 vyvíjena společně s firmou SGS Thomson (nyní STMicroelectronics).
Základní rysy Řada C166 je originální architekturou pro embedded systémy, zaměřenou na měření, regulaci a řízení. Jádro je inspirováno koncepcí RISC, takže instrukce nespotřebují mnoho taktů, avšak instrukční soubor je poměrně rozsáhlý, dokonce obsahuje instrukce pro přímé bitové manipulace. Výborně integrované vnitřní periferie, velmi pružný systém přerušení a mapování sady obecných registrů dovolují velmi dobrou odezvu na externí události.
Rodina C166 patří k prvním architekturám, které integrovaly v jediném čipu velké množství periferií – od sériových linek, čítačů, časovačů, registrů pro zachycení/generování externích událostí, až po rychlé a přesné 10bitové A/D převodníky.
Procesory vycházející z řady C166
Procesory uvedené v levém a pravém sloupci jsou zástupci dané řady, nemusí se jednat o ekvivalenty (mohou mít odlišný pinout).
jádro procesory Siemens/Infineon procesory ST poznámka C166 80C166 ST10F166 původní jádro od fy Siemens C167 80C167 ST10F167 rozšíření o PWM, „atomic“ instrukce, CAN, zrychlení XC166 XC167CI ST10F269 zrychlení násobení, rozšíření o vnitřní FLASH, rozšíření o DSP jednotku, přidání druhé jednotky CAN, přidání dalších 16 capture/compare I/O
Jádra řady C166 jsou zpětně kompatibilní, tzn. že vyšší jádro poskytuje všechny funkce, které má nižší jádro, neboli XC166 > C167 > C166. Jedinou výjimkou je, že původní procesor 80C166/ST10F166 měl dvě jednotky ASC pro sériovou komunikaci (tedy USART), základní CPU vyšších řady mají pouze jednu jednotku ASC.
Procesory uvedené v tabulce je třeba chápat jako zástupce dané řady, protože Siemens / Infineon a STMicroelectronics vyráběly nebo vyrábějí více typů CPU s daným jádrem. Různé implementace CPU se mohou lišit počtem vývodů, periferiemi, rychlostí a velikostmi integrované paměti RAM a šíSH.
Žádný z uvedených procesorů se již nevyrábí (stav roku 2026). Firma Infineon však vyrábí dosud vyrábí řadu "legacy" procesorů, které jsou založené na rošířeném jádře XC166.
Jádro Jádro řady C166 je ortogonální, nezaujme kromě instrukcí pro bitové manipulace žádnými zvláštními „výstřelky“, popis od výrobce je jasný a přehledný. Jádro C166 operuje nad šestnácti šestnáctibitovými univerzálními registry GPR, které jsou pojmenovány R0 až R15. Registry R0 až R7 jsou přístupné i po bajtech jako R0L, R0H, R1L, R1H, atd. Jinak jsou všechny GPR rovnocenné.
Instrukční sada je poměrně jednoduchá a přehledná, obsahuje instrukce pro násobení 16 bitů x 16 bitů na 32 bitů a instrukce pro dělení 32 bitů / 16 bitů. Instrukce pro dělení trvá přes 20 taktů a je přerušitelná, aby nezhoršovala odezvy systému na časově kritické události. Instrukce pro násobení trvá u starší řady také několik taktů, u procesorů generace XC166 probíhá stejně rychle jako ostatní instrukce. „Dlouhé“ skoky a volání umožňují využívání celé paměti pro program.
Jádro dovoluje pomocí DPP registrů nebo pomocí „rozšířených sekvencí“ adresovat až 16 MiB paměti, paměť programu a dat je mapovaná stejně. Instrukce pro čtení nebo zápis 16bitového slova nedokážou pracovat se slovy na lichých adresách, při takovém přístupu k paměti je vygenerováno speciální nemaskovatelné přerušení (TRAP). Toto omezení je ve skutečnosti předností architektury C166, protože pomáhá odhalovat slabá místa v softwaru.
Stavové registry jádra PSW – registr příznaků IP – 16bitový čítač instrukcí CP – ukazatel „kontextu“ registrové sady (určuje na které místo IRAM jsou mapovány registry GPR) SP – ukazatel zásobníku (určuje kde v IRAM se nachází) CSP – 16bitový ukazatel stránky kódu – rozšiřuje prostor pro program (adresa je daná CSP:IP) DPP0, DPP1, DPP2, DPP3 – registry pro stránkování dat – mapují paměť, aby bylo možné využít oblasti nad 64 kiB (u jádra C167 a vyšších existuje pro náhodné mapování paměti účinnější mechanismus pomocí instrukčních sekvencí „EXTP“ a „EXTS“) MDH, MDL, MDC – registry hardwarové násobičky / děličky
Univerzální registry Univerzální registry se označují termínem GPR (general purpose registers). Jedná se o registry R0 až R15. Registry R0 až R7 jsou rovněž přístupné po bajtech (R0 jako RL0 a RH0 atp.). Jinak jsou registry zcela rovnocenné. Zvláštností rodiny C166 je, že sada univerzálních registrů je mapována do vnitřní paměti, což dovoluje velmi rychlé přepínání kontextu mezi různými úlohami (při přepínání úloh není nutné ukládat a načítat registry, stačí je namapovat do jiné oblasti IRAM).
Vnitřní paměť IRAM a Speciální funkční registry Paměť IRAM a oblast SFR jsou napevno mapované ke konci třetí datové stránky (rozsah C000h až FFFFh). Zvláštní systémové postavení paměti IRAM spočívá v tom, že jedině do ní je možné mapovat systémový zásobník a univerzální registry GPR (tj. R0 až R15). Oblast SFR a část IRAM lze adresovat také bitově, pomocí instrukce bitových manipulací. Oblast SFR je rovněž pro některé instrukce přístupná zkráceným osmibitovým adresováním.
Speciální funkční registry: jsou těsně integrované s jádrem (mnoho instrukcí dovoluje adresování SFR-paměť) některé jsou systémové (ovlivňují časování přístupu do externí paměti, velikost a mapování zásobníku, segmentaci, řídí systém přerušení atp.) integrované periferie jsou těsně napojené na systém přerušení
Periferie Paralelní porty Většinu pinů CPU je možné individuálně zkonfigurovat do režimu digitálních vstupů nebo výstupů. Tyto jsou organizovány jako 16bitové brány PORT0 až PORT4. Dostupné režimy jsou: digitální vstup digitální výstup (push-pull) digitální výstup typu otevřený kolektor (open drain) alternativní funkce pin se do režimu alternativní funkce přepíná aktivací periferie, na kterou je daná funkce vázaná uživatel je většinou zodpovědný za to, že daný pin nakonfiguruje jako vstup nebo výstup
Čítače a časovače čítače T0 až T4 ST10F269 má navíc čítače T5 až T8
Jednotky CAPCOM CPU řady C166 disponují 16 rovnocennými vstupy/výstupy CC0 až CC15 jednotky CAPCOM, které umožňují měřit čas výskytu událostí (CAPTURE), nebo události generovat (COMPARE). Tyto jednotky využívají čas buď z čítače T0 nebo T1. ST10F269 přidává dalších 16 vstupů/výstupů (CC16 až CC31), které využívají čas buď z T7 nebo z T8. Základní aplikace jsou: měření času výskytu hrany změření času hrany a vyvolání přerušení (nebo PEC, tj. DMA) vygenerování přerušení v nastaveném čase generování impulsu nebo jednoduché PWM vstupy/výstupy CC0 až CC15 lze na ST10F166 (80C166), ST10F167 (C167CR) a ST10F269 připojit na piny P2.0 až P2.15
Sériová linka USART asynchronní sériová komunikace (SCI, např. pro RS232, RS485) synchronní sériová komunikace (Serial Peripheral Interface, např. pro připojení shiftregistrů nebo čipů s SPI rozhraním)
Synchronní sériová linka Serial Peripheral Interface (SPI, např. pro připojení shiftregistrů nebo čipů s SPI rozhraním)
Jednotky PWM 80C166 tuto periferii neobsahuje C167 a C269 umožňují generování až 4 nezávislých Pulzně šířková modulace signálů PWM mohou být zarovnané na hranu zarovnané na střed PWM jednotky neobsahují generátor mrtvých časů.
A/D převodník 10bitový paralelní A/D převodník multiplexování kanálů režim kontinuální konverze nebo konverze sekvence kanálů
Systém přerušení CPU řady C166 a vyšších mají pružný hierarchický systém přerušení.
až 16 skupin přerušení v každé skupině mohou být maximálně 4 zdroje přerušení každý zdroj přerušení lze nakonfigurovat do libovolné skupiny na libovolnou pozici přerušení ve vyšší skupině přerušuje procesy z nižší skupiny při současném požadavku na více přerušení v jedné skupině je uživatelský definované které přerušení má přednost
CPU je optimalizované pro možnost rychlé reakce na přerušení, takže dovoluje možnost přepnutí sady registrů přerušení dlouhých instrukcí (dělení, případně i násobení)
Jednotky PEC CPU obsahu 8 jednotek PEC. Jedná se o jednoduchou verzi DMA, která dovoluje přenos pefirerie-paměť nebo paměť-periferie. Nejsou tedy možné přenosy paměť-paměť. místo přerušení je možné vygenerovat přenos pefirerie-paměť nebo paměť-periferie po vyčerpání nastaveného počtu přenosů je vygenerováno přerušení Jednotky PEC lze použít například pro odlehčení procesoru při sériové komunikaci, při měření časů hran, atp.
Odkazy
Reference
Externí odkazy Instrukční sada ST10 Family Programming manual https://www.st.com/resource/en/programming_manual/pm0036-st10-family-programming-manual-stmicroelectronics.pdf Toto je instrukční sada pro CPU generace "ST10F269", tzn. C167 nemají DSP instrukce, C166 nemá atomic instrukce Uživatelská příručka C167CR https://www.keil.com/dd/docs/datashts/infineon/c167cr_um.pdf ST10F269 https://okcs-doku.kuennecke.com/html/ELEKTRONIK_DOKUMENTATION/Doku_MX/Bauteilzufuhr/Feederbank/1390350/datashet/ST10USER.PDF Datové listy Infineon C167CR: https://www.infineon.com/dgdl/Infineon-C167CR-DS-v03_03-en.pdf ST ST10F269: https://www.st.com/resource/en/datasheet/st10f269.pdf ST ST10F272: https://www.st.com/resource/en/datasheet/st10f272e.pdf ST ST10F276: https://www.st.com/resource/en/datasheet/st10f276e.pdf
Kategorie:Počítače