česky english Vítejte, dnes je středa 01. květen 2024

Nebojte se spousty nožiček – část 1: Výběr procesoru

DPS 1/2010 | Články
Autor: Ing. Jan Weinbrenner

Cílem tohoto seriálu článků je seznámit konstruktéry zařízení s použitím moderních součástek a ukázat, že není potřeba mít obavy s velkým počtem vývodů na integrovaných obvodech.

Spousta nožiček součástky reprezentuje převážně periferie, které se mohou, ale také vůbec nemusí využívat. Z toho také hned vyplývá, že mohu ve svých návrzích používat obvyklé postupy a nové věci aplikovat postupně.

V seriálu článků si postupně ukážeme, jak připojit naše zařízení do sítě internetu, budeme číst USB klíč, zapisovat do NAND FLASH paměti i na běžný pevný disk. Ukážeme si zobrazení na malém LCD displeji, stejně jako na obyčejném VGA monitoru, přičemž k mikroprocesoru bude připojena i myš pro ovládání kurzoru na obrazovce. Na příkladu vstupní periferie ukážeme připojení senzoru obrazu s velkým rozlišením, použitelné např. pro 3D fotoaparát, atd. Všechny popsané příklady přitom vychází z vlastních, funkčních a plně ověřených zapojení.

Spousta věcí je dnes založena na použití hradlových polí. I ony mají jistě své nezastupitelné místo. Například běžná USB klíčenka má kromě samotné paměti i speciální řadič s hradlovým polem. Ten sice nestojí ani 100 Kč, ale počítá samoopravné kódy, což není žádný jednoduchý výpočet. Tento řadič je podstatně rychlejší než nejrychlejší šestijádrový Intel.

Hradlovým polím se v našem seriálu trochu vyhneme. I když práce s nimi není také nikterak složitá, tak programovat např. v jazyce C umí mnohem více lidí. Pokud nám z firmy odejde člověk, který zvládá práci s hradlovými poli, potom najít náhradu může být docela problém.

Jako další pohled na věc se jeví použití některé vývojové sady s Windows embedded na bázi třeba ARM. Tam někdo udělal spousty práce za nás, ale zase nás to mnohdy omezuje. Pro skutečné realtimové aplikace se myslím nehodí. Trochu mě překvapilo, když jsem nedávno viděl bankomat a na něm spadlé Windows. O bezpečnosti těchto strojů mám od té doby své mínění.

Krok první, krok nejdůležitější – výběr procesoru

Zastávám názor, že pokud se zabývám vývojem elektroniky a následnou tvorbou firmware, člověk by se neměl držet moc při zemi. Dodatečně zjistit, že mě nestačí adresovaná paměť je rozhodně nepříjemná záležitost. Cena lepšího procesoru je přitom jenom o něco vyšší, přičemž jeho užitná hodnota roste daleko rychleji než jeho cena.

Uvedeme si příklad třeba na docházkovém systému se čtečkou karet. Obvykle je uvnitř nějaký AVR nebo 8051 a dvouřádkový displej. Autonomní fungování je velmi omezené. Výměnou za lepší typ procesoru, přidáním malého TFT displeje, snímače obrazu a třeba SD karty by zařízení dostalo další funkce. Přiložením karty by se na displeji mohla objevit fotografie dotyčného a současně by šlo sejmout a uložit jeho obrázek. Určitě by to mělo při výběrovém řízení úspěch, protože se tím odstraní např. možnost „tady máš kartu a odpoledne mě pípni“. Přitom cena součástek se o mnoho nezvýší.

A nyní se dostávám k tomu, co je podstatou tohoto článku – vlastní výběr procesoru. Většina dnešních zařízení má možnost nastavování funkčních parametrů z internetového prohlížeče. Další vlastností bývá ukládání nebo čtení většího objemu dat. Často se používá SD karta. Požadovanou vlastností je rychlá reakce na nějakou událost. Za hlavním kritériem vidím tedy rychlost. Přečtení obrázku technologie a následné zobrazení na malém LCD musí být rychlé.

