?

一種基于FPGA 的eMMC 壽命驗證的方法

2024-03-20 04:31虞亞君王小龍邵春偉郝國峰沈小波
電子技術應用 2024年2期
關鍵詞:時鐘指令壽命

虞亞君,王小龍,2,邵春偉,2,郝國峰,2,沈小波,2

(1.無錫華普微電子有限公司,江蘇 無錫 214035;2.中科芯集成電路有限公司,江蘇 無錫 214072)

0 引言

eMMC(Embedded Multi Media Card)存儲顆粒以其尺寸小、速度高、易開發的特點[1],非常適合用作嵌入式數據存儲介質。用在機載記錄裝置時,實時記錄大量飛行圖像數據,待飛行結束后再將數據卸載回收,提供給相關機構進行研究。用在汽車駕駛輔助系統時,實時記錄視頻攝像頭、激光測距器等探測的環境數據,經過控制器運算,做出行駛路徑的預測與規劃[2]。雖然eMMC具備壞塊管理能力,但如果長時間高密度讀寫,會出現數據記錄出錯情況。在系統研發階段,需提前驗證其實際使用壽命,靠近壽損之前及時更換芯片,以確保數據記錄無誤。本文設計的eMMC 壽命驗證方法,使用FPGA 作為讀寫eMMC 的主控器,可同時驗證4 片eMMC 壽命,硬件結構簡單、通用性好、觀測性強。

1 eMMC 芯片的工作原理

本次驗證選用江波龍公司旗下的eMMC 芯片,型號為FEMDRW064G-88A19,存儲容量為64 GB。圖1 是eMMC 內部架構圖,主要由MMC 控制器和NAND Flash組成[3-4]。MMC 控制器包含了穩壓器、寄存器、核心邏輯塊等。穩壓器可選1.2 V、1.8 V 或3.3 V,寄存器模塊包含CID、CSD、ECSD 等,可讀取eMMC 芯片出廠信息和配置工作模式。核心邏輯塊完成對外eMMC 總線的數據交互,也完成對內NAND Flash 的功能控制。該控制器實現了接口協議管理、磨損均衡、壞塊管理與ECC錯誤糾錯功能,外部設備按照JEDEC 標準eMMC 5.1 協議規范對其控制,驅動eMMC 正常工作。

2 eMMC 壽命測試的FPGA 實現

本次設計同時驗證4 片eMMC 在High Speed DDR[5]工作模式下的讀寫壽命情況。FPGA 選擇Xilinx 公司的xc7a50tfgg484-1,該芯片采用28 nm 技術架構,系統級性能比上一代提升50%??赏ㄟ^Hardware Manager 調試界面,觀察eMMC 總線工作情況,讀寫次數及記錄查詢由監控軟件完成。

2.1 系統架構圖

測試環境采用軟硬結合的方法,如圖2 所示。在PC端編寫eMMC 監控軟件,用于配置并監控FPGA 驗證板的工作狀態。FPGA 驗證板掛載4 片eMMC 芯片,可在特定編程下同時運行,除常規時鐘、電源外,配置芯片BPI Flash(PC28F00AP30TFA)用來加載啟動程序[6],同時開辟部分緩存,用于保存上次掉電數據。

圖2 系統架構圖

2.2 eMMC 監控軟件

圖3 是基于PC 設計的eMMC 監控軟件,通過串口與FPGA 芯片通信,監控eMMC 芯片的讀寫情況[7]。先設置“測試條件”與“產品編號”,選擇“串口端號”,然后啟動“串口開關”。板卡上電后,先按下“eMMC 狀態查詢”,若eMMC 狀態查詢后的顏色條為綠色,則表示eMMC 初始化成功,否則失敗。下一步,在“設置讀寫次數”后面輸入循環讀寫次數,按下“設置讀寫次數”按鈕,顏色條顯示綠色,設置成功。按下“啟動測試”按鈕,開始測試。支持“暫停測試”或“繼續測試”。圖3 左下方顯示“當前上電啟動次數”“當前設置讀寫次數”“當前測試次數”等狀態?!爱斍皽y試結果”顯示綠色則結果正確,若顯示紅色則結果出錯。該軟件還支持“查詢總上電啟動次數”“查詢歷史上電記錄”,返回相應的“計劃測試次數”與“完成測試次數”,顏色條顯示測試結果。

