微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > 微电子学习交流 > 请问怎么快速初始化rom?

请问怎么快速初始化rom?

时间:12-11 整理:3721RD 点击:
1. ise流程,xilinxII pro;
2. 用 core generater生成了rom的网表xxx.edn,生成的过程中用.coe文件作了初始化;
3. 然后把这个xxx.edn放在工程目录下(有我们设计的网表yyy.edf),跑implement和bitgen,生成了bit文件去下载。
问题是,现在的工作主要集中在调rom里面的数据,也就是生成xxx.edn文件的过程(一分钟就搞定),但是为了生成bit文件,不得不跑第三步,花将近一个小时的时间。
所以请问高手,怎么能快一点对rom的数据进行初始化,好像有一个data2mem的东东,不知道适用于这种情况不。

这个问题以前碰到过,搜到过一个详细的用法
1、 根据新的数据新建一个MEM文件,用写字板即可
MEM文件用于存储Block RAM中的数据,36bit数据宽度其格式如下:
@00000000
0007cec01
0007cec01
0007cec01
。。。。。。
其中的@00000000代表地址,与BMM文件中的[0x00000000:0x000003FF]部分对应,其余的部分为数据,数据得个数应与BMM文件中定义的个数相同,以16进制表示。
2、 在DOS窗口本地工程路径下使用命令xdl -ncd2xdl <design_name>.ncd产生的XDL文件中查到,该文件列出了程序中所有的实例名及位置信息,用记事本打开即可看到类似于如下的描述:
Inst"Cp_DataCombiner_1/Cp_prnu_cw_1/d_prnu_x0/d_prnu4_8061c40704/p_coef_8b49af19a2/k_b/comp0.core_instance0/B6""RAMB16",placed BMR36C3 RAMB16_X2Y1 ,
3、 按照程序中Block RAM的的实例名及位置新建一个BMM文件,其中Block RAM的的实例名和位置就是刚才XDL文件中描述的,
BMM文件的格式为:
ADDRESS_SPACE PRNU1 RAMB18 INDEX_ADDRESSING [0x00000000:0x000007FF]
BUS_BLOCK Cp_DataCombiner_1/Cp_prnu_cw_1/d_prnu_x0/d_prnu4_8061c40704/p_coef_8b49af19a2/k_b/comp0.core_instance0/B6 [35:0] PLACED = X2Y6;
。。。。。。
END_BUS_BLOCK;
END_ADDRESS_SPACE;
其中0x7FF=2048为所有存储单元总共需要的数据深度,这里面的模块顺序必须与MEM文件中写入的数据对应,PRNU1为自己取的名称;
4、 在命令提示符里执行data2mem -bm %1.bmm -bd %1.mem -bt %2.bit -o b new_%2.bit产生新的BIT文件
其中%1.bmm,%1.mem,就是刚才生成的文件,%2.bit为原始bit流文件,new_%2.bit为要新产生的bit流文件。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top