Dekodovanie UARTu -- a obecneji setrvavani v chybovem stavu pri UARTove zaplave znaku

Marek Peca marek na duch.cz
Čtvrtek Únor 20 00:52:16 CET 2014


>>>> chcel by som sa spytat tunajsich odbornikov na telekomunikacie, na
>>>> nasledujuci problem. Mam vystup serioveho portu, kde je frekvencia
>>>> zakladneho generatora mimo povolenej tolerancie +-5%. Chcel by som sa
>>>> spytat, ci by bolo vhodne na dekodovanie takejto digitalnej sekvencie
>>>> pouzit nejaky algoritmus pre recovery hodin a dat. (..)

Odpoved bude zaviset vzdy na konkretnim "protokolu", ci spise aspon par 
zakladnim pravidlum (typu: jak kdy dlouho klid) nad UARTem, kterymi se ma 
provoz ridit.

Je totiz nutne si uvedomit, a velke mnozstvi lidi k tomuto poznani 
nedospeje vcas (mluvim z vlastni blbosti/trpke zkusenosti jednoho 
bastliveho odpoledne), ze:

=> Pokud UART setrvale vysila bez delsich "STOP" prodlev, muze nastat (a 
deje se to, pri takto spatne navrzenych systemech), ze prijimac setrvale 
prijima jinou sekvenci znaku, nez je vysilana. Tedy, pro urcite kombinace 
znaku dojde k tomu, ze start-bity jsou trvale prijimany jinde, nez ve 
skutecnosti jsou. Pauza (stop) cas od casu to vyleci. (Pak uz zbyde jen, 
vyresit ktery znak je prvni -- starost vyssi vrstvy.)

Odtud tedy k puvodni otazce: obnova hodin a dat urcite, alespon teoreticky 
a v dost rychlem vypocetnim/obvodovem prostredku, mozna je. Otazkou je, a 
to bez znalosti provozu nad UARTem lze tezko rici, jak zaridit, aby se 
takovyto zaves nahodou nezavesil na chybna mista bajtu. Sirka jednoho bitu 
je 10% znaku...

Pokud tam nejsou zadne vkladane synchronizacni symboly, asi to bude 
vzdycky dost nejisty vysledek, zvlast pokud jsou zpravy kuse a napr. 
nemaji scramblovany (komprimovany, CRCovany) vnitrek. Pri nenahodnych 
zpravach, resp. zpravach bez "nahodneho" prvku (CRC) bych to asi radsi 
rovnou vzdal.


ZdraviM.


Další informace o konferenci Hw-list