ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická – katedra měření
DIPLOMOVÁ PRÁCE Metody měření vybraných parametrů komunikačního standardu FlexRay a jejich implementace
Viktor Pokorný 2007
Anotace Tato práce se zabývá studiem specifických vlastností nového komunikačního standardu z oblasti automotive – standardu FlexRay. Hledá nepsané souvislosti standardu a přenáší jeho teorii do praxe. Dále se zabývá vybudováním demonstrační sítě postavené na bázi těchto znalostí, výběrem/realizací hardwaru a vytvořením univerzálního programového kódu jednotlivých nódů. Nakonec se zaměřuje na metodu analýzy vybraného parametru – délky komunikačního cyklu stanice v souvislosti se soustavně probíhající časovou synchronizací. Metoda měření je odvozena a dále převedena do praxe implementací do hradlového pole FPGA.
Annotation This thesis deals with study specific features of a new communication standard from automotive branch – The FlexRay standard. It finds unwritten context of standard and applies its theory into practices. It deals further with build up demonstration network based on obtained knowledge, with selection and implementation of the hardware and with writing universal program code of used nodes. The last it focusing on a method of analysis selected parameter – communication cycle length of each node in relation with systematically executed time synchronizing. Measurement method is educed and then transfered into practices by implementation in glue logic (FPGA).
Prohlášení Prohlašuji, že jsem svou diplomovou práci vypracoval samostatně a použil pouze podklady (literaturu, projekty, SW) uvedené v přiloženém seznamu.
V Praze dne 19.1.2007
………………………… podpis
Poděkování Chtěl bych tímto poděkovat své rodině, která mě zejména zpočátku studií hodně podporovala a motivovala. Dále bych chtěl nejmenovitě poděkovat některým kolegům z oboru, kteří pro mě vždycky byli a jsou dobrou inspirací. A konečné poděkování patří Ing. Janu Malinskému, jako vedoucímu diplomové práce, který akceptoval mé návrhy na trochu odlišné směrování diplomové práce, než bylo míněno zadáním.
Diplomová práce 2007
Viktor Pokorný
Obsah Obsah ...................................................................................................................................................1 Seznam obrázků ...................................................................................................................................3 1 Úvod.............................................................................................................................................5 1.1 Motivace pro nový standard sběrnice v automotive ............................................................5 1.2 Historie standardu a současný trh ........................................................................................9 1.3 Cíl práce .............................................................................................................................12 2 Rozbor zadání ............................................................................................................................13 2.1 Požadavky ..........................................................................................................................13 2.2 Koncepce řešení .................................................................................................................13 3 Standard FlexRay.......................................................................................................................15 3.1 Představení .........................................................................................................................15 3.2 Porovnání s dalšími standardy (LIN x CAN x FlexRay) ...................................................16 3.3 Topologie sítě.....................................................................................................................19 3.4 Fyzická vrstva ....................................................................................................................21 3.5 FlexRay stanice ..................................................................................................................24 3.6 Komunikační cyklus ..........................................................................................................25 3.6.1 Formát rámce .............................................................................................................26 3.6.2 Statický segment, kódování rámců ............................................................................28 3.6.3 Dynamický segment, kódování rámců.......................................................................32 3.6.4 Symbolové okno, kódování........................................................................................35 3.6.5 Klidový stav ...............................................................................................................36 3.7 Vzorkování příchozích bitů komunikačním kontrolérem ..................................................37 3.8 Synchronizace stanic, hierarchie časování.........................................................................38 3.8.1 Základní hierarchie časování .....................................................................................38 3.8.2 Časová synchronizace stanic......................................................................................39 3.9 Wake-up, Start-up clusteru ................................................................................................42 3.9.1 Wake-up clusteru, kódování ......................................................................................42 3.9.2 Start-up clusteru .........................................................................................................43 3.10 Závěrečné ustavení.............................................................................................................46 4 Stavba demonstrační sítě............................................................................................................47 4.1 Možnosti užitého hardwaru................................................................................................48 4.1.1 Mikrokontrolér MC9S12XDP512..............................................................................48 4.1.2 Vývojový kit SK-S12XDP512-A ..............................................................................49 4.1.3 Komunikační kontrolér MFR4200, výjimky v implementaci protokolu ...................50 4.1.4 Ovladač sběrnice TJA1080 ........................................................................................52 4.1.5 Deska FRDC s MFR4200 a 2x TJA1080 ..................................................................53 4.2 Využitá konfigurace realizačních prostředků ....................................................................54 4.2.1 Propojení signálových linek mezi deskami................................................................54 4.2.2 Vliv propojení desek na funkci periférií vývojového kitu .........................................57 4.2.3 Konfigurace DIP switchů a jumperů na obou deskách ..............................................58 4.3 Popis firmware stanice demonstrační sítě..........................................................................59 4.3.1 Namapování periferie MFR4200 do paměťového rozsahu mikrokontroléru MC9S12XDP512, rychlost přístupu ..........................................................................................59 4.3.2 Hlavní program, vývojový diagram ...........................................................................60 4.3.3 Inicializace periférií integrovaných na čipu...............................................................67 4.3.4 Inicializace TJA1080 a registrů MFR4200................................................................68 4.3.5 Výpočet CRC hlavičky rámce....................................................................................72 -1-
Diplomová práce 2007
Viktor Pokorný
4.3.6 Zaslání žádosti o start, nastavitelné prodlení .............................................................74 4.4 Firmware z pohledu obsluhy stanice pracující s oknem hyperterminálu (Windows)........75 4.4.1 První připojení stanice k počítači...............................................................................75 4.4.2 Podporované příkazy..................................................................................................75 4.4.3 Demonstrativní přenos dat .........................................................................................77 5 Analýza za pomoci hradlového pole FPGA...............................................................................78 5.1 Vybraný parametr – proměnná délka komunikačního cyklu stanice.................................79 5.2 Nóniová metoda měření časového intervalu......................................................................80 5.2.1 Klasické hradlování, idea, odvození ..........................................................................81 5.2.2 Nedostatky metody, potřeby ......................................................................................82 5.2.3 Nóniová metoda, idea, odvození................................................................................83 5.2.4 Nóniová metoda, vylepšení........................................................................................87 5.3 Od teorie k praxi – adaptace na daný problém, užití metody ............................................88 5.4 Využitá konfigurace realizačních prostředků ....................................................................90 5.4.1 Vývojová deska..........................................................................................................90 5.4.2 Použité I/O porty hradlového pole .............................................................................91 5.5 Popis měřícího automatu....................................................................................................92 5.5.1 Obecný popis funkce..................................................................................................92 5.5.2 VHDL kód, blokové schéma měřícího automatu/analyzátoru...................................96 5.6 Měřící automat/analyzátor z pohledu obsluhy .................................................................100 5.7 Naměřené výsledky..........................................................................................................102 5.7.1 Použité přístroje .......................................................................................................103 5.7.2 Proměnná délka komunikačního cyklu FlexRay .....................................................103 5.7.3 Simulované časové intervaly pro ověření metody ...................................................106 6 Závěr ........................................................................................................................................108 Použitá literatura ..............................................................................................................................109 Příloha A – schéma vývojového kitu SK-S12XDP512-A ...............................................................111 Příloha B – schéma Freescale Generic FlexRay Daughter Card .....................................................116 Příloha C – ukázka obsluhy stanice v okně Hyperterminálu ...........................................................120 Příloha D – struktura přiloženého CD..............................................................................................126
-2-
Diplomová práce 2007
Viktor Pokorný
Seznam obrázků Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr. Obr.
1-1 Současná architektura a rozložení sběrnic ve vozidle VW Golf V ......................................6 1-2 Univerzální příklad stávajícího obsazení elektroniky vozu..................................................7 1-3 Trend vývoje obsazení elektroniky ve vozidle.....................................................................7 1-4 FlexRay Protocol Roadmap................................................................................................10 1-5 Nová generace automobilu se sběrnicí FlexRay – Philips .................................................11 1-6 Fujitsu FPGA-Eva-Kit........................................................................................................11 2-1 Diplomová práce – Jiří Prokeš – r. 2005 ............................................................................13 3-1 Předpokládané nasazení sítě FlexRay v automobilu ..........................................................15 3-2 Závislost reálné přenosové rychlosti stanice na požadované – TDMA .............................16 3-3 Arbitráž zpráv na sběrnici CAN .........................................................................................17 3-4 Závislost reálné přenosové rychlosti stanice na požadované – CAN CSMA ....................17 3-5 Srovnání standardů LIN x CAN x FlexRay .......................................................................18 3-6 Spojení typu bod-bod .........................................................................................................19 3-7 Topologie pasivní sběrnice.................................................................................................19 3-8 Topologie pasivní hvězda...................................................................................................19 3-9 Topologie aktivní hvězda ...................................................................................................20 3-10 Hybridní topologie............................................................................................................20 3-11 Diferenciální sběrnice.......................................................................................................21 3-12 Elektrické stavy na sběrnici..............................................................................................22 3-13 Testovací konfigurace pro měření průběhu diferenciálního signálu ................................23 3-14 Minimální požadavky na průběh výstupního signálu.......................................................23 3-15 Minimální požadavky na průběh vstupního signálu.........................................................23 3-16 Architektura stanice na sběrnici .......................................................................................24 3-17 Komunikační cyklus.........................................................................................................25 3-18 Formát rámce....................................................................................................................26 3-19 Kódování rámce, statický segment...................................................................................31 3-20 Příklad rozvržení komunikačního cyklu FlexRay (bez symbolového okna)....................34 3-21 Kódování rámce, dynamický segment .............................................................................35 3-22 Kódování CAS a MTS v symbolovém okně ....................................................................36 3-23 Vzorkování stavu sběrnice, většinová volba ....................................................................37 3-24 Hierarchie časování ..........................................................................................................38 3-25 Stanovení parametru k......................................................................................................40 3-26 Výpočet konečné odchylky pro korekci ...........................................................................40 3-27 Potřebnost korekce rychlosti i offsetu ..............................................................................41 3-28 Prováděné korekce v komunikačních cyklech .................................................................41 3-29 Iniciátor vzbuzení clusteru ...............................................................................................42 3-30 Kódování WUS ................................................................................................................43 3-31 Stavový diagram Start-up procesu (ColdStart Node).......................................................44 3-32 Stavový diagram integračního procesu Sync nebo Normal Node....................................44 3-33 Start-up proces pro stanice s různou rolí ..........................................................................45 4-1 Freescale Generic FlexRay Daughter Card ........................................................................47 4-2 SofTec Automotive Development Kit SK-S12XDP512-A...............................................47 4-3 Zapojení asynchronního paměťového interface MFR4200................................................53 4-4 Zapojení HCS12 synchronního interface MFR4200..........................................................54 4-5 Propojení signálů mezi mikrokontrolérem a ovladači sběrnice TJA1080..........................55 4-6 Módy činnosti ovladačů sběrnice TJA1080 .......................................................................56 4-7 Obsazené porty mikrokontroléru zasunutím FRDC desky.................................................57 -3-
Diplomová práce 2007
Viktor Pokorný
Obr. 4-8 Konfigurace DIP switchů a jumperů nódu .........................................................................58 Obr. 4-9 Globální paměťový prostor mikrokontroléru MC9S12XDP512........................................59 Obr. 4-10 Vývojový diagram hlavního programu 1 .........................................................................61 Obr. 4-11 Vývojový diagram hlavního programu 2 .........................................................................62 Obr. 4-12 Vývojový diagram hlavního programu 3 .........................................................................63 Obr. 4-13 Vývojový diagram hlavního programu 4 .........................................................................64 Obr. 4-14 Vývojový diagram hlavního programu 5 .........................................................................65 Obr. 4-15 Vývojový diagram hlavního programu 6 .........................................................................66 Obr. 4-16 Vývojový diagram hlavního programu 7 .........................................................................67 Obr. 4-17 Tabulka konkrétního nastavení registrů MFR4200..........................................................71 Obr. 4-18 Výpočet CRC s generujícím polynomem.........................................................................73 Obr. 4-19 Výpočet CRC s CRC polynomem....................................................................................73 Obr. 4-20 Algoritmus výpočtu CRC hlavičky rámce .......................................................................73 Obr. 5-1 EP1S80 DSP vývojová deska.............................................................................................78 Obr. 5-2 Klasické hradlování hodinového signálu, situace 1 ...........................................................81 Obr. 5-3 Klasické hradlování hodinového signálu, situace 2 ...........................................................81 Obr. 5-4 Nóniová metoda, idea, odvození ........................................................................................83 Obr. 5-5 Nóniová metoda klasicky ...................................................................................................87 Obr. 5-6 Nóniová metoda s cejchováním..........................................................................................87 Obr. 5-7 Generování okna pro povolení průchodu START/STOP události .....................................89 Obr. 5-8 Použité I/O porty hradlového pole .....................................................................................91 Obr. 5-9 Obecný popis funkce měřícího automatu ...........................................................................94 Obr. 5-10 Detail funkce imaginárního čítače 2.................................................................................95 Obr. 5-11 Blokové schéma měřícího automatu - generátor oken, zobrazovač .................................96 Obr. 5-12 Blokové schéma měřícího automatu - rychle startující generátor, interpretr dat po sériové lince....................................................................................................................................................97 Obr. 5-13 Blokové schéma měřícího automatu - hlavní automat, čítače, cejchovací automat.........98 Obr. 5-14 Blokové schéma měřícího automatu - bloky vstupů a výstupů......................................100 Obr. 5-15 Histogram délek komunikačních cyklů, 65536 naměřených údajů................................104 Obr. 5-16 Histogram délek komunikačních cyklů, 262144 naměřených údajů..............................105 Obr. 5-17 Simulovaný cyklus o proměnné délce, pohled 1 ............................................................106 Obr. 5-18 Simulovaný cyklus o proměnné délce, pohled 2 ............................................................106 Obr. 5-19 Simulovaný cyklus o proměnné délce, pohled 3 ............................................................107
-4-
Diplomová práce 2007
Viktor Pokorný
1 Úvod 1.1 Motivace pro nový standard sběrnice v automotive V poslední době se na automobilovém trhu můžeme setkat s novými trendy,
jejichž
podstatou je zásah do různých podskupin řízení vozu. Zprvu to byly trendy ke zvýšení vlastní bezpečnosti posádky vozidla, v současné době jsou to již trendy ke zvýšení celkové bezpečnosti silničního provozu a v neposlední řadě také zvýšení komfortu řízení vozu. Vyjmenujme si několik příkladů těch nejviditelnějších zástupců: •
ABS (Antilock Braking System) zabraňující ztrátě adheze jednotlivých kol v podélném směru vznikající při prudkém brzdění či brzdění na povrchu, který nemá v tomto směru optimální vlastnosti
•
ESP (Electronic Stability Program) založený na okamžitém vyhodnocování parametrů o jízdě a aktivním vyrovnávání přetáčivosti i nedotáčivosti vozu způsobenou ztrátou adheze kol v bočním směru
•
EBD (Electronic Brake force Distribution) zajišťující elektronické rozdělení brzdné síly mezi kola vozu tak, aby bylo dosaženo za nepříznivých podmínek požadovaného brzdného účinku nebo alespoň maximálně možného
•
MSR (Motors-Schleppmoment-Regelung) zamezující negativnímu vlivu brzdného účinku motoru na chování vozidla při rychlém podřazení či rychlém „sundání nohy z plynu“
•
ASR/TCS (Traction Control System) regulující prokluz kol hnaných náprav při prudké akceleraci (podle přidružených funkcí a historií jsou označení těchto systémů mezi výrobci různá)
•
systém pro udržování bezpečného odstupu automobilu od objektu jedoucího vpředu v závislosti na rychlosti a dalších faktorech ovlivňujících bezpečnost provozu
•
systém pro zásah do řízení směru vozidla v krizových situacích jako je vyhýbání se překážce
•
automatický parkovací asistent ovládající celé řízení automobilu K systémům pro zvýšení vlastní bezpečnosti posádky vozidla musíme přidat také systém
AIRBAGů ve vozidle, který do seznamu systémů ovlivňujících řízení vozu nepatří.
-5-
Diplomová práce 2007
Viktor Pokorný
Jmenované systémy zahrnující senzory, akční členy a elektronické řídící jednotky (ECU) jsou ve většině dnešních automobilů propojeny sběrnicí CAN (Controller Area Network), jakožto primární sběrnicí dovolující všem zařízením komunikovat, sdílet informace a pracovat s jinými zařízeními.
Již dnes je ale díky počtu zařízení a možnosti ovlivnění některých základních funkcí automobilu chybou v jiném nedůležitém zařízení rozdělena sběrnice na několik částí. Můžeme říci dokonce, že systémy automobilu se během vývoje rozdělily na několik skupin, každý s vlastní komunikační sběrnicí, jejíž stav a vytížení by neměl ovlivňovat funkce jiné skupiny. Tento záměr samozřejmě v reálném voze splněn není, protože řada funkcí je globálních a zasahujících do funkcí více skupin a tak zde určitá provázanost existuje.
Na složitost současné situace se můžeme podívat na příkladu vozidla VW Golf páté generace (Obr. 1-1).
Obr. 1-1 Současná architektura a rozložení sběrnic ve vozidle VW Golf V
-6-
Diplomová práce 2007
Viktor Pokorný
Řešení spočívající v rozdělení sběrnic do několika okruhů je tedy ulička pro další vývoj slepá. Se vzrůstající složitostí systému a s velkým členěním vzniká opět poptávka po snížení počtu sběrnic v automobilu, po zvýšení jejich přenosové rychlosti a po zamezení vlivu chyby jednoho přístroje
na
ostatními
komunikaci (hledání
mezi jiného
mechanismu přístupu na sběrnici, než je dnešní CSMA – Carrier Sense Multiple Access metoda na sběrnici CAN).
Obr. 1-2 Univerzální příklad stávajícího obsazení elektroniky vozu
Vývoj jde stále kupředu a mnohé trendy mluví o technologiích „by-wire“. Všechny tyto podměty vedly některé výrobce k zamyšlení nad sběrnicí nové generace. Nejprve bychom si měli ale vysvětlit, co termín „by-wire“ v oboru automotive znamená. Jedná se především o termíny „drive-by-wire“ , „break-by-wire“, „safe-by-wire“, kde stávající mechanické a hydraulické vazby v budoucnu plně nahradí elektronika a přenos informace elektronickou cestou. Ihned samozřejmě vyvstávají otázky: Budou tato auta dostatečně bezpečná, když člověk nebude
moci
mechanickým
úkonem
zabrzdit, či změnit směr jízdy? Co když přenos informace selže? Tyto otázky byly spolu s nedostatečnou kapacitou sběrnice CAN pro stávající obsazení elektroniky vozu (Obr. 1-2), která v budoucnu ještě poroste (Obr. 1-3), hlavním motorem pro vývoj nového standardu automobilové sběrnice. Obr. 1-3 Trend vývoje obsazení elektroniky ve vozidle
-7-
Diplomová práce 2007
Viktor Pokorný
Heslovitě tedy hlavní body motivace pro nový standard automobilové sběrnice: − trh si žádá nový široce dostupný průmyslový standard pro komunikační systém vozu − současný zvyšující se počet různých komunikačních systémů ve voze je neudržitelný − poptávka po vyšších přenosových rychlostech po sloučení sběrnic − požadavek na deterministickou síť, u které je do detailu známo a je předvídatelné zpoždění při přenosu zprávy a chování při jakémkoliv vytížení sběrnice (důležité pro technologie „by-wire“) − požadavek na bezkolizní/bezchybovou síť související s předchozím bodem − požadavek na sběrnici dovolující použití distribuovaného řídícího systému, opět souvisí s výše uvedeným bodem a známou latencí přenosu informace − zvýšení bezpečnosti přenosu fyzickým médiem (sekundární záložní kanál)
-8-
Diplomová práce 2007
Viktor Pokorný
1.2 Historie standardu a současný trh Některé z výše uvedených požadavků vedly výrobce k určitému vlastnímu výzkumu. Nejvíce se v této oblasti angažovaly firmy BMW a DaimlerChrysler. Záhy se ale zjistilo, že nově kladené požadavky nesplňuje žádný z do té doby existujících komunikačních protokolů nebo že existující protokoly v některých bodech nevyhovují. Vznikla tedy potřeba spolupráce na novém protokolu jako standardu pro budoucí nové automobily s moderními technologiemi. To vše se dělo před rokem 1999.
V roce 2000 je tedy založeno konsorcium FlexRay postavené na spolupráci firem BMW, DaimlerChrysler,
Philips
a
Motorola
Semiconductor
Product
Sector
(nyní
Freescale
Semiconductor), o něco později doplněné o firmu Bosch.
V roce 2001 se připojuje firma GM (General Motors) a v roce 2003 VW AG (Volkswagen Automobile Group). Konsorcium má v současnosti 7 výše uvedených hlavních členů, dále pak 13 „prémiových“ členů a dalších 47 přidružených členů. V blízké budoucnosti se mluví o dalších 26 členech z řad firem ze sektoru vývoje pro automobilový průmysl.
Ke konci roku 2005 byla konsorciem zveřejněna specifikace protokolu, fyzické vrstvy a další přidružené dokumenty verze V2.1 a dále popis funkce a chování členu „Bus Guardian“ ve verzi V2.0.9.
-9-
Diplomová práce 2007
Viktor Pokorný
Nyní se pojďme podívat a prozkoumat současný trh elektroniky. Na obrázku (Obr. 1-4) vidíme
roadmapu
verzí
specifikace
protokolu
FlexRay
spolu se součástkovou základnou
firmy
Freescale a Philips. Nutno podotknout, že komunikační kontrolér MFR4200 k dispozici
je
stále pouze
v předprodukčních vzorcích a zřejmě se nikdy komerčně vyrábět nebude. Obr. 1-4 FlexRay Protocol Roadmap
Je postaven na starší specifikaci V1.1, obsahuje řadu chyb (viz. kapitola 4.1.3 Komunikační kontrolér MFR4200, výjimky v implementaci protokolu) a neimplementuje zcela všechna specifika protokolu FlexRay. Již během realizace diplomové práce měla firma Freescale ve vzorcích pro členy konsorcia kontrolér MFR4300 s implementací protokolu V2.1 a s odstraněním známých chyb svého předchůdce. Bohužel se nám jej podařilo získat až v závěru roku 2006, tedy před dokončením diplomové práce. Freescale také pokračuje ve vývoji integrovaných řešení „procesoru“ spolu s kontrolérem na jednom čipu na bázi procesorů S12XFR, MPC55xxFR. Označení „procesor“, které je užito je zavádějící, ale v textu lépe odlišitelné. Správný výraz pro procesor s integrovanými perifériemi je mikrokontrolér.
- 10 -
Diplomová práce 2007
Viktor Pokorný
Výrobce Philips kromě budiče sběrnice TJA1080 vyvinul „procesor“ SJA2510 na bázi jádra
ARM9
komunikačním
s integrovaným
kontrolérem
sběrnice
FlexRay ve verzi V2.1. V současné době je od konce roku 2005 dostupný ve vzorcích pro členy konsorcia a bohužel zatím pro širší okruh nedostupný. Mělo by jít o první na světě vyráběné integrované řešení na jednom čipu na bázi standardu FlexRay.
Obr. 1-5 Nová generace automobilu se sběrnicí FlexRay – Philips
Dalším hráčem na trhu výrobců je Fujitsu (Obr. 1-6), o jehož aktivitách a návaznostech nemáme mnoho informací. Za zmínku stojí, že Fujitsu byla první firma s implementací protokolu V2.1 na křemíku.
Obr. 1-6 Fujitsu FPGA-Eva-Kit
- 11 -
Diplomová práce 2007
Viktor Pokorný
1.3 Cíl práce Diplomová práce se věnuje jednou třetinou studiu obsáhlého standardu FlexRay, jakožto novému trendu v automotive a jeho přiblížení těm, kteří si tuto práci přečtou. Tato část práce si neklade za cíl jen výtah důležitých bodů standardu, ale je i obohacena o postřehy a zkušenosti z provozu a ladění sítě a uvádí některé souvislosti mezi uvedenými vlastnostmi standardu.
Další třetinou se věnuje vybudování demonstrační sítě postavené na bázi tohoto standardu, výběrem/realizací hardwaru a vytvořením univerzálního programového kódu jednotlivých nódů. Firmware řídícího mikrokontroléru je udělán tak, aby se choval maximálně variabilně a mohl tak být použit pro demonstrace této sítě jak na akademické půdě, tak i jinde, bez nutnosti zásahu do programu. To v důsledku znamená, že se nód chová po připojení k počítači přes sériový port jako virtuální konzole s nativním příkazovým řádkem, kde je možno zadávat příkazy jako „help“, „whois?“, či jiné, sloužící ke konfiguraci některých funkcí nódu, v případně nutnosti i ke konfiguraci, vyčítání a zobrazování registrů obsluhovaného komunikačního kontroléru sběrnice FlexRay.
Poslední třetinou se diplomová práce věnuje měření a analýze vybraných parametrů běžící sběrnice za pomocí hradlového pole FPGA. V tomto případě se specializuje na proměnný parametr délky komunikačního cyklu v souvislosti se soustavně probíhající synchronizací časové základny stanice na globální časové parametry sítě. Pro tento účel byla použita idea noniového měřiče časového intervalu, avšak důkladně přepracovaného pro účel kontinuálního měření po sobě jdoucích cyklů, cejchovaného během každé etapy odměru a adaptovaného na možnosti digitální techniky FPGA. Metoda zde bude důkladně popsána a odvozena. Hlavním cílem je ale uvedení tohoto významného tématu do praxe v České republice a dále inženýrská práce na předvýrobních vzorcích bez technické podpory výrobce a s nedostatkem informací typickým pro období před vypuštěním na trh (pozn.: okolo termínu odevzdání DP lze již běžněji nalézt informace týkající se tohoto tématu, MFR4300 byl vypuštěn na trh vč. podpory).
Tato diplomová práce by měla sloužit také jako reálná základna pro disertační práci, popř. další diplomové práce v oboru.
- 12 -
Diplomová práce 2007
Viktor Pokorný
2 Rozbor zadání 2.1 Požadavky Zadání diplomové práce hovoří o návrhu metod měření vybraných parametrů sběrnice FlexRay a to zejména o návrhu metod pro měření časování a synchronizačních procesů v clusteru této sběrnice a dalších funkcích. Navržená řešení mají být implementována za pomocí jazyka VHDL do programovatelného hradlového pole FPGA. Zadání předpokládá převzetí funkční sběrnice od předchůdce zabývajícím se tématikou na katedře měření.
2.2 Koncepce řešení Nedostatek informací a předvýrobních vzorků kontrolérů MFR4200/MFR4300 bohužel donutil předchůdce zpracovat tématiku pouze teoreticky a to popisem daného kontroléru a sběrnice. Práce je tedy přeloženým výtahem ze zmíněných oblastí a neřeší tedy fyzické problémy. Dalším možným zdrojem byla diplomová práce z roku 2005, jejímž řešitelem byl pan Jiří Prokeš. Ta měla za úkol zejména vyvinout pro firmu ST Microelectronics hardwarové rozhraní AMI-APB mezi IP funkcí implementovanou do hradlového pole FPGA a mikrokontrolérem STA2051, jenž měl plnit funkci řídicí jednotky (Obr. 2-1).
Obr. 2-1 Diplomová práce – Jiří Prokeš – r. 2005
- 13 -
Diplomová práce 2007
Viktor Pokorný
APB je rozhraní vnitřní sběrnice mikrokontroléru s jádrem ARM7 a tedy IP funkce implementovaná v externím hradlovém poli nebyla připojitelná k výstupnímu rozhraní tohoto mikrokontroléru (EMI). Výsledkem práce byl tak zejména tento interface. Navíc zapůjčené desky si firma ST odebrala zpět a tak na katedře měření nezůstal celkově funkční hardware.
Tyto skutečnosti mě vedly k postavení nové funkční sítě s vlastním hardwarem a vlastním programem jednotlivých nódů psaném v jazyce C pro mikrokontroléry umožňující svými funkcemi rekonfigurovatelnost a vhodnost pro demonstrační účely a následná měření. Vznikl tak odklon od zadání diplomové práce směrem k cílům diplomové práce popsaných v kapitole 1.3 Cíl práce. Na doslovné řešení vytyčených problémů v zadání tak zbylo méně prostoru.
- 14 -
Diplomová práce 2007
Viktor Pokorný
3 Standard FlexRay 3.1 Představení Standard FlexRay popisuje jak komunikační protokol a chování jednotlivých zařízení (nódů) vzhledem k síti (clusteru), tak i specifikuje parametry fyzické vrstvy. Byl vyvinut speciálně pro obor automotive a to zejména pro oblasti, kde je zapotřebí v předem známém garantovaném čase plná doručitelnost zprávy a předvídatelné chování celé sítě. Tyto klíčové parametry dovolují použití distribuovaného řídícího systému a bezpečnostních aplikací ovládající řízení vozidla bez mechanických přenosových prvků informace. Síť je dále jištěna dvojitou cestou pro přenos informace, která však nemusí být v nekritických aplikacích využita. Každá stanice (nód) může navíc obsahovat volitelný hlídací člen (bus guardian), který kontroluje korektní chování komunikačního kontroléru a zamezuje fyzickému přístupu na médium v nevlastněných časových slotech. To zabraňuje zejména vzniku kolizí na síti, jakémukoliv nedefinovanému stavu či rozpadu komunikace, popř. celé sítě.
Předpokládané nasazení sítě FlexRay v automobilu je ve výše uvedených aplikacích vyžadujících bezpečnost a deterministické chování sítě. Dále se díky vyšší přenosové rychlosti 10Mb/s a svým vlastnostem uplatní jako páteřní síť vozidla (Obr. 3-1).
Obr. 3-1 Předpokládané nasazení sítě FlexRay v automobilu
- 15 -
Diplomová práce 2007
Viktor Pokorný
3.2 Porovnání s dalšími standardy (LIN x CAN x FlexRay) U standardu FlexRay je na sběrnici přistupováno metodou TDMA (Time Division Multiple Access), česky vícenásobný přístup s časovým dělením. Prakticky to znamená rozdělení kanálu na časové úseky (time sloty), které jsou přiděleny účastníkům nebo jejich podfunkcím k vysílání. Ostatní účastníci nebo jejich podfunkce mohou v jakémkoliv time slotu poslouchat a odebírat si z něj data. Rozdělení time slotů je v tomto případě před rozběhnutím sběrnice známo a musí být nastaveno. Nevýhodou tohoto uspořádání je možnost nevyužití přenosové kapacity média, pokud rozdělené
sloty
nebudou
obsazeny přenosem dat. Tato situace
nastane
v automobilu
v případě, bude
že
vždy
univerzálně nakonfigurovaná síť, avšak při výrobě nebudou některé jednotky v závislosti na výbavě vozu obsazeny. Výhodou této sítě je, že při rostoucím požadavku na přenos dat poroste i reálný objem přenesených dat za určitý časový úsek a to až do limitu daným přidělenou přenosovou rychlostí (Obr. 3-2). Obr. 3-2 Závislost reálné přenosové rychlosti stanice na požadované – TDMA
Tento limit se přibližně rovná: PPR =
PPS / PSnC * PRVS ; kde: CPS
PPR
–
přidělená přenosová rychlost
PPS
–
přidělený počet slotů v komunikačním cyklu
PSnC –
právo na slot v každém n-tém komunikačním cyklu (doplňuje se číslo n)
CPS
celkový počet slotů v komunikačním cyklu
–
PRVS –
přenosová rychlost všech slotů v komunikačním cyklu
- 16 -
Diplomová práce 2007
Viktor Pokorný
U standardu CAN (Controller Area Network) je na sběrnici přistupováno metodou CSMA (Carrier Sense Multiple Access), česky vícenásobný přístup s detekcí nosné/probíhající komunikace. Prakticky to znamená, že pokud chce zařízení vyslat data, přistupuje na médium až po detekci klidového stavu. Při vysílání pak
provádí
příposlech
na
sběrnici a pokud detekuje dominantní úroveň,
zatímco
samo
vysílá
recesivní,
ihned
přestane s přenosem. Obr. 3-3 Arbitráž zpráv na sběrnici CAN
Tato vlastnost je využívána zejména ve chvíli, kdy po detekci klidového stavu chtějí dvě nebo více zařízení ve stejný čas přistoupit na sběrnici (Obr. 3-3). V tom případě bude přenesena zpráva s nejnižším číslem, tzv. identifikátorem, jehož bitové složení je v danou chvíli na sběrnici dominantní (příklad: v systému vysílačů s otevřeným kolektorem je dominantní úroveň „0“). Pomocí identifikátorů na začátku zprávy tak vzniká priorita paketů. Nevýhodou tohoto uspořádání je
negarantovaná
doručitelnost a latence zpráv s vyšším číslem identifikátoru obsazení
při přenosové
kapacity média zprávami s nízkými
čísly
identifikátorů (Obr. 3-4) a také možnost ovlivnění či výpadku celé sítě při chybném
fungování
firmwaru v některém ze zařízení. Obr. 3-4 Závislost reálné přenosové rychlosti stanice na požadované – CAN CSMA
- 17 -
Diplomová práce 2007
Viktor Pokorný
Možno ještě podotknout, že každé zařízení přijímá všechny zprávy a následně podle vlastního nastavitelného filtru čísel zpráv rozhodne, zda zprávu dále zpracuje. Identifikátor vyslané zprávy tak často nenese údaj o zasílateli ani příjemci, ale o významu obsahu dat uložených ve zprávě.
U standardu LIN (Local Interconnect Network) je na sběrnici přistupováno metodou MASTER-SLAVE. To znamená, že přístup je kontrolován jedním hlavním zařízením na sběrnici a na stranu podřízených zařízení se neklade žádný požadavek na arbitráž či management kolizních stavů. Hlavní výhodou této sběrnice je její jednoduchost a nízká cena implementace zařízení. Sběrnice je založena na jednoduchosti SCI (UART) interface. Nízká přenosová rychlost 20kbit/s nemusí být považována za nevýhodu, protože již od zrodu této sběrnice je znám cílový segment této nenáročné technologie.
Na závěr si uvedeme srovnávací tabulku výše uvedených standardů (Obr. 3-5) s jejich klíčovými vlastnostmi.
Obr. 3-5 Srovnání standardů LIN x CAN x FlexRay
- 18 -
Diplomová práce 2007
Viktor Pokorný
3.3 Topologie sítě Existuje samozřejmě mnoho kombinací zapojení nódů do sítě. Cluster FlexRay může obsahovat jeden či dva komunikační kanály. Základními topologiemi jsou však zapojení sběrnice, hvězda, či hybridní topologie. Zapojení hvězda může obsahovat jak pasivní, tak aktivní zařízení na distribuci komunikace do
jednotlivých
větví
zapojených jako bod-bod (Obr. 3-6). Obr. 3-6 Spojení typu bod-bod
Základním parametrem sběrnice je maximální vzdálenost „Ibus“ mezi dvěma libovolnými stanicemi maximálně 24m, výjimku tvoří zapojení s aktivními hvězdami, které tuto vzdálenost prodlužuje.
Dalším
významným
parametrem je zpoždění signálu Tpd po průchodu sítí, které nesmí být mezi žádnými stanicemi clusteru větší než 2,5µs. Nyní se pojďme podívat na parametry vybraných topologií.
U
topologie
sběrnice (Obr. hvězdy (Obr.
pasivní
3-7) i pasivní 3-8) opět platí, že
součet délek sběrnice mezi dvěma libovolnými
zařízeními
nesmí
přesáhnout 24m. Maximální počet odboček
sběrnice
resp.
ramen
hvězdy a tedy i připojených zařízení je 22. Topologie hvězda má logicky jediné pasivní spojení všech linek v jednom bodě.
Obr. 3-7 Topologie pasivní sběrnice Obr. 3-8 Topologie pasivní hvězda
- 19 -
Diplomová práce 2007
Viktor Pokorný
Topologie aktivní hvězda (Obr. 3-9) nám dovoluje prodloužit elektrickou vzdálenost mezi nódy
při
zachování
maximální
délky
jednotlivých pasivních úseků sběrnice.
Stále
ale
platí
pravidlo
pro
maximální
zpoždění signálu průchodem sítí při komunikaci mezi dvěma
libovolnými
zařízeními v clusteru. Obr. 3-9 Topologie aktivní hvězda
Využitím a spojením těchto topologií v jedné síti se dostaneme k hybridní topologii, která může vypadat, jak udává příklad na obrázku (Obr. 3-10). Konfigurace může
sítě
dokonce
vypadat i tak, že kanál A bude mít v clusteru topologii
aktivní
hvězda,
zatímco
kanál
B
pasivní Další
bude
sběrnice. popis
specifikace kapitola
a viz.
Použitá
literatura. Obr. 3-10 Hybridní topologie
- 20 -
Diplomová práce 2007
Viktor Pokorný
3.4 Fyzická vrstva Každý nód (stanice na sběrnici) obsahuje ovladač dvou identických kanálů. Elektrický přenos signálů v clusteru je prováděn za pomocí diferenciální sběrnice (Obr.
3-11).
To je
samozřejmě známá záležitost v oboru průmyslových sběrnic. Jejími hlavními výhodami jsou dobrá odolnost proti rušení za použití levných nestíněných kroucených vodičů a na druhou stranu také dobrá elektromagnetická slučitelnost v souvislosti s vyzařováním do okolí. Pokud se na médium (oba vodiče linky) dostane kapacitní vazbou sériové rušení x z okolí ve stejné míře, jeho výsledný efekt je na konci linky po zesílení signálu ideálním rozdílovým zesilovačem nulový. To samé platí pro rušení souhlasné, které vzniká při rozdílném potenciálu zemí vysílače a přijímače. Z rovnice (A + x) – (B + x) = A - B je to zřejmé. V reálném případě je potlačení souhlasného rušení v řádu 60 dB i více, což při dostatečné úrovni užitečného signálu postačuje a tedy rušení neovlivňuje přenos dat. Posledním rušivým prvkem může být indukované napětí do vodivé smyčky při vystavení měnícímu se elektromagnetickému poli (ui = dΦ/dt, Φ = dvojný integrál přes plochu z vektorů B*dS). Při použití kroucené dvoulinky se sudým počtem smyček (orientace smyček se střídavě mění) se indukavaná napětí (+ui , - ui) od měnícího se elektromagnetického vnějšího pole vyruší. Dále plocha každé elementární smyčky je zanedbatelná a tedy poslední smyčka, která by nebyla do páru s opačně orientovanou produkuje zanedbatelné ui (srovnej s původní plochou smyčky nekroucené dvoulinky).
Obr. 3-11 Diferenciální sběrnice
Použitý kabel pro přenos elektrických signálů není specifikován podle typu. Specifikovány jsou pouze jeho parametry. Tedy pro každý kanál se používá dvoulinka o impedanci 80Ω – 100Ω. Dalším parametrem je poměrné zpoždění signálu po průchodu vodičem, které je stanoveno na maximálně 10ns/m.
- 21 -
Diplomová práce 2007
Viktor Pokorný
Na sběrnici jsou definované 4 stavy (Obr. 3-12). Idle_LP je stav sběrnice, kdy jsou zařízení v low-power módu a komunikace neběží. Dalším stavem je klidový stav Idle, ten se vyskytuje v různých částech komunikace na sběrnici a to zejména v mezerách mezi časovými sloty a na konci každého komunikačního cyklu. Nakonec tu máme stavy DATA_1 a DATA_0, které v komunikaci odpovídají logické „1“ a logické „0“.
Obr. 3-12 Elektrické stavy na sběrnici
Standard FlexRay je navržen tak, aby při komunikaci nedocházelo k žádným kolizím. Z toho plyne jedna podstatná vlastnost. Není definována žádná dominantní úroveň ve vztahu ke stavům DATA_1 a DATA_0 a tím pádem ani stav na sběrnici při kolizi dvou vysílačů. Samozřejmě stav Idle je recesivní. Jednou jedinou výjimkou možných kolizí jsou startovací fáze protokolu při spouštění sběrnice, která bude popsána v kapitole 3.9 Wake-up, Start-up clusteru.
- 22 -
Diplomová práce 2007
Viktor Pokorný
Nakonec se pojďme podívat na minimální požadavky na průběh signálů na výstupu vysílače a vstupu přijímače bus driverů v clusteru, jak ukazují obrázky (Obr. 3-13, Obr. 3-14, Obr. 3-15). Další popis a specifikace viz. kapitola Použitá literatura.
Obr. 3-13 Testovací konfigurace pro měření průběhu diferenciálního signálu
Obr. 3-14 Minimální požadavky na průběh výstupního signálu Obr. 3-15 Minimální požadavky na průběh vstupního signálu
- 23 -
Diplomová práce 2007
Viktor Pokorný
3.5 FlexRay stanice Architektura nódu připojeného na sběrnici je postavena na několika základních prvcích (Obr.
3-16). Napájení, řídící
mikrokontrolér (µC) a ostatní prvky
související
zařízením
a
s daným
pak
také
komunikační kontrolér (CC), volitelný „bus guardian“ (BG) a „bus driver“ (BD), což jsou prvky
související
FlexRay.
Uveďme
hlavních
funkcí
se si
sítí popis prvků
souvisejících se sítí: Obr. 3-16 Architektura stanice na sběrnici
Komunikační kontrolér obsahuje: −
Interface pro spojení s řídícím mikrokontrolérem včetně zdrojů přerušení
−
Implementaci jádra protokolu
−
Řízení výměny zpráv pomocí bufferů
−
Implementaci synchronizace na globální časovou základnu sítě
−
Implementaci procedury vzbuzení spící sítě „Wake-up“ a startování sítě „Start-up“
−
Implementaci pro zasílání a příjem symbolů, řízení přístupu na médium
−
Error management a funkce pro diagnostiku sítě v určitém rozsahu
Bus Guardian: −
Chrání časové sloty na sběrnici proti neoprávněnému přístupu kontroléru
−
Chrání funkčnost sítě při chybě zařízení (špatně napsaný ovládací firmware)
−
Provádí detekci chyb a kontrolu obsahu v časové doméně
Bus Driver: −
Vysílá a přijímá data ze sběrnice (10Mbit/s)
−
Zabezpečuje nízké emise v souvislosti s elektromagnetickou kompatibilitou
−
Zajišťuje odolnost dat proti vnějšímu rušení (dif. buzení a příjem)
−
Kontroluje napětí jednotky
−
Detekce Wake-Up symbolu na médiu - 24 -
Diplomová práce 2007
Viktor Pokorný
3.6 Komunikační cyklus TDMA struktura sítě je realizována za pomocí jednotlivých v čase po sobě jdoucích komunikačních cyklů (Obr. 3-17). Cyklus se na sběrnici FlexRay periodicky opakuje se vším rozčleněním a nakonfigurovanými sloty.
Obr. 3-17 Komunikační cyklus
Jak je vidět na obrázku, obsahuje 4 části: statický segment, dynamický segment, symbolové okno a klidový stav na konci cyklu. Funkci jednotlivých částí si popíšeme v následujících podkapitolách. Základní globální jednotkou, ve které se měří čas na sběrnici je 1MT (makrotik). Nominální délka makrotiku v nanosekundách, zanedbáváme-li nepřesnost hodin jednotlivých stanic, musí být v celém clusteru shodná a známá před spuštěním sítě. Každý makrotik je v lokální stanici (nódu) skládán z celistvého počtu mikrotiků (µT) tak, aby se dosáhlo s určitou tolerancí stejné délky makrotiku. Mikrotik je lokální parametr a jeho délka závisí na použitém lokálním generátoru (krystalu) a od něj odvozených hodin. Jeden mikrotik je roven 1; 2; 4 násobku periody hodin stanice jakožto vzorkovací periody. Uvažované délky mikrotiku jsou 12,5; 25; 50ns. Více popisu v kapitole 3.8.1 Základní hierarchie časování.
- 25 -
Diplomová práce 2007
Viktor Pokorný
3.6.1 Formát rámce Do každého slotu může být vysílán jeden rámec, který je ještě před přístupem na fyzickou vrstvu zakódován. Jakým způsobem závisí na tom, zda-li jde o statický, či dynamický segment. Nyní se pojďme podívat na to, jak takový rámec (Obr. 3-18) před zakódováním vypadá a z čeho se skládá.
Obr. 3-18 Formát rámce
Rezervovaný bit slouží pro budoucí rozšíření standardu, vysílačem je nastaven na „log 0“. Indikátor preambule datového segmentu má dvě funkce pokud je aktivní. Jestliže je rámec vysílán ve statickém segmentu, indikuje přítomnost „network management“ vektoru na začátku přenášených dat. Pokud je rámec vysílán v dynamickém segmentu, poukazuje indikátor na to, že počátek dat má význam jako ID zprávy. Indikátor nulového rámce je aktivní v „log 0“ a indikuje, že rámec nenese žádná užitečná data. Zařízení v síti totiž vysílá, pokud je mu přidělen statický slot, rámce v každém cyklu, i když řídící procesor neposlal komunikačnímu kontroléru (Obr. 3-16) žádná data k přenesení. Naznačuje tak vlastně, že je jím slot obsazen a znemožňuje v tomto slotu přístup na sběrnici jinému zařízení s aktivním bus guardian členem. Popsaná vlastnost slouží jako ochrana před zásahem chybně fungujícího zařízení, které se může snažit přistoupit do zmiňovaného pro něj cizího slotu v důsledku chybně napsaného firmware či špatné informace o vlastnictví slotů. Kontext užití je popsán v kapitole 3.6.2 Statický segment, kódování rámců.
- 26 -
Diplomová práce 2007
Viktor Pokorný
Indikátor synchronizačního rámce říká, že rámec má být použit k synchronizaci časových základen stanic v síti, které jeho ID akceptují. Maximální počet rámců s tímto nastaveným bitem a synchronizační funkcí je omezen v komunikačním cyklu na 15. Synchronizační rámec může být vysílán pouze ve statickém segmentu a to na obou kanálech současně. Přesnější popis funkce je v kapitole 3.8.2 Časová synchronizace stanic. Indikátor startovacího rámce říká, že rámec má být použit k rozběhnutí sítě na které neběží žádná komunikace ani synchronizace. Výlučně vždy je využíván spolu s indikátorem synchronizačního rámce, samotný nikdy. Rámec tedy přebírá také pravidla platící pro synchronizační rámec. Po rozběhnutí sítě, tedy v normálním stavu, zůstává tento bit u rámce stále nastaven a nemá již žádnou funkci. Minimální počet zařízení v síti nutných pro rozběhnutí sítě za pomocí startup&sync rámců je 2. Více jak tři startovací rámce nemají pro síť žádný efekt. Přesnější popis funkce je v kapitole 3.9.2 Start-up clusteru. ID rámce obsahuje číslo slotu v rozsahu 1..2047, ve kterém je rámec vysílán. Délka dat udává velikost datového segmentu (označeno zeleně) a uvádí se jako počet dvoubajtů v rozsahu 0..127. Hlavičkové CRC slouží k případné detekci chybného obsahu dat a je počítáno z neměnící se části hlavičky každého rámce. Standard udává, že těchto 11bitů CRC si musí řídící procesor spočítat sám a vložit spolu s dalšími nastavovacími údaji rámce do registrů komunikačního kontroléru. Jako zdroj CRC tedy slouží 20bitů dat a to jmenovitě: bit sync, bit startup, 11bitů ID rámce a 7bitů délky dat. Generujícím polynomem CRC výpočtu je číslo 0x385, inicializačním vektorem výpočtu pak číslo 0x1A. Detaily a princip výpočtu CRC je uveden v kapitole 4.3.5 Výpočet CRC hlavičky rámce. Číslo cyklu slouží k identifikaci cyklu, v němž je rámec posílán. Uvádí se v rozsahu 0..63. Slouží volitelně k tomu, aby proces s nízkými požadavky na přenos dat neobsazoval určený statický slot v každém cyklu, ale jen v každém n-tém cyklu. V kontroléru je možno nastavit kromě všech možností tedy také filtr cyklu pro vysílání a příjem. Ve výsledku může být obsazen tedy jeden statický slot výstupními daty 64 procesů běžící v jedné stanici. Každý proces si pak obsadí tentýž statický slot v jiném cyklu. Jde o tzv. cycle multiplexing viz. v kapitola 3.6.2 Statický segment, kódování rámců. Po cyklu 63 následuje cyklus 0.
- 27 -
Diplomová práce 2007
Viktor Pokorný
Data0, Data1 … obsahují přenášená data, pokud je rámec platný (not null frame) a data vzhledem k nastavení bitu „indikátor preambule datového segmentu“ CRC segment slouží k případné detekci chybného obsahu dat v rámci. 24bitů CRC počítá před vysláním komunikační kontrolér (Obr.
3-16) sám a to podle aktuálního obsahu rámce.
Generujícím polynomem CRC výpočtu je číslo 0x5D6DCB, inicializačním vektorem výpočtu pak pro kanál A číslo 0xFEDCBA a pro kanál B číslo 0xABCDEF.
3.6.2 Statický segment, kódování rámců Statický segment (Obr.
3-17) může být rozdělen do x časových slotů (2 až 1023)
s konstantní předdefinovanou délkou v jednotce makrotik (1 MT – globální časová jednotka). Počet slotů i jejich délka je volitelná globální konstanta, viz. kapitola 3.8.1 Základní hierarchie časování, umožňující designérovi sítě volit optimální parametry pro danou aplikaci. Globální konstanty jsou společné pro všechny nódy sítě a musejí být známy již před startem sítě. Využití časového slotu je věc jiná. Kolik percentuálního času přiděleného slotu jednotka využije pro přenos svých dat záleží na ní, podmínkou je ale nepřesáhnutí svým zakódovaným rámcem striktně přidělený časový interval pro vysílání – statický časový slot. Velikost rámce (tj. délka dat režie spolu s délkou užitečných dat) může být v každém statickém slotu jiná, záleží na přenosových potřebách daného zařízení, jemuž bude slot přidělen k vysílání.
Pokud v jednotce běží více procesů předávajících data jiným jednotkám a pokud je pro předávání těchto dat zvolen designérem statický segment (zaručená latence pro kritická data), lze vybrat mezi dvěma způsoby, jak toto provést.
Jedním způsobem je, pokud objem předávaných dat za jeden komunikační cyklus spolu se zakódováním přesahuje možnosti umístění do jednoho statického časového slotu, alokovat příslušný počet těchto slotů pro jednotlivé procesy jednoho vysílače (jednotky).
- 28 -
Diplomová práce 2007
Viktor Pokorný
Druhý způsob se týká opačného případu, kdy v jednotce běží sice více procesů, ale jimi generovaný tok dat by plně nevyužil přidělené statické časové sloty. V tomto případě lze jeden přidělený statický časový slot jednotce multiplexovat mezi jednotlivé procesy v ní běžící. Stále ale platí pravidlo, že jeden statický slot může být přidělen pouze jedné jednotce, nelze tedy multiplexovat výstupy procesů z různých jednotek do jednoho statického slotu!
Jedné
jednotce pak v tomto duchu může být eventuelně přiděleno více statických slotů. Na eventualitu přepínání výstupů více procesů běžící v jednotce do stejného časového statického slotu je přímo standard FlexRay připraven a řeší ji pod termínem cycle multiplexing. Standard FlexRay totiž podporuje identifikaci aktuálního komunikačního cyklu (0 až 63) přímo v přenášeném rámci a tak lze komunikačnímu kontroléru (Obr. 3-16) přistupujícím na sběrnici zadat, aby data procesu patřící do daného statického slotu odeslal právě jen v určitém/v určitých předem definovaných komunikačních cyklech. Data od jiného procesu pak v cyklech jiných.
Tato vlastnost musí být ale využívána s ohledem na požadovanou latenci doručení kritických dat od vzniklé události. Proč? Uveďme si příklad.
Mějme jednotku, ve které běží 3 procesy (např. sběr, digitalizace a předzpracování dat ze 3 bezpečnostně důležitých senzorů automobilu). Latence doručení dat do jiných jednotek je pro systém a jeho chování kritická, proto jsme pro přenos zvolili statický segment. Výstupní datový tok všech 3 procesů je relativně malý a lze jej tedy za využití druhého způsobu (multiplexování) přenést jedním přiděleným statickým slotem.
Statický slot bude v každém lichém cyklu obsahovat výstupní data procesu 1. Zbylé sudé cykly budou obsahovat střídavě výstupní data procesů 2 a 3. Toto lze nastavením filtru pro vysílání či firmwarem jednotky zařídit. Pokud je délka komunikačního cyklu 1ms, bude latence přenosu dat od procesu 1 k jiným jednotkám maximálně 2ms, latence přenosu dat od procesů 2 a 3 pak maximálně 4ms. Pokud ale systém vyžaduje latenci přenosu dat od procesu 1 k jiným jednotkám maximálně do 1ms, nemůžeme využívat multiplexování, ale musíme pro výstup takovéhoto procesu alokovat samostatný statický slot. Jak jsme ale výše uvedli, díky malému množství dat v každém cyklu, nebude takto alokovaný statický slot v časovém měřítku relativně krátkým rámcem plně využit.
- 29 -
Diplomová práce 2007
Viktor Pokorný
Model přenosu výstupních dat uvažované jednotky tedy pozměníme na jiný, méně efektivní, ale s nižší latencí pro přenos kritických dat z výstupu procesu 1. Tedy uvažovaná jednotka si pro své 3 procesy alokuje 2 statické sloty a to tak, že v prvním statickém slotu budou v každém cyklu výstupní data procesu 1, v druhém statickém slotu lichých komunikačních cyklů výstupní data procesu 2 a nakonec v druhém statickém slotu, ale v sudých cyklech data procesu 3. Latence přenosu dat k jiným jednotkám bude pak maximálně 1ms, 2ms a 2ms. Požadavky jsou nyní splněny.
Nesmíme zapomenout, že standard FlexRay popisuje dva identické kanály pro každou stanici clusteru. Celý zde výše uvedený příklad předpokládá konfiguraci takovou, že proces jednotky obsadil kvůli bezpečnosti přenosu oba kanály A i B a to tak, že kanál A je využit pro výše uvedený příklad, kanál B pak jako duplicitní, záložní, sloužící pro získání dat ostatními jednotkami při poruše přenosu či výpadku na kanálu A (stejný obsah dat v alokovaných statických slotech). Pokud není vyžadována maximální bezpečnost přenosu dat, ale jen definovaná latence (taková konfigurace je ale neobvyklá), lze využít statický slot kanálu A pro proces 1 spolu s v čase identicky umístěným statickým slotem kanálu B pro procesy 2 a 3. Výsledkem by byl v čase obsazený jeden statický slot a opět latence přenosu dat k jiným jednotkám maximálně 1ms, 2ms a 2ms. Stále ale platí pravidlo, že jeden statický slot (v čase identicky umístěný na kanálu A a B) může být přidělen pouze jedné jednotce. Počítadlo aktuálního čísla statického slotu je tedy pro oba kanály A i B shodné.
Dále si zmiňme pravidlo, že alokace statických slotů pro jednotlivé jednotky musí být určena ještě před startem sítě. Pokud má jednotka alokovaný statický slot pro své vysílání (tím rozuměj v čase identický statický slot jak na kanálu A, tak na kanálu B) a při běhu systému dojde k tomu, že procesor neposlal komunikačnímu kontroléru sběrnice (Obr. 3-16) žádná data, která by v přiděleném slotu měla být odvysílána, vyšle kontrolér na médium prázdný rámec s příznakem NOT NULL FRAME = 0 a to proto, aby indikoval alokaci slotu pro svou jednotku. Tím zamezí nově připojujícím se stanicím s aktivním Bus Guardian členem přivlastnit si pro vysílání tento statický slot, ať už jde o jakékoliv důvody (např. neznalost rozvržení alokace statických slotů pro současné aktivní jednotky v síti nebo chyba v obslužném firmware procesoru jednotky).
- 30 -
Diplomová práce 2007
Viktor Pokorný
Příklad, jak vypadá rozvržení statického segmentu v praxi je na (Obr. 3-20). Umístěné rámce (v obrázku zeleně) jsou popsány příslušností jak číslem stanice/jednotky, tak i písmenem odlišující procesy v ní běžící.
Nyní si pojďme popsat, jak se zakóduje popsaný rámec na (Obr. 3-18) pro vysílání do přiděleného statického slotu (přístup na médium povolen signálem TxEN = 0). Encoding je zakreslen na (Obr. 3-19).
Obr. 3-19 Kódování rámce, statický segment
TSS – Transmission Start Sequence se skládá ze 3 až 15 bitů v úrovni low. Sekvence je používána ke správné funkci aktivních hvězd. Aktivní hvězda se používá jako hub (z terminologie počítačových sítí) pro každý kanál clusteru zvlášť. Obsahuje budiče sběrnice s přepínatelnou funkcí vysílání/příjem a ovládající hradlové pole. V základním stavu jsou všechny budiče sběrnice v režimu příjem. Po detekci příchodu začátku rámce na jeden z budičů sběrnice má hradlové pole čas během této doby TSS na přepnutí ostatních budičů do režimu vysílání a sestavení propojení k nim. O čas potřebný na popsaný úkon zkrátí na vysílacích částech délku TSS sekvence, tak aby bylo zpoždění mezi následně přijatým FSS na jedné straně a vyslaným FSS na ostatních stranách minimální. Po detekci ukončení rámce přepne ovládající hradlové pole všechny budiče zpět do základního stavu příjem. Tím je aktivní hvězda připravena na příchod dalšího rámce z jakékoliv strany (budiče sběrnice). Zapojení aktivní hvězdy je popsáno v kapitole 3.3 Topologie sítě. FSS – Frame Start Sequence představuje pak opravdový začátek rámce a slouží k synchronizaci vzorkovače bitů na straně přijímačů, viz. kapitola 3.7 Vzorkování příchozích bitů komunikačním kontrolérem. BSS – Byte Start Sequence slouží k synchronizaci přijímače/start následující sekvence 8 bitů dat.
- 31 -
Diplomová práce 2007
Viktor Pokorný
8 bitů dat slouží k přenosu připraveného rámce popsaného v kapitole 3.6.1 Formát rámce rozděleného bez jakýchkoliv ohledů po 8 bitových částech. Sekvence BSS + 8 bitů dat je vysílána tolikrát, kolikrát je potřeba k přenesení všech těchto částí. Jejich spojením na druhé (přijímací) straně je opět sestaven rámec popsaný svým formátem v kapitole 3.6.1. FES – Frame End Sequence indikuje ukončení vysílání rámce jak pro přijímací stranu, tak pro případnou aktivní hvězdu, přes kterou je rámec předáván ostatním stanicím. Ukončení vysílání musí přijít před koncem přiděleného časového úseku uvnitř slotu, jak ukazuje obrázek. Za touto sekvencí následuje ještě CID – Channel Idle Delimiter, který je reprezentován 11 bity stavu high - na obrázku (Obr. 3-19) není vyznačeno. Tento prvek slouží k indikaci ukončení komunikačního elementu.
Dále následuje stav channel idle, sloužící jako nárazníkové pásmo pro umístění rámců do po sobě jdoucích statických slotů. Toto umístění může díky lokálním časovým základnám jednotlivých stanic v globálním pohledu času tzv. plavat. Jak konec, tak i začátek statického slotu je tímto nárazníkovým pásmem v časové ose vybaven. Při běhu clusteru dochází samozřejmě k adaptaci a korekci lokální časové základny stanice na globální vidění času, viz. kapitola 3.8.2 Časová synchronizace stanic, tak aby díky ujíždějícím lokálním časovým základnám k překonání tohoto nárazníkového pásma nedošlo.
3.6.3 Dynamický segment, kódování rámců Dynamický segment (Obr. 3-17) může být rozdělen do y dynamických časových slotů, tak aby celkový počet statických a dynamických slotů nepřesáhl 2047. Dynamický slot má na rozdíl od statického variabilní délku a to podle toho, jak velkým rámcem je obsazen. Skládá se pak z celistvého počtu tzv. minislotů, kterými je dynamický segment v časové ose pevně rozčleněn. Jak je vidět z volitelného počtu (0 až 7986) těchto minislotů na dynamický segment, lze cluster nakonfigurovat tak, že komunikační cykly, pokud designér sítě uváží, žádný dynamický segment obsahovat nemusejí. Počet minislotů i jejich délka je volitelná globální konstanta, viz. kapitola 3.8.1 Základní hierarchie časování.
- 32 -
Diplomová práce 2007
Viktor Pokorný
Minimální délka jednoho dynamického slotu je jeden minislot a to právě tehdy, když stanice, které je dynamický slot přidělen, nemá data k vyslání. Maximální délka dynamického slotu (n minislotů) je závislá od konfigurace clusteru tak, aby po započetí vysílání rámce, jeho konec i s ukončovací sekvencí nepřesáhl konec dynamického segmentu.
Tento systém s variabilní délkou dynamických slotů vede k tomu, že umístění počátku určitého přiděleného slotu v čase závisí na obsazení předchozích slotů v dynamickém segmentu daty. Čím více stanic v předchozích dynamických segmentech odeslalo svá data, tím dále jsou posunuty počátky následujících dynamických slotů. Toto je rozdíl oproti statickému segmentu, kde jsou počátky statických slotů zakotveny pevně a stejně v čase pro každý cyklus. Designér sítě samozřejmě volí délku dynamického segmentu mnohem kratší, než by odpovídala součtu délek plně obsazených dynamických slotů, kdyby se všechna zařízení na sběrnici rozhodla ve stejný cyklus odeslat svá data. Tento případ totiž většinou nenastává, protože, pokud bychom měli stanici, která potřebuje přenést svá data každý cyklus, přiřadíme jí slot statický. V tomto je vidět opodstatnění dynamického segmentu, tj. ušetření teoretické propustnosti sítě sdílením části času cyklu (dynamický segment) pro více stanic, které mají nestálý výstupní tok dat – většinou výstupy událostí. V tomto případě, ale není zaručena latence přenosu zprávy (nedeterministický přenos), proč přesně si popíšeme nyní.
Pokud je totiž dostatečný počet předešlých dynamických slotů obsazen a velikost dynamického segmentu je omezená, může se počátek dynamického slotu přiděleného mé stanici posunout až za hranici těsně před koncem dynamického segmentu. V tomto případě nebudou data odeslána a pokus proběhne opět příští komunikační cyklus. Toto zajišťuje komunikační kontrolér sběrnice (Obr. 3-16) samovolně. Z výše uvedených úvah také vyplývá, že přidělením nižšího čísla dynamického segmentu určité stanici k vysílání, znamená zvýhodnění (vyšší prioritu k odeslání rámce) stanice oproti stanicím ostatním. Stanice s vyšším přiděleným číslem dynamického slotu se dostane totiž k vysílání, pouze tehdy, když v předchozích dynamických slotech ostatní stanice poslaly v souhrnu méně dat tak, že se počátek jí přiděleného dynamického slotu neposunul za výše uvedenou hranici těsně před koncem dynamického segmentu.
- 33 -
Diplomová práce 2007
Viktor Pokorný
Dalším rozdílem oproti statickému segmentu je to, že dynamické sloty na jednotlivých kanálech A a B se stejným číslem nemusejí začínat díky posouvání počátků ve shodný čas. Na kanálu A může být vysílán ve stejném čase rámec stanice 1, zatímco na kanálu B je ve shodný čas vysílán rámec stanice 2. Každý z kanálů má tedy nezávislé počítadlo čísla aktuálního dynamického slotu (ve statickém segmentu jedno shodné počítadlo pro oba kanály – jedné stanici v příslušném čase náleží přístup na oba kanály). Nakonec ještě zmínka o tom, že prvních 16 bitů užitečných dat z dynamického rámce může obsahovat identifikační číslo zprávy (Message Id). To zda-li tomu tak je, či nikoliv, ukazuje bit Indikátor preambule datového segmentu, viz. popis formátu rámce (Obr. 3-18). Komunikační kontrolér pak může příchozí zprávy z dynamického segmentu dle filtru čísla zprávy třídit a ukládat do bufferu, popř. je rovnou vyhazovat. Příklad, jak vypadá rozvržení dynamického segmentu v praxi v konkrétním komunikačním cyklu je na (Obr. 3-20). Umístěné rámce (v obrázku šedivě) jsou popsány příslušností jak číslem stanice/jednotky, tak i písmenem odlišující procesy v ní běžící.
Obr. 3-20 Příklad rozvržení komunikačního cyklu FlexRay (bez symbolového okna)
- 34 -
Diplomová práce 2007
Viktor Pokorný
Rámec v dynamickém segmentu je zakódován stejně jako v segmentu statickém, na konci rámce je navíc ale přidána koncová sekvence DTS (Obr. 3-21).
Obr. 3-21 Kódování rámce, dynamický segment
DTS – Dynamic Trailing Sequence je sekvence s proměnnou délkou, která trvá do konce posledního minislotu, který byl dynamickým slotem pro přenos rámce obsazen. Tedy její délka je maximálně poslední jeden necelý minislot. Používá se proto, aby ostatní stanice nedetekovaly stav bez komunikace ještě před ukončením tohoto posledního minislotu.
Za touto sekvencí následuje ještě Channel Idle Delimiter a Channel Idle stejně, jak je popsáno v kapitole 3.6.2 Statický segment, kódování rámců.
3.6.4 Symbolové okno, kódování Standard FlexRay definuje 3 možné symboly: Collision Avoidance Symbol (CAS), Media Access Test Symbol (MTS) a WakeUp Symbol (WUS). Symbolové okno (Obr.
3-17) může
obsahovat CAS nebo MTS. Třetí WUS bude popsán v kapitole 3.9.1 Wake-up clusteru.
CAS je využíván stanicemi ColdStart Node při startování sítě. O využití více v kapitole 3.9.2 Start-up clusteru.
MTS může být využíván všemi stanicemi při regulérním běhu clusteru. MTS a CAS se od sebe kódováním nijak neliší, jde jen o terminologii. O který ze symbolů přesně jde, přijímače rozlišují podle interního stavu svého komunikačního kontroléru (protocol status). Pokud stanice MTS vysílá, činí tak v symbolovém okně každého komunikačního cyklu na obou kanálech A i B. V clusteru mohou vysílat všechny stanice tento symbol zároveň, v takovém případě se symboly stanic na mediu překrývají. Jednotný tvar MTS a CAS symbolu ukazuje (Obr. 3-22).
- 35 -
Diplomová práce 2007
Viktor Pokorný
Obr. 3-22 Kódování CAS a MTS v symbolovém okně
TSS – Transmission Start Sequence se skládá ze 3 až 15 bitů v logické nule. Sekvence je používána ke správné funkci aktivních hvězd, více u popisku (Obr. 3-19) výše. cdCAS – Duration of CAS udává, kolik bitů logické úrovně nula symbol trvá. Protokol FlexRay V2.1 udává dobu trvání 30 bitů. Délka logické nuly na médiu během vysílání MTS je nejdelší souvislou logickou nulou během celého komunikačního cyklu běžícího clusteru. Tato vlastnost je užívána níže popsaným analyzátorem, viz. kapitola 5 Analýza za pomoci hradlového pole FPGA, k měření měnící se délky komunikačního cyklu stanice FlexRay clusteru vlivem synchronizace lokální časové základny na globální vidění času v clusteru a to tak, že měření časového intervalu je prováděno od náběžné hrany konce MTS předchozího komunikačního cyklu do náběžné hrany konce MTS současného cyklu.
3.6.5 Klidový stav Network Idle Time je poslední ukončující částí každého komunikačního cyklu. Slouží jako fáze cyklu, při které je počítána a aplikovaná korekce lokální časové základny. Její délka je proměnná v závislosti na prováděných výše popsaných korekcích. Při provedené korekci se klidový stav buď zkrátí nebo prodlouží o určitý počet mikrotiků, více o korekci v kapitole 3.8 Synchronizace stanic.
Klidový stav bez prováděné korekce obsahuje zbývající počet makrotiků cyklu, které nebyly alokovány do statického segmentu, dynamického segmentu nebo symbolového okna.
- 36 -
Diplomová práce 2007
Viktor Pokorný
3.7 Vzorkování příchozích bitů komunikačním kontrolérem Vzorkování stavu sběrnice provádí komunikační kontrolér přes ovladač sběrnice (bus driver) (Obr. 3-16) každým cyklem hodin. Jeden cyklus lokálních hodin trvá 12,5; 25 nebo 50ns. Počet vzorků na jeden bit je 8, což je neměnná konstanta protokolu.
Synchronizace vzorkovače stavu sběrnice se provádí na k tomu určené hraně symbolu BSS, vkládaném do vysílání při kódování rámce, popis pod (Obr. 3-19). Z navzorkovaných stavů je metodou
většinové
volby
vybrán
převažující stav (voted value) z okna šíře 5 vzorků obsahující aktuální vzorek a 4 vzorky předešlé. Touto metodou filtrace je
odstraněn
navzorkovaná
vliv data.
tzv.
glitchů
Situaci
na
ukazuje
(Obr. 3-23).
Výstupem tohoto automatu je 5. bit (jeden
bit)
z každých
8
zvolených
převažujících stavů (voted value) tak, aby byl dodržen správný bitrate. Tento výstup na obrázku zachycen není.
Obr. 3-23 Vzorkování stavu sběrnice, většinová volba
- 37 -
Diplomová práce 2007
Viktor Pokorný
3.8 Synchronizace stanic, hierarchie časování 3.8.1 Základní hierarchie časování Nejprve se pojďme zaměřit na samostatný nód (stanici v clusteru). V každé stanici běží samostatný hardwarový oscilátor, na kterém je založen vlastní lokální čas stanice. Frekvence oscilátoru slouží jako vzorkovací frekvence pro čtení úrovní ze sběrnice tak, že právě 8 vzorků připadá na délku 1 bitu. Způsob a mechanizmus práce vzorkovacího automatu je popsán v předešlé kapitole 3.7 Vzorkování příchozích bitů komunikačním kontrolérem. Od lokálního oscilátoru je dále odvozena specifická lokální časová jednotka s názvem mikrotik (µT), jakožto nejmenší časová jednotka standardu FlexRay. Jeden mikrotik je roven 1; 2 nebo 4 násobku periody hodin stanice. Délka mikrotiku v nanosekundách může být pro různé stanice různá. Další jednotkou je globální časová jednotka makrotik (MT). Každý makrotik je v lokální stanici (nódu) skládán z celistvého počtu mikrotiků (µT) tak, aby se dosáhlo s určitou tolerancí stejné délky makrotiku. Nominální délka makrotiku v nanosekundách, zanedbáváme-li nepřesnost hodin jednotlivých stanic, musí být v celém clusteru shodná a známá před spuštěním sítě. V této jednotce je pak měřen čas na sběrnici, délka slotů, komunikačního cyklu apod. Hierarchii časování ukazuje (Obr. 3-24).
Obr. 3-24 Hierarchie časování
- 38 -
Diplomová práce 2007
Viktor Pokorný
3.8.2 Časová synchronizace stanic Nyní se pojďme zaměřit na globální pohled věci. Díky tolerančnímu pásmu a nedokonalé stabilitě místních oscilátorů, navíc teplotně nekompenzovaných, lze předpokládat posun fáze lokálních časových základen směrem od bodu synchronizace sítě. Příklad z každodenního života – všichni jsme si před půl rokem seřídili na digitálních hodinkách čas ve stejný moment a dnes jsme se sešli. Porovnejme nyní údaje na hodinkách. Každý máme o trochu jiný vteřinový čas, někdo dokonce i minutový. Domluvili jsme si schůzku na dnešek 10:30, každý přišel podle svých hodin v daný čas, přesto jsme každý přišli v jiný moment. Kdo z nás přišel v tu správnou chvíli, kdo dříve a kdo později? Nemáme k porovnání etalon času a nemůžeme říci, který z údajů na našich hodinkách je ten správný. Pravděpodobně žádný z nich! A co situace jiná. Před půl rokem jsme se domluvili, že projedeme smluvenou křižovatku, kde jinak nikdo nejezdí, v čase za sebou se zavázanýma očima (raději nezkoušejte) podle svých hodin dnes v 10h30min10sec, 10h30min11sec, 10h30min12sec, 10h30min13sec, 10h30min14sec a 10h30min15sec (přirovnej médiu pro přenos elektrických signálů na sběrnici FlexRay). Každý přijede ulicí ve svůj přidělený čas podle svých hodin ze svého směru. Jak to dopadne je všem jasné. Situace je obdobná u sítě založené na standardu FlexRay s přístupem na médium TDMA. Umístění rámců od různých stanic do slotů může díky lokálním časovým základnám jednotlivých stanic v globálním pohledu času tzv. plavat. Pokud bychom dostatečně často nesynchronizovali své lokální hodiny, zřejmě budeme zasahovat svým vysíláním nejen do svého časového slotu, ale i přes okraj do sousedního.
V síti FlexRay existují 3 typy stanic: ColdStart Node,
Sync Node a Normal Node.
ColdStart Node vysílá v přiděleném statickém slotu na obou kanálech A i B rámec (prázdný nebo s daty) s příznakem startup&sync, viz. kapitola 3.6.2 Statický segment, kódování rámců. Stanice je určena pro startování neaktivní sítě. Při normálním běhu sítě je rámec nadále i s oběma příznaky vysílán a slouží jako synchronizační rámec. O startování sítě více v kapitole 3.9.2 Start-up clusteru. Pro start jsou potřeba nejméně 2 takovéto stanice, více jak 3 nemají význam. Dalším typem stanice je Sync Node, která taktéž vysílá v přiděleném statickém slotu na obou kanálech A i B rámec (prázdný nebo s daty), ale jen s příznakem sync. Tento rámec slouží jako synchronizační. Jak je využit bude popsáno níže. Synchronizační stanice tedy nemusí vlastnit 2 statické sloty, jeden pro - 39 -
Diplomová práce 2007
Viktor Pokorný
svou synchronizační funkci a druhý pro výstup dat svých procesů. Vše lze spojit do jednoho rámce. Synchronizačních nódů v clusteru spolu se startujícími nódy sítě, které synchronizační funkci při běhu plní také, může být v síti maximálně 15. Minimální počet synchronizačních stanic je 2 a to jsou, jak je popsáno výše, 2 stanice ColdStart Node s funkcí startup&sync. Posledním typem stanice je Normal Node, který žádnou z těchto vlastností nemá, neslouží tudíž ani ke startování sítě, ani k její synchronizaci. Nemusí tedy nutně obsadit jeden statický slot, jako předešlé 2 stanice. Všechny stanice bez výjimky se podle času příchodu synchronizačních rámců vybraných stanic vysílaných současně na obou kanálech A i B v přidělených slotech statického segmentu synchronizují. Jak synchronizace podle času příchodu synchronizačních rámců probíhá si popíšeme nyní. V každé stanici musí probíhat měření odchylky (v lokální jednotce mikrotik) mezi očekávaným a skutečným příchodem tohoto synchronizačního rámce. Jako vztažný bod měření příchodu rámce je zde brán Action Point statického slotu, tj. okamžik, ve kterém stanice začne vysílat rámec ve statickém
slotu.
Podle
počtu
naměřených
hodnot
odpovídajících počtu došlých synchronizačních rámců ve statickém segmentu komunikačního cyklu se určí parametr k (Obr. 3-25).
Počet hodnot 1÷2 3÷7 >7
k 0 1 2
Obr. 3-25 Stanovení parametru k
Naměřené odchylky jsou poté uspořádány podle velikosti, z těchto hodnot se vyškrtne k minimálních a maximálních hodnot. Ze zbylých hodnot se vybere maximální a minimální hodnota a určí se jejich průměr, který je následně považován za odchylku od globální časové základny (v lokální jednotce mikrotik) a může podle něj být provedena korekce. Postup pro k = 2 je nastíněn na (Obr. 3-26). Obr. 3-26 Výpočet konečné odchylky pro korekci
Nyní máme naměřenu odchylku lokální časové základny, můžeme si tedy popsat jakým způsobem se uplatní na korekci lokálního času. Každá stanice provádí podle změřené odchylky jak korekci rychlosti, tak korekci offsetu. Situace je nakreslena na (Obr. 3-27).
- 40 -
Diplomová práce 2007
Viktor Pokorný
Obr. 3-27 Potřebnost korekce rychlosti i offsetu
Konečná odchylka časové základny je počítána po měření prováděném ve statickém segmentu každého komunikačního cyklu, jak je uvedeno výše (Obr. 3-26) a na (Obr. 3-28) (tmavě žlutě). Korekce offsetu na základě tohoto čísla je ale prováděna jen v každém lichém cyklu (růžově) a to tak, že je prodloužen nebo zkrácen klidový stav na konci tohoto cyklu. Korekce rychlosti je počítána jen v každém lichém cyklu (tyrkysově) z rozdílů konečných odchylek v sudém a lichém cyklu, ale je prováděna ve všech cyklech (světle žlutě).
Obr. 3-28 Prováděné korekce v komunikačních cyklech
Korekce rychlosti je aplikována tak, že k nakonfigurovanému počtu mikrotiků (lokální parametr) délky komunikačního cyklu (globální parametr) v dané stanici je přidán či odebrán vypočítaný korekční počet mikrotiků.
- 41 -
Diplomová práce 2007
Viktor Pokorný
3.9 Wake-up, Start-up clusteru 3.9.1 Wake-up clusteru, kódování Standard FlexRay podporuje vzbuzení clusteru (stanic sítě propojené přenosovým médiem) příchodem vnější události. Minimální požadavek na provedení této operace je, že všechny ovladače sběrnice příslušných stanic jsou pod napájením. Dalším požadavkem je, aby alespoň jedna stanice byla v tomto stavu schopna reagovat na vnější událost (z pohledu clusteru), uvést se po detekci události v činnost (komunikační kontrolér, ovladače sběrnice a ostatní potřebné součásti) a zaslat požadavek vzbuzení (wake-up symbol) po sběrnici ovladačům ostatních stanic připojených na síť (Obr. 3-29). Takovouto vnější událostí může být například zasunutí klíčku automobilu, odemknutí dveří nebo cokoliv jiného. Před započetím vysílání wake-up symbolu stanice provádí příposlech na médiu, tak aby neohrozila komunikaci na síti vysíláním svého symbolu do již nastartované sítě. Tedy wake-up symboly jsou vyslány jen v případě, že na sběrnici není žádná komunikace,
pokud
je,
nód přejde bez vyslání symbolů rovnou do stavu start-up.
Dalším
pravidlem je, že wake-up symbol může být jednou stanicí vysílán pouze na jednom z kanálů A nebo B,
nikoliv
na
obou
současně.
Obr. 3-29 Iniciátor vzbuzení clusteru
Napájené ovladače sběrnice ostatních připojených stanic po detekci wake-up symbolu (Obr. 3-30) na médiu vzbudí a uvedou v činnost zbylou část hardwaru svého nódu. To se provede pouze sepnutím napájení pro zbytek zařízení stanice, uvedení do provozu a přechod do stavu startup zajistí mikrokontrolér (Obr. 3-16). Popřípadě jedna ze stanic vzbuzených po síti vyšle wake-up symboly na opačný kanál, než byl kanál po kterém byla vzbuzena.
- 42 -
Diplomová práce 2007
Viktor Pokorný
Wake-up symbol se skládá z logické úrovně nula délky 60 bitů a neaktivního času délky 180 bitů (údaje pro konfiguraci sítě na přenosovou rychlost 10Mbps). Pro rychlost 5Mbps jsou hodnoty délky poloviční tak, aby měl symbol v globálním pohledu bez ohledu na nakonfigurovanou rychlost sítě vždy stejnou délku v µs a mohl být detekován všemi ovladači sběrnice. Počet vyslaných symbolů je 2 až 63, závisí na nastavení firmware stanice. Jednotný tvar WUS symbolu ukazuje (Obr. 3-30).
Obr. 3-30 Kódování WUS
3.9.2 Start-up clusteru Předtím, než je fáze start-up v clusteru provedena, musejí být připojené účastnící se stanice zapnuté a vnitřně nakonfigurované na parametry příslušné sítě, ke které se budou připojovat, a na své role v síti (ColdStart Node, Sync Node, Normal Node). Ve většině aplikací v praxi zřejmě budou stanice ve stavu spánku s napájenými ovladači sběrnice (ostatní součásti stanice vypnuté) a proto je bude potřeba nejprve vzbudit, viz. předchozí kapitola 3.9.1 Wake-up clusteru. V našem školním případě (stanice s komunikačním kontrolérem MFR4200, které v dané hw konfiguraci FRDC nepodporují vzbuzení po síti) postačí stanice zapnout.
Start-up fáze je prováděna na obou kanálech současně. Iniciátory této fáze jsou stanice s vlastností „ColdStart Node“. V clusteru jsou potřeba nejméně 2 takovéto stanice, více jak 3 stanice nemají pro start sítě význam. Jak jsme si již v kapitole 3.8.2 Časová synchronizace stanic popsali, stanice ColdStart Node spolu se stanicí Sync Node mají po startu sítě synchronizační funkci. Maximální počet takovýchto synchronizačních stanic je omezen v clusteru na 15.
- 43 -
Diplomová práce 2007
Viktor Pokorný
Coldstart Node nejdříve monitoruje stav sítě. Pokud neidentifikuje komunikaci nebo symbol CAS (Collision Avoidance Symbol), započne s inicializací jako Leading ColdStart Node. V opačném případě se integruje podle aktuálního stavu sítě patřičným způsobem do clusteru jako Following Coldstart Node. Leader nejprve vyšle CAS a v následných komunikačních cyklech postupně start&sync rámce. Ostatní ColdStart Nódy se probudily nepatrně později a během počátečního
monitoringu
detekovaly CAS nebo již rámce leadera, tímto se staly Following ColdStart Node, tedy poslouchají dále. Po detekci start&sync rámců leadera v po sobě jdoucích 4 komunikačních cyklech se synchronizovaly a i ony se připojují do clusteru. Nyní vysílají
své
start&sync
všechny ColdStart Nódy. Stavový diagram start-up procesu ColdStart Nódu je na (Obr. 3-31).
Obr. 3-31 Stavový diagram Start-up procesu (ColdStart Node)
Stanice s rolí Sync Node nebo Normal Node po probuzení monitorují stav sítě. Pokud detekují v posledních 4 po sobě jdoucích komunikačních cyklech (čas potřebný k jejich synchronizaci) vysílání start&sync rámců od dvou nebo více ColdStart stanic, integrují se do sítě. Stavový diagram start-up procesu Sync nebo Normal Nódu je na (Obr. 3-32). Tímto je fáze Start-up clusteru ukončena.
Obr. 3-32 Stavový diagram integračního procesu Sync nebo Normal Node
- 44 -
Diplomová práce 2007
Viktor Pokorný
Ukázka fáze Start-up clusteru pro příklad se dvěma ColdStart stanicemi a jednou Sync nebo Normal stanicí je zobrazena níže(Obr. 3-33).
Obr. 3-33 Start-up proces pro stanice s různou rolí
Podle obrázku vyvstává otázka, jak nastartovat síť, kde všechny stanice mají stejný firmware (odlišná konfigurace pro každý nód načítána z externího zdroje – paměť, zadání přes terminál, apod.) se stejnou dobou vykonávání od vzbuzení po síti k počátku start-up procesu? Rozuměj část coldstart listen přijde u všech těchto stanic ve stejný moment, všichni detekují síť bez komunikace, všichni tedy převezmou roli Leading ColdStart Node a vyšlou CAS ve stejný moment. Řešení této otázky je k naleznutí v kapitole 4.3.6 Zaslání žádosti o start, nastavitelné prodlení.
- 45 -
Diplomová práce 2007
Viktor Pokorný
3.10 Závěrečné ustavení Kapitola 3 Standard FlexRay se především věnuje základnímu popisu standardu a spojuje některé znalosti nabyté při studiu odborně zaměřených prezentací z kongresů, stavbě demonstrační sítě a při zkoumání rozličných stavů během jejího provozu. Rozhodně neobsahuje celistvý výtah ze všech detailů standardu, který by rámcově několikanásobně přesáhl prostor vymezený pro sepsání diplomové práce. Jedním z příkladů takovýchto detailů jsou definice globálních a lokálních parametrů sítě a jejich povolené rozsahy pro dané možnosti konfigurací, popř. pevné vztahy mezi nimi. Rád bych tedy odkázal čtenáře, kteří se problematikou chtějí zabývat hlouběji, na odkazy literatury standardu a přednášek z kongresů zabývající se problematikou FlexRay (viz. Použitá literatura).
- 46 -
Diplomová práce 2007
Viktor Pokorný
4 Stavba demonstrační sítě Jak bylo napsáno v počáteční kapitole 2 Rozbor zadání, pro uskutečnění analýzy vybraného parametru standardu FlexRay bylo potřeba zprovoznit zkoumaný subjekt - demonstrační síť. Katedra měření si zapůjčila v zimě 2006 od české pobočky firmy ST Microelectronics 2ks (v té době standardní cestou nesehnatelné FlexRay
vzorky)
Daughter
desek
Card.
Freescale
Desky
jsou
Generic osazené
komunikačním kontrolérem MFR4200 (Freescale), dvěma
ovladači sběrnice TJA1080 (Philips) a
patřičnými součástkami. Jak je vidět z obrázku (Obr. 4-1), deska obsahuje přepínače a propojky pro volbu
parametrů
kontroléru,
které
zajišťují
univerzálnost užití desky při prvním nástřelu a vývoji stanice
clusteru
osazené
tímto
komunikačním
kontrolérem. Obr. 4-1 Freescale Generic FlexRay Daughter Card
Jelikož deska obsahuje atypické propojovací konektory, bylo rozhodnuto o nákupu 2ks vývojového
kitu
firmy
SofTec
Microsystems (v té době novinka), který počítá s budoucím volitelným osazením tohoto externího FRDC modulu.
Tímto
kitem
S12XDP512-A (Obr. mikrokontrolérem
je
SK-
4-2) osazený s koprocesorem
Freescale MC9S12XDP512 (HCS12X kompatibilní). Kit obsahuje možnosti připojení sběrnic: 1xFRDC (FlexRay), 6xLIN, 5xCAN, 2xRS232 a další vývojové možnosti.
Obr. 4-2 SofTec Automotive Development Kit SK-S12XDP512-A
- 47 -
Diplomová práce 2007
Viktor Pokorný
4.1 Možnosti užitého hardwaru 4.1.1 Mikrokontrolér MC9S12XDP512 Rodina mikrokontrolérů Freescale MC9S12XD přináší vývojářům pracujícím s existující 16 bitovou řadou MC9S12 navíc nižší poměr cena/výkon, nižší spotřebu, nižší emise v souvislosti s EMC a efektivnější velikost kódu. Nová řada MC9S12XD je díky rozšířenému jádru 2 krát až 5 krát výkonnější než původní S12 taktovaná na 25Mhz, navíc je v důležitých částech pinově kompatibilní se svou předchůdkyní. V nové řadě lze využít stávající kód jádra S12 bez úprav za cenu nevyužití rozšířených možností. V 16 bitové řadě MC9S12XD je poprvé představena jednotka XGATE, která plní funkci koprocesoru. Koprocesor v rámci mikrokontroléru využívá rozšířené DMA přenosy a pracuje se všemi periferiemi, flash eeprom a ram bloky. Pokud je jednotka využita, přináší standardně obsaženému procesoru v mikrokontroléru dalších až 80MIPS navíc. Mikrokontrolér obsahuje mnoho periférií na čipu jako jsou: •
512kB Flash Eeprom, 32kB Ram, 4kB Eeprom
•
6x asynchronní sériový komunikační interface s podporou UART, LIN či IrDA 1.4
•
3x SPI, 2x I2C
•
16 kanálový a 8 kanálový A/D převodník s rozlišením 10 bitů
•
5x CAN 2.0A/B modul
•
PLL obvod jako volitelný zdroj hodin
•
Periodic Interrupt Timer, Watch Dog, Real Time Timer
•
8x rozšířený timer s mnoha funkcemi (PWM generátor, …)
•
Systém přerušení s prioritami
•
Regulátor napětí
•
a další
Námi užitá verze mikrokontroléru je v pouzdře LQFP 144 pins. Další popis a specifikace viz. kapitola Použitá literatura.
- 48 -
Diplomová práce 2007
Viktor Pokorný
4.1.2 Vývojový kit SK-S12XDP512-A Vývojový kit od firmy SofTec Microsystems byl vybrán, jak bylo uvedeno, nikoliv kvůli mikrokontroléru nebo ostatním perifériím, ale hlavně díky tomu, že jako jediný dostupný na trhu s předstihem před oficiálním uvedením FRDC obsahoval propojení na tyto zapůjčené desky.
Kit využívá plně možnosti osazeného mikrokontroléru. Obsahuje: •
Konektory s transceivery pro 5x CAN, 6xLIN a 2xRS232
•
Konektor standardu BDM (Freescale) pro on-line debugging mikrokontroléru
•
USB konektor s obslužnou jednotkou tohoto standardu (není tedy potřeba externí BDM debugger)
•
16Mhz oscilátor , 4Mhz krystal (možno zvolit)
•
Konektory se všemi signály mikrokontroléru
•
Dva 7x5 maticové LED displeje
•
4 LED, 4 tlačítka
•
Potenciometr a senzor osvětlení s příslušnými součástkami jako analogové vstupy
•
Reset tlačítko
•
Prototypovou oblast
Jako programovací a ladící prostředí je dodáván software firmy Freescale CodeWarrior obsahující editor, assembler, C compiler a debugger. Další popis a specifikace viz. kapitola Použitá literatura.
- 49 -
Diplomová práce 2007
Viktor Pokorný
4.1.3 Komunikační kontrolér MFR4200, výjimky v implementaci protokolu Výše uvedený komunikační kontrolér implementuje s některými výjimkami (popsáno níže) specifikaci protokolu FlexRay verze V1.1. Je to předprodukční vzorek se svými chybami a ve velkosériové výrobě se jistě neobjeví. Již nyní (rok po zadání diplomové práce) má fakulta měření k dispozici vzorky kontrolérů MFR4300 s implementací aktuální verze protokolu V2.1. Práce je však dokončena v započaté verzi s MFR4200.
Pojďme si nyní uvést nejvýznačnější vlastnosti použitého MFR4200: •
Bit-rate maximálně 5Mbit/sec pro každý ze dvou kanálů při počtu 8 vzorků na jednu délku bitu (neplést s reálnou přenosovou rychlostí užitečných dat)
•
59 bufferů pro zprávy, každý až pro 32Bytů dat
•
Rámce FlexRay až s 254Byty užitečných dat, v paměti kontroléru zabírají ale prostor pro více jak jeden buffer
•
Jedno konfigurovatelné přijímací FIFO
•
Každý z bufferů pro zprávy je konfigurovatelný jako přijímací, vysílací jednoduchý, vysílací dvojitý nebo jako část přijímacího FIFO
•
Buffer pro zprávy může pracovat podle schématu stavového nebo reagujícího na události
•
Flexibilní mechanizmus signalizování chyb, který poskytují konfigurovatelné čítače (8x), indikátory stavu slotu a generovaná konfigurovatelná přerušení
•
Naměřené odchylky od globální časové základny z každého komunikačního cyklu (viz. kapitola 3.8.2 Časová synchronizace stanic) jsou dostupné k vyčtení
•
Může být nezávisle monitorován stav až 4 slotů, které nejsou přiřazeny k bufferům zpráv v komunikačním kontroléru
•
Konfigurovatelné filtrování zpráv jak pro příjem tak i vysílání přes buffer zpráv podle čísla rámce, kanálu a čísla cyklu
•
Konfigurovatelné filtrování zpráv pro příjem přes přijímací FIFO podle čísla rámce, kanálu a identifikačního čísla zprávy (dynamický segment)
•
Délka komunikačního cyklu konfigurovatelné v mikroticích
•
Konfigurovatelnost připojení na fyzické vrstvy přes ovladače (FlexRay, RS-485, optika)
•
Výstup maskovatelných přerušení přes jednu linku do mikrokontroléru
- 50 -
Diplomová práce 2007 •
Viktor Pokorný
Možnost výběru interface pro propojení s mikrokontrolérem (synchronní HCS12 interface, asynchronní paměťový interfejs)
Jak bylo již uvedeno, existují výjimky v implementaci protokolu verze V1.1 u MFR4200. Nejzákladnější výjimkou je skutečnost, že ačkoliv kontrolér umí vysílat wake-up symboly a ovladače sběrnice je umí detekovat, neprovádí komunikační kontrolér při jejich vysílání příposlech na sběrnici. Tzn., že může ohrozit komunikaci v clusteru, pokud je externí událostí vyzván ke vzbuzení sítě, která však již žije, viz. kapitola 3.9.1 Wake-up clusteru, kódování. V neběžící síti, kde se více stanic pokouší najednou o wake-up clusteru, může dojít k nestabilním stavům. Řešením je pouze jediná stanice s komunikačním kontrolérem MFR4200, která má právo vzbouzet síť. Firmware musí před pokusem o vzbuzení detekovat, zda cluster žije, či nikoliv. Ačkoliv se značí bit rámce jako NULL FRAME, viz. popis formátu rámce v kapitole 3.6.1 Formát rámce, přesnější popis vystihující funkci by měl být NOT NULL FRAME.
Kontrolér nepodporuje při počtu 8 vzorků na délku bitu bit-rate 10Mbit/sec. Tu lze dosáhnout pouze nastavením vzorkování 4 vzorků na bit, což neodpovídá specifikaci standardu minimálně V2.1 nebo dřívějšímu. Více o vzorkování v kapitole 3.7 Vzorkování příchozích bitů komunikačním kontrolérem.
Kontrolér neprovádí většinovou volbu (automat produkující převažující stav z okna posledních 5 vzorků), viz. kapitola 3.7 Vzorkování příchozích bitů komunikačním kontrolérem, korektně. S největší pravděpodobností pouze odebírá jeden vzorek za délku bitu a používá jej jako výstupní hodnotu místo standardem určeného 5. bitu (jeden bit) z každých 8 zvolených převažujících stavů (voted value).
- 51 -
Diplomová práce 2007
Viktor Pokorný
Kontrolér vysílá a adekvátně i přijímá užitečná data na médium v jiném pořadí než je specifikace protokolu popsaná také v kapitole 3.6.1 Formát rámce. Ačkoliv specifikace protokolu FlexRay hovoří o umisťování bytů užitečných dat do rámce od LSB až po MSB (data0, data1, data2, data3, data4, …), kontrolér umisťuje byty v duchu „big endian“ používaném Freescale (Motorolou) v pořadí data1, data0, data 3, data2, data5, atd. Chyba se samozřejmě neprojevuje, pokud jsou na sběrnici zapojené stanice výhradně s komunikačními kontroléry MFR4200. V tomto případě je vysílání (rozkládání dat) a přijímání (opětovné skládání) spolu křížené.
Existuje ještě nespočet výjimek, tyto byly ty nejzákladnější, na které jsem při budování demonstrační sítě narazil. O dalších se čtenář dozví v příslušném datasheetu a erratasheetu k MFR4200 (viz. kapitola Použitá literatura).
4.1.4 Ovladač sběrnice TJA1080 Jak název kapitoly napovídá, jde o komponentu zajišťující fyzický přístup na médium dle specifikací standardu FlexRay, viz. kapitoly 3.4 Fyzická vrstva a 3.5 FlexRay stanice.
Zde jsou jeho základní vlastnosti: •
Rychlost (bit rate) až 10Mbit/sec
•
Použitelný pro systémy s napájením 14V i 42V
•
Velmi nízké EM emise, podpora nestíněných vodičů sběrnice
•
Odolnost přijímače proti EM rušení (diferenciální přijímač)
•
Lze použít jak pro stanice clusteru, tak pro aktivní hvězdu
•
Vstup umlčení vysílače přivedený od volitelného Bus Guardian členu
•
Režim spaní , vzbuditelný přes vstup či wake-up symbolem po sběrnici
•
Detekce chyby na fyzické vrstvě (zkrat), přehřátí, napájení mimo toleranci
Další popis a specifikace viz. kapitola Použitá literatura.
- 52 -
Diplomová práce 2007
Viktor Pokorný
4.1.5 Deska FRDC s MFR4200 a 2x TJA1080 Deska obsahuje zmíněné součástky (komunikační kontrolér a 2ks ovladačů sběrnice), dále obvodové součástky, konektory a také přepínače a propojky pro volbu parametrů kontroléru. Vzhledem k možnostem komunikačního kontroléru, lze na desce nastavit: •
Typ propojení mezi MFR4200 a mikrokontrolérem (synchronní interface HCS12, asynchronní paměťový interface), bude vysvětleno níže
•
Výstup CLK z kontroléru použitelný pro jiná zařízení (zakázán, 4MHz, 10MHz, 40MHz)
•
Napětí I/O portů kontroléru pro spojení s mikrokontrolérem popř. logikou (3V3, 5V)
•
Výstupní linku přerušení (IRQ, xIRQ) v souvislosti s dvěma vstupy externích přerušení moderních mikrokontrolérů jako MC9S12, ARM, atd.
•
Vstupní linku pro reset (tlačítko na FRDC desce, Hreset, ext_reset)
•
Nastavení módu fyzické vrstvy ovlivňující TJA1080 (normal, rec only, go to sleep, sleep)
•
Bus Guardian enable vstup
•
Lokální Wake-up vstup
Jak bylo napsáno, komunikační kontrolér MFR4200 podporuje 2 typy propojení
s ovládajícím
mikrokontrolérem.
Asynchronní
paměťový interface je klasické zapojení využívající oddělenou sběrnici pro data a pro adresu, signály CS(Chip Select), WE(Write Enable), a OE(Output enable), viz. (Obr. 4-3).
Obr. 4-3 Zapojení asynchronního paměťového interface MFR4200
- 53 -
Diplomová práce 2007
Viktor Pokorný
Druhým možným zapojením je
synchronní
(Obr.
interface
HCS12
4-4) pro přímé propojení
s mikrokontroléry uvedené řady od firmy
Freescale.
Toto
propojení
využívá společnou sběrnici pro data i adresu. Na náběžnou hranu ECLK je na sběrnici adresa, na sestupnou jsou pak data. Maximální frekvence hodin sběrnice ECLK je pro MFR4200 8MHz.
Obr. 4-4 Zapojení HCS12 synchronního interface MFR4200
4.2 Využitá konfigurace realizačních prostředků 4.2.1 Propojení signálových linek mezi deskami Konfigurace realizačních prostředků je napevno dána jak výrobcem vývojového kitu, tak výrobcem zásuvné FRDC desky. Je tedy zapotřebí firmware odpovídající tomuto stavu. Schémata obou desek jsou uvedena v přílohách Příloha A – schéma vývojového kitu SK-S12XDP512-A a Příloha B – schéma Freescale Generic FlexRay Daughter Card. Po podrobném zkoumání schémat byly vyvozeny následující závěry.
Propojení mikrokontroléru s komunikačním kontrolérem odpovídá AMI interface znázorněném blokově na (Obr. 4-3). I když je na FRDC desce umístěn MFR4200 s nižším počtem adresových bitů, propojení obou desek umožňuje záměnu FRDC za verzi s MFR4300. Adresové výstupy ADDR[12..1] mikrokontroléru (odpovídající portům PA[4..0] a PB[7..1]) jsou přivedeny na adresové vstupy MFR4200. Adresový výstup ADDR[0] není využit, protože jde o 16 bitový přístup na periferii (šíře datového slova). Datové vstupy/výstupy DATA[15..0] (odpovídající portům PD[7..0] a PC[7..0]) jsou přivedeny na odpovídající datové vstupy/výstupy MFR4200.
- 54 -
Diplomová práce 2007
Viktor Pokorný
Řídící signály CS2 (odpovídá PJ5), WE (odpovídá PE2) a RE (odpovídá PE5) jsou taktéž od mikrokontroléru propojeny na čip MFR4200. Výstupní signál přerušení od MFR4200 je přiveden přes jumper (JG2 umístěný na FRDC) na vstupy XIRQ nebo IRQ (odpovídá PE0 nebo PE1) externího přerušení mikrokontroléru. Ve schématu FRDC je výrobcem chybně uvedeno značení těchto signálových linek, jsou navzájem prohozené. Výběr jumperem je proveden na linku IRQ a toto je následně zohledněno ve firmware.
Vstupní signál RESET pro MFR4200 je přiveden přes patřičně nakonfigurovaný DIP switch (SW1 umístěný na FRDC) na signál HRESET odpovídající signálu RESET na vývojovém kitu, který je generován po stisknutí příslušného tlačítka. Signály RESET jsou tedy pro obě desky totožné a generované z jednoho místa. Konfigurovatelnost FRDC umožňuje i jiné varianty (vlastní tlačítko či mikrokontrolérem ovládaný signál – port PP[0]). Dalšími signály jsou signály vedoucí k fyzickým ovladačům sběrnice TJA1080 na FRDC desce. Jejich napojení na mikrokontrolér a funkci ukazuje tabulka na (Obr. 4-5).
Signál
Umístění na mikrokontroléru
Směr
Funkce z pohledu ovladače
chA_EN
Port PT0
Out
Určuje mód činnosti
chB_EN
Port PT2
Out
Určuje mód činnosti
chA_STB negovaný
Port PT1
Out
Určuje mód činnosti
chB_STB negovaný
Port PT3
Out
Určuje mód činnosti
WAKE_UP
Port PP1
Out
Lokální signál vzbuzení
chA_RXEN negovaný
Port PAD05
In
Detekována aktivita na sběrnici
chB_RXEN negovaný
Port PAD06
In
Detekována aktivita na sběrnici
chA_ERROR negovaný
Port PP4
In
Signalizace chyby
chB_ERROR negovaný
Port PP5
In
Signalizace chyby
Obr. 4-5 Propojení signálů mezi mikrokontrolérem a ovladači sběrnice TJA1080
- 55 -
Diplomová práce 2007
Viktor Pokorný
Kombinace signálů EN a STB určuje mód činnosti ovladače. Popis těchto kombinací znázorňuje (Obr.
4-6). Jelikož hw konfigurace desky FRDC s komunikačním kontrolérem
MFR4200 nepodporuje vzbuzení, je mód činnosti ovladače zvolen pevně jako NORMAL. To je zajištěno firmwarem mikrokontroléru při inicializaci. Mód činnosti ovladače
EN
STB
Normal
1
1
Receive Only
0
1
Go To Sleep
1
0
Sleep
0
0
Obr. 4-6 Módy činnosti ovladačů sběrnice TJA1080
Obě desky jsou propojeny jak zde popsanými signály, tak i jinými, jejichž funkce nebyla pro fungování nódu v této verzi firmware podstatná. Podrobnější popis a závěry lze získat studiem schémat obou desek uvedených v přílohách Příloha A – schéma vývojového kitu SK-S12XDP512A a Příloha B – schéma Freescale Generic FlexRay Daughter Card.
- 56 -
Diplomová práce 2007
Viktor Pokorný
4.2.2 Vliv propojení desek na funkci periférií vývojového kitu V předchozí kapitole jsme si popsali využité porty mikrokontroléru v souvislosti s propojením signálů s desku FRDC. Některá méně důležitá propojení nebyla uvedena s odkazem na schémata obou desek. V této kapitole si rekapitulujeme všechny takto obsazené porty. Některé z nich jsou sdíleny mezi periferiemi vývojového kitu a signály vedoucí na desku FRDC.
Tabulka na (Obr. 4-7) uvádí všechny porty mikrokontroléru, které mohou být obsazené signály po zasunutí FRDC desky.
Port mikrokontroléru
Obsazené piny
Port A
PA0, PA1, PA2, PA3, PA4
Port B
PB1, PB2, PB3, PB4, PB5, PB6, PB7
Port C
PC1, PC2, PC3, PC4, PC5, PC6, PC7
Port D
PD1, PD2, PD3, PD4, PD5, PD6, PD7
Port E
PE1, PE2, PE3, PE4, PE5
Port J
PJ5
Port P
PP0, PP1, PP4, PP5
Port T
PT0, PT1, PT2, PT3
Port AD
PAD00, PAD05, PAD06, PAD08, PAD09
Obr. 4-7 Obsazené porty mikrokontroléru zasunutím FRDC desky
Port A,B,C je využíván též pro řízení maticového LED displeje a pro 4 signální LED diody. Tato zařízení je potřeba odpojit pomocí jumperů J212, J213, J214, J215. Port B je taktéž využíván pro 4 tlačítka umístěné na vývojovém kitu, které však nelze odpojit. Uživatel by je tedy neměl využívat.
Ostatní periférie vývojového kity mohou být užity normálně s ohledem na to, že i ony samy mezi sebou sdílí porty mikrokontroléru
- 57 -
Diplomová práce 2007
Viktor Pokorný
4.2.3 Konfigurace DIP switchů a jumperů na obou deskách Vzhledem ke skutečnostem uvedeným v kapitolách 4.2.1 Propojení signálových linek mezi deskami a 4.2.2 Vliv propojení desek na funkci periférií vývojového kitu je potřeba mít obě desky náležitě nakonfigurované. K rychlému zprovoznění nódu s přiloženým firmware postačuje fotografie (Obr. 4-8) funkční stanice v patřičné hardwarové konfiguraci. Pečlivého čtenáře odkáži na schémata obou desek uvedená v přílohách Příloha A – schéma vývojového kitu SKS12XDP512-A a Příloha B – schéma Freescale Generic FlexRay Daughter Card, ze kterých lze vyvodit všechny závěry o propojení signálů a možných hardwarových konfiguracích.
Obr. 4-8 Konfigurace DIP switchů a jumperů nódu
- 58 -
Diplomová práce 2007
Viktor Pokorný
4.3 Popis firmware stanice demonstrační sítě 4.3.1 Namapování
periferie
MFR4200
do
paměťového
rozsahu
mikrokontroléru MC9S12XDP512, rychlost přístupu V kapitole 4.2.1 Propojení signálových linek mezi deskami jsme si uvedli, že je komunikační kontrolér MFR4200 připojen k mikrokontroléru pomocí asynchronního paměťového interface. Periferie je vybírána pomocí signálu CS2. Dále jsou použity signále WE, RE, datová sběrnice a adresová sběrnice. Jak je vidět z (Obr. 4-9), signál Chip Select 2 vybírající periferní zařízení se aktivuje přístupem do globálního paměťového prostoru mikrokontroléru v rozsahu adres
0x140000
až
0x1FFFFF. Spodních 16 bitů
adresy
vystupuje
z mikrokontroléru ven na porty PB a PA a slouží programátorovi k připojení
adresových
vstupů periferie. V našem případě
FRDC
deska
přejímá adresu v rozsahu ADDR[12..1], adresové
zbylé
bity
nejsou
Jelikož
využity.
se
paměťové
rozsahy
v takovéto
konfiguraci lze
zrcadlí,
vybrat
jakoukoliv
bázovou
adresu
možností
z 12
(0x140000, 0x150000, .. , 0x1F0000).
Obr. 4-9 Globální paměťový prostor mikrokontroléru MC9S12XDP512
- 59 -
Diplomová práce 2007
Viktor Pokorný
Ve firmware stanice je pro periferii MFR4200 využita bázová adresa 0x1F0000. Změnou adresy v jejích spodních 13 bitech je přistupováno do registrů komunikačního kontroléru. Poslední poznámkou k namapování externí periferie do paměti je volba módu činnosti mikrokontroléru. Mód činnosti je vybrán zápisem patřičných hodnot do registrů po startu. Jako mód činnosti byl zvolen tzv. NORMAL EXPANDED MODE tak, aby sběrnice adresy a dat vystupovaly ven přes porty mikrokontroléru a nahradily tak sekundární funkce těchto portů. Čip MFR4200 má omezenou rychlost přístupu do svých registrů. Při frekvenci 40Mhz BUSCLOCK mikrokontroléru je potřeba vkládat 6 čekacích cyklů při přístupu na tuto periferii. Konfigurace se opět provádí pomocí registrů mikrokontroléru.
4.3.2 Hlavní program, vývojový diagram Firmware pro daný hardware byl napsán v jazyce C a odladěn ve vývojovém prostředí CodeWarrior (obsahuje editor, assembler, C compiler a debugger). Hlavní program obsahuje přes 2000 řádků kódu a nelze jej tedy připojit jako přílohu k tištěné podobě diplomové práce ačkoliv je její součástí. Pokud se čtenář zajímá hlouběji o jeho obsah, nalezne jej na přiloženém CD včetně komentářů psaných uvnitř kódu.
V této kapitole si uvedeme vývojový diagram programu (Obr. 4-10, Obr. 4-11, Obr. 4-12, Obr. 4-13, Obr. 4-14, Obr. 4-15, Obr. 4-16). V dalších kapitolách si následně uvedeme popis některých bloků programu, s jejichž funkcí bych vás chtěl seznámit.
Vývojový diagram zobrazený na (Obr. 4-15, Obr. 4-16) není úplným obrazem skutečné funkce programu, nýbrž jen její zjednodušenou sekvenční představou. V reálu firmware obsluhuje vysílání/příjem z RS-232 a FlexRay přes rutiny přerušení, ostatně i další činnosti jako obsluha periférií integrovaných na čipu mikrokontroléru jsou vykonávány nikoliv sekvenčně, ale jen pomocí obsluhy přerušení. Paralelizmus zpracování dat a obsluhy událostí navíc s prioritami přerušení (přerušení s vyšší prioritou může přerušit provádění obslužné rutiny přerušení s nižší prioritou) neumožňuje zakreslit obraz funkce programu pomocí vývojového diagramu.
- 60 -
Diplomová práce 2007
Viktor Pokorný
START INICIALIZACE PROMĚNNÝCH
INICIALIZACE PERIFÉRIÍ NA ČIPU
INICIALIZACE REGISTRŮ MFR4200
INICIALIZACE 2ks TJA1080
ÚVODNÍ LOGO TISK PO RS-232
DETEKCE TYPU ZASUNUTÉHO KOMUNIKAČNÍHO KONTROLÉRU, TISK
Hlavní smyčka
Má být příkazový řádek zobrazen?
TISK PŘÍKAZOVÉHO ŘÁDKU
Byla přijata zpráva po RS-232
PŘI PŘÍŠTÍM PRŮCHODU SMYČKOU MÁ BÝT ZOBRAZEN PŘÍKAZOVÝ ŘÁDEK
ROZPOZNÁNÍ PŘÍKAZŮ help whois? time?
A vstup
B vstup
C vstup
getreg
D vstup
setreg
neznámý příkaz nodestart
nodeconfig
E vstup
K vstup
ROZPOZNÁNÍ PŘÍKAZŮ nodeconfig xx xx = default cn sn
F vstup
A výstup
B výstup
C výstup
D výstup
E výstup
F výstup
tx
G vstup
H vstup
I vstup
J vstup
G výstup
H výstup
I výstup
J výstup
Obr. 4-10 Vývojový diagram hlavního programu 1
- 61 -
neznámý příkaz rx
K výstup
Diplomová práce 2007
Viktor Pokorný
A vstup
B vstup
C vstup
TISK NÁPOVĚDY K PODPOROVANÝM PŘÍKAZŮM
TISK INFORMACÍ O MOŽNOSTECH FLEXRAY STANICE, POPIS VLASTNOSTÍ JEDNOTLIVÝCH VERZÍ FW
TISK HODNOTY UPLYNULÉ DOBY OD STARTU STANICE [SEC]
A výstup
C výstup
B výstup
D vstup
E vstup
F vstup
ZPRACOVÁNÍ HEXADECIMÁLNÍCH HODNOT ZAPSANÝCH UŽIVATELEM DO PŘÍKAZOVÉHO ŘÁDKU JAKO ASCII
ZPRACOVÁNÍ HEXADECIMÁLNÍCH HODNOT ZAPSANÝCH UŽIVATELEM DO PŘÍKAZOVÉHO ŘÁDKU JAKO ASCII
INICIALIZACE 2ks TJA1080 (UVEDENÍ DO ZÁKLADNÍHO STAVU)
VYZVEDNUTÍ HODNOTY REGISTRU MFR4200 NA ZADANÉ ADRESE
ULOŽENÍ HODNOTY DO REGISTRU MFR4200 NA ZADANÉ ADRESE
PŘEVOD HODNOTY DO ASCII A KOMPLETACE HLÁŠENÍ
KONTROLNÍ VYZVEDNUTÍ HODNOTY REGISTRU MFR4200 NA ZADANÉ ADRESE
INICIALIZACE REGISTRŮ MFR4200 (UVEDENÍ DO ZÁKLADNÍHO STAVU)
TISK HLÁŠENÍ PŘEVOD HODNOTY DO ASCII A KOMPLETACE HLÁŠENÍ D výstup TISK HLÁŠENÍ
E výstup
Obr. 4-11 Vývojový diagram hlavního programu 2
- 62 -
F výstup
Diplomová práce 2007
Viktor Pokorný
G vstup
H vstup
ZPRACOVÁNÍ HEXADECIMÁLNÍCH HODNOT ZAPSANÝCH UŽIVATELEM DO PŘÍKAZOVÉHO ŘÁDKU JAKO ASCII
ZPRACOVÁNÍ HEXADECIMÁLNÍCH HODNOT ZAPSANÝCH UŽIVATELEM DO PŘÍKAZOVÉHO ŘÁDKU JAKO ASCII
TISK HLÁŠENÍ
TISK HLÁŠENÍ
NASTAVENÍ ROLE NÓDU JAKO COLDASTART NODE S VYSÍLÁNÍM START-UP&SYNC RÁMCE V DEFINOVANÉM STATICKÉM SLOTU ZAPSANÉM UŽIVATELEM
Zadaná hodnota je nulová?
VYMAZÁNÍ ROLÍ NÓDU NASTAVENÍ DÉLKY UŽITEČNÝCH DAT V TAKTO GENEROVANÝCH RÁMCÍCH
SPOČTENÍ CRC HLAVIČKY RÁMCE PODLE VÝŠE ZVOLENÝCH NASTAVENÍ NASTAVENÍ DÉLKY UŽITEČNÝCH DAT V TAKTO GENEROVANÝCH RÁMCÍCH ULOŽENÍ CELÉHO NASTAVENÍ DO PŘÍSLUŠNÉHO REGISTRU MFR4200
ULOŽENÍ DÉLKY PRODLENÍ OD UKONČENÍ KONFIGUROVÁNÍ K POČÁTKU START-UP PROCESU
G výstup
SPOČTENÍ CRC HLAVIČKY RÁMCE PODLE VÝŠE ZVOLENÝCH NASTAVENÍ
ULOŽENÍ CELÉHO NASTAVENÍ DO PŘÍSLUŠNÉHO REGISTRU MFR4200
ULOŽENÍ DÉLKY PRODLENÍ OD UKONČENÍ KONFIGUROVÁNÍ K POČÁTKU START-UP PROCESU
H výstup
Obr. 4-12 Vývojový diagram hlavního programu 3
- 63 -
NASTAVENÍ ROLE NÓDU JAKO SYNCHRONIZAČNÍHO S VYSÍLÁNÍM SYNC RÁMCE V DEFINOVANÉM STATICKÉM SLOTU ZAPSANÉM UŽIVATELEM
Diplomová práce 2007
Viktor Pokorný
I vstup
ZPRACOVÁNÍ HEXADECIMÁLNÍCH HODNOT ZAPSANÝCH UŽIVATELEM DO PŘÍKAZOVÉHO ŘÁDKU JAKO ASCII
Zadaná hodnota slotu je shodná se statickým slotem s funkcí STARTUP nebo SYNC (zadáno pomocí funkce G/H)?
TISK HLÁŠENÍ
ZOHLEDNĚNÍ SKUTEČNOSTI PŘI VÝPOČTU CRC Z HLAVIČKY RÁMCE
Zadaná hodnota slotu je nulová?
LOCKING PROCEDURE POŽADAVEK NA PŘÍSTUP K REGISTRŮM BUFFERU + ČEKÁNÍ AŽ BUDOU KOMUNIKAČNÍM KONTROLÉREM UVOLNĚNY
SPOČTENÍ CRC HLAVIČKY RÁMCE PODLE VÝŠE ZVOLENÝCH NASTAVENÍ
NASTAVENÍ BUFFERU PRO VYSÍLÁNÍ
VÝMAZ OBSAHU PŘÍSLUŠNÉHO BUFFERU Má být zaveden filtr kom. cyklu ? UNLOCKING PROCEDURE
VYMAZÁNÍ VŠECH NASTAVENÍ BUFFERU PRO VYSÍLÁNÍ NASTAVENÍ FITRU PRO ČÍSLO KOMUNIKAČNÍHO CYKLU A JEHO MASKY
VYMAZÁNÍ FITRU PRO ČÍSLO KOMUNIKAČNÍHO CYKLU A JEHO MASKY
JDE O FILTR PŘÍSLUŠNÝ TOMUTO BUFFERU
JDE O FILTR PŘÍSLUŠNÝ TOMUTO BUFFERU
REGISTRY JSOU PŘÍSTUPNÉ KOMUNIKAČNÍMU KONTROLÉRU
UNLOCKING PROCEDURE REGISTRY JSOU PŘÍSTUPNÉ KOMUNIKAČNÍMU KONTROLÉRU
LOCKING PROCEDURE VYMAZÁNÍ FITRU PRO ČÍSLO KOMUNIKAČNÍHO CYKLU A JEHO MASKY JDE O FILTR PŘÍSLUŠNÝ TOMUTO BUFFERU
POŽADAVEK NA PŘÍSTUP K REGISTRŮM BUFFERU + ČEKÁNÍ AŽ BUDOU KOMUNIKAČNÍM KONTROLÉREM UVOLNĚNY
NASTAVENÍ PŘIVLASTNĚNÍ STATICKÉHO ČI DYNAMICKÉHO SLOTU PRO VYSÍLÁNÍ RÁMCŮ, ČÍSLO SLOTU DLE UŽIVATELOVA ZADÁNÍ
NASTAVENÍ DÉLKY UŽITEČNÝCH DAT V RÁMCI
I výstup
Obr. 4-13 Vývojový diagram hlavního programu 4
- 64 -
Diplomová práce 2007
Viktor Pokorný
J vstup
ZPRACOVÁNÍ HEXADECIMÁLNÍCH HODNOT ZAPSANÝCH UŽIVATELEM DO PŘÍKAZOVÉHO ŘÁDKU JAKO ASCII
TISK HLÁŠENÍ
Zadaná hodnota slotu je nulová?
LOCKING PROCEDURE POŽADAVEK NA PŘÍSTUP K REGISTRŮM BUFFERU + ČEKÁNÍ AŽ BUDOU KOMUNIKAČNÍM KONTROLÉREM UVOLNĚNY
NASTAVENÍ BUFFERU PRO PŘÍJEM NA KANÁLE A
NASTAVENÍ BUFFERU PRO PŘÍJEM NA KANÁLE B
VYMAZÁNÍ FITRU PRO ČÍSLO KOMUNIKAČNÍHO CYKLU A JEHO MASKY
VYMAZÁNÍ FITRU PRO ČÍSLO KOMUNIKAČNÍHO CYKLU A JEHO MASKY
JDE O FILTR PŘÍSLUŠNÝ TOMUTO BUFFERU
JDE O FILTR PŘÍSLUŠNÝ TOMUTO BUFFERU
VYMAZÁNÍ VŠECH NASTAVENÍ BUFFERU PRO PŘÍJEM NA KANÁLE A
UNLOCKING PROCEDURE REGISTRY JSOU PŘÍSTUPNÉ KOMUNIKAČNÍMU KONTROLÉRU
VYMAZÁNÍ FITRU PRO ČÍSLO KOMUNIKAČNÍHO CYKLU A JEHO MASKY
LOCKING PROCEDURE
LOCKING PROCEDURE
POŽADAVEK NA PŘÍSTUP K REGISTRŮM BUFFERU + ČEKÁNÍ AŽ BUDOU KOMUNIKAČNÍM KONTROLÉREM UVOLNĚNY
POŽADAVEK NA PŘÍSTUP K REGISTRŮM BUFFERU + ČEKÁNÍ AŽ BUDOU KOMUNIKAČNÍM KONTROLÉREM UVOLNĚNY
NASTAVENÍ PŘÍJMU ZE STATICKÉHO ČI DYNAMICKÉHO SLOTU ČÍSLO SLOTU DLE UŽIVATELOVA ZADÁNÍ
NASTAVENÍ PŘÍJMU ZE STATICKÉHO ČI DYNAMICKÉHO SLOTU ČÍSLO SLOTU DLE UŽIVATELOVA ZADÁNÍ
UNLOCKING PROCEDURE
UNLOCKING PROCEDURE
REGISTRY JSOU PŘÍSTUPNÉ KOMUNIKAČNÍMU KONTROLÉRU
REGISTRY JSOU PŘÍSTUPNÉ KOMUNIKAČNÍMU KONTROLÉRU
UNLOCKING PROCEDURE
VYMAZÁNÍ FITRU PRO ČÍSLO KOMUNIKAČNÍHO CYKLU A JEHO MASKY
JDE O FILTR PŘÍSLUŠNÝ TOMUTO BUFFERU
LOCKING PROCEDURE POŽADAVEK NA PŘÍSTUP K REGISTRŮM BUFFERU + ČEKÁNÍ AŽ BUDOU KOMUNIKAČNÍM KONTROLÉREM UVOLNĚNY
VYMAZÁNÍ VŠECH NASTAVENÍ BUFFERU PRO PŘÍJEM NA KANÁLE B
REGISTRY JSOU PŘÍSTUPNÉ KOMUNIKAČNÍMU KONTROLÉRU
JDE O FILTR PŘÍSLUŠNÝ TOMUTO BUFFERU J výstup
Obr. 4-14 Vývojový diagram hlavního programu 5
- 65 -
Diplomová práce 2007
Viktor Pokorný
K vstup
TISK HLÁŠENÍ Byla přijata zpráva po RS-232? INICIALIZACE DETEKTORU ZMĚN VE STATUS REGISTRECH MFR4200
NASTAVENÍ MASEK PŘERUŠENÍ JEJICHŽ VÝSTUPEM JE SIGNÁL INT OD MFR4200
Příkaz EXIT&DISCON NECT?
NASTAVENÍ 31 SYMBOLŮ WAKE-UP VYSLANÝCH PŘI PŘECHODU Z KONFIGURAČNÍHO STAVU MFR 4200 DO NORMÁLNÍHO STAVU
TISK ZBYLÉHO OBSAHU ZÁSOBNÍKŮ A HLÁŠENÍ
ZAPOČETÍ VYSÍLÁNÍ ŘETĚZCE ZNAKŮ PO ČÁSTECH, KTERÉ SE VEJDOU DO RÁMCE
PŘECHOD DO KONFIGURAČNÍHO STAVU INICIALIZACE SOFTWAROVÝCH FLAGŮ A BUFFERŮ
VYSÍLÁNO JE DO VLASTNĚNÉHO SLOTU (STATICKÝ ČI DYNAMICKÝ) PŘÍSTUP DO BUFFERU PŘES LOCKING PROCEDURE
ZAKÁZÁNÍ MASEK PŘERUŠENÍ JEJICHŽ VÝSTUPEM JE SIGNÁL INT OD MFR4200
NAPLNĚNÍ BUFFERU
ZASLÁNÍ ŽÁDOSTI O START MFR4200 (PŘECHOD Z KONFIGURAČNÍHO STAVU DO NORMÁLNÍHO)
POTVRZENÍ K ODESLÁNÍ UNLOCKING PROCEDURE K výstup
Pokus o COLDSTART? ZASLÁNÍ ŽÁDOSTI O START MFR4200 (PŘECHOD Z KONFIGURAČNÍHO STAVU DO NORMÁLNÍHO)
Zdařil se COLDSTART?
Detekována změna ve status reg.?
VYMAZÁNÍ VŠECH BUFFERŮ PRO VYSÍLÁNÍ
Je nód nastaven na přijímání dat?
K_A výstup
K_B výstup
TISK STAVU Jsou přijata nová data od kanálu A?
Jsou přijata nová data od kanálu B?
K_A vstup
Obr. 4-15 Vývojový diagram hlavního programu 6
- 66 -
K_B vstup
Diplomová práce 2007
Viktor Pokorný
K_A vstup
K_B vstup
ZAPOČETÍ PŘIJÍMÁNÍ ŘETĚZCE ZNAKŮ PO ČÁSTECH, KTERÉ SE VEJDOU DO RÁMCE, A JEJICH OPĚTOVNÉ SKLÁDÁNÍ
ZAPOČETÍ PŘIJÍMÁNÍ ŘETĚZCE ZNAKŮ PO ČÁSTECH, KTERÉ SE VEJDOU DO RÁMCE, A JEJICH OPĚTOVNÉ SKLÁDÁNÍ
PŘÍSTUP DO BUFFERU PŘES LOCKING PROCEDURE
PŘÍSTUP DO BUFFERU PŘES LOCKING PROCEDURE
VYČTENÍ BUFFERU
VYČTENÍ BUFFERU
UNLOCKING PROCEDURE
UNLOCKING PROCEDURE
TISK HLÁŠENÍ O PŘÍJMU Z KANÁLU A, SLOTU x
TISK HLÁŠENÍ O PŘÍJMU Z KANÁLU B, SLOTU x
V JAKÉM KOM. CYKLU JAKÉ BITY HLAVIČKY BYLY AKTIVNÍ
V JAKÉM KOM. CYKLU JAKÉ BITY HLAVIČKY BYLY AKTIVNÍ
TISK SESKLÁDANÉHO ŘETĚZCE
TISK SESKLÁDANÉHO ŘETĚZCE
K_A výstup
K_B výstup
Obr. 4-16 Vývojový diagram hlavního programu 7
4.3.3 Inicializace periférií integrovaných na čipu Tato činnost je prováděna po startu a slouží k nastavení periférií, se kterými bude hlavní program během svého vykonávání pracovat.
Během inicializace je prováděna: •
Konfigurace využitých I/O portů, od některých pinů přerušení
•
Konfigurace PLL pro 4MHz krystal, nastavení SYSCLK(CPU) = 80MHz, BUSCLK = 40MHz
•
Konfigurace sériové linky na rychlost 115200Bd start bit, 8 bitů, stop Bit, bez parity obsluha RX a TX bufferů přes přerušení
•
Konfigurace módu činnosti jako NORMAL EXPANDED MODE adresová i paměťová sběrnice vystupuje přes porty mimo pouzdro mikrokontroléru defaultní funkce portů, kde obě sběrnice a řídící signály vystupují, je potlačena - 67 -
Diplomová práce 2007 •
Viktor Pokorný
Konfigurace počtu čekacích cyklů pro přístup na externí namapované periférie provedena na 6, s rezervou fungující rychlost pro MFR4200 a BUSCLK = 40Mhz
•
Konfigurace Periodic Interval Timeru (PIT), 2 přerušení každých 100ms každých 10ms
•
Konfigurace přerušovacího systému mikrokontroléru volba priorit jednotlivých IRQ nastavení vektorů na příslušné obslužné rutiny povolení přerušovacího systému
4.3.4 Inicializace TJA1080 a registrů MFR4200 Inicializace obou TJA1080 spočívá v nastavení příslušných signálů podle tabulek uvedených na (Obr. 4-5) a (Obr. 4-6). Pro oba ovladače je shodně potřeba nastavit výběr normálního módu činnosti pomocí signálů EN, STB a WAKE_UP v úrovni „1“. Inicializace registrů včetně popisu významu uvádí tabulka na (Obr. 4-17). Před inicializací je potřeba přepnout komunikační kontrolér do konfiguračního stavu (odpojen od sběrnice) pomocí registru MCR0 a nastavení jeho MSB bitu (MFR_MCR0 |= 0x8000).
Registr MFR4200 MCR0
Hodnota Význam 0x8308 Channel A/B ON; sync frames without filtering; electrical PHY; diag stop OFF
MCR1
0x0600 allow Yellow to Green; allow Red Level; Cold Start Inhibit Mode OFF; external clock sync disable; Bus Guardian schedule monitor in dynamic segment OFF/in symbol window OFF; media acces test disabled (pozn. na MFR4200 mask set 1L60X nefunguje aYtG, aRL)
BDR
8 1 bit trvá 8 mikrotiků po 25ns (pozn. MFR4200 má napevno 1CLK = 1µT) (viz. kapitola 3.8.1 Základní hierarchie časování)
DCAR
0 Delay compensation channel A
DCBR
0 Delay compensation channel B
- 68 -
Diplomová práce 2007 CDDR MSFR
Viktor Pokorný 1 1µT drift damping correction 10 max sync frames sended per channel (viz. kapitola 3.8.2 Časová synchronizace stanic)
NMLR
80 80µT per 1MT (1 makrotik odpovídá 2µs, což je minimum pro 5Mbit/s) (viz. kapitola 3.8.1 Základní hierarchie časování)
MPCLR
39500 39500µT per communication cycle low word of value (dle definice FlexRay max 16ms) (viz. kapitola 3.6 Komunikační cyklus)
MPCHR
0 high word of value viz. MPCLR
SSLR
40 40MT per static slot (viz. kapitola 3.6 Komunikační cyklus)
NSSR
10 10 static slots in communication cycle (400MT délka statického segmentu) (viz. kapitola 3.6 Komunikační cyklus)
SPLR
10 Tx max 10 words (160bits) payload length in static slot (viz. kapitola 3.6.1 Formát rámce)
MSLR
3 3MT per minislot in dynamic segment
MSAPOR
1 offset 1MT from beginning of minislot (minislot action point) (3.6.3 Dynamický segment, kódování rámců)
SSAPOR
1 offset 1MT from beginning of static slot (static slot action point) (viz. kapitola 3.6.2 Statický segment, kódování rámců)
LDTSR
409 after 409MT from beginning of cycle can’t start dynamic frame (viz. kapitola 3.6.3 Dynamický segment, kódování rámců)
MPLDR
10 Tx max 10 words (160bits) payload length in dynamic slot (viz. kapitola 3.6.1 Formát rámce)
SWCR
440 at 440MT starts symbol window (viz. kapitola 3.6 Komunikační cyklus)
NITCR
450 at 450MT starts network idle time
- 69 -
Diplomová práce 2007
Viktor Pokorný minimum (1300uT+170uT*MSFR)/NMLR)+1MT) (viz. kapitola 3.6 Komunikační cyklus)
CLR
500 500MT per communication cycle (viz. kapitola 3.6 Komunikační cyklus)
MCLDAR
5 max cycle deviation MPCLR*1.5/1000
EOCR
0 external offset correction in µT
ERCR
0 external rate correction
ECCR
0x0000 disable external corrections
MOCR
120 max offset correction µT (dle definice FlexRay min 2.5µs) (viz. kapitola 3.8.2 Časová synchronizace stanic)
MRCR
120 max rate correction (viz. kapitola 3.8.2 Časová synchronizace stanic)
CSMR
31 max attemps of coldstarts (dle definice FlexRay 2-31) (viz. kapitola 3.9.2 Start-up clusteru)
TSSLR
0x0807 start sequence length Tx, Rx in Bit Duration (Tx TSS musí být minimálně o 1 bit delší než Rx) (viz. kapitola 3.6.2 Statický segment, kódování rámců nebo 3.6.3 Dynamický segment, kódování rámců)
NMVLR
2 Network management vector length (viz. kapitola 3.6.1 Formát rámce)
BGTR DCR
8 Period of Bus Guardian ticks 8µT 2000 leaving CONFIG state after reset config bit for 8*x*1µT (počáteční hodnota, FW ji dále změní, viz. kapitola 4.3.6 Zaslání žádosti o start, nastavitelné prodlení)
SYNCFR
0x8001 Configuration of startup node with sync function (coldstart node) Frames will be sent in Static slot 1 (počáteční hodnota, FW ji dále změní dle uživatelova zadání) (viz. kapitola 3.9.2 Start-up clusteru)
SYNCHR
CRC CRC hlavičky rámce vysílaného dle konfigurace SYNCFR Počítá se z:
- 70 -
Diplomová práce 2007
Viktor Pokorný 1 bit – sync frame indicator 1 bit – start-up frame indicator 11 bits – sync frame id (dle SYNCFR = 1) 7 bits – payload length (dle SPLR = 0x0A) Pro tuto konfiguraci je výsledné CRC = 0x0611 (FW ji počítá pro všechny nakonfigurované rámce vysílané do přivlastněných slotů, viz. kapitola 4.3.5 Výpočet CRC hlavičky rámce)
DBPCR SOCCTR
0x0000 sets function of debug port – normal mode 480 Start of offset correction cycle time minimum NITCR+((500uT+110uT*MSFR)/NMLR)+1MT (viz. kapitola 3.8.2 Časová synchronizace stanic)
IDLR
1 idle detection length – 1 minislot (viz. kapitola 3.6.3 Dynamický segment, kódování rámců)
SWCTRLR
0x0061 symbol window transmission enabled, channels A+B (viz. kapitola 3.9.1 Wake-up clusteru, kódování)
WMCTRLR
0x0000 wake-up symbol transmission enabled on channel A, 31 symbols (viz. kapitola 3.9.1 Wake-up clusteru, kódování)
WUSTXIR
90 length of idle period of wake-up symbols in Bit duration (délka, viz. údaje v kapitole 3.9.1 Wake-up clusteru, kódování)
WUSTXLR
30 lengh of TX low phase of wake-up symbols in Bit duration (délka, viz. údaje v kapitole 3.9.1 Wake-up clusteru, kódování)
LNLR
15 15 communication cycles startup listen time-out (viz. kapitola 3.9.2 Start-up clusteru)
MOCWCPR
8 max odd cycles without clock correction due to missing sync frames -> passive mode (viz. kapitola 3.8.2 Časová synchronizace stanic)
MOCWCFR
15 max odd cycles without clock correction due to missing sync frames -> fatal error -> diagnosis stop mode (viz. kapitola 3.8.2 Časová synchronizace stanic)
FSIZR
0 FIFO buffer size (FIFO buffer není využíván) Obr. 4-17 Tabulka konkrétního nastavení registrů MFR4200
- 71 -
Diplomová práce 2007
Viktor Pokorný
4.3.5 Výpočet CRC hlavičky rámce Kapitola je zde uvedena záměrně proto, že metodiku výpočtu CRC může čtenář uplatnit v rozličných firmwarech svých komunikačních zařízení. V našem případě je potřeba CRC spočítat z údajů hlavičky každého nakonfigurovaného rámce a vložit do odpovídajícího registru pro daný rámec. Jak si čtenář jistě všiml v kapitole 3.6.1 Formát rámce, každý rámec obsahuje dva bloky CRC. První blok CRC je počítán ze 20bitového čísla složeného z části hlavičky rámce (indikátor synchronizačního rámce 1bit, indikátor startovacího rámce 1bit, id rámce – tj. číslo slotu ve kterém je rámec umístěn 11bit, délka užitečných dat – payload length 7bit), druhý blok pak z obsahu celého rámce vyjma samotného druhého CRC bloku.
Proč je první blok počítán firmwarem mikrokontroléru a ukládán do registru MFR4200, zatímco druhý je počítán již samotným MFR4200 před každým vysláním rámce na síť? Důvod je jednoduchý, první CRC blok je počítán z konstantních údajů, které se již po připojení nódu do clusteru nesmějí měnit. Výpočet prvního bloku je tedy proveden jen jednou a to při konfiguraci komunikačního kontroléru před jeho integrací do clusteru. Druhý blok CRC je naopak počítán z proměnných údajů a to díky proměnnému datovému obsahu rámce, proměnnému údaji čísla komunikačního cyklu a proměnnému údaji NULL FRAME indicator.
Pokud by byla stanice vždy konstantně nakonfigurována před integrací do sítě, lze obsah prvního bloku CRC pro jednotlivé rámce spočítat ručně a příslušné registry podle výsledků také náležitě nakonfigurovat. V našem případě jde o univerzitní demonstrační síť a tak je firmware stanice napsán univerzálně, aby si uživatel mohl měnit konfiguraci nódu před integrací na síť. Výpočet prvního bloku CRC tedy řeší firmware podle zadané konfigurace uživatelem. CRC je definován jako zbytek po dělení vstupních dat určitým generujícím polynomem. Uveďme si triviální příklad. Mějme binární data 101100 (x5+x3+x2) a generující polynom 101 (x2+x0). Zjistěme zbytek po dělení těchto polynomů (tedy CRC). K binárním datům přidáme n-1 nul (vyznačeno červeně), kde n je počet bitů klíčového polynomu a započněme s operacemi. Pro práci s binárními čísly používáme operaci XOR v případě, že na nejvyšší pozici registru je „1“. Výsledný CRC má šířku taktéž n-1 bitů. Situace je znázorněna na (Obr. 4-18). Všimněme si, že pro výpočty potřebujeme registr o šíři n bitů (vyznačeno tučně). Dále si všimněme, že generující polynom vždy
- 72 -
Diplomová práce 2007
Viktor Pokorný
obsahuje na nejvyšším bitu „1“. Tedy odstraňme tuto „1“ v nejvyšší pozici a nazvěme polynom CRC polynom. Upravme algoritmus výpočtu
a
započněme
opět
s operacemi. Pro práci s binárními čísly
používáme
v případě,
že
byla
operaci
XOR
v předchozím
kroku na nejvyšší pozici registru „1“. Situace je znázorněna na (Obr. 4-19). Všimněte si nyní, že k výpočtu je
Data = 101100 Generující polynom = 101
Data = 101100 CRC polynom = 01
Výpočet: 10110000 / 101 101 --0001.... 0010... 0100.. 101 --0010. 0100 101 --01 zbytek = CRC
Výpočet: 0010110000 / 101 001....... 010...... 101..... 01 -001.... 010... 100.. 01 -010. 100 01 -01 zbytek = CRC
zapotřebí registr o šíři n-1 bitů (vyznačeno tučně). Výsledný CRC má šířku používaného registru.
Obr. 4-18 Výpočet CRC s generujícím polynomem Obr. 4-19 Výpočet CRC s CRC polynomem
V literatuře se vyskytují ještě
unsigned int genCRC (unsigned long input) { unsigned int polyCRC = 0x0385;
více upravené algoritmy, které se
//CRC polynom, hexa hodnota odpovida prepsanemu //generujícímu polynomu bez nejvyssiho bitu v „1“!!!
vyznačují větší efektivitou. Jedním
unsigned int regCRC = 0x001A; unsigned char WregCRC = 11;
z nich je algoritmus uvedený na (Obr.
pro
firmware
unsigned int mask_regCRC; unsigned char i, doXOR;
diplomové
práce. Algoritmus opět potřebuje pro svůj běh registr o šíři n-1 bitů,
//size of CRC register & CRC result
unsigned long mask_input;
4-20), který byl použit po malé úpravě
//initialize value of CRC register
i=20; //do i musi prijit pocet bitu vstupniho cisla INPUT //z cisla INPUT se odebere spodnich 20 bitu z celkem 32(velikost promenne) //DULEZITE!!! kdyz inicializacni hodnota CRC registru regCRC neni nula do { i--;
nepotřebuje však přídavek n-1 nul
mask_input = 1; mask_input = (mask_input << i);
k binárním
datům.
Jako
CRC
//maska na aktualni bit ze vstupu
mask_regCRC = 1; mask_regCRC = (mask_regCRC << (WregCRC - 1));
polynom pro výpočet prvního bloku
//maska na nejvyssi bit CRC registru doXOR = ((input & mask_input) != 0) ^ ((regCRC & mask_regCRC) != 0);
CRC
je
standardem
FlexRay
//xor nejvyssiho bitu CRC registru s aktualnim vstupnim bitem mask_regCRC = 1;
definováno číslo 0x385. K němu je
mask_regCRC = (mask_regCRC << WregCRC) - 1; //maska na vsechny bity CRC registru
dále definována počáteční hodnota
regCRC = (regCRC << 1) & mask_regCRC; //shiftuj registr a orez ho na danou delku
registru sloužícího k výpočtům jako if (doXOR != 0) {
0x1A.
regCRC ^= polyCRC; }
}while (i>0); return regCRC; }
Obr. 4-20 Algoritmus výpočtu CRC hlavičky rámce
- 73 -
Diplomová práce 2007
Viktor Pokorný
4.3.6 Zaslání žádosti o start, nastavitelné prodlení Tato kapitola řeší, jak nastartovat síť, kde všechny coldstart stanice mají stejný firmware (odlišná konfigurace pro každý nód načítána z externího zdroje – paměť, zadání přes terminál, apod.) se stejnou dobou vykonávání od vzbuzení po síti k počátku start-up procesu? Rozuměj část coldstart listen přijde u všech těchto stanic ve stejný moment, všichni detekují síť bez komunikace, všichni tedy převezmou roli Leading ColdStart Node a vyšlou CAS ve stejný moment, viz. kapitola 3.9.2 Start-up clusteru.
Tato situace nenastává u kontroléru MFR4200 v daném zapojení, protože vzbuzení po síti není hw konfigurací FRDC podporováno a tudíž nemohou všechny stanice započít start v totožnou chvíli. Firmware byl však zpočátku psán univerzálně pro možnost připojení FRDC s MFR4300. Tato situace také nenastává u nódů s funkcí SYNC NODE nebo NORMAL NODE, které se clusteru pouze integrují a nestartují jej. Komunikační kontrolér sám obsahuje řešení. Je jím konfigurovatelné zpoždění počátku startu (přechod z konfiguračního módu do normálního) od podané žádosti mikrokontrolérem. Jelikož každý COLDSTART NODE obsazuje podle konfigurace jiný slot clusteru je řešení na snadě. Tedy spojení čísla obsazeného slotu (tj. id start&sync rámce) s délkou zpoždění počátku startu nódu.
Nastavení se provádí, jak ukazuje tabulka na (Obr. 4-17), pomocí uložení hodnoty x do registru DCR v MFR4200/MFR4300, zpoždění startu pak odpovídá době 8*x*1µT. Firmwarem je nastavena hodnota x jako 100*id start&sync rámce pro danou stanici. Jelikož musí být číslo slotu uživatelem zadáno pro každou stanici jiné, je tím i dána diference mezi stanicemi, kterou jsme jako řešení žádali.
- 74 -
Diplomová práce 2007
4.4 Firmware
z pohledu
Viktor Pokorný
obsluhy
stanice
pracující
s
oknem
hyperterminálu (Windows) V této kapitole si popíšeme chování FlexRay stanice a její ovládání. Některé screenshoty okna při práci se stanicí jsou uvedeny v Příloha C – ukázka obsluhy stanice v okně Hyperterminálu.
4.4.1 První připojení stanice k počítači Stanice se propojuje za pomocí sériového portu s počítačem. Pro ovládání lze využít standardní součásti Windows, kterou je program Hyperterminál. Samozřejmě lze využít i jiné na internetu dostupné programy. Parametry pro nastavení komunikace jsou 115200Bd, 8bitů, bez parity, 1 stop bit, bez řízení toku dat. Tedy propojíme stanici s počítačem, spustíme program Hyperterminál a nastavíme příslušné parametry sériového portu. Nyní stiskneme na stanici tlačítko RESET. V okně programu by se měl objevit uvítací text. Stanice čeká na stisknutí klávesy ENTER. Pro seznámení se s ovládáním stanice postačují dva příkazy : „whois?“ a „help“, po jejichž zadání stanice vyšle seznam svých klíčových vlastností a příkazů a nápovědu k nim. Jistě si čtenář všiml, že stanice se ovládá psaním příkazů do zobrazeného příkazového řádku a že chování stanice viděné oknem programu Hyperteminál se nápadně podobá virtuální konzoli.
4.4.2 Podporované příkazy Pojďme si nyní popsat podporované příkazy ve firmwaru V1.2. Příkaz „whois?“ slouží k zobrazení informací o podporovaných funkcích současné verze firmwaru a firmwarů předešlých. Lze se například dozvědět, že stanice má přednastavené registry pro parametry clusteru: 5Mbit/s, 10 statických slotů, 10 dynamických slotů, 1ms délka komunikačního cyklu, 200ns délka bitu, 160 bitů užitečných dat na jeden rámec.
Příkaz „help“ slouží k vyvolání nápovědy k jednotlivým podporovaným příkazům. Příkaz „time?“ slouží k zobrazení času od zapnutí stanice. Význam by příkaz měl mít až u budoucí verze stanice, která by měla podporovat wake-up. Potom by zobrazený údaj znázorňoval čas od vzbuzení stanice, popř. manuálního zapnutí. - 75 -
Diplomová práce 2007
Viktor Pokorný
Příkaz „getreg 0x…“ slouží k zobrazení obsahu registru umístěného na relativní adrese zadané uživatelem. Relativní adresa se přičítá ke konstantní bázové adrese komunikačního kontroléru a slouží tak k přístupu do jeho vnitřních registrů. Uživatel zadává 12bitovou relativní adresu v hexadecimálním tvaru (např. getreg 0x0F8). Příkaz „setreg 0x… 0x….“ slouží k zapsání zvolené 16bitové hodnoty do registru komunikačního kontroléru na danou 12bitovou relativní adresu. Obě hodnoty se zapisují v hexadecimálním tvaru (např. setreg 0x0F8 0xFFFF). Seznam dostupných registrů komunikačního kontroléru MFR4200 včetně jejich relativních adres a funkcí je k nalezení v příslušném datasheetu, viz. příloha Použitá literatura.
Příkaz „nodeconfig cn 0x…“ slouží k nastavení role stanice jako ColdStart Node, viz. kapitola 3.9.2 Start-up clusteru, s vysíláním startovacího a současně synchronizačního rámce ve statickém slotu, jehož číslo si uživatel zvolí 11bitovou hexadecimální hodnotou (např. nodeconfig cn 0x001). Pro start clusteru jsou potřebné minimálně 2 takovéto stanice, více jak 3 nemají smysl.
Příkaz „nodeconfig sn 0x…“ slouží k nastavení role stanice jako Normal Node (v případě zadání hodnoty 0x000) nebo jako Sync Node (v případě zadání 11bitové hodnoty čísla statického slotu), viz. kapitola 3.8.2 Časová synchronizace stanic. Stanice Sync Node vysílá v definovaném statickém slotu, jehož číslo si uživatel zvolí (např. nodeconfig sn 0x003), synchronizační rámce. Stanic s rolí ColdStart Node spolu se stanicemi Sync Node může být v clusteru maximálně 15. Příkaz „nodeconfig rx 0x…“ slouží k nastavení příjmu dat ze zvoleného časového slotu. Uživatel opět zadává 11bitovou hodnotu v hexadecimálním tvaru (např. nodeconfig rx 0x004).
Příkaz „nodeconfig tx 0x… 0x.. 0x.. 0x.“ slouží k nastavení slotu pro vysílání dat. Uživatel zadává 11bitové číslo slotu (hexadecimální tvar), ve kterém mají být data vysílána. Dále zadává 6bitové číslo (hexadecimální tvar) pro upřesnění cyklu, ve kterém mají být data odvysílána (hodnotu 0xFF volí uživatel, pokud na čísle komunikačního cyklu nezáleží). K číslu slotu volí také jeho 6bitovou masku (hexadecimální tvar). Nakonec si také uživatel vybere použitý kanál pro vysílání (0x1 – kanál A, 0x2 – kanál B, 0x3 – oba kanály současně).
Uveďme si příklad použití příkazu. Uživatel chce nastavit vysílání dat do 4. statického slotu každého komunikačního cyklu s lichým číslem na obou kanálech současně – nodeconfig tx 0x004 0x01 0x01 0x3. Pokud změní příkaz na nodeconfig 0x004 0x01 0x3F 0x3, pak budou data vysílána do 4. statického slotu komunikačního cyklu s číslem 1 na obou kanálech současně. Pokud - 76 -
Diplomová práce 2007
Viktor Pokorný
dále změní příkaz na nodeconfig 0x004 0x01 0x00 0x3, pak budou data vysílána do 4.statického slotu všech komunikačních cyklů na obou kanálech současně (stejně jako při zadání nodeconfig tx 0x004 0xFF 0x00 0x3). Pro ujasnění pravidel pro obsazení časových slotů k vysílání doporučuji čtenáři opětovné přečtení kapitol 3.6.2 Statický segment, kódování rámců a 3.6.3 Dynamický segment, kódování rámců.
Posledními dvěma příkazy jsou „nodeconfig default“ a „nodestart“. První jmenovaný slouží ke zpětnému nastavení registrů komunikačního kontroléru, pokud by se uživateli vymknula z rukou funkce komunikačního kontroléru po editaci registrů, popř. špatné konfiguraci. Druhým příkazem uživatel uvede komunikační kontrolér z režimu komunikace do režimu funkce. Tím započne stanice integraci do běžícího clusteru nebo, pokud má roli ColdStart a cluster není v provozu, započne s jeho nastartováním.
4.4.3 Demonstrativní přenos dat Stanice, která byla nakonfigurována i jako vysílač, umožňuje po integraci do clusteru uživateli psát textové zprávy přímo do okna Hyperterminálu. Takováto stanice má omezenou indikaci stavů komunikačního kontroléru do okna a to proto, aby při psaní textu tato indikace uživatele nerušila. Pokud si uživatel stavy přeci jenom přeje sledovat, musí stanici nakonfigurovat pouze jako přijímač.
Textová zpráva je zadána a ukončena po stisku klávesy ENTER. Při vysílání textové zprávy je pak delší řetězec ASCII znaků rozdělen postupně do rámců ve vlastněných slotech. Množství odeslaných znaků jedním rámcem je 20 a to včetně ukončovacího znaku řetězce ‘/0’ vysílaném v posledním rámci z této řady. 20 přenesených znaků odpovídá 160 bitům dat, což je právě délka užitečných dat v jednom rámci díky zvolené konfiguraci clusteru, viz. registr SPLR a MPLDR v kapitole 4.3.4 Inicializace TJA1080 a registrů MFR4200. Na opačné (přijímací) straně je řetězec skládán z dat rámců ve zvoleném monitorovaném (přijímaném) časovém slotu a to až do chvíle, kdy přijímač detekuje ukončovací znak řetězce ‘/0’. Pak jsou data zhodnocena jako kompletní a zobrazena na okno Hyperterminálu s patřičnými doplňujícími údaji (čísla slotů, cyklů a kanály, na kterých příjem proběhl a indikátory z hlaviček využitých rámců pro přenos dat). - 77 -
Diplomová práce 2007
Viktor Pokorný
5 Analýza za pomoci hradlového pole FPGA Jak bylo popsáno v kapitole 1.3 Cíl práce, poslední třetinou diplomové práce je analýza a měření na běžící síti FlexRay. Předešlé dvě třetiny diplomové práce, tedy studium standardu a jeho vlastností a vystavěná demonstrační síť, dávají předpoklad pro uskutečnění tohoto cíle.
Jako nástroj k provedení analýzy vybraného parametru standardu bylo zvoleno hradlové pole typu FPGA Stratix od výrobce ALTERA osazené na příslušné vývojové desce (Obr. 5-1). Vývojová deska nebyla vybrána díky svým specifickým vlastnostem (z obrázku je vidět, že je vybavena a určena především pro zpracování signálů a implementaci DSP funkcí), ale proto, že byla mezi dostupným hardwarem na katedře měření jediná s hradlovým polem dostatečného výkonu. Vývojová deska byla původně zakoupena pro potřeby již ukončené disertační práce pana Trnky, zabývající se komunikací po napájecí síti vozu.
Obr. 5-1 EP1S80 DSP vývojová deska
- 78 -
Diplomová práce 2007
Viktor Pokorný
S užitím tohoto nástroje se práce zaměřuje na proměnný parametr délky komunikačního cyklu jakožto žádaný důsledek synchronizace časové základny stanice na globální časové parametry sítě, viz. 3.8.2 Časová synchronizace stanic. K měření délky komunikačních cyklů byla použita přepracovaná idea noniového měřiče časového intervalu pro účel kontinuálního měření po sobě jdoucích cyklů a dále bylo přidáno cejchování během každé etapy odměru. Výsledek úvahy byl v celku úspěšně implementován do výše uvedeného hradlového pole FPGA. Následující kapitoly se věnují srovnání metody, odvození, vylepšení, přechodu do praxe, následné implementaci a nakonec komentáři k výsledkům měření.
5.1 Vybraný parametr – proměnná délka komunikačního cyklu stanice S ohledem na popsanou metodiku synchronizace stanice na globální časové parametry clusteru v kapitole 3.8.2 Časová synchronizace stanic, lze předpokládat, že korekce rychlosti nebude při malých odchylkách lokální časové základny aplikována a problém synchronizace stanice se převede na pouhou korekci offsetu jednou za n komunikačních cyklů. Pokračujme v úvaze. Pokud je korekce offsetu dle standardu prováděna prodloužením či zkrácením stavu idle na konci komunikačního cyklu, lze předpokládat prodloužení či zkrácení komunikačního cyklu, na kterém je odchylka offsetu aplikována. Opět předpokládejme malé odchylky lokální časové základny od globálních časových parametrů. Tedy, pokud je synchronizačním automatem (součást komunikačního kontroléru) rozhodnuto (na základě propočtu odchylek příchodu synchronizačních rámců od předpokládaných časů) o aplikaci korekce offsetu, stane se tak prodloužením či zkrácením idle stavu o nejmenší lokální časovou jednotku – 1 µT (mikrotik).
Měřením délky každého komunikačního cyklu vybrané stanice je tedy možno určit četnost zásahů synchronizačního mechanizmu. Pokud se nad problémem zamyslíme, napadne nás, že délka komunikačního cyklu se nebude měnit pouze skokově při aplikaci korekce offsetu, ale bude plynule plavat spolu s lokální časovou základnou a tedy i spolu s kontrolérem předpokládaným příchodem synchronizačních rámců. Toto se bude dít až do doby, kdy odchylka předpokládaného příchodu synchronizačních rámců od skutečného naroste do takové meze, že komunikační kontrolér zasáhne skokově do délky cyklu aplikací korekce offsetu.
- 79 -
Diplomová práce 2007
Viktor Pokorný
Předpoklad výsledku měření by měl být histogram četnosti jednotlivých délek komunikačního cyklu vybrané stanice se dvěma či třemi výraznými vrcholy vzdálenými od sebe zhruba 1 µT. Každý z vrcholů by měl být obklopen sloupci četností zhruba ve tvaru normálního rozložení, případně jejich superpozicí od všech vrcholů. Dalším výsledkem při zpracování dat – naměřených délek komunikačního cyklu by měla být četnost zásahu do délky cyklu korekcí offsetu, tedy detekce ostré změny délky cyklu jednou za n cyklů.
5.2 Nóniová metoda měření časového intervalu Pro měření délky komunikačního cyklu, který může být podle definice standardu až 16ms s rozlišitelností pod nejmenší lokální časovou jednotku mikrotik a tedy i pod nejmenší aplikovatelnou časovou korekci kontrolérem je potřeba se zamyslet nad použitou metodou měření. Rozlišitelnost měření tedy požadujeme 12.5ns (pouhá detekce aplikace korekce offsetu) nebo lepší (zlepšením rozlišení histogramu získáme údaje o plavání lokální časové základny) pro délku intervalu až 16ms. Údaj 12.5ns vyplývá z možných parametrů stanice pro bit rate přenosu 10Mbit/s. Pokud chceme měřit stabilitu (plavání) lokální časové základny měřením délky komunikačního cyklu stanice, musí měřící přístroj obsahovat stabilitou minimálně o třídu lepší zdroj hodinového signálu. Tedy pokud je na stanicích použit obyčejný low cost krystal, použijeme jako zdroj hodin měřícího přístroje odvozený signál hodin od teplotně kompenzovaného oscilátoru (TCXO).
Nyní máme tedy stabilnější zdroj hodin pro měřící přístroj a pojďme se zamyslet nad metodami měření časového intervalu pomocí čistě digitální techniky implementovatelné do FPGA.
- 80 -
Diplomová práce 2007
Viktor Pokorný
5.2.1 Klasické hradlování, idea, odvození Mějme stabilní hodinový kmitočet s periodou T odvozený od TCXO. Mějme časový interval tx ohraničený událostmi START a STOP, který potřebujeme změřit. Dále mějme čítač, který má vstup pro povolení čítání, který čítá hodinový signál s periodou T a který provádí inkrementaci svého obsahu na náběžnou hranu hodinového signálu. Příchodem události START povolíme čítání prázdného čítače. Příchodem události STOP pak čítání zastavíme. To lze například realizovat obvodem RS se stejnou dobou propagace z obou vstupů R a S na výstup. Výstup napojíme na vstup povolení čítání. Pojďme se podívat na dvě situace při měření totožného časového intervalu tx zobrazené na (Obr. 5-2) a (Obr. 5-3). Ve skutečnosti naměříme časový interval tc lišící se od původního. Stabilní kmitočet, odvozený od TCXO, s periodou T 1
2
3
4
5
6
7
8
START + povolení čítače
STOP + zastavení čítače
Δt1
T
Δt2
tc tx
tx = 88 ns, ALE
naměříme tc = (n-1)*T = 70 ns ; údaj čítače n = 8, T = 10 ns skutečný výsledek je tx = tc + Δt1 + Δt2
Stabilní kmitočet, odvozený od TCXO, s periodou T 1
2
3
4
5
6
7
8
9
START + povolení čítače
STOP + zastavení čítače
Δt1
Δt2
tc tx
tx = 88 ns, ALE
naměříme tc = (n-1)*T = 80 ns ; údaj čítače n = 9, T = 10 ns skutečný výsledek je tx = tc + Δt1 + Δt2
Obr. 5-2 Klasické hradlování hodinového signálu, situace 1 Obr. 5-3 Klasické hradlování hodinového signálu, situace 2
- 81 -
T
Diplomová práce 2007
Viktor Pokorný
Z obrázků lze vyvodit jednoznačný závěr. Měříme-li časový interval metodou hradlování hodinového signálu a předpokládáme-li výsledek měření tc jako konečný odpovídající měřenému tx, dopouštíme se chyby Δ v intervalu (-2T; 0>, v praxi používáme místo údaje (n – 1) přímo údaj čítače n a dopouštíme se tak chyby Δ v intervalu (-T; T). Do konečné nejistoty měření se propagují kromě této chyby metody i další chyby vyplývající z použití reálných prostředků. Jednou z nich může být například chyba odvození umístění události START a STOP v čase vlivem proměnné strmosti hran vstupního signálu procházející přes myšlený komparátor s hysterezí na vstupu reálného logického obvodu.
5.2.2 Nedostatky metody, potřeby Výše uvedenou metodu měření časového intervalu klasickým hradlováním by se navržený přístroj nedostal pod rozlišitelnost danou periodou T hodinového signálu. Chyba metody v určení časového intervalu je ideálně přinejmenším v intervalu (-T; T). Pokud by tedy konstruktér zamýšlel rozlišitelnost vyvíjeného přístroje kolem 2.5ns (interval mezi vrcholy histogramu 12.5ns rozdělený na pět dílů – viz. kapitola 5.1 Vybraný parametr – proměnná délka komunikačního cyklu stanice, potřeboval by stabilní hodinový signál o frekvenci 400Mhz a adekvátní dostatečně rychlé hradlové pole. Obě podmínky nejsou z hlediska přiměřených nákladů na pořízení hardwaru splnitelné. U hradlového pole se totiž nafitováním patřičného designu radikálně snižuje maximální operační frekvence jednotlivých využitých částí. Je tedy potřeba najít jinou plně digitální metodu, která má pro danou aplikaci dobrou rozlišitelnost a zároveň ke své funkci nepotřebuje stabilní hodinový signál o relativně vysoké frekvenci, viz. další kapitola 5.2.3 Nóniová metoda, idea, odvození. Existují i jiné metody, které v sobě kombinují např. číslicovou techniku s analogovou na principu interpolace. Příkladem může býti nabíjení kondenzátoru vysokým konstantním proudem po dobu Δt1 (resp. Δt2) a jeho vybíjení n-násobně menším konstantním proudem. Změřením nnásobně delšího časového intervalu - délky zpětného vybíjení kondenzátoru (např. výše uvedenou metodou hradlování) získáme relevantní odhad chybějícího údaje Δt1 (resp. Δt2) potřebného do vzorce tx = tc + Δt1 + Δt2. My však využijeme metody plně digitální, kompaktně implementovatelné do hradlového pole FPGA.
- 82 -
Diplomová práce 2007
Viktor Pokorný
5.2.3 Nóniová metoda, idea, odvození Mějme stabilní hodinový kmitočet s periodou T1 odvozený od TCXO. Mějme k dispozici další zdroj hodinového signálu - rychle startující generátor s konstantní dobou prodlení startu a poté s produkovanou periodou T2. Perioda T2 má býti málo rozdílná od periody T1, přičemž rozdíl je pro funkci zařízení nutný. Na hodinový signál s periodou T2 si klademe požadavek krátkodobé stability. Dále mějme 3 čítače se vstupy pro povolení čítání, které čítají hodinové signály s periodou T1, resp. T2 a které provádějí inkrementaci svého obsahu na náběžnou hranu hodinového signálu. Nakonec mějme časový interval tx ohraničený událostmi START a STOP, který potřebujeme změřit. Předpoklady byly uvedeny. Nyní si popíšeme funkci nóniového měřiče časového intervalu, jehož idea je znázorněna na (Obr. 5-4).
Stále generovaný stabilní hodinový signál s periodou T1 odvozený od TCXO Rychle startující generátor produkující hodinový signál s periodou T2 málo rozdílnou od T1 (rozdíl je pro funkci nutný) Rychle startující generátor má konstantní dobu prodlení startu Δt, produkovaný hodinový signál s periodou T2 vykazuje krátkodobou stabilitu t2
n2
1
2
3
4
5
6
7
8
9
T1
n1
1
2
3
1.koincidence zastavení čítače 1 povolení čítače 2
n3
1
2
3
4
5
2.koincidence zastavení čítače 2 zastavení čítače 3
T2
START + povolení čítače 1 Δt
STOP + povolení čítače 3 Δt
t1 tx
měřený časový interval je
t3 vztah mezi periodami T2 a T1 T2 = T1 + ΔT (ΔT – rozdíl period) T2 si můžeme vyjádřit jako T2 = k * T1
tx = Δt + t1 + t2 – t3 – Δt tx = (n1 – 1) * T2 + n2 * T1 – (n3 – 1) * T2
k = (T1 + ΔT) / T1
tx = n2 * T1 + (n1 – n3) * T2
k = 1 + ΔT / T1
tx = [n2 + (n1 – n3) * k] * T1
Obr. 5-4 Nóniová metoda, idea, odvození
- 83 -
Diplomová práce 2007
Viktor Pokorný
Příchodem události START povolíme činnost rychle startujícího generátoru hodinového signálu a příslušného čítače 1, který čítá náběžné hrany tohoto signálu. Všimněme si prodlení Δt ve startu generátoru, které je způsobeno ovládací logikou generátoru a délkou přívodů, pokud by byl rychle startující generátor externím zařízením připojeným k našemu měřícímu přístroji. Prodlení Δt je v tomto případě uvažováno za konstantní, tedy shodné pro každý následující start generátoru. Měřící přístroj nyní hledá koincidenci signálu se stabilním hodinovým signálem, který je generován bez ustání dalším externím přístrojem. Po nalezení koincidence je zastaven čítač 1 a povolen čítač 2, který čítá náběžné hrany stabilního hodinového signálu. Dále je zastavena činnost rychle startujícího generátoru. Příchodem události STOP opět povolíme činnost rychle startujícího generátoru hodinového signálu a příslušného čítače, nyní s číslem 3. Opět vzniklo prodlení ve startu Δt, které uvažujeme za konstantní. Měřící přístroj opět hledá koincidenci se stabilním hodinovým signálem, přičemž čítače 2 a 3 na příslušných signálech běží. Po nalezení koincidence jsou oba čítače zastaveny, dále je zastavena činnost rychle startujícího generátoru a vyhodnocen výsledek měření časového intervalu tx za pomoci údajů obsahů n1, n2, n3 všech tří čítačů (tx = [n2+(n1–n3)*k]*T1, kde k = 1+ΔT/T1). Čítač 2 má v měřícím přístroji hlavní roli a svým obsahem nese většinu údaje o délce měřeného časového intervalu tx. Údaj n2 obsahuje o několik řádů vyšší číslo než údaje n1 či n3. Je tedy zapotřebí, aby stále běžící hodinový signál s periodou T1 pro čítač 2 vykazoval dobrou dlouhodobou stabilitu. Signál z rychle startujícího generátoru s periodou T2 pro čítače 1 a 3 již z principu činnosti dlouhodobé stability nedosahuje, požadujeme však od něj stabilitu krátkodobou. Údaje n1 a n3 obsahují čísla o určité limitované velikosti, nezávislé na délce měřeného intervalu tx. Tímto limitem je kladné číslo x, pro které platí, že: pokud perioda T1 < T2 (x + 1) * T1 = x * T2 (x + 1) * T1 = x * (T1 + ΔT) T1 = x * ΔT x = T1 / ΔT
ideálně je x celé číslo
Číslo x je počet period T2 signálu rychle startujícího generátoru od jedné koincidence se stabilním hodinovým signálem o periodě T1 ke druhé za předpokladu volného nepřerušovaného běhu obou generátorů. Tedy větší počet period T2 žádný z čítačů (čítač 1, čítač 3) za žádných okolností načíst nemůže. V praxi se nám ale nedaří nastavit pomocí periody T2 takové ΔT - 84 -
Diplomová práce 2007
Viktor Pokorný
(ΔT = T2 – T1) , aby výsledek x byl přímo celým číslem. Pak tedy platí, že údaje n1, n3 ≤ x, kde x je výsledek podílu T1 / ΔT zaokrouhlený na celé číslo směrem nahoru a to při použití detektoru koincidence, který nehledá přímo splynutí náběžných hran obou hodinových signálů, ale stav kdy se náběžná hrana hodinového signálu s periodou T2 posunula v čase za náběžnou hranu stabilního hodinového signálu s periodou T1. Předběhněme kapitoly a řekněme si, jak takový detektor koincidence funguje. Při hledání koincidence mezi dvěma hodinovými signály je využito vzorkování stavu jednoho hodinového signálu náběžnou hranou druhého signálu. V našem případě je na náběžnou hranu signálu s periodou T2 odebrán vzorek stavu hodinového signálu s periodou T1. Pokud předešlý odebraný vzorek byla logická nula a zároveň současně odebraný vzorek je logická jedna, pak došlo ke koincidenci (koincidence byla někde mezi současným a předchozím odběrem). Neurčitost stanovení místa koincidence v čase se propaguje do výsledné chyby měření tak, jak bude popsáno níže v odstavci chyba měření.
Nyní se pojďme podívat jaká je rozlišitelnost měřícího přístroje používajícího nóniovou metodu. Nejlépe to můžeme demonstrovat na příkladech dvou měření časového intervalu, po němž jsou údaje n1, n2 a n3 právě takové, že
n1 – n3 = y, n2 = z :
tx1 = [n2 + (n1 – n3) * k] * T1, kde k = 1 + ΔT / T1 tx1 = [n2 + y * k] * T1 tx1 = [n2 + y + y * ΔT / T1] * T1 tx1 = [n2 + y] * T1 + y * ΔT a
n1 – n3 = y – 1, n2 = z + 1 :
(2. koincidence nastala o periodu později, díky nepatrnému prodloužení intervalu tx) tx2 = [(n2 + 1) + (y – 1)] * T1 + (y – 1) * ΔT nyní odečteme od sebe nepatrně odlišné časové intervaly tx1 a tx2: tx1 – tx2 = [n2 + y] * T1 + y * ΔT – [(n2 + 1) + (y – 1)] * T1 – (y – 1) * ΔT tx1 – tx2 = ΔT Rozlišitelnost měření časového intervalu pomocí nóniové metody je tedy ΔT, kde ΔT je rozdíl period použitých generátorů (ΔT = T2 – T1).
- 85 -
Diplomová práce 2007
Viktor Pokorný
V předchozím odstavci s výpočty se možná také čtenář dozvěděl, jaká vznikne chyba měření, pokud nastane detekce 2. koincidence o jednu periodu hodinových signálů později díky reálným vlastnostem obvodů pracujícím v členu „detektor koincidence“, viz. kapitola 5.5.2 VHDL kód, blokové schéma měřícího automatu/analyzátoru. Nyní si pojďme tuto chybu znovu odvodit pro detekci 1. koincidence i pro detekci 2. koincidence o jednu periodu později. Chyba měření vzniklá pozdní detekcí 1. koincidence hodinových signálů: tx = [n1 – 1] * T2 + n2 * T1 – [n3 – 1] * T2 tx3 = [(n1 + 1) – 1] * T2 + (n2 – 1) * T1 – [n3 – 1] * T2 tx – tx3 = [n1–1] * T2 + n2 * T1 – [n3–1] * T2 – [(n1+1)–1] * T2 – (n2–1) * T1 + [n3–1] * T2 tx – tx3 = -T2 + T1 = - ΔT – T1 + T1 tx – tx3 = - ΔT Chyba měření vzniklá pozdní detekcí 2. koincidence hodinových signálů: tx = [n1 – 1] * T2 + n2 * T1 – [n3 – 1] * T2 tx4 = [n1 – 1] * T2 + (n2 + 1) * T1 – [(n3 + 1) – 1] * T2 tx – tx4 = [n1–1] * T2 + n2 * T1 – [n3–1] * T2 – [n1–1] * T2 – (n2+1) * T1 + [(n3+1)–1] * T2 tx – tx4 = -T1 + T2 = -T1 + T1 + ΔT tx – tx4 = ΔT Chyba měření časového intervalu pomocí nóniové metody za předpokladu jedné zpožděné detekce koincidence signálů Δ je v intervalu <- ΔT; ΔT >. Pokud obě koincidence chybně detekujeme o jednu periodu později, pak Δ = 0. Opět platí, že do konečné nejistoty měření se propagují kromě této chyby i další chyby vyplývající z použití reálných prostředků. Jednou z nich může být například chyba odvození umístění události START a STOP v čase vlivem proměnné strmosti hran vstupního signálu procházející přes myšlený komparátor s hysterezí na vstupu reálného logického obvodu. Další chybou je velice častá nestabilita rychle startujícího generátoru. Požadavek na slušnou krátkodobou stabilitu tohoto generátoru se většinou nedaří dodržet a chyba takto vzniklá je nejvíce zastoupenou v celkové chybě.
- 86 -
Diplomová práce 2007
Viktor Pokorný
5.2.4 Nóniová metoda, vylepšení Celé odvození určení výsledku tx v předchozí kapitole 5.2.3 Nóniová metoda, idea, odvození bylo provedeno záměrně tak, aby výsledné vyjádření neobsahovalo člen T2 (perioda rychle startujícího generátoru). Jelikož je častým jevem nestabilita periody tohoto generátoru, snažíme se metodu vylepšit tak, aby došlo k co nejlepšímu potlačení takto vzniklé chyby měření vlivem kolísání periody T2. Chceme tedy, aby během každého proběhlého měření byla ocejchována aktuální perioda T2 za pomoci stabilního hodinového signálu o periodě T1 a určen tak koeficient k (k = 1+ΔT/T1 = T2/T1) pro dané aktuální měření. Situaci znázorňuje (Obr.
5-6) oproti situaci původní na
(Obr. 5-5).
n2
T1 1.koincidence
2.koincidence
T2
STOP
START n1
n3 tx
Obr. 5-5 Nóniová metoda klasicky
n2 n5
T1 1.koincidence
2.koincidence
T2
STOP
START n1
n4
n3 tx
Obr. 5-6 Nóniová metoda s cejchováním
- 87 -
Diplomová práce 2007
Viktor Pokorný
Změna nastala po 1. koincidenci, kdy měřící přístroj rychle startující generátor nezastaví. Provede totiž za pomoci čítačů 4 a 5 zmíněné cejchování. Po 1. koincidenci povolí měřící přístroj oba čítače a poté čeká, až se inkrementací údaje n4 dosáhne určité konstanty. V tu chvíli odebere aktuální údaj n5 z druhého čítače a rychle startující generátor zastaví. Výpočet koeficientu k je proveden následovně: T2 = k * T1
n4 * T2 ≈ n5 * T1
časové úseky jsou přibližně stejné
T2 ≈ n5/n4 * T1 Pro dostatečně velké n5 maximální možnou chybu -1/n4 zanedbáme a položíme
k = n5 / n4 , kde n4 = konst., např. 1000
5.3 Od teorie k praxi – adaptace na daný problém, užití metody Stanice integrovaná v clusteru sítě FlexRay může v symbolovém okně (viz. kapitola 3.6 Komunikační cyklus) každého komunikačního cyklu vysílat tzv. Media Test Symbol (viz. kapitola 3.6.4 Symbolové okno, kódování). Tento symbol je nejdelší souvislou logickou nulou v celém komunikačním cyklu a je tedy jednodušeji nalezitelný měřícím přístrojem než jiné sledovatelné události ve fyzické vrstvě v rámci každého cyklu.
Měřící přístroj si tedy může odvozovat od náběžné hrany končícího Media Test Symbolu v každém cyklu START/STOP událost pro měření časového intervalu – délky komunikačního cyklu. Idea měření je hotova, stačí vyřešit otázku, jak zamaskovat ostatní náběžné hrany na fyzické vrstvě v rámci celého komunikačního cyklu. Tento problém může být vyřešen cíleným hledáním nejdelší logické nuly v rámci cyklu, před jejímž koncem bychom produkovali okno, ve kterém by měřící přístroj byl na náběžnou hranu citlivý. V ostatních případech by byl trigger měřícího přístroje zakázán. Situace je znázorněna na (Obr. 5-7).
- 88 -
Diplomová práce 2007
fyzická vrstva FlexRay MTS
Viktor Pokorný
měřený časový interval tx
proměnná délka komunikačního cyklu stanice MTS
produkované okno
7/8*MTS
START
7/8*MTS
tx
9/8*MTS
STOP
9/8*MTS
Obr. 5-7 Generování okna pro povolení průchodu START/STOP události
Poslední otázkou, kterou je potřeba řešit, je, jak upravit měřící přístroj (automat) tak, aby produkoval výsledky kontinuálního měření po sobě jdoucích komunikačních cyklů, kde události START a STOP splývají v jednu (nejde o jednorázový odměr časového intervalu s oddělenými START a STOP událostmi). Tento problém bude detailněji popsán a vyřešen v kapitole 5.5.1 Obecný popis funkce.
- 89 -
Diplomová práce 2007
Viktor Pokorný
5.4 Využitá konfigurace realizačních prostředků S ohledem na skutečnost, že vývojová deska EP1S80 DSP s hradlovým polem Stratix (FPGA) od firmy Altera není na katedře měření novým hardwarem a byla již využívána panem Trnkou pro potřeby disertační práce, vynecháme celou kapitolu „Možnosti užitého hardwaru“ a nahradíme ji krátkým popisem vlastností vývojové desky zde.
5.4.1 Vývojová deska Vývojová deska má sloužit především pro implementace DSP designů. Jejím srdcem je FPGA Stratix EP1S80 (speed grade -6) v pouzdře BGA s 956 vývody. Hradlové pole má následující parametry: •
79040 bloků s logickými elementy
•
767 bloků M512 RAM (32 x 18 bitů), 364 bloků M4K RAM (128 x 36 bitů) a 9 bloků M-RAM (4K x 144 bitů)
•
22 DSP bloků, 176 rozšířených hw násobiček, s operační frekvencí přes 300Mhz
•
12 nezávislých PLL bloků
•
Podpora pro dual-port přístup do RAM bloků pro implementaci FIFO
•
Podpora pro rozličné I/O standardy, mimo jiné diferenciální LVDS
•
Podpora pro připojení externích pamětí ZBT, QDR/QDR II, SDR, DDR SRAM
•
Podpora pro sběrnice PCI až 66Mhz pro 64 bit, PCI-X 100MHz
Vývojová deska obsahuje následující komponenty: •
2x 12bit 125Mhz A/D, 2x 14bit 165Mhz D/A
•
2MB 7.5ns SRAM, 64Mb flash memory
•
2x 7segment display, DIP8 switch, 3x tlačítko, 2x LED pro uživatele
•
RS-232 konektor s převodníkem úrovní
•
80MHz oscilátor
•
2x micron konektor pro propojení s logickými analyzátory firmy Agilent
•
Vstupy/výstupy přes konektory s roztečí 2.54mm a SMA konektory
- 90 -
Diplomová práce 2007
Viktor Pokorný
5.4.2 Použité I/O porty hradlového pole Potřeby měřícího automatu pokrývají možnosti hardwaru osazeného na vývojové desce jen v malé míře. Pojďme si uvést obsazené I/O porty, propojení signálů na periferie, které jsou využity, a jednoduchý popis jejich funkce (Obr. 5-8). Ostatní vstupy/výstupy budou použitelné pro případné rozšíření funkčnosti při pokračování v tématu této práce.
Signál
I/O pin
Kam vede
Funkce
Signál
I/O pin
Kam vede
Funkce
DEBUGport[0]
C29
kon. JP8.1
32bit datový výstup měřícího automatu
HEX_L[0]
K25
segment A
výstup na levý 7segment display
DEBUGport[1]
C30
kon. JP8.2
HEX_L[1]
K26
segment B
DEBUGport[2]
D29
kon. JP8.3
HEX_L[2]
K28
segment C
DEBUGport[3]
D30
kon. JP8.5
HEX_L[3]
L27
segment D
DEBUGport[4]
E29
kon. JP8.6
HEX_L[4]
K29
segment E
DEBUGport[5]
E30
kon. JP8.7
HEX_L[5]
D25
segment F
DEBUGport[6]
F30
kon. JP8.9
HEX_L[6]
K24
segment G
DEBUGport[7]
F31
kon. JP8.10
HEX_L[7]
K27
des. tečka
DEBUGport[8]
G30
kon. JP8.11
HEX_R[0]
L29
segment A
DEBUGport[9]
G31
kon. JP8.13
HEX_R[1]
E13
segment B
DEBUGport[10]
H30
kon. JP8.14
HEX_R[2]
L19
segment C
DEBUGport[11]
H31
kon. JP8.15
HEX_R[3]
L24
segment D
DEBUGport[12]
J30
kon. JP8.17
HEX_R[4]
L25
segment E
DEBUGport[13]
J31
kon. JP8.18
HEX_R[5]
L28
segment F
DEBUGport[14]
K30
kon. JP8.19
HEX_R[6]
L21
segment G
DEBUGport[15]
K31
kon. JP8.21
HEX_R[7]
L26
des. tečka
DEBUGport[16]
L30
kon. JP8.22
JP1_CLK15p
C18
JP1 – SMA kon.
DEBUGport[17]
L31
kon. JP8.23
JP2_PLL5_OUT2p
D17
JP2 – SMA kon.
DEBUGport[18]
M29
kon. JP8.25
JP3_CLK15n
D18
JP3 – SMA kon.
DEBUGport[19]
M30
kon. JP8.26
JP4_PLL5_OUT2n
C17
JP4 – SMA kon.
DEBUGport[20]
W29
kon. JP8.27
JP26_5
AK16
přepojitelné na
JP26.5
JP25 – SMA kon.
výstup na pravý 7segment display
vstup stabilního hodinového signálu odvozeného od TCXO monitorovací výstup z interního rychle startujícího generátoru vstup pro ladění ve finální funkci nevyužito výstup pro ladění ve finální funkci nevyužito výstup pro ladění ve finální funkci nevyužito
JP26.6 DEBUGport[21]
W30
kon. JP8.29
JP26_6
AL16
pomocí jumperu
vstup pro signál z fyzické vrstvy FlexRay
přepojeno na
pozor, vstupní rozsah LVCMOS 3V3!!!
JP25 – SMA kon. DEBUGport[22]
U30
kon. JP8.30
LED0_D6
L12
D6
výstup na indikační LED
DEBUGport[23]
U31
kon. JP8.31
LED1_D7
L14
D7
výstup na indikační LED
DEBUGport[24]
V31
kon. JP8.33
SW0_RESET
AF14
SW0
vstup signálu od tlačítka
DEBUGport[25]
V30
kon. JP8.34
SW1
AK13
SW1
vstup signálu od tlačítka
DEBUGport[26]
AA31
kon. JP8.35
SW2
AK12
SW2
vstup signálu od tlačítka
DEBUGport[27]
AA30
kon. JP8.37
SW3p1
AK11
SW3.0
vstup signálu od DIP8 switche
DEBUGport[28]
AB30
kon. JP8.38
SW3p2
AK10
SW3.1
DEBUGport[29]
AB31
kon. JP8.39
SW3p3
AK9
SW3.2
DEBUGport[30]
AC31
kon. JP8.41
SW3p4
J20
SW3.3
DEBUGport[31]
AC30
kon. JP8.42
SW3p5
J22
SW3.4
DEBUGlatch
AD31
kon. JP8.43
SW3p6
J21
SW3.5
SW3p7
N29
SW3.6
SW3p8
L11
SW3.7
OSC_CLK14p
A18
80Mhz osc.
TxUART
J19
RS-232 kon.
RxUART
L16
RS-232 kon.
náběžná hrana potvrzuje platnost dat vstup hodin z oscilátoru umístěného na vývojové desce výstup přes převodník úrovní na sériovou linku vstup přes převodník úrovní ze sériové linky
Obr. 5-8 Použité I/O porty hradlového pole
- 91 -
Diplomová práce 2007
Viktor Pokorný
5.5 Popis měřícího automatu 5.5.1 Obecný popis funkce V kapitolách 5.2.3 Nóniová metoda, idea, odvození, 5.2.4 Nóniová metoda, vylepšení a 5.3 Od teorie k praxi – adaptace na daný problém, užití metody jsme si uvedli, že během jednoho odměru časového intervalu je potřeba zajistit měřícím přístrojem/automatem tyto činnosti: •
Automaticky vyhledávat Media Test Symbol (nejdelší souvislá logická úroveň nula na fyzické vrstvě) a generovat okno zahrnující právě jednu náběžnou hranu za celý komunikační cyklus stanice představující ukončení zmíněného Media Test Symbolu na fyzické vrstvě.
•
Od náběžné hrany vyskytující se v povolujícím okně odvozovat START/STOP událost měřícího přístroje.
•
Událostí START/STOP spouštět rychle startující generátor, popřípadě tento generátor implementovat přímo na hradlovém poli FPGA. Událostí START/STOP také povolovat činnost prázdných čítačů 1,3 (čítají hodinový signál s periodou T2).
•
Detekovat koincidenci mezi oběma hodinovými signály s periodou T1 a T2.
•
Po koincidenci odebrat údaje n1, resp. n3 z příslušných čítačů, povolit prázdný čítač 2 (čítá hodinový signál s periodou T1), resp. odebrat z něj příslušný údaj n2. Po koincidenci také spustit cejchující automat, který hledá poměr mezi periodami T2 a T1 jako koeficient k.
Neuvedli jsme si však, jak měřící automat adaptovat na kontinuální měření po sobě jdoucích časových intervalů se společnými START/STOP událostmi. Jelikož po získání všech potřebných koeficientů musí automat provést výpočet výsledné hodnoty tx, přišel by o údaje z měření následujícího komunikačního cyklu. Jedním způsobem řešení problému je celé automaty včetně implementovaného rychle startujícího generátoru zdvojit a nechat je střídat v měření délky cyklů, přičemž jeden automat by v aktuálním cyklu měřil zatímco druhý by zpracovával data z měření z předchozího cyklu, pak by si role obrátily. Výsledek měření z každého cyklu by byl v tomto případě produkován přepínáním mezi výstupy obou automatů. Toto řešení je ale neefektivní ve smyslu obsazeného prostoru takovýmto designem na křemíku FPGA. Další nevýhodou jsou dva nezávislé rychle startující
- 92 -
Diplomová práce 2007
Viktor Pokorný
generátory, z nichž každý by z principu dosahoval jiné stability (či spíše nestability) svého produkovaného hodinového signálu. To by nám nevadilo, pokud by postačovalo cejchování pro každý generátor. V praxi se bohužel ukázalo, že cejchování periody T2 je metoda pro dobré potlačení nestability produkovaného hodinového signálu, ne však úplné. V podstatě se dá říci, že implementovaný rychle startující generátor vykazuje z principu očekávanou špatnou dlouhodobou stabilitu, kterou lze korigovat právě cejchováním při každém cyklu měření, a navíc pouze dostatečnou krátkodobou stabilitu, kterou úplně korigovat cejchováním nelze. Takto vzniklá chyba se propaguje do výsledku měření. Představme si tedy, že by se do výsledků měření střídavě propagovaly dvě různé chyby v důsledku použití dvou různých rychle startujících generátorů. Takovéto měření by nebylo příliš relevantní. Druhým způsobem řešení problému je použití jednoho rychle startujícího generátoru a ostatní procesy obou automatů uvést do paralelizmu a sloučit je použitím měřících fází do jednoho měřícího automatu. Funkce sloučeného měřícího automatu s fázemi je naznačena na (Obr. 5-9) a je defakto popisem implementovaného měřícího automatu. Jak je vidět, události START a STOP jsou sloučeny v jednu stejně tak jako čítače 1 a 3. Společný výsledek čítání n1,3 reprezentuje údaj n3 z předchozí fáze a zároveň údaj n1 z fáze současné. Výsledky n2 z čítače 2 a k z cejchovacího automatu vždy reprezentují údaje ze současné fáze. Po získání všech údajů z předchozí fáze, tj. získáním posledního údaje, kterým je n3, započne výpočet délky měřeného časového intervalu – proměnné délky komunikačního cyklu stanice. Výsledek je po výpočtu poslán na výstup DEBUGport[31..0] a potvrzen náběžnou hranou signálu DEBUGlatch (viz. kapitola 5.4.2 Použité I/O porty hradlového pole). Výsledek je o něco zpožděn za ukončeným komunikačním cyklem, ke kterému se vztahuje.
- 93 -
Diplomová práce 2007
(n)
Viktor Pokorný
skutečný kom. cyklus
skutečný kom. cyklus
skutečný kom. cyklus
měřený kom. cyklus (n + 1)
měřený kom. cyklus (n + 2)
měřený kom. cyklus (n + 3)
MTS
MTS
(n+4)
MTS
MTS
fyzická vrstva FlexRay produkované okno START STOP
START STOP
START STOP
START STOP
FÁZE 0
FÁZE 1
FÁZE 0
FÁZE 1
n2
n2
n2
n2
n5
n5
n2
n5
n5
T1 T2 n1,3
n4
koincidence vyzvednutí údajů n1,3 a n2 PH1_n1 = n1,3 PH0_n3 = n1,3 PH0_n2 = n2
n1,3
cejchování vyzvednutí údaje n5 n4 = 1000(konst) k = n5 / n4 PH1_k = k
n4
n1,3
koincidence cejchování vyzvednutí vyzvednutí údajů n1,3 a n2 údaje n5 n4 = 1000(konst) PH0_n1 = n1,3 PH1_n3 = n1,3 k = n5 / n4 PH0_k = k PH1_n2 = n2
n4
koincidence vyzvednutí údajů n1,3 a n2 PH1_n1 = n1,3 PH0_n3 = n1,3 PH0_n2 = n2
n1,3
n4
cejchování vyzvednutí údaje n5 n4 = 1000(konst) k = n5 / n4 PH1_k = k
výpočet tx pro předešlou FÁZI 0
výpočet tx pro předešlou FÁZI 0
tx = 1000*[ PH0_n2+(PH0_n1-PH0_n3)* PH0_k]
tx = 1000*[ PH0_n2+(PH0_n1-PH0_n3)* PH0_k]
výpočet tx pro předešlou FÁZI 1 tx = 1000*[ PH1_n2+(PH1_n1-PH1_n3)* PH1_k]
odeslání výsledku tx délky kom. cyklu (n)
odeslání výsledku tx délky kom. cyklu (n+1)
Obr. 5-9 Obecný popis funkce měřícího automatu
- 94 -
odeslání výsledku tx délky kom. cyklu (n+2)
Diplomová práce 2007
Viktor Pokorný
Z (Obr. 5-9) je také vidět, že začátek a konec čítání čítače 2 je totožný. Je to opět iluzorní obraz funkce v praxi nerealizovatelný. V hradlovém poli je reálně funkce reprezentována třemi čítači a automatem pro jejich korektní přepínání a odebírání výsledků. Skutečné generování údaje n2 je znázorněno na (Obr. 5-10).
koincidence
n2 z FÁZE 1
koincidence
koincidence
n2 z FÁZE 0
n2 z FÁZE 1
koincidence
n2 z FÁZE 0
obsah čítače 2a
povolení čítače
odběr n2
reset čítače
povolení čítače
reset čítače
povolení čítače
odběr n2
reset čítače
odběr n2
reset čítače
povolení čítače
odběr n2
obsah čítače 2b
obsah čítače 2c
n2 z FÁZE 0
n2 z FÁZE 1
n2 z FÁZE 0
Obr. 5-10 Detail funkce imaginárního čítače 2
- 95 -
n2 z FÁZE 1
Diplomová práce 2007
Viktor Pokorný
5.5.2 VHDL kód, blokové schéma měřícího automatu/analyzátoru Kód pro popis designu automatu umístěného do FPGA byl napsán v jazyce VHDL a odladěn ve vývojovém prostředí Quartus II (obsahuje editor blokových schémat, editor kódu, editor přiřazení signálů, editor čipu, syntetizér, fitter, assembler, analyzér a editor časování, virtuální simulátor, JTAG programátor a další součásti). Popis designu obsahuje v sumě kolem 1500 řádků kódu a nelze jej tedy opět připojit jako přílohu k tištěné podobě diplomové práce ačkoliv je její součástí. Pokud se čtenář zajímá hlouběji o jeho obsah, nalezne jej na přiloženém CD včetně komentářů psaných uvnitř kódu.
V této kapitole si uvedeme blokové schéma celého automatu (Obr.
5-11, Obr.
5-12,
Obr. 5-13, Obr. 5-14). Modře jsou u bloků označeny vstupy, červeně pak výstupy. Pod obrázky si uvedeme identifikaci jednotlivých bloků.
Obr. 5-11 Blokové schéma měřícího automatu - generátor oken, zobrazovač
Na (Obr.
5-11) vidíme automat pro hledání maximální délky logické úrovně nula
vyskytující se na fyzické vrstvě během povolení činnosti uživatelem (1. přepínač na DIP8 switch). Maximální nalezená délka (v počtu period délky T1) stabilního hodinového signálu je předána do - 96 -
Diplomová práce 2007
Viktor Pokorný
dalšího automatu pro generování okna. Dále je také částečně zobrazena na 7segmentovém displeji za pomoci hexadecimálního dekodéru/ovladače. Pro zobrazení údaje je použita spodní polovina bitové šířky údaje. Nakonec vidíme automat generující okno pro náběžnou hranu konce Media Test Symbolu. Toto okno je generováno ve stavu funkce (2. přepínač na DIP8 switch) po nalezení souvislé logické úrovně nula na fyzické vrstvě o délce právě 7/8 původní maximální nalezené délky. Okno je ukončeno v čase 9/8 původní délky. Celkové ovládání měřícího automatu včetně popisu funkce přepínačů je uvedeno v kapitole 5.6 Měřící automat/analyzátor z pohledu obsluhy.
Obr. 5-12 Blokové schéma měřícího automatu - rychle startující generátor, interpretr dat po sériové lince
Na (Obr. 5-12) vidíme implementaci rychle startujícího generátoru pomocí logického obvodu a zpožďovací linky. Činnost generátoru lze dočasně povolit před stavem funkce 3. přepínačem na DIP8 switch. To slouží obsluze k hrubému nastavení periody T2 rychle startujícího generátoru blízké k periodě T1 stabilního hodinového signálu. Tím je ovlivněna rozlišitelnost měřícího přístroje, viz. kapitola 5.2.3 Nóniová metoda, idea, odvození. Generátor je samozřejmě ve stavu funkce povolován automaticky po každé události START/STOP. - 97 -
Diplomová práce 2007
Viktor Pokorný
Dále je na obrázku vidět odvození hodinového signálu 25MHz od původního signálu 80MHz, který je dodáván osazeným oscilátorem na vývojové desce. Hodinový signál 25MHz je potřebný pro činnost bloků ovládající sériový port, popř. bloku dostatečně imitujícího komunikační cyklus stanice FlexRay na fyzické vrstvě, který však při normální činnosti není využit. Byl využíván ve fázi ladění designu. Nakonec jsou na obrázku vidět dva automaty obsluhující sériový port, které rovněž byly využívány ve fázi ladění. Při běžném provozu a kadenci dat 32bitů každou 1ms není schopna sériová linka na rychlosti 115200Bd odvysílat data z měření každého komunikačního cyklu a dochází tak k zahazování většiny údajů. Automat Data Interpreter totiž z holých 32bitů dat generuje celou ASCII zprávu, která obsahuje vyjádření čísla jak v hexadecimálním tvaru, tak decimálním tvaru. Navíc je ještě zobrazováno číslo registru přivedené na další vstup a komentující textové zprávy tak, aby celý odvysílaný obsah byl jednoduše uživatelem čitelný v okně Hyperterminálu.
Obr. 5-13 Blokové schéma měřícího automatu - hlavní automat, čítače, cejchovací automat
- 98 -
Diplomová práce 2007
Viktor Pokorný
Na (Obr. 5-13) vidíme hlavní ovládající automat spolu se třemi čítači 2a, 2b, 2c a čítačem 1,3. Posledně zmíněný čítač obsahuje také další funkce. Mimo jiné generuje START/STOP události, ovládá běh rychle startujícího generátoru ve stavu funkce, hledá koincidence mezi oběma hodinovými signály (stabilním s periodou T1 a rychle startujícím s periodou T2), ovládá funkci cejchovacího automatu, atd. Při hledání koincidence mezi dvěma hodinovými signály je využito vzorkování stavu jednoho hodinového signálu náběžnou hranou druhého signálu. V našem případě automat na náběžnou hranu signálu s periodou T2 odebere vzorek stavu hodinového signálu s periodou T1. Pokud předešlý odebraný vzorek byla logická nula a zároveň současně odebraný vzorek je logická jedna, pak došlo ke koincidenci (koincidence byla někde mezi současným a předchozím odběrem). Neurčitost stanovení místa koincidence v čase se propaguje do výsledné chyby měření tak, jak bylo popsáno v kapitole 5.2.3 Nóniová metoda, idea, odvození, odstavec chyba měření. Hlavní ovládající automat především přepíná fáze měření, ovládá všechny čítače včetně jejich podfunkcí a vyzvedává si od nich výsledky, které pak podle patřičné fáze zpracovává. Ze zpracovaných výsledků generuje každou fázi měření konečný výsledek – změřenou délku komunikačního cyklu FlexRay stanice z předchozí fáze. Generované číslo je 31bitové v jednotkách tisícin délky periody T1. Na posledním obrázku (Obr. 5-14) vidíme blok vstupů a výstupů korespondující popisem s tabulkou uvedenou v kapitole 5.4.2 Použité I/O porty hradlového pole. Dále je vidět blok dostatečně imitující komunikační cyklus stanice FlexRay na fyzické vrstvě, který však, jak bylo již napsáno, při normální činnosti není využit. Byl využíván pouze ve fázi ladění designu. Jeho funkcí je generování Media Test Symbolu každých x ms. Bitový obsah komunikačního cyklu není generován, protože pro funkci měřícího automatu není potřebný. Pozorný čtenář si jistě všiml, že zmíněný bitový obsah je zamaskovaný oknem, které je generováno a povoluje odvození START/STOP události jen těsně okolo nalezeného konce Media Test Symbolu.
- 99 -
Diplomová práce 2007
Viktor Pokorný
Obr. 5-14 Blokové schéma měřícího automatu - bloky vstupů a výstupů
5.6 Měřící automat/analyzátor z pohledu obsluhy V kapitole 5 Analýza za pomoci hradlového pole FPGA na (Obr. 5-1) a kapitole 5.4.2 Použité I/O porty hradlového pole na (Obr. 5-8) jsme si uvedli rozmístění, označení a funkci jednotlivých konektorů na vývojové desce, které jsou použity pro funkci implementovaného měřícího automatu. Nyní si slovně uvedeme, jaké úkony musí obsluha provést pro zprovoznění tohoto analyzátoru. Předpokladem je síť FlexRay v minimální konfiguraci uvedená v činnost například pomocí dvou demonstračních nódů popsaných v kapitole 4 Stavba demonstrační sítě a nahraný design měřícího automatu do FPGA na zde popisované vývojové desce. Pro nahrání je potřeba otevřít projekt v software Quartus II a pomocí obsaženého JTAG programátoru a přiloženého ByteBlaster
- 100 -
Diplomová práce 2007
Viktor Pokorný
kabelu (LPT port) naprogramování provést. Zkontrolujeme si také, že všechny přepínače DIP8 switch jsou v poloze OFF.
Dále je potřeba přivést na konektor JP1 – SMA (zakončení 50Ω) hodinový signál odvozený od TCXO v úrovni LVCMOS (3V3) o maximálním kmitočtu 50MHz (T1 = 20ns nebo více). Z konektoru JP2 – SMA je potřeba vyvést monitorovaný hodinový signál z interního rychle startujícího generátoru na čítač, případně dále i na osciloskop kanál 2 (vždy zakončení 50Ω). Nyní přivedeme signál TXD jednoho ze dvou ovladačů TJA1080 (viz. Příloha B – schéma Freescale Generic FlexRay Daughter Card) sběrnice od vybrané stanice, jejíž komunikační cyklus chceme monitorovat, v úrovni LVCMOS (3V3) na konektor JP25 – SMA (není nijak zakončen). Následně propojíme jumperem krajní piny (JP26.2 a JP26.6) konektoru JP26. Střední pin JP26.4 zůstane volný. Vybraný signál TXD můžeme také přivést přes sondu na osciloskop kanál 1. Nakonec propojíme piny konektoru JP8 obsahující signály DEBUGport[31..0] na logický analyzátor. Rovněž tak připojíme signál DEBUGlatch z pinu JP8.43 na vhodný vstup logického analyzátoru, např. jeden z hodinových vstupů. Nyní můžeme nakonfigurovat logický analyzátor na odebírání 32bitového čísla DEBUGport z příslušných vstupů právě na náběžnou hranu signálu DEBUGlatch. Logický analyzátor slouží k zachycení a uložení výsledků měření, které automat produkuje, na disk.
Přistupme nyní k provozu měřícího automatu. Stabilní hodinový signál o periodě T1 je generován. Sepneme přepínač 3 na DIP8 switch a na čítači zjistíme periodu T2. Pomocí přepínačů 4 až 8 na DIP8 switch doladíme délku zpožďovací linky rychle startujícího generátoru tak, aby jeho perioda T2 byla málo odlišná od periody T1 a měla hodnotu T2 = 20ns nebo více. Optimální rozdíl mezi periodami a tím i rozlišitelnost přístroje je experimentálně určen jako 2.5ns nebo více. Rozdíl může být jak kladný, tak i záporný, měřící automat s touto eventualitou počítá. Pokud by se nám podařilo dosáhnout lepší krátkodobé stability rychle startujícího generátoru, mohli bychom si dovolit jít až na rozdíl 1ns, popř. 0.5ns, což by byl limit měřícího přístroje (opět experimentálně ověřeno, tentokráte na samostatném automatu hledajícím koincidence mezi dvěma relativně stabilními hodinovými signály). Měření, z něhož jsou prezentovány výsledky v kapitole 5.7 Naměřené výsledky, bylo provedeno v konfiguraci T1 = 20ns, T2 = 22.74ns.
- 101 -
Diplomová práce 2007
Viktor Pokorný
Přepínač 3 rozepneme, stiskneme tlačítko SW0 (RESET) a sepneme přepínač 1 na DIP8 switch. Nyní měřící přístroj hledá nejdelší logickou úroveň nula na fyzické vrstvě, tedy Media Test Symbol. Po libovolné době přepínač 1 rozepneme, automat si nyní pamatuje nejdelší nalezenou délku. Spodních 8bitů údaje je zobrazeno na 7segmentovém displeji. Údaj je vyjádřen počtem period T1. Nyní sepneme přepínač 2 na DIP8 switch, čímž jsme měřící automat uvedli do stavu funkce. Každý komunikační cyklus produkuje číslo šíře 32b (ve skutečnosti 31bitové) vyjadřující délku předchozího komunikačního cyklu. Generované číslo je v jednotkách tisícin délky periody T1. S nakonfigurovaným logickým analyzátorem, viz. výše, můžeme započít měření.
5.7 Naměřené výsledky Logickým analyzátorem jsme zachytili posledních x po sobě jdoucích výsledků produkovaných měřícím automatem. Pomocí programu MATLAB je tedy zpracujeme. Nesmíme zapomenout na převedení údajů z jednotky „tisícina periody T1“ na jednotku ms a to právě podle zvolené periody T1 stabilního hodinového signálu přivedeného z externího zdroje do měřícího automatu.
Stabilní hodinový signál s periodou T1 odvozený od TCXO považujeme vzhledem k osazenému zdroji lokální časové základny na FRDC a kladeným nárokům na měření za relativně stabilní a chybu zanedbáváme.
I když je v ose x všech grafů rozlišení 1ns, rozlišitelnost měření je podle kapitoly 5.2.3 Nóniová metoda, idea, odvození ΔT = T2 – T1, což je v našem případě 2.74ns. Taktéž chyba metody měření je v intervalu <- ΔT; ΔT >. Chybu vzniklou z principu očekávanou špatnou dlouhodobou stabilitou implementovaného rychle startujícího generátoru koriguje automat sám cejchováním při každém cyklu měření, viz. kapitola 5.2.4 Nóniová metoda, vylepšení. Efekty pouze dostatečné krátkodobé stability, kterou úplně korigovat cejchováním nelze, jsme potlačili zvýšeným rozdílem period T1 a T2, který se nám ovšem promítá do zhoršení rozlišitelnosti a chyby metody měření.
- 102 -
Diplomová práce 2007
Viktor Pokorný
5.7.1 Použité přístroje Použité přístroje jsou: •
generátor Agilent 33250A (hodinový signál o periodě T1)
•
generátor Agilent 33220A (pro simulaci časových intervalů, generovaný tvar odpovídá Media Test Symbolům v po sobě jdoucích komunikačních cyklech)
•
čítač Agilent 53131A (měření produkované periody T2 rychle startujícího generátoru)
•
osciloskop Tektronix TDS 3032B (fyzická vrstva, hodinový signál s periodou T2)
•
logický analyzátor Tektronix TLA 5203 (sběr a uložení produkovaných naměřených dat z měřícího automatu).
5.7.2 Proměnná délka komunikačního cyklu FlexRay Pojďme se podívat na histogram naměřených délek komunikačního cyklu při odchycení posledních 65536 naměřených výsledků (Obr.
5-15) z měřícího automatu a při odchycení
posledních 262144 naměřených výsledků (Obr. 5-16).
Na osách x je jednotkou 1ns. Je tedy vidět, že vzdálenost mezi oběma vrcholy histogramu je právě 25ns. To odpovídá na fyzické vrstvě FlexRay výskytu komunikačních cyklů standardní délky a také výskytu prodloužených komunikačních cyklů, ve kterých byla provedena synchronizace. Prodloužený cyklus je o 1μT delší než standardní, viz. kapitola 5.1 Vybraný parametr – proměnná délka komunikačního cyklu stanice. Při námi zvolených parametrech clusteru (5Mbit/sec, 8 vzorků na délku bitu, frekvence místního oscilátoru na FRDC…tedy 40MHz…je vzorkovací frekvencí, 1μT odpovídá periodě místního oscilátoru) je délka 1μT = 25ns.
- 103 -
Diplomová práce 2007
Viktor Pokorný
Obr. 5-15 Histogram délek komunikačních cyklů, 65536 naměřených údajů
První vrchol histogramu dle (Obr. 5-15) je pro délku komunikačního cyklu 1.000070ms, druhý pak pro délku 1.000095ms (rozdíl 25ns). První vrchol histogramu dle (Obr. 5-16) je pro délku komunikačního cyklu 1.000071ms, druhý pak pro délku 1.000096ms (opět rozdíl 25ns).
Mezi oběma měřeními, které jsou zpracovány histogramem na těchto obrázcích, uběhl jistý čas. Za tento čas vznikl nepatrný rozdíl v nejčastěji naměřené absolutní délce komunikačního cyklu (0.000001ms). Vysvětlení může být na snadě. Pokud lokální časové základny stanic plavou dlouhodobém horizontu stejným směrem (vliv např. vzrůstající teploty stanic se stejnou mechanickou konstrukcí zapnutých ve stejný moment), synchronizační mechanismus jednotlivých stanic v síti rozdíl nedetekuje a tak pomalu ujíždějí společně. Tento efekt je nejpatrnější při malém počtu stanic (zde 2, synchronizují se jedna na druhou), na které působí stejné vnější ovlivňující podmínky.
- 104 -
Diplomová práce 2007
Viktor Pokorný
Obr. 5-16 Histogram délek komunikačních cyklů, 262144 naměřených údajů
Při pohledu na nezpracovaná data lze poznat, že stanice provádí synchronizaci korekcí offsetu a tedy prodloužením idle stavu každý druhý komunikační cyklus. To je podle kapitoly 3.8.2 Časová synchronizace stanic nejčastější možný zásah korekcí offsetu do délky cyklu (prováděno v lichém cyklu). S větším počtem synchronizačních stanic v síti, tedy s větším počtem naměřených odchylek, lze předpokládat menší počet korekčních zásahů synchronizačního mechanismu, jelikož výsledná odchylka je průměrem naměřených mimo krajní případy, opět dle výše uvedené kapitoly.
- 105 -
Diplomová práce 2007
Viktor Pokorný
5.7.3 Simulované časové intervaly pro ověření metody Pro ověření metody a funkčnosti měřícího automatu byly simulovány časové intervaly v rozmezí 1.000000ms až 1.000040ms odstupem
s lineárním 2ns.
Tato
simulace byla provedena s pomocí generátoru Agilent, viz. 5.7.1 Použité přístroje. Při
generování
časových
intervalů o dané délce bylo vždy
odebráno
8192
posledních produkovaných výsledků
z
měřícího
automatu.
Obr. 5-17 Simulovaný cyklus o proměnné délce, pohled 1
Obr. 5-18 Simulovaný cyklus o proměnné délce, pohled 2
- 106 -
Diplomová práce 2007
Viktor Pokorný
Obr. 5-19 Simulovaný cyklus o proměnné délce, pohled 3
Opět platí, že na osách x je jednotkou 1ns. Je tedy vidět (Obr. 5-18), že vzdálenost mezi vrcholy histogramů odpovídá 2ns. Nutno podotknout, že za nepřesnosti v umístění vrcholů může rozlišitelnost přístroje v daném nastavení 2.74ns, která neodpovídá kroku 1ns použitém při tvorbě histogramu. Z celkového pohledu na všechny obrázky (Obr. 5-17), (Obr. 5-18) a (Obr. 5-19) je ale vidět, že měřící automat funguje, jak bylo předpokládáno.
Šíře histogramů pro jednotlivé simulované délky je úměrná předpokládané chybě metody měření (krátké shrnutí v kapitole 5.7 Naměřené výsledky), kterou jsme stanovili v kapitole 5.2.3 Nóniová metoda, idea, odvození.
- 107 -
Diplomová práce 2007
Viktor Pokorný
6 Závěr Cíle diplomové práce byly vytyčeny již v úvodní části (kapitola 1.3 Cíl práce). Nyní můžeme zhodnotit výsledky, kterých bylo dosaženo, a vyslovit návrhy na možná pokračování a rozšíření této práce.
Během psaní programového kódu pro stanice a stavby celé demonstrační sítě na bázi standardu FlexRay byly získány praktické zkušenosti s novým komunikačním standardem v oblasti automotive, který by se měl objevit v nových automobilech po dalším vývoji za několik let (kapitola 1.1 Motivace pro nový standard sběrnice v automotive). Získané zkušenosti byly vloženy do diplomové práce již v její první části zabývající se popisem standardu. Popis tak není doslovný opis důležitých kapitol, ale přináší čtenáři důležité souvislosti a příklady využití některých specifických vlastností v praxi pro první obtížné zorientování se v tomto novém rozsáhlém tématu.
Programový kód stanice byl napsán univerzálně a je vhodný pro použití ve všech připojených nódech clusteru. Specifické vlastnosti, které musejí být pro každou stanici odlišné si uživatel nakonfiguruje pomocí konzole na sériovém portu sám (PC se propojuje se stanicí pomocí sériového portu). Samozřejmě možnosti standardu jsou široké a možnosti konfigurovatelnosti stanice je zdaleka plně nepokrývají. To může být námětem pro případné další diplomové práce z oboru, které mohou využít zde získané zkušenosti a patřičně je prohloubit. Poslední třetina práce byla věnována odvození myšlenky nóniového měřiče časového intervalu a jeho implementaci a odladění pro kontinuální měření po sobě jdoucích časových intervalů do hradlového pole FPGA. Po sobě jdoucí časové intervaly jsou v našem případě délky po sobě jdoucích komunikačních cyklů stanice clusteru, které se mění skokově v důsledku prováděné synchronizace lokální časové základny stanice na globální parametry clusteru a také plynule v důsledku plavání místních zdrojů hodinových signálu. Námětem na rozšíření práce zde může být připojení hradlového pole k mikrokontroléru, který může provádět inteligentní zpracování a reprezentaci naměřených údajů a komunikovat s nadřazeným systémem – počítačem pomocí USB rozhraní. Další zpracování a ukládání dat mohou být v počítači prováděna za pomocí obslužného software naprogramovaného pro tyto účely. Samozřejmě do hradlového pole mohou být implementovány další měřící automaty a funkce, které by vyhodnocovaly jiné parametry standardu. Pole působnosti je v tomto opravdu široké.
- 108 -
Diplomová práce 2007
Viktor Pokorný
Použitá literatura [1]
FlexRay Protocol Specification V2.1, 2005
[2]
FlexRay Protocol Specification V2.1 – errata sheet, 2005
[3]
FlexRay Electrical Physical Layer Specification V2.1, 2005
[4]
FlexRay Electrical Physical Layer Specification V2.1 – errata sheet, 2005
[5]
FlexRay Electrical Physical Layer Specification V2.1 – application notes, 2005
[6]
FlexRay Local Bus Guardian Specification V2.0.9, 2005
[7]
FlexRay Central Bus Guardian Specification V2.0.9, 2005
[8]
The FlexRay Protocol and Associated Freescale Products, Freescale Technology Forum in Munich, 2005
[9]
FlexRay – Next Generation Vehicle Network, Freescale Technology Forum in Paris, 2005
[10] Klaus Lange: Volkswagen’s Network Architectures, Vector Informatik Congress, 2004 [11] Peter Böhm: Introduction to FlexRay and TTA, 2005 [12] Michael Gerke: FlexRay – Coding and Decoding, Media Access Control, Frame and Symbol Processing and Serial Interface, 2005 [13] Sergey Kosov: FlexRay communication protocol (WakeUp and StartUp), 2005 [14] Jan Malinský: Přednáška 13.3.2006 – sběrnicové systémy (prezentace), katedra měření FEL ČVUT, 2006 [15] Stanislav Ďaďo, Josef Vedral: Číslicové měření, přístroje a metody, katedra měření FEL ČVUT, 2006 [16] Pavel Hazdra: VHSIC HDL (VHDL) pro syntézu IO – přednášky, katedra mikroelektroniky FEL ČVUT, 2005 [17] MFR4200 datasheet, 2005 [18] PFR4200MAE40 – Mask 1L60X – errata sheet, 2005 [19] TJA1080 datasheet, 2006 [20] Freescale Generic FlexRay Daughter Card MFR4200 & MFR4300 User Manual, 2005 [21] Interfacing the MC9S12XDP512V2 Microcontroller to the MFR4200 Controller, 2006 [22] MC9S12XDP512 datasheet, 2005 [23] S12XCPUV1 reference manual, 2005 [24] HC(S)12 Compiler Manual, 2006 [25] CodeWarrior Development Studio IDE User’s Guide, 2005 - 109 -
Diplomová práce 2007
Viktor Pokorný
[26] Softec SK-S12XDP512-A User’s Manual, 2005 [27] Stratix Device Handbook, 2006 [28] Stratix EP1S80 DSP Development Board datasheet, 2004 [29] Stratix EP1S80 DSP Development Board schematic, 2004 [30] Introduction to Quartus II Manual v6.1, 2006 [31] Quartus II Development Software Handbook v6.1, 2006 [32] Ostatní katalogové listy použitých součástek a zařízení
[33] http://www.freescale.com/ [34] http://www.nxp.com [35] http://www.altera.com/ [36] http://www.vector-informatik.com/ [37] http://www.tzm.de/
- 110 -
Diplomová práce 2007
Viktor Pokorný
Příloha A – schéma vývojového kitu SK-S12XDP512-A
- 111 -
Diplomová práce 2007
Viktor Pokorný
- 112 -
Diplomová práce 2007
Viktor Pokorný
- 113 -
Diplomová práce 2007
Viktor Pokorný
- 114 -
Diplomová práce 2007
Viktor Pokorný
- 115 -
Diplomová práce 2007
Viktor Pokorný
Příloha B – schéma Freescale Generic FlexRay Daughter Card
- 116 -
Diplomová práce 2007
Viktor Pokorný
- 117 -
Diplomová práce 2007
Viktor Pokorný
- 118 -
Diplomová práce 2007
Viktor Pokorný
- 119 -
Diplomová práce 2007
Viktor Pokorný
Příloha C – ukázka obsluhy stanice v okně Hyperterminálu
Uvítací text, příkaz whois?
- 120 -
Diplomová práce 2007
Viktor Pokorný
Příkaz help
- 121 -
Diplomová práce 2007
Viktor Pokorný
Příkaz help
- 122 -
Diplomová práce 2007
Viktor Pokorný
Konfigurace přijímače, konfigurace vysílače
- 123 -
Diplomová práce 2007
Viktor Pokorný
Úsporná konfigurace přijímač&vysílač 1, přijímač&vysílač 2
- 124 -
Diplomová práce 2007
Viktor Pokorný
Provoz stanic přijímač&vysílač 1, přijímač&vysílač 2
- 125 -
Diplomová práce 2007
Viktor Pokorný
Příloha D – struktura přiloženého CD ..\ __ANALYZERoutputs\ Obsahuje zachycené výstupy měřícího automatu za pomoci logického analyzátoru (vztahuje se ke kapitole 5.7 Naměřené výsledky). Slouží jako zdroj dat pro dále prováděné zpracování v programu MATLAB.
..\ __Datasheets\ Obsahuje katalogové listy užitých součástí a dokumentaci uvedenou v kapitole Použitá literatura, která byla volně dostupná v elektronické podobě
..\ __FOTOpracoviste\ Obsahuje fotografie vývojového pracoviště
..\ __MATLABzpracovani\ Obsahuje vybrané datové soubory z „..\ __ANALYZERoutputs\“ a programový kód pro jejich zpracování na výsledky měření (určeno pro program MATLAB).
..\__SCREENSHOTS-FlexRay Node\ Obsahuje ukázky obrazovek při práci s nódem clusteru v okně Hyperterminál (Windows).
..\ __TextDiplomovePrace\ Obsahuje finální text diplomové práce ve formátu PDF.
..\fwANALYZERfunkcniFPGA\ Obsahuje celý projekt pro program ALTERA Quartus II. V souborech s VHDL kódem je psán také komentář, na který se diplomová práce odkazuje.
..\fwNODE\ Obsahuje celé projekty jednotlivých verzí firmware stanic pro program FREESCALE CodeWarrior. V souborech s kódem C je psán také komentář, na který se diplomová práce odkazuje.
- 126 -
Posudek diplomové práce pana: na téma:
Viktora Pokorného Metody měření vybraných parametrů komunikačního standardu FlexRay a jejich implementace
Úkolem diplomanta Viktora Pokorného bylo navrhnout a prakticky realizovat metodu měření vybraného parametru nového komunikačního standardu FlexRay. Po konzultaci se diplomant zaměřil na měření doby trvání komunikačního cyklu v souvislosti se stále probíhající časovou synchronizací stanic. Těžištěm práce byl návrh a implementace vnitřních struktur měřicího přístroje, pracujícího na principu noniové metody měření časových intervalů, do programovatelné součástky FPGA. Velmi komplexní a náročná úloha prověřila schopnosti diplomanta v oblasti teoretického studia zcela nového komunikačního standardu FlexRay, praktické realizace měřicího pracoviště a pro správnou funkci zcela nezbytného návrhu a následné implementace konfiguračního a aplikačního softwaru do procesoru. V neposlední řadě pak využití programovatelných FPGA obvodů včetně návrhu jejich vnitřní struktury v jazyce VHDL. Všech těchto úkolů se diplomant zhostil zodpovědně a s přehledem. Při studiu problematiky i při řešení diplomové práce postupoval diplomant zcela samostatně, jeho postup byl logický a prokázal dostatečný nadhled. Dosažené řešení je plně funkční a jeho parametry splňují požadavky zadání. Vytvořené IP funkce lze tak využít v navazujících projektech zabývajících se diagnostikou standardu FlexRay. Vlastní diplomová práce je zpracována kvalitně jak po obsahové, tak po formální stránce, a nemám k ní žádné výhrady. Vzhledem k výše uvedeným skutečnostem hodnotím tuto práci stupněm
výborně.
V Praze dne 1. 2. 2007
Ing. Jan Malinský
Oponentský posudek diplomové práce Předmětem tohoto posudku je diplomová práce sepsaná k 19.lednu 2007 panem Viktorem Pokorným s názvem: "Metody měření vybraných parametrů komunikačního standardu FlexRay a jejich implementace". Vedoucím diplomové práce byl pan Ing.Jan Malinský z katedry měření K13138 Fakulty elektrotechnické ČVUT Praha-Dejvice. Celková úroveň práce je velmi dobrá, proto navrhuji ohodnotit diplomovou práci pana Viktora Pokorného známkou "výborně". Práce je rozdělena na část popisnou, teoretickou a praktickou. V popisné části diplomant vysvětluje základní principy a architekturu sběrnice FlexRay. Popis se vyznačuje jasností a přehledností, což svědčí o podrobném seznámení diplomanta se zadaným tématem. Popisná část obsahuje mimo jiné i časové relace na sběrnici a používané způsoby korekce časové základny nodu. Zdůvodňuje také nutnost měření délek komunikačních cyklů, tedy časových úseků, s rozlišením řádu [ns]. Změna délky cyklu je důsledek popsané synchronizace nodu (zařízení) na globální časové parametry sítě. Diplomant obohatil popis o vlastní zkušenosti z pokusného provozu a ladění sítě. V teoretické části diplomant rozpracovává noniovou metodu měření časových intervalů. Podrobně je vysvětlena základní noniová metoda měření časových intervalů pomocí dvou oscilátorů (referenčního a plovoucího) včetně vyhodnocení dosažitelné přesnosti. Diplomant navrhl zlepšení metody, spočívající v okamžité kalibraci krátkodobého charakteru periody plovoucího (dlouhodobě nestabilního) oscilátoru pomocí referenčního oscilátoru. Je uvedeno odvození výpočtu doby měření časového intervalu s dosažitelnou chybou měření. Odvození a výpočty provází přehledné a bohatě okomentované obrázky. Závěr teoretické stati tvoří adaptace měřicí metody na kontinuální měření délky komunikačního cyklu na fyzické vrstvě sběrnice FlexRay. V praktické části diplomant popisuje návrh, adaptaci a provedení prototypu měřicího zařízení popsaného v teoretické části na hradlovém poli FPGA typu Stratix EP1S80. Diplomant úspěšně sestavil a odladil kód v jazyce VHDL pro tento měřicí automat. Závěr této části tvoří naměřené a vyhodnocené časové délky komunikačního cyklu na sběrnici FlexRay. Výsledky jsou porovnány s cyklem simulovaným externím generátorem Agilent 3320A. Obsáhlá obrazová dokumentace s doprovodným vyčerpávajícím hodnocením svědčí o pečlivosti autora a promyšleném řešení zadaného úkolu. Hodnocení nepostrádá úvahy nad dalším rozvojem dané problematiky. Na konci publikace je uveden bohatý seznam citovaných odkazů a obsah přiloženého kompaktního disku. Práce podává ucelené informace o novém typu sběrnice a lze ji doporučit nejen zájemcům o studium standardu sběrnice FlexRay, ale i řešitelům úkolů souvisejících s měřením relativně dlouhých časových intervalů s rozlišením řádu nanosekund. Vysoká stylistická úroveň práce a srozumitelnost jen doplňuje odpovědný přístup autora k zadanému úkolu. ing. Václav Müller e4t, s.r.o – Electronics for Transportation Novodvorská 994 142 21 Praha 4 tel: 239 046 757 e-mail:
[email protected] Praha, dne 29.1.2007