大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是串行NOR Flash的DQS信号功能。
串行NOR Flash在嵌入式裡的應用相當廣泛,既可用作資料存儲也可以用作代碼(XiP)存儲,串行NOR Flash種類很多,最早期有Standard SPI(一線),後來發展到QuadSPI(四線),到現在OctalSPI或者HyperBus SPI(八線),I/O管腳越來越多,資料吞吐率也越來越高。但到八線Flash的時候,你會發現多了一個特殊的控制信号DQS,DQS是Data Strobe Signal縮寫,中文直譯叫資料選通信号,這個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是不是一樣呢?有相同點也有不同點,咱們繼續往下看:
我們來看一款典型的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最大時間必須把資料更新完畢。
再來看一款典型的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最大時間必須把資料更新完畢。
至此,串行NOR Flash的DQS信号功能痞子衡便介紹完畢了,掌聲在哪裡~~~
文章會同時釋出到我的 部落格園首頁、CSDN首頁、知乎首頁、微信公衆号 平台上。
微信搜尋"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。
最後歡迎關注痞子衡個人微信公衆号【痞子衡嵌入式】,一個專注嵌入式技術的公衆号,跟着痞子衡一起玩轉嵌入式。
衡傑(痞子衡),目前就職于恩智浦MCU系統部門,擔任嵌入式系統應用工程師。
專欄内所有文章的轉載請注明出處:http://www.cnblogs.com/henjay724/
與痞子衡進一步交流或咨詢業務合作請發郵件至 [email protected]
可以關注痞子衡的Github首頁 https://github.com/JayHeng,有很多好玩的嵌入式項目。
關于專欄文章有任何疑問請直接在部落格下面留言,痞子衡會及時回複免費(劃重點)答疑。
痞子衡郵箱已被私信擠爆,技術問題不推薦私信,堅持私信請先掃碼付款(5元起步)再發。