0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

教你們怎么生成BRAM初始值的coe文件

FPGA之家 ? 來源:成長助推 ? 作者:成長助推 ? 2021-06-07 11:52 ? 次閱讀

Vivado中BRAM IP核是經(jīng)常會用到的,而一種比較簡便的給RAM賦初值的方式就是通過一個coe文件進(jìn)行加載,那么如何用matlab來產(chǎn)生這樣一個可直接使用的coe文件呢?

COE文件的通用格式

首先我們來了解下COE文件的通用格式:

COE文件是一種ASCII文本文件,文件頭部定義數(shù)據(jù)基數(shù)(Radix),可以是2,10或16。數(shù)據(jù)則以向量的形式給出,每個向量以分號結(jié)尾。Vivado會解析COE文件格式,并在生成IP核時導(dǎo)出相關(guān)的MIF格式文件,用于行為級仿真。

COE文件的通用語法格式如下:

Keyword =Value ; 注釋《Radix_Keyword》 =Value ; 注釋《Data_Keyword》 =Data_Value1, Data_Value2, Data_Value3;

COE語法不區(qū)分關(guān)鍵詞的大小寫;分號后為注釋。

與定義數(shù)據(jù)值的基數(shù)相關(guān)的關(guān)鍵詞:

Radix:用于非存儲類型IP核的基數(shù)定義;Memory_Initialization_Radix:定義存儲器初始化值的基數(shù)。

與數(shù)據(jù)值相關(guān)的關(guān)鍵詞:

CoefData:定義濾波器的系數(shù);Memory_Initialization_Vector:定義塊存儲器與分布式存儲器的數(shù)據(jù);Pattern:用于位相關(guān)器(Bit Correlator)COE文件;Branch_Length_Vector:用于Interleaver COE文件。

COE文件最后定義的關(guān)鍵詞必須是Coefdata或Memory_Initialization_Vector,之后的關(guān)鍵詞定義都會被忽略。

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)存初始化值的高層次方法,但實際上并不能直接使用。當(dāng)生成IP核時,Vivado會將COE文件轉(zhuǎn)換為MIF文件。MIF文件保存了原始值,用于存儲類IP核的初始化和仿真模型。

MIF文件中每一行代表一個存儲位置,如第一行代表地址0,第二行代表地址1……每一行必須是初始化值(高位在前),與之相關(guān)的內(nèi)存地址為二進(jìn)制格式。在HDL仿真時,MIF文件必須仿真仿真目錄下。使用Vivado Simulator仿真時Vivado會自動完成相關(guān)操作。

最好將COE文件放在與使用此文件的IP核同目錄下(即與XCI文件同目錄),這樣在使用Core Cotainer打包IP核時也會將COE文件打包到XCIX文件中。當(dāng)替換COE文件時,必須要刪掉舊的COE文件,否則也會傳遞到工程的綜合過程中;需要注意,如果只是在磁盤上刪掉了文件,而不是在工程中移除,會導(dǎo)致報告一個error。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 濾波器
    +關(guān)注

    關(guān)注

    158

    文章

    7596

    瀏覽量

    176600
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1344

    瀏覽量

    114217
  • IP
    IP
    +關(guān)注

    關(guān)注

    5

    文章

    1541

    瀏覽量

    148924
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4671

    瀏覽量

    67770

