C166

From Wikipedia, the free encyclopedia

Remove ads

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.

Remove ads

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).

Další informace jádro, procesory Siemens/Infineon ...

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.

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.

Remove ads

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ů
  • IP16bitový čí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 mohou přímo adresovat 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 jednotkami 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. Základní aplikace jsou:

  • měření času výskytu hrany
  • změření času hrany a vyvolání přerušení
  • vygenerování přerušení ve zvoleném čase
  • generování impulsu nebo PWM
  • ST10F269 má navíc druhou sadu jednotek CAPCOM, tzn. disponuje celkem 32 jednotkami CAPCOM

Sériová linka USART

Synchronní sériová linka

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 zaplnění bufferu 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.

Remove ads

Externí odkazy

/* ST ST10F276: https://www.st.com/resource/en/datasheet/st10f276e.pdf

Remove ads
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads