在許多的電子產(chǎn)品中都有使用串行閃存的需求。串行閃存具有較簡(jiǎn)單的控制程序和電路以及可靠的儲(chǔ)存能力,因而倍受青睞。因此,它常被電子產(chǎn)品用來存儲(chǔ)較關(guān)鍵的啟動(dòng)程序或者系統(tǒng)設(shè)置數(shù)據(jù)。每當(dāng)系統(tǒng)激活時(shí),串行閃存就會(huì)忙碌起來,盡快地把儲(chǔ)存在里面的程序或數(shù)據(jù)加載到系統(tǒng)內(nèi)。但越來越復(fù)雜的命令組合和命令差異,使得開發(fā)與除錯(cuò)工作變得更加困難。本文將介紹使用
邏輯分析儀來進(jìn)行串行閃存的測(cè)量工作。
單線(Single)模式譯碼
早期的串行閃存使用SPI總線架構(gòu)定義了4根與命令/數(shù)據(jù)傳輸有關(guān)的引腳,分別是:CS(片選)、SCK(時(shí)鐘)、DI(數(shù)據(jù)輸入)和DO(數(shù)據(jù)輸出)。傳輸時(shí),由DI將命令或數(shù)據(jù)傳入串行閃存,而DO將數(shù)據(jù)讀出,如圖1所示。這種模式一般稱之為單線模式。使用者若要測(cè)量串行閃存總線,只需使用具有SPI總線的儀器或者工具,就可以將單線模式的串行閃存命令/地址/數(shù)據(jù)解出。這是業(yè)內(nèi)行之多年的作法。
圖1:串行閃存單線模式(1-1-1)。注:JEDEC標(biāo)準(zhǔn)No.216:(x-y-z)標(biāo)示串行閃存I/O的模式,分別為命令碼(opcodex)、地址(addressy)和數(shù)據(jù)(Dataz)。
雙線(Dual)及四線(Quad)模式譯碼
鑒于電子產(chǎn)品越來越需要大容量的儲(chǔ)存空間,串行閃存的容量也相應(yīng)擴(kuò)大。儲(chǔ)存容量擴(kuò)大之后衍生而來的問題是讀取數(shù)據(jù)的時(shí)間越來越長(zhǎng)。于是串行閃存開始提高其工作頻率——通過較高的傳輸頻率縮短傳輸數(shù)據(jù)的時(shí)間。但這樣卻還不夠快,因而進(jìn)一步發(fā)展出了所謂的雙線模式(如圖2)和4線模式(如圖3)的串行閃存。其總線傳輸?shù)募軜?gòu)已漸漸與單線模式的SPI架構(gòu)不同,這也使原有的SPI儀器或工具用于此類串行閃存的總線除錯(cuò)工作開始出現(xiàn)困難。
圖2:串行閃存雙線模式(2-2-2)。
圖3:串行閃存4線模式(4-4-4)。
各廠商推出的串行閃存更增加了多種不同數(shù)量的命令與數(shù)據(jù)組合。若沒有識(shí)別閃存命令的軟件工具,將很難看出總線的內(nèi)容。這樣的需求使得具有支持串行閃存總線分析的邏輯分析儀成為了*的工具,它可以協(xié)助分析這種多樣性的信號(hào)。它可以隨著閃存命令的改變,而做出相應(yīng)的分析。
使用邏輯分析儀分析不同命令的組合
隨著命令的不同,串行閃存會(huì)以不同數(shù)量的傳輸線工作。以下范例列舉了幾種不同形式的串行閃存結(jié)構(gòu),從中可以一窺命令差異所帶來的影響。
范例一:如圖4所示,此命令3BH(FastReadDualI/O)是一個(gè)(1-1-2)結(jié)構(gòu)的命令。輸入命令與地址時(shí)只需要使用1根線,但數(shù)據(jù)輸出時(shí)為雙線。從圖例可以看出,傳送命令需要使用8個(gè)時(shí)鐘周期,但接收數(shù)據(jù)只需4個(gè)時(shí)鐘周期。
圖4:閃存命令3BH波形畫面(1-1-2)。
范例二:如圖5所示,此命令EBH(FastReadQuadI/O)是一個(gè)(1-4-4)結(jié)構(gòu)的命令,輸入命令使用1根線,但地址與數(shù)據(jù)皆為4根線。從圖例可以看出,傳送命令需要使用8個(gè)時(shí)鐘周期,但傳送地址和接收數(shù)據(jù)只需2個(gè)時(shí)鐘周期。
圖5:閃存命令EBH波形畫面(1-4-4)。
范例三:如圖6所示,此命令6BH(FastReadQuadOuput)是一個(gè)(1-1-4)結(jié)構(gòu)的命令,傳送地址時(shí)只需要使用1根線,但數(shù)據(jù)輸出時(shí)為4根線。從圖例可以看出,傳送命令與地址需要使用8個(gè)時(shí)鐘周期,但接收數(shù)據(jù)只需2個(gè)時(shí)鐘周期。
圖6:閃存命令6BH波形畫面(1-1-4)。
更勝于SPI總線分析的功能:從圖7可以看出,有別于SPI數(shù)據(jù),當(dāng)輸入與輸出分成兩根線時(shí),不容易判別數(shù)據(jù)輸出的時(shí)間點(diǎn)。光標(biāo)A所在位置,就是串行閃存開始輸出數(shù)據(jù)的時(shí)刻。從信道SPI-DO查看時(shí),必須自行數(shù)到第5個(gè)字節(jié),才算是數(shù)據(jù)的輸出點(diǎn)。有時(shí)候串行閃存在輸入時(shí)還會(huì)安插虛擬字節(jié)(DummyByte),這樣就更增加了查看輸出信號(hào)的困擾。但若采用串行閃存總線分析,借由清楚的文字說明,就可以清楚地標(biāo)示數(shù)據(jù)的意義。
圖7:串行閃存(SFlash)與SPI(SPI-DI、SPI-DO)總線分析比較。
圖8:即使閃存進(jìn)入性能增強(qiáng)模式,地址與數(shù)據(jù)也可被正確分析出來。
性能增強(qiáng)模式(PEM)的分析:為了加快閃存數(shù)據(jù)的傳輸速度,在進(jìn)入性能增強(qiáng)模式后,讀取數(shù)據(jù)不需要再下命令。因此,*筆輸入數(shù)據(jù)即為地址,而非命令。此法可減少下命令的次數(shù),以達(dá)到加速的效果。由于性能增強(qiáng)模式的設(shè)置參數(shù)都是包含在虛擬字節(jié)里面,并且各廠商設(shè)置與復(fù)位的規(guī)則也不相同,這使得在判讀上困難許多。圖8所示就是一個(gè)設(shè)置進(jìn)入性能增強(qiáng)模式的波形范例。
邏輯分析儀串行閃存分析設(shè)置畫面:在設(shè)置畫面的左上角,可以選擇不同的閃存制造商和閃存型號(hào)。分析軟件已經(jīng)收錄了閃存數(shù)據(jù)手冊(cè)數(shù)據(jù)作為分析的參考。數(shù)據(jù)沒有*對(duì)應(yīng)到型號(hào),因此也可以采用兼容型號(hào)進(jìn)行譯碼。設(shè)置畫面左側(cè)則是信道設(shè)置及譯碼分析設(shè)置。有些設(shè)置值如QPI(4外設(shè)接口)模式,在系統(tǒng)激活時(shí)就已被軟件設(shè)置好。這樣的話,使用者也可以通過手動(dòng)方式邏輯分析儀分析,從而無誤地解析出數(shù)據(jù),如圖9所示。
圖9:串行閃存分析設(shè)置畫面。
完整的串行閃存分析報(bào)告:不管是多線的組合或是性能增強(qiáng)模式,都可以借由完整的報(bào)告,將命令、地址、增強(qiáng)模式設(shè)置值、數(shù)據(jù)(十六進(jìn)制與ASCII)詳細(xì)地呈現(xiàn)。這樣就可以快速得知分析的內(nèi)容,盡快地找到問題點(diǎn),如圖10所示。
圖10:串行閃存分析報(bào)告。
利用SPI觸發(fā)來進(jìn)行信號(hào)定位
雖然串行閃存會(huì)有多線的組合,但仍有一部分命令及地址是單線模式。因此,可利用邏輯分析儀的SPI觸發(fā)功能協(xié)助信號(hào)定位。圖11即是使用SPI觸發(fā)功能,其主要就是把命令和地址數(shù)據(jù)輸入,這樣就可以針對(duì)特定條件進(jìn)行觸發(fā)。
圖11:設(shè)置SPI觸發(fā)功能以觸發(fā)串行閃存命令0BH,地址12H23H45H。“AfterCS”打勾是指CS變?yōu)榈碗娖奖汩_始判斷。
在使用SPI觸發(fā)的同一時(shí)間,若可以將邏輯分析儀與示波器堆棧,就可以使用邏輯分析儀代替示波器定位,如圖12所示。這樣,問題分析就可以同時(shí)具有串行閃存數(shù)字與模擬信號(hào)的分析,從而更加詳盡清楚。通過檔案共享,亦可使整個(gè)工作團(tuán)隊(duì)共享擷取的信號(hào),加快分析問題的速度。
圖12:結(jié)合邏輯分析儀與示波器來看串行閃存總線信號(hào)。
本文小結(jié)
通過本文的介紹,串行閃存總線的分析工作將可以由邏輯分析儀觸發(fā)和軟件的配合完成。這便使原本復(fù)雜的命令組合變化和命令的定位工作都變得容易控制。從而,使用者可以專心于確認(rèn)本身的設(shè)計(jì)問題,而不用花費(fèi)時(shí)間去找到錯(cuò)誤波形以及分析。這將是一個(gè)效率的解決方案。