中心議題:
- 邏輯分析儀介紹
- 邏輯分析儀的應(yīng)用
- 配合調(diào)試工具單步調(diào)試程序
如今,嵌入式系統(tǒng)的功能越來(lái)越強(qiáng),但設(shè)計(jì)和驗(yàn)證問(wèn)題也變得越來(lái)越復(fù)雜。善用邏輯分析儀,可以提高查找和解決問(wèn)題的效率,尤其是最困擾嵌入式系統(tǒng)工程師的時(shí)序問(wèn)題和一些硬件本身固有的問(wèn)題。
邏輯分析儀介紹
邏輯分析儀(Logic Analyzer)是一種數(shù)字?jǐn)?shù)據(jù)域測(cè)試的常用儀器,它可以把測(cè)試通道上的邏輯信號(hào)捕捉并存儲(chǔ)下來(lái),供設(shè)計(jì)人員分析。與示波器相比,邏輯分析儀具有測(cè)量通道數(shù)多(一般有32個(gè)通道);觸發(fā)功能完善;分析功能強(qiáng)大等優(yōu)點(diǎn)。
邏輯分析儀主要的技術(shù)指標(biāo)有:
* 最高采樣頻率:最高采樣頻率越高,捕獲帶寬越高。
* 通道數(shù):通道數(shù)越多,能同時(shí)捕獲的信號(hào)數(shù)也就越多。
* 存儲(chǔ)深度:存儲(chǔ)深度越大,能夠記錄的數(shù)據(jù)就越多。
* 輸入阻抗:輸入阻抗越高,對(duì)被測(cè)信號(hào)的影響越小。
* 觸發(fā)方式:觸發(fā)方式越多,使用起來(lái)越靈活。
其它技術(shù)指標(biāo)還有:觸發(fā)門限電平范圍、是否有協(xié)議分析工具等等,這些都決定了邏輯分析儀的性能。
現(xiàn)在,邏輯分析儀的發(fā)展出現(xiàn)了兩種趨勢(shì):傳統(tǒng)邏輯分析儀和虛擬邏輯分析儀。傳統(tǒng)邏輯分析儀功能強(qiáng)大,數(shù)據(jù)采集、分析和波形顯示融于一身,但是價(jià)格十分昂貴;虛擬邏輯分析儀是PC技術(shù)和測(cè)量技術(shù)結(jié)合的產(chǎn)物,觸發(fā)和記錄功能由虛擬邏輯分析儀硬件完成,波形顯示、輸入設(shè)置等功能由PC機(jī)去完成,因此不會(huì)對(duì)邏輯分析儀性能造成影響,同時(shí)節(jié)省了顯示和輸入方面的成本,在開(kāi)發(fā)工程師熟悉的Windows操作系統(tǒng)下工作操作起來(lái)更加方便。與傳統(tǒng)邏輯分析儀相比虛擬邏輯分析儀具有質(zhì)優(yōu)價(jià)廉、方面使用等優(yōu)點(diǎn)。
圖1 液晶時(shí)序圖
圖2 驅(qū)動(dòng)數(shù)碼管的時(shí)序圖
圖3 讀寫E2PROM存儲(chǔ)器時(shí)序圖
圖4 經(jīng)I2C分析插件解碼后的時(shí)序圖[page]
圖5 SD卡CMD0命令時(shí)序圖
應(yīng)用
通常,嵌入式系統(tǒng)設(shè)計(jì)可以分為硬件部分和軟件部分,從硬件電路的調(diào)試到驅(qū)動(dòng)程序的測(cè)試幾乎都需要邏輯分析儀的幫助。邏輯分析儀在嵌入式系統(tǒng)調(diào)試中的應(yīng)用可以分為三個(gè)層次:
第一層:測(cè)試信號(hào)的時(shí)序和時(shí)間,這是邏輯分析儀最基本的應(yīng)用;
第二層:利用邏輯分析協(xié)議分析的輔助功能,分析總線協(xié)議;
第三層:在線仿真器一起構(gòu)成組合調(diào)試平臺(tái),調(diào)試驅(qū)動(dòng)程序。
捕獲毛刺
由于信號(hào)間延時(shí)不同,多路信號(hào)同時(shí)變化的瞬間往往會(huì)導(dǎo)致邏輯電路輸出中一些不正確的尖峰信號(hào),這些尖峰信號(hào)稱為“毛刺”。另外,如果設(shè)備運(yùn)行的環(huán)境比較惡劣,也會(huì)有高頻信號(hào)串入電路,造成毛刺。如果讓“毛刺”進(jìn)入時(shí)鐘、清零和置位等對(duì)毛刺敏感的輸入端口,將會(huì)使電路產(chǎn)生不可預(yù)知的結(jié)果。
確定關(guān)鍵信號(hào)的建立時(shí)間和保持時(shí)間
建立時(shí)間(setup time)是指在觸發(fā)器的時(shí)鐘信號(hào)上升沿到來(lái)以前,數(shù)據(jù)穩(wěn)定不變的時(shí)間,如果建立時(shí)間不夠,數(shù)據(jù)將不能在這個(gè)時(shí)鐘上升沿被打入觸發(fā)器;保持時(shí)間(hold time)是指在觸發(fā)器的時(shí)鐘信號(hào)上升沿到來(lái)以后,數(shù)據(jù)穩(wěn)定不變的時(shí)間,如果保持時(shí)間不夠,數(shù)據(jù)同樣不能被打入觸發(fā)器。
液晶既是一個(gè)慢速設(shè)備也是一個(gè)對(duì)時(shí)序很敏感的設(shè)備。如果數(shù)據(jù)的建立時(shí)間不夠,很容易顯示亂碼。圖1是利用邏輯分析儀捕獲的液晶總線時(shí)序,并利用測(cè)量點(diǎn)來(lái)獲取建立時(shí)間和保持時(shí)間的信息。
驗(yàn)證電路邏輯
電路設(shè)計(jì)好后,通常利用邏輯分析儀對(duì)輸入輸出信號(hào)進(jìn)行采集分析,這樣可以比較可靠的驗(yàn)證電路的邏輯功能。筆者為NiosII處理器設(shè)計(jì)了一個(gè)用于動(dòng)態(tài)掃描8位數(shù)碼管的IP核,由邏輯分析儀捕獲的數(shù)據(jù)輸出如圖2所示。
分析總線協(xié)議
在確定關(guān)鍵信號(hào)路徑上無(wú)“毛刺”干擾,且建立時(shí)間和保持時(shí)間符合器件時(shí)序要求后,下一步就是分析器件間是否能正常傳輸數(shù)據(jù),即協(xié)議是否正確。 MCU通過(guò)I2C總線對(duì)兩個(gè)外部E2PROM存儲(chǔ)器(器件地址分別是0xA0和0xA2)進(jìn)行操作的時(shí)序圖如所示。
若工程師要根據(jù)邏輯電平的高低進(jìn)行人工分析,顯然十分困難,更不要說(shuō)區(qū)分哪些數(shù)據(jù)是發(fā)給E2PROM1的,哪些數(shù)據(jù)是發(fā)給E2PROM2的。這時(shí),可以啟動(dòng)邏輯分析儀的I2C分析插件。
常見(jiàn)的總線分析插件還有SPI總線、UART、1-WIRE、CF協(xié)議分析等。插件的種類會(huì)因廠商的不同而不同。
配合調(diào)試工具單步調(diào)試程序
嵌入式系統(tǒng)的開(kāi)發(fā)人員通常使用在線仿真器(ICE)來(lái)完成軟件的調(diào)試,但隨著嵌入式系統(tǒng)復(fù)雜性的提高,單純的軟件調(diào)試已經(jīng)很難適應(yīng)需求。在線仿真器+邏輯分析儀已經(jīng)構(gòu)成一種新的組合調(diào)試平臺(tái)。借助邏輯分析儀可以發(fā)現(xiàn)許多隱匿很深的問(wèn)題。例如,筆者在為NiosII處理器開(kāi)發(fā)SD卡驅(qū)動(dòng)的時(shí)候,遇到一個(gè)很奇怪的情況,SD卡命令已正確發(fā)送,邏輯分析儀也捕捉到了有效應(yīng)答信號(hào),如圖5所示,但是程序仍然返回應(yīng)答信號(hào)等待超時(shí)錯(cuò)誤。
單步調(diào)試程序發(fā)現(xiàn),雖然邏輯分析儀捕捉到了有效應(yīng)答信號(hào),但是由SPI核讀入數(shù)據(jù)卻是0x80,即SD卡忙。最后,問(wèn)題的原因是,Altera公司提供的SPI 核的CPOL=1,CPHA=0模式并不適合SD卡,將SPI核的工作模式設(shè)為CPOL=1,CPHA=1則驅(qū)動(dòng)程序就可以正常工作了。
綜上所述,邏輯分析儀在嵌入式系統(tǒng)調(diào)試中的應(yīng)用可以從基本數(shù)字電路的時(shí)序分析到器件間總線協(xié)議的分析,還以配合在線仿真器調(diào)試驅(qū)動(dòng)軟件。借助在線仿真器+邏輯分析儀這種新的調(diào)試平臺(tái),可以提高查找和解決問(wèn)題的效率,增加產(chǎn)品的可靠性并能加快產(chǎn)品的上市速度。