Siglent etusivulle linkki       Sarjaliikenne dekoodaus - koko muistin pituus.


Siglent serial decode can always decode full current memory length. Some examples how to use serial decode functions.

 

Siglent sarjaliikenne dekoodaus käyttää aina koko vallitsevaa muistin pituutta.
SDS1000X-E sarjan oskilloskoopeissa sarjaliikenteen dekoodaus on aina vakiona. (ei ole lisämaksullinen optio)

(Alla olevissa kuvissa sisällä olevat tekstit ovat finglanniksi koska ne syntyivät eräässä neuvontatilanteessa)

Toistuvasti julkisuudessa esiintyy kysymyksiä siitä dekoodaako oskilloskooppi vain sen mikä on näytöllä vai koko näytemuistin pituudelta?
Siglentin osalta tähän on yksinkertainen vastaus.

Dekoodaus käyttää aina kulloinkin käytössä olevaa koko vallitsevan näytemuistin pituutta.

Kysymys on toki luonnollinen koska useat oskilloskoopit mahdollistavat dekoodauksen (ja esim mittaukset) van ns "näyttömuistista" tai muistista täydellä datalla mutta rajattuna näytöllä näytettävään muistin pituuteen. Siglent on valinnut toimintaperiaatteen jossa näytön leveys on (Run tilassa) aina koko muistin pituus, olkoot se kulloinkin 100M tai vain 7 näytettä. Siglent myös työntää kaikki näytteet kuvaruudun muistiin, mitään ei jätetä pois (yksi kuvaruudun pixeli siis saattaa kätkeä alleen melkoisen datajoukon). Vallitseva muistin pituus näkyy kuvaruudun oikeassa yläkulmassa. Käyttäjän tekemä muistin pituuden valinta sensijaan tarkoittaa maksimi pituutta johon käyttäjä haluaa sen rajoittaa.
Katso tarkemmin muistin ja näytön periaatteesta Siglent X oskilloskoopeissa.

Myös sekvenssitallennuksessa dekoodaus käyttää koko segmentin (framen) muistin pituutta.
(alempana tällä sivulla pari esimerkkiä, Esimerkki 1 UART  ,    Esimerkki 2. I2C)

Kaikissa esimerkeissä on käytetty oskilloskooppina SDS1104X-E oskilloskooppia. Dekoodaus X-E sarjan oskilloskoopeissa poikkeaa jossain määrin X sarjan oskilloskoopeista joissa prosessointiin käytettävä teho on alhaisempi josta aiheutuu joitain rajoitteita.

Pari esimerkkiä joissa selkeästi tulee esiin koko muistin käyttö eri tavoin. Kaikissa esimerkeissä alla on käytetty tavallista UART sarjaliikennettä. Signaalit on tuotettu käyttäen Arduino Mega 2560 korttia ja sen neljää sarjaliikenneporttia. Koska oskilloskoopissa on kaksi erillistä dekooderia , S1 ja S2, se kykenee käsittelemään 4 sarjaliikennesignaalia. Kumpikin dekooderi käsittelee dekoodaa kahta signaalia (Rx ja Tx) simultaanisti.
Kummallakin dekooderilla on omat itsenäiset parametrien asetukset. Kumpikin voi olla eri nopeudella, eri bittimäärällä ja muilla parametreilla jotka ovat yhteyset dekooderin molemmille kanaville.

Dekoodaus ei ole riippuvainen siitä mikä triggaustapa on käytössä. Dekooderi analysoi muistissa olevaa signaalia ja dekoodaa sen mukaan.
 
Dekoodaus voidaan tehdä oskilloskoopin käydessä (Run) tai jälkeenpäin muistiin tallennetusta signaalista pysäytetyssä (Stop) tilassa sekä suoraan näkyville jääneestä signaalista tai signaaleista jotka ovat historiapuskurissa joko tavallisen pysäytyksen jälkeen tai jotka on tallennettu Sekvenssitallennus toiminnolla.