A co třeba zpracování dat z AD převodníku, např. v servoměniči. Pokud použiji běžný procesor, tak načtu hodnotu a jsem rád, že ji stihnu zpracovat. Pokud však použiji rychlý procesor, tak hodnotu během cyklu přečtu mnohokrát. Odstraním hodnoty, které mají šum, a spočítám průměr, přičemž výsledná regulace je mnohem přesnější.

Obr. 1. CPU deska s ADSP-BF532, 32 MB RAM, SPI flash

Obr. 1. CPU deska s ADSP-BF532, 32 MB RAM, SPI flash

Výběr procesoru jsem si tedy rozdělil do 3 kategorií:

  1. kategorie jsou 8bitové procesory a některé 16bitové s vnitřní flash pamětí. Je nutné si uvědomit, že paměť flash je pomalá, a že i výsledný běh programu bude pomalý. Hodí se tedy hlavně do masově vyráběných zařízení typu regulátoru teploty, atd. Zástupcem této kategorie jsou procesory AVR, různé klony 8051, PIC.
  2. kategorie jsou 16 a 32bitové procesory např. typu Arm. Mohou také obsahovat flash paměť, ale kromě ní mají již také paměť RAM, která slouží jako cache. Navíc umožňují připojení SDRAM. Tyto procesory jsou již dostatečně rychlé pro zpracování dat z běžných technologických procesů, umožňují již snadnou práci s ethernetovou sítí, displeji, apod. Nehodí se ale pro velmi rychlé výpočty potřebné např. pro velmi rychlé regulace.
  3. kategorie jsou kategorií signálových procesorů. Jsou to procesory, kterými se budu zabývat. Jsou určeny pro úlohy, kde je potřeba provést rychle mnoho výpočtů, např. servoměniče, digitální osciloskopy, zpracování obrazu, zvuku, atd. Tyto procesory mají většinou 128 kB–1 MB paměti RAM v sobě. Část paměti slouží jako paměť programu, část jako paměť dat a část jako cache pro externí paměť SDRAM. Zde je potřeba si uvědomit, že paměť SRAM je alespoň o řád rychlejší než paměť FLASH či SDRAM. Celé se to provádí asi tak, že rutiny, které je potřeba rychle provést, a obsluhy přerušení se mapují do vnitřní RAM. Zástupci této kategorie jsou procesory Analog Device – Blackfin, široká řada procesorů Texas Instrument, Motorola a další. Tyto procesory mají v mnoha vlastnostech společné rysy a nelze říci, který z nich je nejlepší.

Obr. 2. CPU deska s ADSP-BF532, 32 MB RAM, 1 GB NAND flash, SPI flash

Obr. 2. CPU deska s ADSP-BF532, 32 MB RAM, 1 GB NAND flash, SPI flash

V tomto článku se budu věnovat procesorům od Analog Device – Blackfin. Tato řada procesorů čítá dnes přes 20 typů, které se liší převážně počtem periferií a velikostí paměti. Vybral jsem nejnižší mode lADSP-BF532 a nejvyšší 2jádrový model ADSP-BF561.

Co lze od signálového procesoru očekávat

V první řadě vysoký výkon, kterému je vše podřízeno, včetně instrukčního souboru a periferií. Porovnáme-li procesory ADSP-BF532 a ADSP-BF561, lze potom ADSP-BF561 popsat jednoduše tak, že obsahuje 2 rozšířená jádra ADSPBF532, která mají přístup do společné paměti. Navíc tento procesor funguje na vyšší frekvenci 600 MHz. Jak tedy výkon tohoto procesoru nejjednodušeji charakterizovat? Procesor má výkon 2400 Mips. To tedy znamená, že za dobu, než sečte 2 devítimístná čísla, světlo uletí jen 12,5 cm. A během tohoto výpočtu může nezávisle třeba přečíst znak ze sériové linky přes DMA kanál. Přestože je procesor celočíselný, dokáže spočítat 3 milióny násobení za sekundu v pohyblivé řádové čárce.

Pohled programátora na signálový procesor ADSP-BF532

Nejdůležitějším rysem je samozřejmě vývojové prostředí. Jako obvykle jsou zde 2 možnosti: vývojové prostředí od Analog Devices – Visual DSP++ nebo volný kompilátor gcc. Visual DSP++ lze stáhnout z webu výrobce s funkčností na 90 dní. Současně s vývojovým prostředím je dodáváno i velké množství optimalizovaných knihoven pro FFT, číslicové filtry, atd.

