Xilinx 中Block ram的初始化文件.coe建立

http://www.eefocus.com/guozhiyang/blog/14-03/302479_5e3a4.html

1.在Matlab中生成正余弦波形的浮点值,并量化为16bit定点波形数值

另一种方法:

Xilinx的ROM的初始化是一件很麻烦的事情,要导入Coe文件。

Alteral是mif和hex文件,有专门的软件可以生成。

coe文件的格式如下:

MEMORY_INITIALIZATION_RADIX=10;

MEMORY_INITIALIZATION_VECTOR=

512,515,518,522,525,528,531,535,538,54

。。。。。。。。12,23;

注意:前面的2行不要动,RADIX后面的数字表示的是进制,这里取10进制。结尾用的是分号

在matlab中关键的步骤如下,我们以一个周期1000个采样,位数为10位的正弦表格为例子。

n=0:999 ;y=round(sin(2*pi*0.001*n)*512)+512;//后面加上512是为了防止出现负数

y=mod(y,1024);//因为是10位,所以,没有1024,对1024取余数,把1024转化成0

dlmwrite(‘b.txt‘,y);//dlmwrite函数是使得产生的数据之间是用逗号隔开的。

得到b.txt文件,用记事本打开,在最上面加上

MEMORY_INITIALIZATION_RADIX=10;

MEMORY_INITIALIZATION_VECTOR=

同时数据结尾用分号结尾

最后另存为,选择后缀为.coe,将文件导入到ROM以后,单击show,或者是显示初始数据的按钮(各个ISE不太一样),说明数据导入正确。

对于ROM模块,主要是生成相应的.coe文件。

% 生成 ROM 的 .coe文件

clc

clear all

close all

x = linspace(0, pi/2 ,1024);     % 在区间[0,2pi]之间等间隔地取1024个点

y_cos = cos(x);

y_sin = sin(x);

y_cos = y_cos * 2^16;

y_sin = y_sin * 2^16;

fid = fopen(‘D:/cos_coe.txt‘,‘wt‘);   fprintf(fid, ‘ .0f \n ‘ , y_cos);

fclose(fid);

fid = fopen(‘D:/sin_coe.txt‘,‘wt‘);

fprintf(fid, ‘ .0f \n ‘ , y_sin);

fclose(fid);

2.生成.coe文件。在D盘根目录下,将cos_coe.txt和sin_coe.txt的后缀改成.coe。打开文件,把每一行之间的空格用文本替换功能换成“,”(这可以通过强大的UltraEdit来实现!),并在最后一行添加一个分号“;”。最后,在文件的最开始添加下面两行:

memory_initialization_radix=10;

memory_initialization_vector=

然后,保存文件退出。

3.将coe文件加载到BLOCKROM所生成的ROM中。新建一个BLOCKROM的IP Core, 其位置为“Memories & Storage Elements---->RAMs & ROMs----->Block Memory Generator v2.4”。在第1页中选择“single port rom”,在第2页中选择位宽为16,深度为1024,在第3页下载coe文件,如下图,然后双击Finish,完成IP Core的生成。如果coe文件生成得不对,Browse前面的框中是显示红色的文件名,coe文件错误类型主要有数据基数不对和数据的长度不对两种。

MODELSIM下rom仿真。

利用Xilinx公司的芯片做FPGA开发的时候用到了ROM,肯定要对ROM做仿真,经过了一天的努力,总算可以做仿真了,现在把过程写出来,供大家参考一下。

1.首先需要编译XINLINX的库文件,常用有三个库xinlixcorelib,unisims,simprims,编译过程在上一个帖子中。

2.Modelsim不支持mif文件只支持HEX文件,这里需要对文件进行转换,下载DLL文件convert_hex2ver.dll下载地址为:

http://www.eccsdk.com/bbs/read.php?tid=1562&fpage=2

3.把Modelsim安装目录下的配置文件modelsim.ini文件中进行修改,把

List of dynamically loaded objects for Verilog PLI applications

; Veriuser = veriuser.sl

修改为

List of dynamically loaded objects for Verilog PLI applications

Veriuser = C:/Modeltech_6.1e/win32/convert_hex2ver.dll

其中 C:/Modeltech_6.1e/win32/convert_hex2ver.dll为dll文件的保存位置

4.把rom.v和rom.mif文件拷贝到同一个目录下,在仿真时首先需要加载XIlinx的仿真库,然后按照一般仿真过程就可以了

时间: 2024-12-29 23:05:29

Xilinx 中Block ram的初始化文件.coe建立的相关文章

FPGA基础知识3(xilinx CLB资源详解--slice、分布式RAM和Block ram)

来源:http://www.eefocus.com/b3574027/blog/15-05/312609_2e5ad.html 以下分析基于xilinx 7系列 CLB是xilinx基本逻辑单元,每个CLB包含两个slices,每个slices由4个(A,B,C,D)6输入LUT和8个寄存器组成. 同一CLB中的两片slices没有直接的线路连接,分属于两个不同的列.每列拥有独立的快速进位链资源. slice分为两种类型 SLICEL,  SLICEM .  SLICEL可用于产生逻辑,算术,R

FPGA内部RAM的初始化

Altera的RAM初始化文件格式是mif和hex. QuartusII自带的RAM初始化工具很方便产生初始化文件. Xilinx的RAM初始化文件格式是coe, 在vivado中软件会将coe文件变成mif 文件.Xilinx和Altera的mif文件格式并不相同.Xilinx的mif文件才是最终有效的初始化文件.可以用Memory Editor编辑工具产生coe文件,具体位置在Tools > Memory Editor.也可以在 $XILINX/coregen/data目录下发现参考文件.

iOS中Block的用法,举例,解析与底层原理(这可能是最详细的Block解析)

[摘要]这篇文章,首先在第1节中介绍Block的定义,以及与C里面函数的对比.然后,第2节介绍实际开发中经常会用到的Block语法形式,以供读者日后查阅.只知道怎么用却不知什么时候用?所以随后的第3节将介绍Block的应用场景.然而,用Block不当导致了Crash?所以,第4节有必要了解Block捕获变量的特性,以及循环引用的解决.另外,千万不要懒,一碰到Block就weak,要区分哪些不会引起循环引用.然而,如果对Block的内存机制不熟悉,也会导致Crash,所以第5节会介绍Block的内

linux启动过程中的几个重要文件的详解

/Linuxrc 执行init 进程初始化文件.主要工作是把已安装根文件系统中的/etc 挂载为ramfs,并拷贝/mnt/etc/目录下所有文件到/etc,这里存放系统启动后的许多特殊文件:接着Linuxrc 重新构建文件分配表inittab:之后执行系统初始化进程/sbin/init. Linuxrc #!/bin/sh echo "mount /etc as ramfs" /bin/mount -n -t ramfs ramfs /etc /bin/cp -a /mnt/etc/

Linux中.a,.la,.o,.so文件的意义和编程实现

Linux中.a,.la,.o,.so文件的意义和编程实现    Linux下文件的类型是不依赖于其后缀名的,但一般来讲:        .o,是目标文件,相当于windows中的.obj文件        .so 为共享库,是shared object,用于动态连接的,和dll差不多        .a为静态库,是好多个.o合在一起,用于静态连接        .la为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息.可以用如下命令查看*.la文件的格式   $file

[C++基础]一个比较常用的配置文件/初始化文件读取程序

在编程中,我们经常会遇到一些配置文件或初始化文件.这些文件通常后缀名为.ini或者.conf,可以直接用记事本打开.里面会存储一些程序参数,在程序中直接读取使用.例如,计算机与服务器通信,服务器的ip地址,段口号可以存储于ini文件中.这样如果我想换另外一台服务器时,直接将ini文件中的ip地址改变即可,程序源代码不需要做任何修改. 本文将分享一段常用代码,用于读取配置文件中的信息.本文中的代码为C语言编写,在ubuntu 12.04 linux系统中调试没有问题.具体操作如下: 1. 首先用记

.properties配置文件中的常量在其他文件中的引用

一.在其他xml配置文件中引用 在maven项目中scr/main/resource 中新建properties文件夹存放项目中各种环境下的配置文件 在配置文件中以键值对形式写好后,在spring配置文件中将配置文件初始化成Bean,让后就可以在其他xml文件中已${.....}形式引用 <!-- 初始化properties配置文件成bean--> <bean  id="configProperties" class="org.springframework

linux环境: shell初始化文件, for TCSH, CSH

TCSHELL, CSHELL 配置文件 全局配置文件 /etc/csh.cshrc个人配置文件 ~/.cshrc或~/.tcshrc 参考: 1.配置你的csh/tcsh,  https://wiki.freebsdchina.org/howto/c/config_your_csh 2.我的.cshrc常用设置 http://biancheng.dnbcw.info/bsd/260256.html 我使用csh,喜欢在.cshrc 中添加如下的内容:#给ls增加眼色,给目录名后面加上 '/'a

实现常用的配置文件/初始化文件读取的一个C程序

在编程中,我们经常会遇到一些配置文件或初始化文件.这些文件通常后缀名为.ini或者.conf,可以直接用记事本打开.里面会存储一些程序参数,在程序中直接读取使用.例如,计算机与服务器通信,服务器的ip地址,段口号可以存储于ini文件中.这样如果我想换另外一台服务器时,直接将ini文件中的ip地址改变即可,程序源代码不需要做任何修改. 本文将分享一段常用代码,用于读取配置文件中的信息.本文中的代码为C语言编写,在ubuntu 12.04 linux系统中调试没有问题.具体操作如下: 1. 首先用记