12.07.2015 Views

telra r/c - Serwis Elektroniki

telra r/c - Serwis Elektroniki

telra r/c - Serwis Elektroniki

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Opis magistrali szeregowej 1-wireOpis magistrali szeregowej 1-wire (cz.5 - ost.)Karol Œwierc11. Kontrola poprawnoœci transmisji zapomoc¹ kodu CRCW ca³ym artykule pojêcie kodu CRC powtarza³o siê wielokrotnie.Nie jest to dziwne zwa¿ywszy, ¿e aby ten ca³y „ba³agan”na jednym drucie przenosi³ poprawnie informacje, potrzebnyjest skuteczny i w miarê prosty sposób kontroli poprawnoœcitransmisji. Kod CRC nie jest jedynym rozwi¹zaniem maj¹cymto zapewniæ, ale jest g³ównym i najistotniejszym.Niniejszy punkt artyku³u nale¿y traktowaæ jako dodatek doopisu protoko³u 1-wire u³atwiaj¹cy zrozumienie istoty koduCRC. Zostan¹ pominiête wszelkie aspekty matematyczne tegozagadnienia. Wystarczy przyj¹æ za³o¿enie, ¿e ktoœ wyliczy³ i¿taki, a nie inny wielomian jest w tym zakresie najskuteczniejszy.Zostanie natomiast przedstawiony schemat prostego uk³adusprzêtowego realizuj¹cego ten kod. Poniewa¿ w protokole1-wire istniej¹ dwa ró¿ne algorytmy obliczania CRC, zostan¹one odrêbnie omówione.Jako krótki wstêp niech bêd¹ podstawowe rozwa¿ania, jaksprawdziæ poprawnoœæ jakiejkolwiek wielkoœci przedstawionejw postaci kodu binarnego, a taki i jedynie taki wystêpujena magistrali cyfrowej, tylko zera i jedynki.Jeœli przy pomocy okreœlonej d³ugoœci s³owa cyfrowegoprzedstawia siê jak¹œ wielkoœæ (mo¿e to byæ liczba, litera czyliznak, ale i dowolny „szyfr”), a tych wielkoœci jest tyle ile mo¿-na zakodowaæ na, powiedzmy N bitach (a wiêc 2 N ), to przek³amaniedowolnego bitu nie jest absolutnie do wykrycia, a ju¿tym bardziej do skorygowania. Jeœli natomiast kombinacji jestwiêcej (ni¿ trzeba), to istnieje szansa, ¿e b³¹d powoduj¹cy przek³amanieda tak¹ liczbê, która jest niedozwolona, to znaczynie reprezentuje ¿adnej wielkoœci. Zwa¿ywszy na tê oczywist¹zale¿noœæ, najstarszym i najprostszym sposobem kontroli wtym zakresie jest bit parzystoœci. Dok³ada siê do ka¿dego s³owajeden bit, który nie niesie informacji, a zapewnia, ¿e liczbajedynek w s³owie ma byæ zawsze parzysta (lub nieparzysta,zale¿nie jak siê umówimy). Jeœli tak zwana stopa b³êdu jestniedu¿a, najbardziej prawdopodobne jest to, ¿e jeœli nast¹piprzek³amanie, to na jednym bicie (w s³owie). Wtedy niezale¿-nie, czy przek³amana bêdzie jedynka na zero czy odwrotnie,liczba jedynek w s³owie stanie siê nieparzysta, a wiêc wiadomo,¿e b³¹d wyst¹pi³ (choæ korygowalny w tym uk³adzie onnie jest). Jeœli wyst¹pi¹ jednak przek³amania na dwóch pozycjach(lub na ich parzystej iloœci), b³¹d nie zostanie wykryty.Staje siê wiêc oczywistym, ¿e aby rozpoznaæ b³¹d trzeba dokodu dodaæ pewn¹ jego nadmiarowoœæ, tzw. redundancjê.Kontrola parzystoœci to sposób najprostszy, ale równoczeœnienajmniej efektywny. Kontrola za pomoc¹ kodu Cyclic RedundancyCheck jest metod¹ bardzo sprytn¹. Nie dodaje siênadmiarowych bitów do poszczególnych bajtów czy s³ów, aledodaje siê nadmiarowe bajty do ca³ego ci¹gu znaków, bajtówczy s³ów, a dok³adniej do d³ugiego strumienia bitów. Rzeczpolega na tym, ¿eby te nadmiarowe bajty obliczaæ takim algorytmem,aby jak najwiêcej ró¿nych przek³amañ w ci¹gu informacyjnymwykryæ. I to w najwiêkszym skrócie realizuje CRC.Warto jeszcze dodaæ, ¿e CRC jest historycznie rozwiniêciemtzw. sumy kontrolnej, a samo pojêcie Cyclic RedundancyCheck nale¿y t³umaczyæ: kontrola za pomoc¹ redundancji cyklicznej.11.1. Kontrola zawartoœci ROM-u - kod CRC8W protokole 1-wire 64-bitowa zawartoœæ ROM-u ma znaczeniedecyduj¹ce pod wzglêdem identyfikacji elementów imo¿na tê zawartoœæ traktowaæ jako adres elementu.Ta podstawowa sprawa dla protoko³u 1-wire by³a ju¿ opisywanai nie bêdzie w tym punkcie rozwijana, natomiast narysunku 11.1 przedstawiono konfiguracjê systemu z uwidocznieniemroli jak¹ pe³ni kod CRC.Aczkolwiek uk³ady z protoko³em 1-wire nie zawieraj¹sprzêtowego generatora kodu CRC8 (w przeciwieñstwie doCRC16), naj³atwiej go zrozumieæ przedstawiaj¹c uk³ad w³aœnietakiego generatora sprzêtowego. Przedstawiony jest onna rysunku 11.2a. Jest to wiêc rejestr przesuwny, w tym przypadkuoœmiobitowy ze sprzê¿eniem zwrotnym realizowanymza pomoc¹ 3 bramek exlusiv-OR. Algebraiczny zapis funkcji,któr¹ taki uk³ad realizuje bywa czêsto przedstawiany jako wielomianfikcyjnej zmiennej x. Stopieñ tego wielomianu odpowiadad³ugoœci rejestru, a niezerowe jego sk³adniki tym cz³onom,które s¹ objête sprzê¿eniem zwrotnym. Zatem zapis równowa¿nyschematowi z rysunku 11.2a bêdzie x 8 + x 5 + x 4 + 1.W ró¿nego typu materia³ach Czytelnik mo¿e siê spotkaæ z grafempokazanym na rys.11.2b, który przedstawia to samo, tylko¿e zosta³o to w inny sposób narysowane.Przedstawiaj¹c mo¿liwoœci kodu CRC8 (zwanego kodemDOW CRC) wypada powiedzieæ, jakie b³êdy on wykrywa:• ka¿d¹ nieparzyst¹ liczbê przek³amaæ gdziekolwiek w 64-bitowym ci¹gu danych,Dallas Semiconductor 1-Wire DeviceHost SytemMSB 64-BIT ONE-WIRE ROM CODE LSBCRCUNIQUE SERIAL NUMBERFAMILY I/OCODEByte7Byte6Byte5Byte4Byte3Byte2Byte1Byte0Kod CRC jest obliczony na podstawie zawartoœci bajtów 0 do 6i wpisany jest do bajtu 7.GND1-wireBusI/OCRC CALCULATORJeœli wartoœæ CRC obliczona przez hosta na podstawie 56 bitówodczytanych z ROM-u uk³adu slave jest taka sama jak zawartoœæjego ostatniego bajtu, komunikacja jest kontynuowana.W razie niezgodnoœci host powtórnie czyta ROM.DWUKIERUNKOWY PORT WEJ./WYJ.GNDRys.11.1. Konfiguracja systemu 1-wire uwidaczniaj¹ca uk³ad kontroli CRC zawartoœci pamiêci ROM.6 SERWIS ELEKTRONIKI 5/2003

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!