圖3 eMMC 監控軟件

2.3 eMMC 壽命驗證邏輯設計

本節主要介紹FPGA 邏輯設計部分,包括時鐘切換模塊、初始化模塊、讀寫模塊,從原理到實現進行闡述。

2.3.1 時鐘切換模塊設計

根據eMMC5.1 協議規范,系統初始化模塊的主時鐘為250 kHz,High Speed DDR(雙倍率)工作模式下的主時鐘為50 MHz。如果使用簡單的兩路選擇器,在切換時鐘時,避免不了毛刺的產生,出現不可預期的錯誤,所以設計圖4 的防毛刺時鐘切換電路[8-9]。當SELECT 為0時,時鐘OUT_CLK 輸出為CLK_250K,否則輸出為CLK_50M。圖中兩路都使用了兩級D 觸發器,再經過與門和或門的運算操作,最終CLK_OUT 輸出將無毛刺。輸出波形見圖5,SELECT 的值拉低后,間隔兩個CLK_250K 周期,CLK_OUT 從250 kHz 變成50 MHz。

圖4 防毛刺時鐘切換電路

圖5 CLK_OUT 的輸出波形

2.3.2 初始化模塊設計

初始化模塊是針對eMMC 芯片上電后的的首要配置[10],是實現讀寫功能的前提,圖6 顯示配置過程。第一步軟件復位,FPGA 發送CMD0 指令<0x40_0000_0000_95>,無返回值。第二步查詢上電是否完成,重復發送CMD1 指令<0x41_40FF_8080_89>,直到返回值中busy(最高位)為1,則復位完成,停止發送。第三步發送CMD2 指令<0x 40_0000_0000_4d>,讀取CID 寄存器,識別產品標識碼信息。第四步分配相對地址,FPGA 發送CMD3 指令<0x 43_0123_0000_a3>,片選地址為0x0123。第五步讀取CSD 寄存器,發送CMD9 指令<0x49_0123_0000_2D>,讀取數據格式、存儲容量、數據傳輸速率等信息。第六步發送CMD7 指令<0x47_0123_0000_01>,用于選定第四步中分配的相對地址,選中設備。第七步至第九步都發送不同的CMD6 指令,第七步發送<0x46_0321_0100_cb>,設置CACHE_CTRL 為0x01,開啟高速緩存;第八步發送<0x46_03b9_0100_2F >,開啟High Speed 高速模式;第九步發送<0x46_03B7_0600_4F>,數據位寬設為8 bit、雙沿采樣。最后一步發送CMD13 指令<0x4d_0123_0000_8f >,驗證初始化操作的正確性。

圖6 初始化流程

2.3.3 讀寫模塊設計

本次設計的數據傳輸模式為雙倍率總線模式[11],格式如圖7 所示。數據幀的起始位為0,在時鐘CLK 上升沿有效,數據塊長度為塊長度的1/2,其中奇數數據在CLK上升沿有效,偶數數據在CLK 下降沿有效。數據塊之后附帶2 組CRC 校驗碼,分別保護數據塊中奇數和偶數數據,CLK 上升沿有效的是奇數數據校驗,下降沿有效的是偶數數據校驗。數據包的停止位在上升沿有效。

圖7 雙倍率數據傳輸格式

