0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

FPGA之家 来源:成长助推 作者:成长助推 2021-06-07 11:52 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Vivado中BRAM IP核是经常会用到的,而一种比较简便的给RAM赋初值的方式就是通过一个coe文件进行加载,那么如何用matlab来产生这样一个可直接使用的coe文件呢?

COE文件的通用格式

首先我们来了解下COE文件的通用格式:

COE文件是一种ASCII文本文件,文件头部定义数据基数(Radix),可以是2,10或16。数据则以向量的形式给出,每个向量以分号结尾。Vivado会解析COE文件格式,并在生成IP核时导出相关的MIF格式文件,用于行为级仿真

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

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

COE语法不区分关键词的大小写;分号后为注释。

与定义数据值的基数相关的关键词:

Radix:用于非存储类型IP核的基数定义;Memory_Initialization_Radix:定义存储器初始化值的基数。

与数据值相关的关键词:

CoefData:定义滤波器的系数;Memory_Initialization_Vector:定义块存储器与分布式存储器的数据;Pattern:用于位相关器(Bit Correlator)COE文件;Branch_Length_Vector:用于Interleaver COE文件。

COE文件最后定义的关键词必须是Coefdata或Memory_Initialization_Vector,之后的关键词定义都会被忽略。

Block Memory COE

Memory_Initialization_Radix=10;Memory_Initialization_Vector=Data_Value1, Data_Value2, Data_Value3;

Matlab产生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文件提供了一种设置内存初始化值的高层次方法,但实际上并不能直接使用。当生成IP核时,Vivado会将COE文件转换为MIF文件。MIF文件保存了原始值,用于存储类IP核的初始化和仿真模型。

MIF文件中每一行代表一个存储位置,如第一行代表地址0,第二行代表地址1……每一行必须是初始化值(高位在前),与之相关的内存地址为二进制格式。在HDL仿真时,MIF文件必须仿真仿真目录下。使用Vivado Simulator仿真时Vivado会自动完成相关操作。

最好将COE文件放在与使用此文件的IP核同目录下(即与XCI文件同目录),这样在使用Core Cotainer打包IP核时也会将COE文件打包到XCIX文件中。当替换COE文件时,必须要删掉旧的COE文件,否则也会传递到工程的综合过程中;需要注意,如果只是在磁盘上删掉了文件,而不是在工程中移除,会导致报告一个error。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 滤波器
    +关注

    关注

    162

    文章

    8470

    浏览量

    186286
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1401

    浏览量

    121009
  • IP
    IP
    +关注

    关注

    5

    文章

    1883

    浏览量

    156718
  • 代码
    +关注

    关注

    30

    文章

    4976

    浏览量

    74384

