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

字符型、指針型等變量該如何初始化
想要調(diào)用相機(jī)的初始化函數(shù)該如何操作
手機(jī)模塊初始化向?qū)?/a>
8253初始化程序分享_8253應(yīng)用案例

如何設(shè)置STM32單片機(jī)非初始化數(shù)據(jù)變量不被零初始化

在51平臺(tái)下初始化文件的引入導(dǎo)致全局變量無(wú)法初始化的問(wèn)題如何解決

霍爾無(wú)刷電機(jī)如何進(jìn)行程序初始化?
Nand Flash驅(qū)動(dòng)(實(shí)現(xiàn)初始化以及讀操作)

C語(yǔ)言編程時(shí),各種類(lèi)型的變量該如何初始化?
MCU單片機(jī)GPIO初始化該按什么順序配置?為什么初始化時(shí)有電平跳變?

評(píng)論