痞子衡嵌入式:串列NOR Flash的DQS訊號功能簡介


  大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是串列NOR Flash的DQS訊號功能

  串列NOR Flash在嵌入式里的應用相當廣泛,既可用作數據存儲也可以用作程式碼(XiP)存儲,串列NOR Flash種類很多,最早期有Standard SPI(一線),後來發展到QuadSPI(四線),到現在OctalSPI或者HyperBus SPI(八線),I/O管腳越來越多,數據吞吐率也越來越高。但到八線Flash的時候,你會發現多了一個特殊的控制訊號DQS,DQS是Data Strobe Signal縮寫,中文直譯叫數據選通訊號,這個DQS訊號有什麼作用呢?今天痞子衡帶大家分析一下:

一、回顧DDR中DQS

  我們對DQS訊號更深的印象應該來源於DDR,DDR是DDR SDRAM的簡稱,其本身也是Double Data Rate(雙倍數據速率)的縮寫。從RAM分類來看,DDR是DRAM範疇內的重要組成,DDR已經發展到了第n代了。

  在DDR中,DQS訊號主要作用是用來在一個時鐘周期內準確的區分出每個數據傳輸周期,從而便於接收方準確接收數據。DQS訊號是雙向的,在寫入DDR時它用來傳送由主設備發來的DQS訊號,讀取DDR時則由DDR生成DQS向主設備發送,所以DQS其實就是數據的同步訊號。關於DQS以及DDR原理可以參看網上一篇很好的文章《DDR工作原理》

  那麼Flash上的DQS功能與DDR上DQS是不是一樣呢?有相同點也有不同點,咱們繼續往下看:

二、DQS之Octal Flash篇

  我們來看一款典型的Octal Flash,來自MXIC的MX25UM51345G。這款Flash包含DQS引腳(I/O屬性為輸出),從晶片數據手冊里找到跟DQS訊號相關的主要是下面這張輸出時序圖,DQS訊號僅在DTR模式(SCLK雙邊沿取樣)時生效,並且只在Flash輸出數據時起作用(主設備寫Flash時,DQS不起作用),即DQS訊號是Flash發出的用於通知讀取Flash的主設備SIO[7:0]數據線開始更新的標誌。

  讓我們結合AC特性表裡的Symbol再來進一步分析,SCLK訊號邊沿用於觸發Flash數據更新,但是SIO[7:0]數據線並不是在SCLK邊沿就立刻更新並且穩定的,這裡有一定的時延(tCHQV),在tCHQV時間內,Flash核心收到SCLK觸發訊號,開始準備數據,並陸續放到SIO[7:0]線上。由於tCHQV時間相對較長,主設備僅根據SCLK訊號邊沿不知道應該什麼時候去拿數據,因此誕生了DQS,DQS訊號邊沿標誌著SIO數據線開始更新,但是SIO[7:0]一共8根數據線,這8根數據線更新不是完全同步的,這就有一個硬性規定,即tDQSQ時間,各數據線SIO[x]在DQS訊號跳變開始後不得超過tDQSQ最大時間必須把數據更新完畢。

tCHQV - 從SCLK訊號跳變到SIO[7:0]輸出有效的時間
tQSV  - 從SCLK訊號跳變到DQS訊號跳變的時間
tDQSQ - 從DQS訊號跳變到SIO[7:0]輸出有效的時間
tQH   - SIO[7:0]輸出保持時間

三、DQS之Hyper Flash篇

  再來看一款典型的Hyper Flash,來自Cypress的S26KS512S。這款Flash包含RWDS引腳(I/O屬性為輸出),RWDS就是DQS訊號。與Octal Flash不同的是,Hyper Flash的時鐘訊號CK往往是差分的,差分訊號因為其補償糾正特性,使得時鐘跳變間隔比較穩定,因此數據傳輸從CK與CK#交叉點開始進行。Hyper Flash天然是DTR傳輸模式,RWDS作用與Octal Flash上的DQS是完全一致的。

  同樣結合AC特性表裡的Symbol來進一步分析,CK差分訊號跳變用於觸發Flash數據更新,在tCKD時間內,Flash核心收到CK觸發訊號,開始準備數據,並陸續放到DQ[7:0]線上。RWDS訊號邊沿標誌著DQ數據線開始更新,各數據線DQ[x]在RWDS訊號跳變開始後不得超過tDSS最大時間必須把數據更新完畢。

tCKD  - 從CK差分訊號跳變到DQ[7:0]輸出有效的時間
tCKDS - 從CK差分訊號跳變到RWDS訊號跳變的時間
tDSS  - 從RWDS訊號跳變到DQ[7:0]輸出有效的時間

  至此,串列NOR Flash的DQS訊號功能痞子衡便介紹完畢了,掌聲在哪裡~~~

歡迎訂閱

文章會同時發布到我的 部落格園主頁CSDN主頁知乎主頁微信公眾號 平台上。

微信搜索”痞子衡嵌入式“或者掃描下面二維碼,就可以在手機上第一時間看了哦。