Dekooderi käyttää aina koko käytössä olevan muistin pituutta. Tässä on toki myöskin rajoite. Esimerkiksi tavallinen UART/RS232 yhden kanavan dekoodatun merkkijonon (tavujen) määrä voi olla maksimissaan 3000. Kullakin kanavalla on oma itsenäinen 3000 merkin raja. Mikäli muistin pituudella olisi merkkejä (tavuja) enemmän, dekoodaus sen kanavan osalta päättyy kun 3000 merkki tulee vastaan ja siitä eteenpäin signaali yksinkertaisesti jätetään dekoodaamatta. (koskee siis yhtä yksittäistä vaakapyyhkäisyä ja seuraava vaakapyyhkäisy taas samat max. 3000.)
Eri protokollilla on erilaiset datamäärän rajoitukset. Esimerkiksi normaalia max 32 merkin IIC (I2C, TWI) liikennettä ei rajoiteta kokonais tavumäärän perusteella vaan sanomien määrän perusteella, ja sanomien kappalemäärä on max 1000 sanomaa dekooderia kohden. (siis max joppa 32000 tavua. Yksi dekooderi voi luonnollisesti käsitellä vain yhden IIC väylän (SCL, SDA signaalit)


Tässä aluksi kuvaus signaaleista dekoodattuina.



      Kuva 1.
Signaalit kuvassa 1. on  tuotettu Arduino Mega 2560 kortilla jossa on 4 UART porttia. Probet kytketty suoraan UART porttien Tx lähtöihin. (kaikki siis ovat UART portin Tx signaaleita olkootkin että niitä nimetään skoopin ruudulla Tx ja Rx. Tässä tapauksessa kuvassa näkyvät viestit toistuvat 200ms välein.
Kunkin viestin lähetystä on tarkoituksella viivästetty kanavaan 1 nähden jotta ilmentyy paremmin dekoodereiden toisistaan riippumattomuus.
7M muistin pituus on täsmälleen kuvaruudun signaali alueen leveys.
(tämä on tosi aina kun oskilloskooppi on Run tilassa. Tästä voi poiketa Stop tilassa mikäli käyttäjä muuttaa t/div asetusta siitä mikä on ollut tallennettaessa)
Kaikissa seuraavissa esimerkkikuvissa on käytössä täsmälleen nämä samat signaalit. Osassa esimerkkejä viestien toistoperiodi on ollut 200ms ja osassa 20ms.




      Kuva 2.
Tallennettu hyvin hitaalla pyyhkäisyajalla (5s/div) kuvan 1. signaalia. Dekoodaus toiminnassa. Koska missään neljästä sinisestä dekoodauspalkista ei esiinny punaisia pystyviivoja ei dekoodauksessa ole havaittua virhettä. Koko vaakapyyhkäisyn ajallinen pituus on 70 sekuntia. Siihen mahtuu kuvan 1. mukaisia sanomia  noin 350 kpl jokaisella kanavalla. (200ms intervalliaika ei ole aivan tarkka).
Huomaa samplenopeus 100kSa/s joka edelleen riittää 19200 baudin nopeuteen. Ollen kuitenkin ns rajalla. On siis dekoodattu mutta mitään yksityiskohtia ei näy, näkyy vain siniset palkit. Joten katsotaanpa mitä siellä on.




      Kuva 3.
Kuvassa 3. on tilanne kuten kuvassa 2. mutta avattu dekoodaus lista.  Kummallekin dekooderille on dekoodauslista. Yksi lista voi olla kerrallaan näkyvillä. Listassa voidaan Scroll toiminnolla siirtyä ero kohtiin ajallisesti. Listassa oleva aika näyttää aikaa suhteessa Triggauslinjaan (sininen kolmio kuvan yläreunassa).
Lista on tallennettavissa kokonaan CSV muodossa USB tikulle painamalla "Save".  Toiminto tallentaa koko listan, ei vain näkyvää osaa. Näkyvän osan mitta voi olla valinnan mukaan 1 - 7 riviä. Kun himmentää signaalien näyttöä se ei himmennä listan kirkautta jolloin voi saada joissain tilanteissa näkyvyyttä paremmaksi (kuten kuvassa tehty). Mikäli haluaa voi myös kanavan signaalin näytön sammuttaa kokonaan, se ei vaikuta dekoodaukseen (eikä mihinkään mittauksiin tai muuhunkaan, paitsi että signaalin kuvaa ei näytetä)
Usein kuitenkin halutaan nähdä myös signaalin ja dekoodauksen yksityiskohtia joten sitten vaan zoomataan ja Run tilassa se on tehtävä käyttäen ikkunoitua zoomausta painamalla t/div nuppia ja valitsemalla alaikunnalle oma nopeampi t/div ja siirtymällä koko signaalin muistissa haluttuun kohtaan.




      Kuva 4.
Kuvassa 4. on kuvan 3. tilanne mutta nyt otettu käyttöön ikkunoitu zoomaus. Zoomauskerroin on kuvassa 5000. Yläikkunassa 5s/div ja alaikkunassa siitä pieni viipale aivan muistin lopusta (merkattu punaisin viivoin) ja nyt 1ms/div.
Sivuhuomautus:
Tässä on esissä myös hiukan epämukava seikka. Huomaa että triggauskohta (ylä- eli pääikkunassa) on 4 ruutua vasemmalle ruudun keskiviivalta.  Kuvan yläreunassa lukee "delay: 34.8s" . Se on meidän alaikkunan sijainti (viive) keskilinjaan nähden (jossa normaalisti oletusarvoisesti on triggauskohta). Olen kuitenkin asettanut triggauksen ns fixed position esetukselle ja määrännyt sen paikan. Tämä tarkoittaa sitä että jos muuttelisin pääikkunassa t/div asetusta ei triggauspiste kuvaruudulla siirry. Normaali tapa on fixed time jolloin pääikkunan aikaa muuttaessa triggauspisteen viiveaika pysyy vakiona ja sijainti kuvapinnalla muuttuu.
Nyt kuitenkin kun katsoo sitten dekoodaus listan aika saraketta. Siellä oleva aika on suhteessa triggauspisteen sijaintiin ja se on mielestäni oikea lähestymistapa asiassa. Minun ajatusmaailmassa aika nolla = triggauskohta. Riippumatyta siitä missä päin kuvaruutua käyttäjä haluaa sen kulloinkin olevan. Mutta, Siglent on valinnut toisin. Se tulee ilmi kaikissa kayttötavoissa kun käytetään ikkunoitua zoomausta. Sen oppii mutta mielestäni se ei ole käytön kannalta looginen vaikka siinä logikka onkin. Joka tapauksessa uusi parannus on se että sekä vertikaali että horisontaali referenssi voidaan asettaa joko aika (viiveaika) tai jännite (offset) arvoon kiinnitetyksi tai kuvaruudulla sijaintiin kiinnitetyksi.





      Kuva 5.
Tallennettu hyvin hitaalla pyyhkäisyajalla (5s/div) kuvan 1. signaalia. Dekoodaus ei ole käytössä ja triggaus signaalin laskevasta reunasta.
Oskilloskooppi pysäytetty kun aikaa oli kulunut riittävästi jotta myös historiapuskuriin on tallentunut edllinen 70s vaakapyyhkäisy. Tällä asetuksella historiapuskuriin mahtuu kaksi vaakapyyhkäisyä. (2kpl 4 kanavaa kukin 7M) Näytenopeus 100kSa/s. Näkyvillä kuvassa viimeinen vaakapyyhkäisy. (2/2) Kumman tahansa voisi nyt valita näyttöön ja dekoodata.





      Kuva 6.
Kuten kuvassa 5. Dekoodaus otettu käyttöön (ja luonnollisesti asetettu dekoodaukselle oikeat parametrit, signaali siis sama kuin kuvassa 1.)
S1 ja S2 dekoodereiden sininen palkki osoittaa nyt että dekoodauksessa ei ole havaittu virheitä. (Ei näy punaisia pystyviivoja palkissa)




      Kuva 7.
Tilanne kuten kuvassa 6. Nyt on kuitenkin zoomattu pääikkunassa käyttämällä t/div asetusta. Asetus on nyt 1ms/div. Näytöllä on nyt pitkästä jonosta yksi viesti. Suurin osa viesteistä on nyt kuvaruudun ulkopuolella mutta silti dekoodattuna. Dekoodaus listaa voi nyt myös vapaasti selata Scroll toiminnolla siitä riippumatta mikä kohta koko signaalista on nyt zoomattuna näytössä.

Listan voi kokonaisuudessaan tallettaa Save toiminnolla USB tikulle CSV muodossa. Koko signaalissa voi siis horisontaalisti siirtyä käyttäen position nuppia ja t/div nuppia tarvittaessa haluttuun kohtaan ja siitä riippumatta lukea jotain toista kohtaa dekoodauksen listaa scrollaten. Dekoodaus listan sarake "Time" tarkoittaa aikaa alkuperäiseen trigger sijaintiin nähden.

 

Sekvenssitallennuksen käyttö peräkkäisten "sanomien" tallennukseen ja dekoodaamiseen  Pari esimerkkiä.


Esimerkki 1. UART

("Sequence acquisition", sekvenssi tallennus tallentaa muistiin segmenttejä. Siglent käyttää nimitystä Frame. En pidä nimivalintaa frame kovinhyvänä koska se saatetaan tulkita TFT kuva frameksi. Siglentin tallennus ei ole peräkkäisten TFT kuvaruutujen tallennus vaan se tallentaa aivan raakaa ADC dataa segmentin mittaisina, allaolevissa esimerkkikuvissa on 4 kanavaa rinnakkain ja jokaisen datajonon pituus on 7k tavua. Joissain oskilloskoopeissa nimittän tallennetaan vain näyttömuistin kuva ja se on todella eri asia.)

Signaali(t) kuten kuvassa 1. Sillä erotuksella että lähetyksen intervalli on 20ms. Ihan vain siksi että tulee tuo sekvenssi valmiiksi nopeammin koska valittuna on lähes 4000 segmenttiä.
Oskilloskoopppin triggaus on nyt UART ja asetettu kanavan 1 parametreilla (9600 baud, 8 data, even parity, 1 stop bit.) Triggaus on asetettu tapahtumaan kun datassa esiintyy data (hex) 0x53 eli ASCII iso S kirjain.
Oskilloskoopin dekoodaus on off tilassa. (merkityksetön)

Olen valinnut segmentin (frame) pituudeksi 7k ja pyyhkäisyajaksi 1ms/div. Tällä nopeudella koko sanomaryhmän lähetys kaikilta kanavilta mahtuu sopivasti yhteen segmenttiin. Olen valinnut segmenttien määräksi maksimin joka tällä asetuksella on mahdollinen eli yhteensä 3912. Sen oilisi voinut valita vapaasti välillä 2 - 3912.

Oskilloskooppi on käynnistetty Trigger toimintojen painikkeella "Single" jolloin oskilloskooppi tallentaa asetetun määrän segmentteja ja pysähtyy kun valittu määrä on täysi. Sekvenssitallennuksen aikana ei päivitetä kuvaruutua (koska on eliminoitu kaikki hidastavat seikat jolloin triggaus on mahdollisimman nopeasti valmis uuteen triggaukseen edellisen segmentin jälkeen. Tämä mahdollistaa sekvenssitallennuksen mahdollisimman suuren nopeuden, parhaimmillaan jopa yli 400000 segmenttiä sekunnissa.)
Kun segmentit on tallennettu alkaa oskilloskooppi prosessoida niistä kaikista kerroskuvaa näytölle. Näyttö ja interpolointiasetuksista sekä segmenttien määrästä riippuen sen aika vaihtelee.




      Kuva 8.
Oskilloskoopin näyttö sen jälkeen kun kaikki segmentit on tallennettu sekä prosessoitu niistä kaikista kerroskuva näytölle. Tällöin kaikki "framet" eli segmentit näytetään päällekkäin kerrostettuna (näin on helppo havaita esim jatkuvasta signaalista poikkeamat) kunnes muutetaan jotain asetusta jolloin näytetään viimeinen tallennettu segmentti yksin. Olen tässä vielä painanut sen jälkeen "History" näppäintä.  Nyt voi valita mikä segmentti numero (frame) halutaan katsoa. Voi myös katsella "List" joka siis on tässä kuvassa sekvenssin aikaleima lista (ei kuvassa).




      Kuva 9.
Kuten kuva 8 mutta nyt otettu Dekoodaus toiminto käyttöön, aseteltu myös sille signaalien oikeat parametrit (kuten kivassa 1.)
Tässä on dekoodaus tulos viimeisestä segmentistä (framesta) jonka numero oli 3912. Tässä voisi myös käyttää zoomausta jos haluaa signaalin yksityiskohtia katsella. Silti koko segmentti dekoodataan vaikka se ei pääikkunassa zoomatessa mahtuisi kuvaan kokonaan. Siinä voi siirtyä vaaka suunnan siirrolla myös haluamaansa kohtaan. Varsinkin jos segmentti olisi pidempi se olisi hyvinkin tapeellista. Kaikissa tapauksiissa dekoodaus lista sisältää koko segmentin ja tässäkin koko listan voi tallentaa CSV muodossa USB tikulle. Erikseen kumpikin dekooderi (S1 tai S2) sen mukaan kumpi lista on valittuna.  Tässäkin pätee se että signaalin kuvan voi piilottaa halutessaan Trace Visible valinnalla. Se ei vaikuta dekoodaukseen tai mittauksiin.  Painamalla tässä kohden History painiketta voi siirtyä haluamaansa segmenttiin.

Huom: Mikäli tuon kuusikulmion sisällä jossa on yhden tavun data joko heksana, kokonaislukuna tai binäärinä esiintyisi punainen piste se ei tarkoita virhettä vaan sitä että oskilloskoopin mielestä kaikki ei mahdu siihen kuusikulmioon (vaikka joskus silmä sanoisikin että mahtuu mutta jostain syystä se turhan herkästi jo ilmoittaa liian ahtaasta tilasta.)
Mikäli dekoodauksessa olisi skoopin mielestä virhe, silloin kyseinen kuusikulmion kehys piirretään punaisella. Tai jos data on niin tiuhaa että muuta ei erotu kuin sininen palkki sinne piirretään punaiset pystyviivat virheiden kohdille.




      Kuva 10.
Kuten kuva 9. mutta tässä siirrytty katsomaan segmenttiä numero 1.
Edelleenkin muistutan että dekoodauksen kannalta (UART) ei ole merkitystä sillä millä tavalla signaali on trigattu.
Dekoodaus ei pohjaudu triggaukseen vaan signaalin datapisteiden analysointiin annatuilla parametreillä.

Huomaa että joskus voi olla tarpeen hienosäätää baudinopeutta "custom" asetuksella. Erityisesti jos ollaan rajoilla sen suhteen riittääko datan tiheys kyseisen signaalin analysointiin ja toisekseen jotkut sarjaliikenteet eivät todellakaan ole nopeudeltaan kovin tarkkoja vaan hiukan sinne samalle "hehtaarille" roiskittuja. Tätä säätöä kannattaa kokeilla jos tulos standardinopeuksilla ei tahdo onnistua ja/tai sisältää virhjeitä vaikka muut asetukset on kohdallaan ja signaalin kunto hyvä sekä level tasot asetettu kohdilleen. Huomaa että etäisyyttä signaalin pohjaan ja huippuun pitää olla riittävästi eli enemmän kuin ihmisen silmä-aivo vaatisi.




      Kuva 11.
Kuten aiemmin mainittu pääikkunaa voi luonnollisestikin zoomata ja siirtää sen jälkeen haluamaansa yksityiskohtaan segmentissä ja tehdä esimerkiksi mittauksia tai katsella muuten signaalin yksityiskohtia, tai jos segmentin data olisi kovin tiheää ja dekoodaus palkki ei näyttäisi yksityskohtia sanomasta.


Esimerkki 2. I2C (IIC, TWI)   Työn alla, Under work!


Seuraavat kuvat ovat tapahtumajärjestyksessä. Ne voi lukea ikäänkuin sarjakuva kertomuksen.
Kuvissa oleva numerointi liittyy muihin asioihin. Liitän ne tähän siten että laitan kuvassa näkyvän numeron alamumeroksi.



Kuva 12.1



Kuva 12.2



Kuva 12.3



Kuva 12.4



Kuva 12.5



Kuva 12.6



Kuva 12.7



Kuva 12.8



Kuva 12.9



Kuva 12.10



Kuva 12.11



Kuva 12.12



Kuva 12.13



Kuva 12.14



Kuva 12.15



Kuva 12.16



Kuva 12.17



Kuva 12.18


--» Etusivu - Home

--» Oskilloskoopit

--» ylös - up