. : New eShop! - Mobilní verze - Pandatron.cz - Pandatron.sk - Diskuzní fórum - Zakázkový vývoj : .
 
Realizace průmyslových rozhraní v real-time aplikacích mikroprocesoru AM1808

Realizace průmyslových rozhraní v real-time aplikacích mikroprocesoru AM1808

Článek rozebírá možnosti realizace libovolných průmyslových rozhraní v aplikacích s operačním systémem, s využitím možností mikroprocesorů TI AM1808.

Požadavky dnešních real-time aplikací (aplikací, pracujících v reálném čase) na datová rozhraní se pohybují v rozmezí jednotek až desítek mikrosekund, výjimečně pak až v oblasti nanosekund. Problém je v tom, že je dnes stále větší část konvenčních mikroprocesorů určena pro provoz s tzv. vysokoúrovňovým operačním systémem (HLOS), jako je Embedded Linux nebo Windows Embedded CE. Ty vývojářům poskytují vysoký standard a stabilní jádro, avšak nepodporují deterministickou dobu odezvy menší než typ. jedna milisekunda. Jediné řešení spočívá ve vytvoření specializovaného I/O bloku, nezávislého na funkci HLOS.

Základní rozhraní jsou obvykle dostupná přímo v hardwarové struktuře čipu (jako je například UART, SPI a I2C). Pokud tomu tak není a v mikroprocesoru není vhodné rozhraní k dispozici, musí se vytvořit externě, s použitím uživatelských obvodů (ASIC) nebo pomocí konfigurovatelných hradlových polí (FPGA).

Především průmyslový sektor je přitom zdrojem celé řady komplexních aplikací s real-time požadavky a vývojáři jsou často odkázáni právě výhradně na použití externích obvodů ASIC nebo FPGA. Takový přístup je pak zdrojem nejen vyšších nároků na prostor v zařízení, ale vede i ke zvýšení výrobních nákladů a prodlužuje dobu vývoje.

Jedno z možných alternativních řešení přináší i společnost Texas Instruments (TI) a to v podobě mikroprocesoru AM1808 ARMTM. V tomto článku bych rád přiblížil možnost integrace real-time aplikace a speciálního rozhraní v jediném mikroprocesoru - bez nutnosti použití obvodů ASIC nebo FPGA.

Programovatelné real-time jádro v AM1808
Mikroprocesor AM1808 je založen na nízkopříkonovém jádru ARM9, konkrétně typu ARM926EJ-S RISK Core™ s pracovní frekvencí až 456 MHz. Kromě toho se na čipu nachází celá řada periferií, které jsou s výhodou použitelné právě v průmyslových aplikacích: 10/100 Mb/s Ethernet MAC (EMAC) s Management Data Input/Output (MDIO), USB rozhraní, I2C rozhraní, multi-kanálový zvukové sériový port (McASP) s 16 serializátory, multi-kanálový bufferovaný sériový port (McBSP) a SPI rozhraní. Dále samozřejmě nechybí 64-bitové čítače/časovače, rozšířený PWM modul, UART, velké množství GPIO, LCD řadič či podpora externích asynchronních pamětí a dalších prvků.

Nejdůležitějším rozlišovacím znakem obvodů je však programovatelné jádro, pracující v reálném čase - PRU (Programmable Real-Time Unit). Jedná se o samostatný mikroprocesorový blok, který je zcela nezávislý na jádru ARM a zajišťuje zprostředkování přístupu ke všem systémovým prostředkům mikroprocesoru. Vývojářům je tedy k dispozici ideální prostředek pro vytvoření real-time rozhraní protokolu Layer 2 a libovolných proprietárních komunikačních protokolů. To je právě značná výhoda pro průmyslové aplikace, které jsou známé svým požadavkem na velké množství protokolů různých komunikačních rozhraní, které je v případě použití operačního systému nutné přenést na externí hardwarové prvky.

Následující blokové schéma představuje jednotku subsystému PRU (PRUSS):


Obr. 1: Blokové schéma jednotky PRUSS

