大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是序列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主頁、知乎主頁、微信公眾號 平臺上。
微信搜尋"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。