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

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

    关注

    158

    文章

    7288

    浏览量

    174576
  • RAM
    RAM
    +关注

    关注

    7

    文章

    1307

    浏览量

    113644
  • IP
    IP
    +关注

    关注

    5

    文章

    1387

    浏览量

    148237
  • 代码
    +关注

    关注

    30

    文章

    4536

    浏览量

    66501

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

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

收藏 人收藏

    评论

    相关推荐

    TC275在内存分段预警处理之后,设置的全局变量初始值不正确怎么解决?

    大家好想问一下,tc275里,自己在地图文件里定义有了新的存档段,又设置了首地位置,段内对象可写,4字节对齐。但是在内存分段预警处理之后,设置的全局变量初始值不正确,板子上电后会给出一个随机,而不会是自己设定的
    发表于 01-22 06:40

    LTC2943在初始化的时候要如何确定Qlsb的初始值呢?

    最近公司在使用一款LTC2943的库仑计,但是在初始化的时候要如何确定Qlsb的初始值呢?或者可以提供一个STM32作为MCU的例程最好。
    发表于 01-04 06:47

    ADgerber文件怎么生成PCB

    生成ADGerber文件是将电路板设计转化为可供PCB加工厂制造的图像文件的过程。下面详细介绍关于如何生成ADGerber文件。 ADGer
    的头像 发表于 12-07 17:19 1184次阅读

    jvm配置堆内存初始值参数

    程序中,堆内存的初始值是非常重要的,它决定了程序在运行过程中能够使用的内存大小。因此,在优化JVM性能的过程中,对于堆内存初始值的合理配置是至关重要的。 首先,我们需要了解JVM中堆内存的基本概念
    的头像 发表于 12-05 14:17 260次阅读

    全局变量的初始值,是在哪里赋值的?

    data段data_ram的初始化内容就是从data_rom来,而data_rom是从__DATA_ROM来。 那么,__DATA_ROM是什么东西,从哪里呢? 搜一搜工程里面的代码,很简单,这是从ld文件
    发表于 10-27 10:18 289次阅读
    全局变量的<b class='flag-5'>初始值</b>,是在哪里赋值的?

    在MCU编程中局部变量赋初始值的重要性

    在MCU编程中局部变量赋初始值的重要性
    的头像 发表于 10-16 18:29 361次阅读
    在MCU编程中局部变量赋<b class='flag-5'>初始值</b>的重要性

    求助,磁力计测姿态角如何让偏航角初始值为0?

    磁力计测姿态角如何让偏航角初始值为0?
    发表于 10-16 08:20

    FPGA的BRAM资源使用优化策略

    FPGA的BRAM和LUT等资源都是有限的,在FPGA开发过程中,可能经常遇到BRAM或者LUT资源不够用的情况。
    的头像 发表于 08-30 16:12 973次阅读
    FPGA的<b class='flag-5'>BRAM</b>资源使用优化策略

    Vivado中BRAM IP的配置方式和使用技巧

    FPGA开发中使用频率非常高的两个IP就是FIFO和BRAM,上一篇文章中已经详细介绍了Vivado FIFO IP,今天我们来聊一聊BRAM IP。
    的头像 发表于 08-29 16:41 2683次阅读
    Vivado中<b class='flag-5'>BRAM</b> IP的配置方式和使用技巧

    在HMI设备上进行初始值采集和条件分析所涉及的工作原理是什么?

    按照定义的顺序执行 PLC 代码视图中的条件分析评估。本示例介绍了在 HMI 设备上进行初始值采集和条件分析所涉及的工作原理。
    的头像 发表于 08-21 09:47 436次阅读
    在HMI设备上进行<b class='flag-5'>初始值</b>采集和条件分析所涉及的工作原理是什么?

    FPGA设计中BRAM的知识科普

    FPGA设计中,BRAM是一项非常关键的内置存储资源,FPGA开发需要熟练使用BRAM,今天再复习一下BRAM的知识,包括BRAM的定义、组成、应用等等。
    发表于 08-15 15:44 1996次阅读
    FPGA设计中<b class='flag-5'>BRAM</b>的知识科普

    隐式初始化操作说明

    在Verilog和SystemVerilog中经常需要在使用变量或者线网之前,期望变量和线网有对应的初始值
    的头像 发表于 07-24 15:00 314次阅读
    隐式<b class='flag-5'>初始</b>化操作说明

    FPGA仿真必备—Matlab生成.mif/.txt/.coe文件

    .mif 和 .coe 是 FPGA 设计中常用的存储文件,用于 ROM、RAM 等存储器数据的加载,常见的还用在 DDS 信号发生器和 FIR 滤波器的设计中。
    发表于 06-21 15:18 3360次阅读
    FPGA仿真必备—Matlab<b class='flag-5'>生成</b>.mif/.txt/.<b class='flag-5'>coe</b><b class='flag-5'>文件</b>

    FLOEFD如何用稳态结果做瞬态计算的初始值呢?

    FLOEFD可以将稳态工况的计算结果作为瞬态工况的计算初始值
    的头像 发表于 05-17 16:13 1182次阅读
    FLOEFD如何用稳态结果做瞬态计算的<b class='flag-5'>初始值</b>呢?

    在SpinalHDL中如何将ROM的初始化放置在RTL文件中?

    在默认情况下,SpinalHDL在生成代码时会同时生成一个bin文件及一个RTL代码文件。在RTL代码中,会通过readmemb函数来载入初始
    的头像 发表于 04-01 15:27 530次阅读