Procesor je tedy skutečně velmi rychlý. Většina instrukcí je provedena v 1 taktu hodin, přičemž některé instrukce lze také párovat s jinými a dosáhnou dvakrát vyšší výkon. Procesor má 32bitové registry pro všeobecné použití, dále indexové registry a indexové registry umožňující funkci kruhového bufferu. Všechny adresovací registry jsou také 32bitové. Další nespornou výhodou jsou hardwarové cykly, kdy mohou být do sebe vnořeny až dva cykly s hardwarovou podporou, přičemž cykly nemají žádnou časovou režii. Nastaví se tedy odkud a kam bude cyklus probíhat a kolikrát, časová režie je tedy jen na tělo cyklu. Dalším nesporným urychlením je možnost posuvu hodnoty v registru o libovolný počet bitů za 1 takt hodin. Vnitřní čítač procesoru pracuje na vnitřní frekvenci procesoru, která je zde 400 MHz. Všechny vnější periferie pracují na frekvenci od ní odvozené, obvykle 100–133 MHz.

Pohled konstruktéra hardware na signálový procesor ADSP-BF532

Procesor je vyráběn v TQFP pouzdru s 176 vývody. Není důvodu se polekat spousty vývodů, mnoho z nich je napájecích.

Procesor používá 2 napájecí napětí – vnitřní napájecí napětí 1,25 V a napájecí napětí pro vstupně výstupní obvody 3,3 V. Vyvedena je adresová a datová sběrnice, UART, SPI, PWM čítače, synchronní sériové porty a rychlá paralelní sběrnice např. pro A/D převodníky a několik vstupně výstupních linek. Pro počáteční pokusy je však potřeba velmi málo, jak je vidět na fotografii jednoduchého modulu, který sám používám pro další vývoj. Procesor k sobě potřebuje dva lineární nebo spínané stabilizátory napětí a oscilátor nebo krystal o frekvenci 10–40 MHz, sériovou SPI paměť a resetovací obvod. Deska obsahuje 2 konektory pro připojení k vyvíjenému výrobku. Na druhé straně desky je ještě místo pro osazení paměti SDRAM, pokud nevystačí s vnitřní pamětí.

Procesor si vyčte program ze sériové paměti do vnitřní RAM. Vnitřní frekvenci si procesor již vyrobí z vnějšího oscilátoru podle nastavení v programu. Pro naprogramování sériové paměti lze použít např. programátor Presto od firmy ASIX nebo lze na internetu nalézt mnoho jednoduchých zapojení na paralelní port. Vzhledem k tomu, že cena všech součástek nepřekračuje 500 Kč, může být cena samotné desky plošných spojů vyšší.

Pohled konstruktéra hardware na signálový procesor ADSP-BF561

Procesor je vyráběn v BGA pouzdru s 297 vývody. Přestože by tento počet vývodů mohl spoustu lidí odradit, obavy ani zde nejsou na místě. Dnes nám již na zakázku zapájí i pouze 1 kus větší počet firem. Koneckonců, více preciznosti a trpělivosti vyžadovalo nakreslení procesoru do knihovny návrhového systému než práce s vlastním procesorem.

Na druhé fotografii je vidět vývojový modul, který má opět procesor, SPI paměť, obvod pro úpravu úrovní sériového portu a 128 MB paměti RAM. Na spodní straně desky je ještě osazen 1 GB NAND flash paměti. I cena tohoto jednoho z nejvýkonnějších signálových procesorů je poměrně nízká, pohybuje se do 1000 Kč.

Závěr

Obě výše popsané procesorové desky fungují bez problému, i když byly v návrhovém systému desky propojeny pouze automaticky autorouterem. Používám je pro vývoj různých dalších zařízení, kdy je na vyvíjený obvod připojím přes konektory modulů. Mám dvě proto, abych měl volbu procesoru podle potřeby navrhovaného zařízení. Výhodou tohoto uspořádání je jednoduchost a skutečnost, že se mohu opírat o odzkoušené a hotové zapojení procesorů, které tak není potřeba řešit při návrhu nových obvodů.