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

    文章

    8350

    浏览量

    184730
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1398

    浏览量

    119799
  • IP
    IP
    +关注

    关注

    5

    文章

    1849

    浏览量

    154892
  • 代码
    +关注

    关注

    30

    文章

    4940

    浏览量

    73116

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    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 574次阅读

    GraniStudio:初始化例程

    1.文件运行 导入工程 双击运行桌面GraniStudio.exe。 通过引导界面导入初始化例程,点击导入按钮。 打开初始化例程所在路径,选中初始化.gsp
    的头像 发表于 08-22 16:45 698次阅读
    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 577次阅读
    Analog Devices / Maxim Integrated PD60-4H-1461-<b class='flag-5'>CoE</b>单轴步进电机数据手册

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

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

    STM32CubeMX用于STM32配置和初始化C代码生成

    电子发烧友网站提供《STM32CubeMX用于STM32配置和初始化C代码生成.pdf》资料免费下载
    发表于 02-26 17:32 678次下载

    ADS1298 CONFIG2读取初始值不正常是什么原因引起的?

    你好,我从贵公司申请了几片ADS1298的芯片,使用后发现以下问题:1。芯片ID,CONFIG2读取初始值不正常2。前四个通道控制寄存器读写正常,后四个通道寄存器无法读写,请问是否出现过类似情况,望尽快回复,谢谢
    发表于 02-13 08:02

    AFE5801到底怎么读TGC registers寄存器组的

    大家好,请教你们AFE5801的一个问题。AFE5801在配置了SPI读使能之后,我读出的地址到底是general-purpose registers的还是TGC registers的?因为这两组寄存器的地址是重合的。到底
    发表于 02-11 07:54

    解锁 EtherCAT-CoE:小米电机驱动实战

    和数据交换。它结合了CANopen的易用性和EtherCAT的高性能优势,广泛用于工业自动化、运动控制和传感器网络等领域。以下是CoE的主要特点和功能:基于CANo
    的头像 发表于 01-20 18:34 2685次阅读
    解锁 EtherCAT-<b class='flag-5'>CoE</b>:小米电机驱动实战

    TLC5615芯片输出的初始值是不是为0?

    TLC5615芯片输出的初始值是不是为0,还有为什么我的5615芯片我给了数据进入要么就是输出的0V要么就是输出的4.8或者5V
    发表于 01-20 09:25

    ads1232重复上电AD初始值相差很大怎么解决?

    传感器,AD也成线性变化,测量没有问题,只是初始AD变大了。请问这是什么情况,怎么解决,在网上有看到遇到类似问题的,但是没看到解决办法。初始化有进行偏移校准,偏移校准去掉也是一样的,包括PWDN拉高前延时1ms也没效果。
    发表于 12-17 06:39

    ads124s08把AIN0端口接入的采集电压断开或者接通,芯片的寄存器所有配置都变成默认的初始值了,为什么?

    题是我把AIN0端口接入的采集电压断开或者接通,芯片的寄存器所有配置都变成默认的初始值了,整个芯片进行复位。我不知道这个是原因。下面是我的连接图。
    发表于 12-13 07:06

    AFE4404没有接外部时钟,4404寄存器的为初始值,能够通过IIC修改寄存器吗?

    1、首先AFE4404寄存器默认使用外部时钟,CLK引脚是否必须要先接一个时钟,通过修改寄存器的改为内部时钟,然后再停止外部时钟?? 2、假如没有接外部时钟,4404寄存器的为初始值,能够通过IIC修改寄存器? 3、通过I
    发表于 12-06 06:35