原文標(biāo)題:vivado | 如何生成BRAM初始值的coe文件?

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    copy table中存放的是否為初始值不為0的data段所在PFlash的地址信息?

    1. copy table中存放的是否為初始值不為0的data段所在PFlash的地址信息?(比如:int a = 10; 變量a被存放到了PFlash的0x8030001c處,copy table
    發(fā)表于 07-02 07:51

    HAL庫時鐘定義初始值錯誤怎么解決?

    在DriversCMSISDeviceSTSTM32F4xxSourceTemplatessystem_stm32f4xx.c文件中 第140行這個,是用MX 生成的代碼
    發(fā)表于 05-14 07:58

    Allegro生成光繪文件

    Allegro生成光繪文件
    發(fā)表于 05-06 10:37 ?1次下載

    TC275在內(nèi)存分段預(yù)警處理之后,設(shè)置的全局變量初始值不正確怎么解決?

    大家好想問一下,tc275里,自己在地圖文件里定義有了新的存檔段,又設(shè)置了首地位置,段內(nèi)對象可寫,4字節(jié)對齊。但是在內(nèi)存分段預(yù)警處理之后,設(shè)置的全局變量初始值不正確,板子上電后會給出一個隨機(jī),而不會是自己設(shè)定的
    發(fā)表于 01-22 06:40

    LTC2943在初始化的時候要如何確定Qlsb的初始值呢?

    最近公司在使用一款LTC2943的庫侖計,但是在初始化的時候要如何確定Qlsb的初始值呢?或者可以提供一個STM32作為MCU的例程最好。
    發(fā)表于 01-04 06:47

    labview生成exe文件如何配置文件

    LabVIEW是一種用于實時測試、控制和數(shù)據(jù)采集的編程環(huán)境。在開發(fā)過程中,您可以使用LabVIEW軟件生成可執(zhí)行文件(.exe),以便在沒有LabVIEW開發(fā)環(huán)境的計算機(jī)上運行您的應(yīng)用程序。生成
    的頭像 發(fā)表于 12-27 16:28 ?1694次閱讀

    keil如何生成bin文件

    Keil是一種集成開發(fā)環(huán)境(IDE),專為ARM架構(gòu)的嵌入式系統(tǒng)開發(fā)而設(shè)計。在Keil中生成bin文件是將代碼編譯并轉(zhuǎn)換為可執(zhí)行文件的過程。本文將詳細(xì)介紹Keil生成bin
    的頭像 發(fā)表于 12-15 13:43 ?9735次閱讀

    ADgerber文件怎么生成PCB

    生成ADGerber文件是將電路板設(shè)計轉(zhuǎn)化為可供PCB加工廠制造的圖像文件的過程。下面詳細(xì)介紹關(guān)于如何生成ADGerber文件。 ADGer
    的頭像 發(fā)表于 12-07 17:19 ?2721次閱讀

    C語言編程時,各種類型的變量該如何初始化?

    C語言編程時,各種類型的變量該如何初始化? 在C語言中,每個變量都需要在使用之前進(jìn)行初始化。初始化是為變量分配內(nèi)存空間并賦予初始值的過程。C語言提供了不同的
    的頭像 發(fā)表于 12-07 13:53 ?940次閱讀

    FPGA實現(xiàn)基于Vivado的BRAM IP核的使用

    Xilinx公司的FPGA中有著很多的有用且對整個工程很有益處的IP核,比如數(shù)學(xué)類的IP核,數(shù)字信號處理使用的IP核,以及存儲類的IP核,本篇文章主要介紹BRAM IP核的使用。 BRAM是FPGA
    的頭像 發(fā)表于 12-05 15:05 ?1257次閱讀

    jvm配置堆內(nèi)存初始值參數(shù)

    程序中,堆內(nèi)存的初始值是非常重要的,它決定了程序在運行過程中能夠使用的內(nèi)存大小。因此,在優(yōu)化JVM性能的過程中,對于堆內(nèi)存初始值的合理配置是至關(guān)重要的。 首先,我們需要了解JVM中堆內(nèi)存的基本概念。堆
    的頭像 發(fā)表于 12-05 14:17 ?631次閱讀

    全局變量的初始值,是在哪里賦值的?

    data段data_ram的初始化內(nèi)容就是從data_rom來,而data_rom是從__DATA_ROM來。 那么,__DATA_ROM是什么東西,從哪里呢? 搜一搜工程里面的代碼,很簡單,這是從ld文件
    發(fā)表于 10-27 10:18 ?694次閱讀
    全局變量的<b class='flag-5'>初始值</b>,是在哪里賦值的?

    嵌入式全局變量的初始化原理詳解

    全局變量的初始值,是在哪里賦值的?
    的頭像 發(fā)表于 10-27 10:15 ?973次閱讀
    嵌入式全局變量的<b class='flag-5'>初始</b>化原理詳解

    在MCU編程中局部變量賦初始值的重要性

    在MCU編程中局部變量賦初始值的重要性
    的頭像 發(fā)表于 10-16 18:29 ?616次閱讀
    在MCU編程中局部變量賦<b class='flag-5'>初始值</b>的重要性

    求助,磁力計測姿態(tài)角如何讓偏航角初始值為0?

    磁力計測姿態(tài)角如何讓偏航角初始值為0?
    發(fā)表于 10-16 08:20