示波器全內存解碼的奧秘
我們知道,協(xié)議解碼是協(xié)議分析中一個(gè)很重要的功能,它的實(shí)用程度取決于解碼的準確性、解碼范圍和解碼速度,其中解碼范圍和解碼速度是一對矛盾,二者很難兼得。在以往的解碼方案中,我們將解碼范圍限制在一定寬度的數據內,以此保證解碼結果能夠快速的響應給用戶(hù)。但在使用過(guò)程中發(fā)現,我們往往不滿(mǎn)足于這個(gè)范圍,但我們不能無(wú)限制的擴大解碼的范圍(隨意擴大會(huì )影響解碼速度)。我們不能放棄已有的快速解碼的用戶(hù)體驗,新特性就是為了解決這個(gè)魚(yú)和熊掌的問(wèn)題產(chǎn)生的,從使用上它包含3個(gè)方面的改變。
本文引用地址:http://dyxdggzs.com/article/280625.htm一、放大波形后能正常解碼
在新的方案中,我們不再需要考慮縮放或水平移動(dòng)波形導致的解碼范圍的影響,也不需要考慮“屏幕外還有多少數據”。我們解碼的范圍會(huì )隨著(zhù)波形的放大而智能的改變,不再是簡(jiǎn)單的限制解碼范圍,現在我們能將波形放大到很細微的地方,依然能正常解碼。
圖1 解碼細節放大
如圖1所示,正在解碼CAN-FD的波形,在暫停模式下我們將波形從1ms/div放大到2us/div,ESI、插入位以及DLC和DATA的值都能清晰準確的觀(guān)察到。我們能看到解碼細節了。
二、解碼會(huì )以全內存的數據為依據進(jìn)行
ZDS示波器的一大特點(diǎn)就是深存儲,而固定的解碼范圍會(huì )制約這一特點(diǎn)的應用,導致深存儲時(shí)大部分的數據都不能用于解碼。在新特性中,這情況將改變,我們可以把存儲深度設置成很大,系統會(huì )根據協(xié)議波特率等特點(diǎn)動(dòng)態(tài)的調整解碼范圍,最理想的情況我們會(huì )將解碼范圍拓展到整個(gè)內存,并且這種特性是在Run和Stop模式中都可以使用,不再局限于Stop!
圖2 全內存解碼
我們將存儲深度設置為28M,此時(shí)整個(gè)內存中數據的時(shí)間跨度為-14ms ~ 14ms。從圖2事件表我們看到,第一幀CAN-FD的位置在-12.479ms,也就是在內存數據的開(kāi)端,已經(jīng)達到了全內存解碼。
當然這種功能強大的全內存解碼也是受一定條件約束的,我們在下面的內容中會(huì )提到。
三、系統會(huì )判斷最佳解碼情況
新特性是基于保持原來(lái)解碼速度,盡量拓寬解碼范圍的思想設計出來(lái)的。這意味著(zhù),對于大數據量的解碼,是基于一定比例的樣本點(diǎn)抽取后進(jìn)行的(用于解碼的數據量越少,解碼越快)。系統會(huì )根據抽點(diǎn)的情況,與協(xié)議的特點(diǎn)(波特率等)比較,判斷解碼是否存在風(fēng)險(解碼錯誤或不能解碼的風(fēng)險)。例如在一些情況中,會(huì )出現抽點(diǎn)的間隔很大,使得實(shí)際用于解碼的采樣率不足,這時(shí)系統會(huì )給出提示。
圖3 非最佳解碼提示
如圖3所示,提示出現在屏幕左上方,從事件表可以看到,波形中間出現了部分錯誤解碼的幀,這種錯誤是解碼采樣率不足導致的。
需要注意的時(shí),出現這種提示時(shí),解碼不一定就會(huì )出錯,它是一種警告。而當我們真的不能正常解碼時(shí),只需要按照系統提示的內容進(jìn)行操作(如圖應該減少時(shí)基),就能回歸最佳解碼狀態(tài)。這也是第二點(diǎn)中描述的全內存解碼約束。
我們是怎么做到既抱著(zhù)魚(yú)又把熊掌吃到的?
保持解碼使用的數據量不變,就可以保證解碼的速度不會(huì )發(fā)生很大的變化,在此基礎上,我們將數據點(diǎn)更均勻和合理的分布到內存中,就能拓寬解碼范圍。在新的設計中,我們會(huì )智能的根據協(xié)議波特率等特點(diǎn)對內存數據進(jìn)行抽取,動(dòng)態(tài)的調整抽樣間隔,達到在數據量不變的情況盡可能覆蓋更寬廣解碼范圍的目的,就實(shí)現了魚(yú)和熊掌兼得的新特性。
評論