Vivado中BRAM IP核是經(jīng)常會(huì)用到的,而一種比較簡(jiǎn)便的給RAM賦初值的方式就是通過(guò)一個(gè)coe文件進(jìn)行加載,那么如何用matlab來(lái)產(chǎn)生這樣一個(gè)可直接使用的coe文件呢?
COE文件的通用格式
首先我們來(lái)了解下COE文件的通用格式:
COE文件是一種ASCII文本文件,文件頭部定義數(shù)據(jù)基數(shù)(Radix),可以是2,10或16。數(shù)據(jù)則以向量的形式給出,每個(gè)向量以分號(hào)結(jié)尾。Vivado會(huì)解析COE文件格式,并在生成IP核時(shí)導(dǎo)出相關(guān)的MIF格式文件,用于行為級(jí)仿真。
COE文件的通用語(yǔ)法格式如下:
Keyword =Value ; 注釋《Radix_Keyword》 =Value ; 注釋《Data_Keyword》 =Data_Value1, Data_Value2, Data_Value3;
COE語(yǔ)法不區(qū)分關(guān)鍵詞的大小寫;分號(hào)后為注釋。
與定義數(shù)據(jù)值的基數(shù)相關(guān)的關(guān)鍵詞:
Radix:用于非存儲(chǔ)類型IP核的基數(shù)定義;Memory_Initialization_Radix:定義存儲(chǔ)器初始化值的基數(shù)。
與數(shù)據(jù)值相關(guān)的關(guān)鍵詞:
CoefData:定義濾波器的系數(shù);Memory_Initialization_Vector:定義塊存儲(chǔ)器與分布式存儲(chǔ)器的數(shù)據(jù);Pattern:用于位相關(guān)器(Bit Correlator)COE文件;Branch_Length_Vector:用于Interleaver COE文件。
COE文件最后定義的關(guān)鍵詞必須是Coefdata或Memory_Initialization_Vector,之后的關(guān)鍵詞定義都會(huì)被忽略。
Block Memory COE
Memory_Initialization_Radix=10;Memory_Initialization_Vector=Data_Value1, Data_Value2, Data_Value3;
Matlab產(chǎn)生coe文件的代碼:
fid = fopen(‘Coe_File.coe’,‘w+’); fprintf(fid,‘Memory_Initialization_Radix = 10; ’); fprintf(fid,‘Memory_Initialization_Vector = ’); fprintf(fid,‘%g, ’,Data_Value(1:end-1)); fprintf(fid,‘%g; ’,Data_Value(end)); fclose(fid);
生成的MIF文件
COE文件提供了一種設(shè)置內(nèi)存初始化值的高層次方法,但實(shí)際上并不能直接使用。當(dāng)生成IP核時(shí),Vivado會(huì)將COE文件轉(zhuǎn)換為MIF文件。MIF文件保存了原始值,用于存儲(chǔ)類IP核的初始化和仿真模型。
MIF文件中每一行代表一個(gè)存儲(chǔ)位置,如第一行代表地址0,第二行代表地址1……每一行必須是初始化值(高位在前),與之相關(guān)的內(nèi)存地址為二進(jìn)制格式。在HDL仿真時(shí),MIF文件必須仿真仿真目錄下。使用Vivado Simulator仿真時(shí)Vivado會(huì)自動(dòng)完成相關(guān)操作。
最好將COE文件放在與使用此文件的IP核同目錄下(即與XCI文件同目錄),這樣在使用Core Cotainer打包IP核時(shí)也會(huì)將COE文件打包到XCIX文件中。當(dāng)替換COE文件時(shí),必須要?jiǎng)h掉舊的COE文件,否則也會(huì)傳遞到工程的綜合過(guò)程中;需要注意,如果只是在磁盤上刪掉了文件,而不是在工程中移除,會(huì)導(dǎo)致報(bào)告一個(gè)error。
編輯:jq
-
濾波器
+關(guān)注
關(guān)注
162文章
8207瀏覽量
184038 -
RAM
+關(guān)注
關(guān)注
8文章
1396瀏覽量
119251 -
IP
+關(guān)注
關(guān)注
5文章
1837瀏覽量
154316 -
代碼
+關(guān)注
關(guān)注
30文章
4922瀏覽量
72235
原文標(biāo)題:vivado | 如何生成BRAM初始值的coe文件?
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
如何確定電能質(zhì)量在線監(jiān)測(cè)裝置的初始報(bào)警閾值?
GraniStudio:初始化例程

請(qǐng)問(wèn)如何使用 PinConfigure 工具生成 GPIO 代碼文件和 OrCAD/Protel IC 組件?
Analog Devices / Maxim Integrated PD60-4H-1461-CoE單軸步進(jìn)電機(jī)數(shù)據(jù)手冊(cè)

基于FPGA搭建神經(jīng)網(wǎng)絡(luò)的步驟解析

STM32CubeMX用于STM32配置和初始化C代碼生成
ADS1298 CONFIG2讀取初始值不正常是什么原因引起的?
AFE5801到底怎么讀TGC registers寄存器組的值?
解鎖 EtherCAT-CoE:小米電機(jī)驅(qū)動(dòng)實(shí)戰(zhàn)

評(píng)論