nor flash之頻率限制


背景

支持一款nor flash時,出於性能考慮,一般會查看其nor支持的最高頻率以及主控端spi控制器的最高頻率,以選擇一個合適的運行頻率。

對於一款主控支持多款flash的情況,還得考慮好兼容性等問題。

主控端的最高頻率,可以查看主控的規格書,本文主要說下nor的頻率限制。

讓我們帶着問題出發,假設我們的主控端最高spi clk為100M,那該怎么識別nor的限制,驅動又可以怎么處理?

正確識別頻率限制

讓我們打開nor的規格書,搜索 "freq", 很容易看到104M, 133M之類的字樣 。

如圖是幾款flash的規格書截圖

winbond: w15q128
winbond

mxic: mx15l128
mxic

gd: gd25q127
gd

看到這個結果是不是很開心,看起來這些flash都可以跑100M以上。那我的主控端的控制器本身最高就100M,就直接把spi clk配置成100M就可以了唄。

是這樣嗎?不是!

其實flash的這個頻率是有例外情況的。規格書中會具體說明。下面以mxic為例截圖說明

比如對於READ命令,其頻率限制是fR

FAST READ命令,其頻率限制是fC

DUAL READ,其頻率限制是fT

QUAD READ, 其頻率限制是fQ

fR,fC,fT, fQ 分別是多少呢?規格書中也會給出一個表

從表中可以看出,原來最普通,看起來最穩的READ命令,其實是最特殊的一個。除了READ之外的所有命令,都能支持133M。而READ只能支持可憐的50M。

看來我應該把標題取成 “震驚,nor flash最慢的一條命令竟然是...”

那下面的fT和fQ標注的84M又是什么意思?不是說都支持133M嗎,怎么又冒出來一個84M

原來雙線和四線操作,要支持133M也是有條件的,需要插入dummy。也就是在關鍵時刻,加點空的操作,這樣才能在高頻率的clk下工作。

那加多少dummy合適呢,這也是明碼標價童叟無欺的,直接看規格書中的表格。

解決手段

我們最開始的假定是,主控可以跑100M,那讓主控跑100M的話,這些頻率限制怎么解決呢?

從表格可以看出,假設主控端clk跑到100M,那么驅動里面插入8個dummy就可以使得雙線四線都達到104M。

那READ只支持50M,怎么辦?這個其實很好解決,既然知道READ的這個限制,那么不用它就是了。

基本nor flash都提供了雙線,四線操作,驅動中應該盡量支持起來,提高性能。退一步講即使不支持雙線四線,我們還有FAST_READ命令可以用,這個是支持100M以上的。

READ並不孤單

那么看來不用READ,我們就可以在100M的頻率下愉快地玩耍了是嗎? 很遺憾,不是的。

多看幾款規格書,我們就可以發現,READ並不孤單,有些nor flash,不止READ跑不到100M,讀ID之類的命令也跑不到100M。

如果說READ還可以改用其他命令,那么READ ID對於兼容多款nor來說,基本是繞不過去的了。

怎么解決呢 ?穩定起見,驅動中只能先用低頻去讀出ID,再用高頻做正常讀寫。當然如果不是量產項目,那么直接使用100M也可能是可以讀出來的。

實測數據

目前實測到各家的這個頻率限制其實是有裕量的。

規格書限制為80M的READ,實測在100M下可正常工作。

規格書限制為50M的READ,實測在75M下可正常工作,在100M下則概率性可正常工作。

規格書限制為80M的READ ID,實測在100M下可正常工作。

但以上只是在少量樣片上測試的結果,實際上超出了規格書的限制范圍肯定是有風險的。

真正量產的話說不定就有邊界IC會出問題,所以最好還是認真讀規格書,正確認識頻率限制,並提前在驅動中做好處理。

本文地址: https://www.cnblogs.com/zqb-all/p/12115303.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM