RAM的初始化并沒有那么神秘,如果是采用Xilinx的IP Core,只需提供一個.coe文件,其內容就是RAM的初始值,只需要注意coe文件的格式就好,這里就不再贅述。
初始化方法
如果是自己寫的RTL代碼,如何初始化呢?這里提供兩個常用方法。來看一個例子,如下圖所示。
代碼第16行,通過default將所有地址的初始值設置為0;
代碼第17行,通過索引結合default的方式,將地址0的初始值設置為4,地址1的初始值設置為5,其余地址的初始值設置為0;
代碼第19行至第25行,采用initial語句,通過調用readmemb(類似的還有readmemh)實現對RAM的初始化。使用$readmemb時,需要提供一個.mem文件,文件內容就是RAM的初始值,這里給出一個.mem的例子,如下圖所示。
仿真問題
使用$readmemb時,需要把.mem文件加入到Vivado工程中,如下圖所示。
如果沒有添加此文件,會顯示如下Warning信息。
綜合問題
無論是default還是readmemb定義的初始值,在綜合時都是可以生效的。對于一個深度為4寬度為4的單端口RAM,綜合后的網表如下圖所示。
通過如下圖所示的Tcl命令可獲得相應的初始值,與init_data.mem中定義的初始值是一致的。
結論
兩種RAM初始化的方式:
采用default或地址索引加default的方式;采用$readmemb或$readmemh的方式
-
RAM
+關注
關注
8文章
1384瀏覽量
116202 -
初始化
+關注
關注
0文章
50瀏覽量
12023
原文標題:對RAM初始化怎么做
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
RT-Thread自動初始化詳解

字符型、指針型等變量該如何初始化
想要調用相機的初始化函數該如何操作
手機模塊初始化向導
8253初始化程序分享_8253應用案例

如何設置STM32單片機非初始化數據變量不被零初始化

在51平臺下初始化文件的引入導致全局變量無法初始化的問題如何解決

霍爾無刷電機如何進行程序初始化?
C語言編程時,各種類型的變量該如何初始化?
MCU單片機GPIO初始化該按什么順序配置?為什么初始化時有電平跳變?

評論