spatan6的EMMC DDR3控制器 EMMC驅動開發

1.背景與介紹
最近通過spatan6管理一片EMMC存儲芯片,採用的是純邏輯語言管理EMMC芯片,EMMC採用的是JEDCE發佈的emmc 5.1版本的協議,但是由於EMMC的存儲的速度有限,固在設計的前端加了一片DDR3控制器,本篇博客不介紹EMMC的設計,主要分享一下Spatan6的xilinx自帶的IP核MCB在設計實際的工程中遇到的問題。
2.問題及解決思路
第一次使用S6 的DDR3控制器
在這裏插入圖片描述
由於我個人需要同時利用DDR3緩存4種用戶數據,所以我採用的是4之路32bit的模式,我的設計思路是採用利用狀態機輪詢機制,就是實時的掃描每個之路數據通路的FIFO裏的數據,然後考慮是否啓動DDR3的存儲操作。部分代碼如下圖所示:
在這裏插入圖片描述
實際使用過程中發現,發現wr_conuter更新太慢,發現如果輪詢時間太短的時候,雖然啓動了DDR3的一次讀寫,但是前端FIFO裏的wr_conuter沒有及時更新,這樣就導致,FIFO裏沒那麼多數據,從而導致p0_wr_underrun置1,導致數據讀寫錯誤,本人採用的思路就是講每次啓動 的突發長度設置大一點,我本次設計是設計的每次是16的長度,也即16*32的數據量,這樣做的目的就是一方面留出足夠的時間使得FIFO的狀態更新完成,另外一方面也是保證讀寫帶寬,要是每次操作的突發長度太低,那麼整個讀寫的速度就回很差。
3.結論
感覺S6的控制器相比7系列的IP接口上簡單,但是帶來的效果就是效率嚴重下降,當然主控芯片本身就差距比較大,好在EMMC後端的存儲速度本身就是100M以下的,所以基本滿足本次需求。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章