各種類型的Memory在FPGA設(shè)計(jì)中被廣泛使用,例如單端口RAM、簡單雙端口RAM、真雙端口RAM、單端口ROM以及雙端口ROM。這些RAM或ROM都可通過coe文件的形式定義其初始值。那么可能在實(shí)際應(yīng)用中會出現(xiàn)這樣一種情形:設(shè)計(jì)的其他部分未做任何改動,只是更新RAM初始值。那么該如何操作更為方便呢?
如果采用傳統(tǒng)方式,先定義好coe文件,然后重新生成IP,這樣就必須重新執(zhí)行整個(gè)設(shè)計(jì)流程包括綜合、布局布線,編譯時(shí)間可想而知。但換個(gè)角度,細(xì)細(xì)分析一下,只是初始值改動,那么能否通過ECO(Engineering Change Order)的方式實(shí)現(xiàn)呢,就像更改觸發(fā)器初始值或者查找表的真值表內(nèi)容一樣?答案是肯定的。這樣做好處也是顯而易見的:無需重新布局布線,只需更改RAM相關(guān)屬性,然后再次生成.dcp(這個(gè)不是必須的),最后生成.bit或.bin文件,這樣最大程度地繼承了原有設(shè)計(jì),也最大程度地縮短了編譯時(shí)間。采用此方法的前提是RAM的規(guī)格要保持不變,這里的規(guī)格包括數(shù)據(jù)位寬和RAM深度。
這里我們以Block RAM為例,先看看有哪些屬性與初始值密切相關(guān),如下圖所示。基本上凡是以INIT打頭的屬性都與初始值相關(guān)。更新初始值本質(zhì)上就是重新設(shè)定這些初始值。這些初始值是在IP生成階段根據(jù)coe內(nèi)容被設(shè)定的。

第一步,根據(jù)更新后的coe文件生成一個(gè)同規(guī)格的IP,并對該IP執(zhí)行OOC綜合。
第二步,打開第一步生成的.dcp文件,找到相應(yīng)的Block RAM,獲取上文提到的這些屬性對應(yīng)的屬性值。
原文標(biāo)題:ECO方式更新RAM/ROM初始值
文章出處:【微信公眾號:Lauren的FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
責(zé)任編輯:haq
-
FPGA
+關(guān)注
關(guān)注
1660文章
22411瀏覽量
636271 -
ROM
+關(guān)注
關(guān)注
4文章
579瀏覽量
89068 -
RAM
+關(guān)注
關(guān)注
8文章
1399瀏覽量
120550
原文標(biāo)題:ECO方式更新RAM/ROM初始值
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
關(guān)聯(lián)使能VP時(shí)為何改變VP默認(rèn)初始值?控件關(guān)聯(lián)了使能VP變量,為何默認(rèn)值不是0?
詳細(xì)解釋Keil-MDK中Code、RO-data、RW-data、ZI-data的含義
怎么把顯示工程下載到智能顯示模塊中?模塊有沒有其他更新方式,方便我們量產(chǎn)更新工程的?
單片機(jī)里的程序運(yùn)行方式
奇捷科技EasyAI ECO Suite即將發(fā)布
智能顯示模塊怎么在顯示工程中給寄存器設(shè)置初始值?我想給變量一個(gè)上電的默認(rèn)值該如何設(shè)置?
智能顯示模塊怎么在顯示工程中給寄存器設(shè)置初始值?我想給變量一個(gè)上電的默認(rèn)值該如何設(shè)置?
使用J-Link Attach NXP S32K3導(dǎo)致對應(yīng)RAM區(qū)域被初始化成0xDEADBEEF
如何操作ECO方式更新RAM/ROM初始值更方便?
評論