• 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 ' , y_cos);

     fclose(fid);

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

     fprintf(fid, ' .0f ' , 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的仿真库,然后按照一般仿真过程就可以了

  • 相关阅读:
    Linux服务器下载与上传文件
    Java代码实现定时器
    windows elasticsearch使用ik分词器插件后启动报错java.security.AccessControlException: access denied ("java.io.FilePermission" "D:...........pluginsik-analyzerconfigIKAnalyzer.cfg.xml" "read")
    windows elasticsearch搭集群启动失败failed to send join request to master....
    Oracle使用命令行登录提示ERROR: ORA-01017: invalid username/password; logon denied
    nrm : 无法加载文件 C:UsersTANGAppDataRoaming pm rm.ps1,因为在此系统上禁止运行脚本。
    Go 语言环境安装
    Go语言简介
    http 请求头的Cookie中的 JSESSIONID 是什么?
    什么是锚点?锚点有什么作用?
  • 原文地址:https://www.cnblogs.com/agllero/p/4905085.html
Copyright © 2020-2023  润新知