spinor/spinand flash之高頻通訊延遲採樣

SPI協議

對於spinor和spinand flash,其通訊總線爲SPI總線。html

SPI有四種工做模式,對應不一樣的極性和相位組合3d

極性,通常表示爲CPOL(Clock POLarity),即SPI空閒時時鐘信號SCLK的電平(0:空閒爲低電平; 1:空閒爲高電平)htm

相位,通常表示爲CPHA(Clock PHAse),即SPI在SCLK第幾個邊沿開始採樣(0:第一個邊沿採樣; 1:第二個邊沿採樣)blog

四種模式爲:get

CPOL CPHA
mode0 0 0
mode1 0 1
mode2 1 0
mode3 1 1

SPI FLASH通訊

spinor和spinand,通常都支持mode0和mode3。即都是在降低沿送數據,上升沿採樣。flash

具體一點,在某次讀數據的時候,主控端發出一個降低沿,flash收到後,就把數據準備好送到spi總線上,在接下來的上升沿時,主控端就對SPI的數據線進行採樣,獲得這個bit的數據是0仍是1。it

接着主控端又送出降低沿,flash收到後又送出1bit的數據,供主控在下一個上升沿的時候讀取。table

高頻下的問題

上面描述的通訊過程,一個沿觸發送數據一個沿進行採樣,一來一往配合默契,看起來沒什麼問題。class

但其實這裏面隱含了一個要求,就是flash必須能跟得上節奏,須要在收到主控的降低沿以後,迅速準備好數據,在下一個上升沿到來以前送到總線上。不然主控在下一個上升沿採樣到的數據就是錯的了。pdf

這個在低頻的時候,是沒什麼問題的,例如在5M的clock下,降低沿到上升沿,時間大概是100ns,這個時間足夠flash準備好數據並送上總線了,輕輕鬆鬆。

但在更高的時鐘頻率下,flash就有壓力了,在100M的clock下,降低沿到上升沿,時間大概是5ns。若是是104M, 133M等,那時間就更短了。

在這種時鐘頻率下,flash來得及送數據嗎? 很遺憾,來不及,請看規格書

flash規格書標註的 Clock Low to Output Valid, 即從收到時鐘降低沿到送出的數據有效,這個耗時就已經超過5ns了。

多找兩家看看

看起來都差很少,100M下面,誰也知足不了這個5ns的時間要求。

如何解決

那既然flash沒法準時送出數據,那主控在下一個上升沿就必然採樣不到正確的數據了,怎麼辦?下降時鐘頻率嗎

下降時鐘頻率固然能夠解決問題,但還有另外的辦法,那就是延遲採樣。

主控知道在高頻下,flash沒法及時送出數據來,那不要緊,我就晚一點再採樣,等flash的數據到位以後再採樣便可。

例若有些主控的SPI控制器能夠配置,延遲半個週期採樣或延遲一個週期採樣,在100M的clock下,一個週期10ns。

那麼不延遲的話,flash只有5ns的時間能夠準備數據以及送數據,若是延遲半個週期採樣,則有10ns,延遲1個週期,則有15ns。

具體應該延遲多少,就得看實際狀況了,由於咱們剛剛只關注了flash標註的 Clock Low to Output Valid 的值,其實實際的延遲,還會受其餘因素影響,例如從主控發出降低沿,到flash實際收到降低沿的延遲。flash發出數據,到主控實際能採樣到數據的延遲,若是走線較長的話,這些也是不可忽略的。

例如這篇文章https://www.byteparadigm.com/files/documents/Using-SPI-Protocol-at-100MHz.pdf 的舉例,就算上了信號傳播的延遲,從裏面截一張圖你們看下,更多信息能夠看原文,就不搬運了

本文連接,http://www.javashuo.com/article/p-bbusdzvt-bw.html

相關文章
相關標籤/搜索