數據寫入模塊采用開放式多塊寫方式[12],傳輸數據塊數量不設限,比單塊寫方式節省更新新地址的時間損耗。狀態機如圖8 所示,發送CMD25 指令<0x5900_0000_0003>設置數據寫入首地址,等待Rsp 響應正確后,寫入512 字節的塊數據,然后等待DAT0 總線上的CRC 校驗結果,若正確,則返回010,然后發送其他塊數據;若錯誤,則返回101,在發送停止命令CMD12<0x4C00_0000_0061>后,本次傳輸結束,再重新發送當前塊數據。全部寫完數據塊后,也需要發送CMD12 來結束傳輸。

圖8 寫數據狀態機

數據讀出模塊采用開放式多塊讀方式,與圖8 寫數據狀態機類似。首先發送CMD18<0x5200_0000_00E1>設置數據首地址,在發送命令完畢后等待2 個時鐘,數據塊開始讀回,含尾部CRC 校驗碼。然后FPGA 進行CRC 解校驗,若校驗成功,則保存數據,否則發送CMD12,結束本次傳輸。

3 試驗分析

得益于eMMC 芯片獨有的Global-wear-leveling 全局磨損均衡算法,可以針對局部地址重復擦寫。所以將eMMC 分區,按實際使用60 GB 計算,分成60 等塊,選取1 GB 的塊區域進行操作。為嚴格驗證讀寫壽命,每次刷新都需要對每一個比特位進行0 和1 翻轉。先在塊區域里寫滿0x55,并讀出比較,返回值一致后,再刷新寫滿0xAA,再讀取比較是否一致,重復進行60 次,才遍歷讀寫完一次eMMC。參照eMMC 芯片手冊不低于3 000 次的讀寫壽命,所以監控軟件生成的“總累計讀寫次數”要不低于180 000 次,只要出錯一次,則壽命驗證結果失敗。表1 是在eMMC 監控軟件里隨機抽取的4 片eMMC測試記錄。其中抽取了1 號eMMC 的第23 次上電啟動次數,上電時間是2022/3/20/8:42,下電時間是2022/3/22/13:06,總時長為3 144 min,考慮中途有斷電情況,實際完成次數是3 008,測試結果為正常。

表1 抽取4 片eMMC 記錄數據

表2 統計4 片eMMC 的全部測完180 000 次的累計天數,可以看出完成180 000 次壽命測試,4 片eMMC 中累計天數最大是138.77 天,最低是136.34 天,相差2.43天,偏差合理。圖9 顯示4 片eMMC 讀寫速率,在第10 000 次的時候,eMMC2 的速度最大是35 MB/s,在第80 000 次的時候,速度最小是29 MB/s,其速率都在31 MB/s 左右,符合設定總線速度要求。結果為4 片eMMC 全部通過壽命驗證。

表2 統計4 片eMMC 累計讀寫天數

圖9 4 片eMMC 讀寫速率

4 結論

本文基于eMMC 芯片工作原理,深入研究了用FPGA實現eMMC 壽命測試的實現方法。針對eMMC 芯片單沿采樣速率慢的問題,研發了High Speed DDR 總線工作模式,實際測得最快讀寫均速達到31 MB/s。同時,經過長時間的疲勞測試,所選4 塊eMMC 芯片均能完成180 000次的塊讀寫,達到了手冊上的要求。此次設計的壽命測試系統結合了監測軟件的可配置性,結合FPGA 芯片獨有的多線并行操作,為同時控制4 片eMMC 讀寫帶來極大的可控性。按照實際項目需要,若選用市面上其他主流的eMMC 芯片,都能在此硬件架構下進行功能測試,體現了本設計的可擴展性高、通用性強的特點。

猜你喜歡
時鐘指令壽命
聽我指令:大催眠術
人類壽命極限應在120~150歲之間
別樣的“時鐘”
古代的時鐘
倉鼠的壽命知多少
ARINC661顯控指令快速驗證方法
馬烈光養生之悟 自靜其心延壽命
LED照明產品歐盟ErP指令要求解讀
人類正常壽命為175歲
有趣的時鐘
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合