Základem PRUSS jsou dvě samostatná jádra, kdy každé z nich představuje nezávislý 32-bitový procesor architektury RISC s vlastní programovou a datovou pamětí. Obě jádra běží na polovině pracovní frekvence hlavního jádra ARM a díky možnosti přímého přístupu do programové paměti vykonávají všechny instrukce v jediném hodinovém cyklu. To znamená, pokud například jádro ARM běží na 456 MHz, jsou obě jádra PRU poháněna 228 MHz, neboli pracují s ekvivalentní dobou vykonání jedné instrukce v trvání pouhých 4,4 ns. Znalost přesného času instrukčních cyklů nám umožňuje výpočet algoritmů řídicích programů pro PRU a tím snadnou realizaci libovolných komunikačních rozhraní s požadavkem na odezvu v reálném čase.

Registrově adresovatelné vstupy a výstupy
PRUSS má k dispozici celkem 30 vstupů a 32 výstupů, které jsou určeny k přímému přístupu. Všechny vstupy a výstupy je možné jednoduše přesměrovat na piny mikroprocesoru, což se provede multiplexním výběrem při konfiguraci AM1808. Díky tomu je každý PRU schopen obsluhovat fyzické I/O piny a na vnější podněty reagovat i v řádech pouhých několika nanosekund. Mezi možné aplikace patří čtení dat na základě vnějších událostí, obsluha sériového protokolu, nebo generování hodinového signálu pro externí zařízení.

Obsluha přerušení a systémových událostí
Další výhodnou vlastností PRUSS je, že je schopen přijímat události z Interrupt Controlleru (INTC). To každému ze dvou PRU dává možnost obsluhy událostí (přerušení) z libovolných integrovaných periferií a jádra ARM, kdy jedinou podmínkou je povolení dané periferie v INTC registru a samozřejmě následné obsloužení pomocí PRU. Takto systém umožňuje vytvoření i poměrně náročných protokolů, které se obsluhují ve spojení se zvolenou integrovanou periferií. Příkladem mohou být serializační McASP/McBSP porty: PRU pracuje na protokolové vrstvě Layer 2 a pro práci na úrovni jednotlivých bytů či pro fyzický vstup a výstup používá serializační porty.

Pro zpětnou kontrolu stavu a informaci o úspěšném spuštění události, má PRU k dispozici odpovídající instrukce na testování stavových bitů. Po vyhodnocení události dojde v PRU k zavolání příslušné služby a po jejím vykonání se v INTC resetuje příslušný bit a aplikace přejde do stavu připravení na další událost.

Kromě toho jsou prostřednictvím INTC 8 dostupné rovněž obecné systémové události, což nám nabízí možnost vyvolat přerušení například po spuštění procesorového jádra ARM. Systémové události jsou určeny pro vnitřní procesorovou komunikaci (IPC) a jejich použitím odpadá zbytečná režie, vznikající při spolupráci PRU a ARM.

Architektura interní sběrnice
Každý PRU, stejně jako jádro ARM nebo EDMA kontrolér, může pracovat jako nezávislý řadič sběrnice – tzv. Bus-Master. Smyslem je zajištění přístupu ke všem systémovým prostředkům, které jsou mapovány do paměťového prostoru. Mezi takové patří například vnitřní a vnější paměť, UART, McASP, časovače a obecně všechny periferie, dostupné v systému. Aby však nedocházelo k rozpadu soudržnosti dat, neměla by žádná periferie používat víc než jeden Bus-Master. To je z toho důvodu, aby se zabránilo dvojímu přístupu. Uvedenou situaci však již Linuxové jádro řešení a to možností přidělení zdroje. Pro vzájemnou výměnu dat se pak požívá společná oblast paměťového prostoru.

V AM1808 je interní sběrnicová architektura (Switched Central Resources, SCR), stejně jako všechny dostupné periferie, propojena vzájemně, což i bez zbytečných komplikací umožňuje současné spouštění více sběrnicových přenosů zároveň. Díky tomu má PRU volný přístup do paměti i k libovolné periferii procesoru, aniž by došlo ke snížení propustnosti hlavního systému jádra ARM.

Programování real-time jednotky
PRU je programována v assembleru, kde je k dispozici více než 40 výkonných instrukcí. Ty pokrývají oblast aritmetiky, logiky a řízení toku dat, případně umožňují přístupu do paměti, bitovou manipulaci s pakety a další základní operace. V procesoru AM1808 má každý PRU k dispozici zhruba 4 KB programové paměti, podporující až 1024 instrukcí v assembleru. Kromě toho PRU umožňuje vykonávat kód z hlavního procesoru, nebo využít možností EDMA kontroléru druhého PRU. Samozřejmě není potřeba čekat na dokončení zpracovávaného kódu a PRU je možné kdykoliv zastavit nebo přesměrovat na nový program. Jediný PRU nám tedy pokryje i několik samostatných funkcí, které jsou aplikovány dynamicky, podle aktuálních požadavků dané aplikace. Řízení samotného PRU jádra je možné prostřednictvím PRUSS jednotky, kde jsou rovněž dostupné informace například o počtu zpracovaných instrukcí apod.

Příklad aplikace na PRU: Sběr dat a vytvoření digitálního filtru pro sigma-delta modulátor
Na jednoduchém příkladu si můžeme ukázat aplikaci jednoduchého měření analogových dat a jejich redukce pomocí digitální filtrace v PRUSS. Aplikace využívá funkce sigma-delta modulátoru (ADC převodníku) a nevyžaduje použití žádných externích komunikačních prvků.

Sigma-delta modulátor je analogově-digitální převodník, který poskytuje hodnotu, odpovídající průměrnému součtu hodnot v daném časovém intervalu. Obvykle se využívá ve spojení se tzv. SINC filtrem a kaskádově řazeným dolnofrekvenčním filtrem (viz příklad implementace na http://focus.ti.com/lit/an/sbaa094/sbaa094.pdf). Díky svým vlastnostem je vhodný především pro nízkofrekvenční signály, jako je například záznam a hlídání teploty, zpracování zvukového signálu, nebo měření proudu na motorech či generátorech, buzených PWM signálem.

Sigma- Delta modulátor typu ADS1202 má dynamický rozsah 80 dB s efektivním rozlišením 12-bitů při 10 kHz signálovém pásmu a s výhodou se využívá pří digitalizaci konvertovaného 10 MHz pásma. Obvod přitom vyžaduje pouze jediné napájecí napětí 5 V a jeho diferenční vstupy umožňují jak zachytávat výstupy frekvenčních konvertorů, tak měřit analogové hodnoty pomalých signálů.


Obr. 2: Signálový řetězec s implementovaným SINC filtrem

Připojení sigma-delta modulátoru k modulu PRUSS je vytvořeno přes synchronní datovou sběrnici s piny pro data (MDAT) a pro hodiny (MCLK). Při přenosu dat se pak aplikuje čtení jediného 31-bitového registru v obvodu modulátoru. Jednotka PRUSS může v tomto případě s výhodou využít instrukci QBBS (Quick Branch Bit Set), pomocí které program v jediném hodinovém cyklu otestuje stav vstupu i nastaví hodnoty na výstup.


Obr. 3: Blokové schéma propojení Sigma-delta modulátoru a jednotky PRUSS

Sigma-delta modulátor při 100 ns vzorkování poskytuje obraz vstupního signálu až do 10MHz. To však zároveň znamená, že PRU jednotka musí i v tomto intervalu připraveno hodnotu vyčíst a uložit, případně jinak zpracovat dříve, než bude k dispozici další hodnota. V opačném případě dojde ke ztrátě dat a výsledek měření bude zkreslen.
Pokud si uvědomíme, že PRU může být taktován až na 225 MHz, může v uvedených 100 ns vykonat přesně 22,5 instrukcí. Pouze tolik instrukcí nám musí stačit na veškeré úkony sběru dat a jejich filtraci.

V PRU je třeba implementovat následující funkce:

  1. Čekání na informaci o dostupnosti platné hodnoty: Test bitů MCLK v registru R31 na změnu hodnoty 0 – 1. Tato událost spustí následující kroky:
  2. Zpracování vzorku bitů MDAT z registru R31 v integrovaném SINC filtru
  3. Volání SINC filtru v závislosti na zvolené hodnotě (převzorkování frekvence).
  4. Uložení měřené hodnoty v lokální paměti a případně signalizace události hlavnímu systému
  5. Test překročení Min/Max limitu

V následujícím diagramu je uveden přehled jednotlivých úkolů PRU jednotky a srovnání počtu požadovaných instrukčních kroků pro filtry SINC2 a SINC3. Zjednodušená podoba filtru SINC3 je:

První čtyři funkce jsou v obou případech téměř totožné. Tato část vychází na 6 instrukcí pro SINC2 a 7 instrukcí pro SINC3, z celkových 22,5 instrukcí na jeden vzorek. V závislosti na zvoleném programu se buď čeká na další hodnotu, nebo se provede tzv. diferenciace fáze SINC filtru. Jakmile je tato část programu ukončena, je k dispozici další vzorek, určený pro následné zpracování. V tomto místě je možné rovněž implementovat funkci na hlídání min/max naměřené hodnoty a předejít tak ukládání nezajímavých dat do lokální paměti. Tím je možné celkových 21 instrukčních kroků (SINC3) redukovat na typických pouze 7 cyklů s tím, že další zpracování bude vyvoláno až na základě konkrétní situace.


Obr. 4: Počet cyklů vykonání jednotlivých implementací digitálního filtru

Shrnutí a závěr
Programovatelné real-time PRU jádro v procesoru AM1808 umožňuje vytvoření vlastního komunikačního rozhraní se speciálním protokolem a hlavně bez nutnosti použití dalších součástek. Naprogramované PRUSS rozhraní pracuje zcela nezávisle na zbytku systému. Díky tomu je zde možné provozovat vyspělý operační systém (HLOS) z řady Linux a Windows Embedded CE, který má k vytvořenému rozhraní samozřejmě plný přístup.

Díky PRU je možné rozšířit i klasická rozhraní, jako jsou například další UARTy (tzv. SoftUART). Přesto, že procesory AM1808 poskytují celkem tři integrované UARTy, které jsou dostupné jako samostatné periferní bloky, najdou se aplikace, které vyžadují až 4 nebo 8 UARTů. Příkladem takové aplikace může být IO-Link Master. Díky PRUSS je možné vytvořit další periferie McASP typu SoftUART, které v případě operačního systému vystupují jako klasická, hardwarová rozhraní. Případné zájemce je v tomto směru možné odkázat na Mistral SoftUART, který je ke stažení na webových stránkách výrobce (www.mistralsolutions.com), přičemž v případě OS Linux a PRU jednotky je v systému možné vytvořit až čtyři další SoftUARTy.

Mistral pro PRUSS dále vyvíjí i softwarový kontrolér sběrnice CAN, založený na principu simulace jednotlivých komunikačních pinů rozhraní CAN. Takové řešení je vhodné především pro zákazníky, kteří využívají interní sběrnice s omezenou přenosovou rychlostí. Uvedený kontrolér a příslušná dokumentace řešení Mistral je ke stažení na zmíněných webových stránkách.

Tím samozřejmě možnosti PRU ani zdaleka nekončí. Pokud to aplikace vyžaduje, je možné zajistit implementaci i mnohem komplexních real-time rozhraní, jako je například Profibus. K tomu v současné době TI nabízí certifikované PROFIBUS-slave řešení, založené na uvedeném procesoru AM1810.

Jednotka PRUSS se nachází i v celé řadě dalších mikroprocesorů a digitálních signálových procesorů (DSP) z produkce TI. Více informací je k dispozici na stránce wiki TI, stejně jako na stránkách obvodů AM1808, TMS320C6748 a OMAP-L138.

Odkazy & Download:
Domovská stránka firmy Texas Instruments
Domovská stránka firmy Texas Instruments v českém jazyce
Přehled distributorů

Aplikační řešení měření proudu na obvodu řízení motoru s ADS1202 a digitálním filtrem v FPGA
PRUSS Wiki
AM1808
AM1810 i integrovaným rozhraním PROFIBUS
OMAP-L138
TMS320C6748
Mistral Solutions, a Technology Design and Integration Company







GooglePlus1 FaceBook Twitter del.icio.us DiGG Google StumbleUpon Google Buzz Email RSS PDF Tisk

Komentáře (2):

Zobrazit starší 30 dnů (2)...



Název příspěvku: Vaše jméno: host
                 
  Zakázat formátování [Zakáže kódování a nahrazování smajlíky.]
Připojit soubory
reklama:
RTL SDR-3+
Nová generace moderních, snadno použitelných RTL SDR přijímačů vychází z vynikajících vlastností obvodů R820T.
Skladem od 1490 Kč

Informace uvedené v článcích jsou platné v době jejich vydání a samotné články jsou určeny pouze jako zdroj informací. Autor článku ani správce webu nenesou žádnou zodpovědnost za případné újmy na majetku a zdraví. Názvy společností a výrobků, loga a další multimediální materiál mohou být ochrannými známkami příslušných společností.
RSS kanály: | |
+420 723 846 377
info@pandatron.cz
Všechna práva vyhrazena | mobilní verze | © Copyright 2000 - 2016 ISSN 1803-6007