一、何為讀、寫分離?
讀、寫分離是指在對雙向傳輸的信號線進行電氣參數測試時,通過手段識別讀信號和寫信號,從而針對性的測試讀、寫兩個條件下的電氣參數。
二、為何讀、寫分離?
2.1芯片之間的通訊,可以劃分為:發送端、鏈路、接收端。電氣參數測試應在接收端抓取信號,從而判斷其電平以及時序參數是否滿足接收端芯片的要求。例如:芯片A、B之間通訊,從芯片A的視角出發,信號流向A->B即寫信號,應是在靠近B端測試,而信號流向A<-B即讀信號,應在靠近A端測試。所以讀信號和寫信號的測試點選擇是不同的。尤其對于高帶寬的通訊總線,對于測試點的要求非常嚴格。
當然有些時候在難以確定鏈路情況時,也會選擇在發送端測試電氣參數。例如:USB、HDMI輸出接口等。當設備包含這類輸出端口時,因為實際使用場景未知,所以只能以發送端的電氣參數來要求設備輸出的信號質量。因此對于一條通訊總線(尤其是高速串行接口),其完整的電氣參數要求通常包括:發送端信號質量、鏈路S參數、接收端信號質量,以此來約束每個環節。
2.2對讀、寫操作的電氣參數要求不同。從信號電平參數看,信號在經過走線或線纜后必然會產生衰減,當然為了改善這一問題,發送端和接收端的預加重和去加重是一個廣泛使用的辦法,但從信號本身來看發送端的電平幅值必然會更高,所以各個接口協議在對發送端和接收端的電平要求是不同的。
三、如何讀、寫分離?
既然讀、寫分離是針對雙向傳輸信號線測試的先決條件,那么下面舉幾個常見通訊信號電氣參數測試中的例子,大家可以體會一些基本的思路。
3.1 對于DDR系列
? DDR2
1、DQ和DQS信號的對齊方式不同,讀數據時兩者邊沿對齊,寫數據時兩者中央對齊。如下圖,Read data 部分DQ和DQS波形在時間軸上幾乎重合的,而Write data 部分可以明顯觀察到兩者波形存在時延,因為在寫數據時是在DQS的上下邊沿過零點采樣,所以如果數據要有充分的建立/保持時間,就需要采取這種中間對齊的方式。
2、DQ和DQS的信號幅度不同,假定讀、寫發送端的信號幅度相同,那么在靠近內存顆粒端,寫操作的信號幅度要小于讀操作的信號幅度,而在靠近內存控制器端,前者大于后者,這是因為信號經過走線后必然產生衰減,如上圖就是在內存顆粒端測試到的讀、寫信號波形,可以看出在幅值上有明顯差異。
3、DQS信號的前導負脈沖寬度不同,讀操作的一個負脈沖寬度參數tRPRE約為Tck,寫操作的一個負脈沖參數tWPRE寬度大于0.35Tck,但通常從實測波形中觀察tRPRE是明顯大于tWPRE的,因此也可以作為一個輔助判據。
?DDR3
對于DDR3,對齊方式和信號幅度的規律和DDR2相同,但是DQS前導波形有變化,如下圖,對于寫操作,前導是正脈沖和負脈沖的組合,對于讀操作,前導是單一負脈沖。因此從DQS前導波形來對DDR3進行讀、寫分離是很簡單明了的。
實測讀、寫操作時的DQS前導波形如下,其中通道M3是DQ,M4是DQS:
?DDR4
對于DDR4,對齊方式和信號幅度的規律和DDR2、DDR3相同,但是DQS前導波形在讀、寫操作時不存在明顯差別,所以不能作為讀、寫分離的判據。
實測讀、寫操作時的DQS前導波形如下:
綜上所述在使用示波器測量各版本DDR的讀、寫參數時,首先要根據讀、寫時DQS的不同波形特征來設置觸發條件,從而過濾出讀或者寫波形,再進行參數測試。
3.2 對于I2C
I2C總線是由Philips公司開發的一種簡單、雙向二線制同步串行總線,只需要兩條信號線即可在連接于總線上的器件之間傳送信息,使用非常廣泛。I2C數據的傳輸格式如下:
在起始條件“S”后發送從機地址,該地址共有 7 位,緊接著的第8位是讀寫位“R/W—”,該位為0表示寫操作,為1表示讀操作;ACK是應答信號,為0表示寫未應答,為1表示應答;之后跟著若干位DATA信號;末尾處由主機產生的停止位“P ”。當然針對I2C有一系列的電氣參數要求,但針對主機和從機是完全不同的,例如:測試主、從兩端的數據建立時間tsu:dat和保持時間thd:dat參數時,需要分別在讀、寫操作中抓取對應的DATA信號波形,如下以紅色邊框標注。
如果I2C總線上掛了多個從設備,需要根據各設備的地址來區分當前的通訊是從設備中的哪一個,目前很多智能示波器配備了“I2C觸發”方式,以此進行讀、寫信號分離,再進行參數測試。如下圖是SDS3000X操作,很便捷:
進入Setup界面后,設置SDA和SCL對應的通道,設置觸發類型為Addr,設置地址信號格式:二進制或者十六進制,選擇設置觸發的地址是否包含“讀/寫”位,若在“Include R/W Bit”勾選框打“√”則不需要在下面的“Direction”下拉框里選擇Write或Read,反之,需要設置。選擇地址信號bit位數和觸發地址,若在“Include R/W Bit”勾選框打“√”此處填寫的Address地址應為8Bits,包含“讀/寫”位,反之,僅需設置7bits,設置信號格式是否包含Ack。
如下圖是一段實測的I2C波形,從示波器中顯示的解碼信息可以明確得知,當前通訊的從設備地址以及讀、寫的數據具體是什么,一目了然。
3.3 對于SD-card
SD-card因為體積小、數據傳輸速度快、可熱插拔等特性,廣泛應用于各種便攜式設備作為數據存儲介質,例如:數碼相機、多媒體播放器、智能手機等。SD-card的各引腳定義如下:
從引腳定義也可以看出,SD-card可以工作在兩種模式:SD模式或者SPI模式,因為工作在SPI模式時數據線為單向傳輸,并不需要讀、寫分離,下面主要講述SD模式時的分離方法。
數據傳輸格式如下圖,分別是讀、寫操作時CMD和DATA信號線的狀態,大體說是host向SD-card發送command命令字,然后SD-card發出response響應字,之后進行data block數據傳輸,數據傳輸完成后再進行一次command和response操作。圖片
SD-card的讀、寫分離與I2C的操作有所不同,主要有兩點:
目前市面上的示波器很多配備了“I2C觸發”模式,但沒有SD觸發模式,因此針對SD-card的電氣參數測試無法通過示波器現有的觸發模式進行。
I2C是通過“R/W”標志位來區分讀寫,而SD-card需要通過command命令字來區分,更加復雜。基于以上兩點,在此特別將SD模式下的操作方法做以描述。
因為讀、寫分離需要使用command命令字,所以先了解該字段的格式和內容。該字段共48bits,讀、寫分離主要用到command index中的內容,該段內容對應不同的操作命令。
如下是和讀、寫相關的4個命令,其中CMD17、CMD18是讀操作,而CMD24、CMD25是寫操作,在進行讀、寫分離操作時,就是根據該字段的不同來設置用于觸發的二進制序列。
觸發二進制序列以起始位“01”和command index組成,如下:
前面也已經說到示波器并沒有SD觸發模式,此處可以使用具有“SPI觸發”模式的示波器,只需要進行相應的配置。如下圖,選擇“SPI”觸發,C1通道為待測DATA信號,C2通道為CMD信號,C3為CLK信號,因為SPI信號中有個CS信號,但SD-card并沒有該信號,所以將設置中的CS設置為低電平有效,通道為C4,實際上示波器的C4通道是懸空的,因此恒為低電平,也等效于設置為CS持續有效。CPHA=0,CPOL=0,之后在觸發序列中輸入相應的二進制。在此有一個需要注意的情況,雖然SD-card協議中說明command是以“01”起始,但實際上在“01”之前可能存在若干個高電平,因此在測試時還是需要觀察實際波形,判斷高電平的位數,并增加在觸發序列中。如下圖是以CMD25觸發寫操作,放大波形后發現前面有2bit“1”,因此將觸發序列修改為“1101011001”,從而完成對于寫操作的觸發設置。之后即可開始對波形進行電氣參數測試,如:數據信號的建立/保持時間。使用不同的觸發序列抓取不同命令的讀、寫波形即可完整測試讀、寫兩端的參數測試。
以上針對I2C和SD-card的測試需要用到示波器的 “I2C觸發”和“SPI觸發”方式,所以選擇一款具備該功能的示波器是必要的,鼎陽科技的SDS3000X系列示波器配置了豐富的觸發和解碼功能,在相關測試中得心應手。
四、結語
針對某一通訊接口的讀、寫分離,往往是開始電氣參數測試時的一個環節,因此掌握其方法尤為重要,可以這樣說:“如果沒有準確的進行讀、寫分離,測試結果本身是無效的。”本文主要講述了DDR、I2C、SD-card電氣參數測試中的讀、寫分離過程,選這幾個接口是因為它們都很常用而且有一定的代表性,希望通過本文可以使大家認識到該環節的重要性以及進行讀、寫分離的大體思路。
該文章來源于“鼎陽硬件設計與測試智庫”。