原文标题:vivado | 如何生成BRAM初始值的coe文件?

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    关联使能VP时为何改变VP默认初始值?控件关联了使能VP变量,为何默认不是0?

    关联使能VP时为何改变VP默认初始值?控件关联了使能VP变量,为何默认不是0?
    发表于 02-03 14:19

    国民技术发布N32Cube芯片配置与初始化代码生成工具

    1月30日,国民技术(NSING)正式发布N32Cube——芯片配置与初始化代码生成工具,让时钟、引脚与外设的配置一目了然、轻松上手!
    的头像 发表于 02-02 15:26 894次阅读
    国民技术发布N32Cube芯片配置与<b class='flag-5'>初始</b>化代码<b class='flag-5'>生成</b>工具

    HLS设计中的BRAM使用优势

    高层次综合(HLS)是一种将高级编程语言(如C、C++或SystemC)转换为硬件描述语言(HDL)的设计方法。在FPGA设计中,设计者可以灵活地利用FPGA内部的资源,如块RAM(BRAM)。虽然
    的头像 发表于 01-28 14:36 419次阅读

    详细解释Keil-MDK中Code、RO-data、RW-data、ZI-data的含义

    初始值,程序运行的时候它们又会常驻在RAM区,应用程序可以修改其内容。例如C语言中定义的全局变量,且定义时赋予“非0”给该变量。 ZI-data:Zero Initialie data,即0初始化数据
    发表于 01-21 07:19

    智能显示模块怎么在显示工程中给寄存器设置初始值?我想给变量一个上电的默认该如何设置?

    智能显示模块怎么在显示工程中给寄存器设置初始值?我想给变量一个上电的默认该如何设置?
    发表于 12-11 09:54

    智能显示模块怎么在显示工程中给寄存器设置初始值?我想给变量一个上电的默认该如何设置?

    智能显示模块怎么在显示工程中给寄存器设置初始值?我想给变量一个上电的默认该如何设置?
    发表于 12-06 10:20

    Xilinx BRAM IP核配置及其例化

    width代表数据位宽,depth代表数据个数 操作模式建议选择写优先,一般只有使用coe初始化后不再写BRAM,才使用读优先 RAM内存空间的初始化可以通过装载.
    发表于 10-24 06:10

    如何在Vivado上仿真蜂鸟SOC,仿真NucleiStudio编译好的程序

    ram的IP就可以 2. 将机器指令初始化到ITCM的bank-ram-IP 生成的机器指令在这里 然后我们需要把它转化为coe文件 我们参考网上的相关代码,做了hex到
    发表于 10-21 11:08

    如何确定电能质量在线监测装置的初始报警阈值?

    确定电能质量在线监测装置的初始报警阈值,需遵循 “ 标准为基、负载为核、设备为限 ” 的原则,分 4 步完成,确保初始值既合规又贴合实际需求,避免后续频繁调整。以下是具体实操方法,附指标示例与场景
    的头像 发表于 10-10 16:57 1487次阅读

    使用env生成的keil文件好多文件找不到路径,为什么?

    使用env生成文件,使用了 scons —target=mdk5 —dist命令生成文件 但是用mdk打开后全是报错 请问大佬有遇到这种情况吗
    发表于 09-23 06:41

    GraniStudio:初始化例程

    1.文件运行 导入工程 双击运行桌面GraniStudio.exe。 通过引导界面导入初始化例程,点击导入按钮。 打开初始化例程所在路径,选中初始化.gsp
    的头像 发表于 08-22 16:45 1039次阅读
    GraniStudio:<b class='flag-5'>初始</b>化例程

    请问如何使用 PinConfigure 工具生成 GPIO 代码文件和 OrCAD/Protel IC 组件?

    的位置; 4. 点击生成代码,生成设置好的GPIO初始代码(.c文件); 5. 单击“运行 NuCAD”以生成 OrCAD/Protel I
    发表于 08-18 07:32

    Analog Devices / Maxim Integrated PD60-4H-1461-CoE单轴步进电机数据手册

    Analog Devices PD60-4H-1461-CoE单轴步进电机设计用作伺服驱动器,实现高达+48V电源电压和高达3Nm扭矩。PD60-4H-1461-CoE设有用于电机闭环操作的内置磁性
    的头像 发表于 06-12 15:10 992次阅读
    Analog Devices / Maxim Integrated PD60-4H-1461-<b class='flag-5'>CoE</b>单轴步进电机数据手册

    基于FPGA搭建神经网络的步骤解析

    文件是为了将其写入rom,网络中的权重和偏置通过读取ROM即可,后续需要修改输入其他特征,只需要修改input的rom里面的coe文件即可)。
    的头像 发表于 06-03 15:51 1506次阅读
    基于FPGA搭建神经网络的步骤解析

    PanDao:实际约束条件下成像系统的初始结构的生成

    摘要 :初始点的选择对后续设计过程具有重大影响。除透镜规格外,其它必要的实际约束条件也可能起到非常关键的作用。本研究采用“First Time Right”方法生成受约束的初始系统,并运用
    发表于 05-07 08:57