当前位置:   article > 正文

Xilinx的ROM的IP核使用(以vivado为例)_如何对ip核例化

如何对ip核例化

        利用 ROM可以进行DDS(直接频率合成),也可以产生需要的信号,可以存入低频率的正弦波形文件,然后通过改变频率控制字来改变输出频率。

        以产生线性调频信号为例,把线性调频信号存入ROM中,然后周期性产生线性调频信号。

        这里主要是说明一下ROM的用法,实际产生线性调频信号是通过存正弦波形,然后控制频率控制字来实现。


ROM IP核的配置:

首先添加ROM IP核,如下所示,找到Block Memory Generator,双击打开 

然后后修改IP核的名字,将存储器的类型改为"Single Port ROM"

         配置数据的位宽和数据的深度,数据的位宽是存储数据的定点数有多少个比特表示,深度是数据的数量。使能类型改为"Always Enabled"

        接下来就导入存储波形数据coe文件,选中"Load lnit File" ,然后导入coe文件。至于coe文件的产生可以 参考这篇文章。

用matlab产生FPGA(Xilinx)下产生ROM所需数据的.coe文件icon-default.png?t=M276https://blog.csdn.net/QUACK_G/article/details/124132014?spm=1001.2014.3001.5502

 下面是对配置的总结,首先是资源利用,然后是延迟时间,延迟了两个时钟,最后表示用了8根地址线。

 

导入coe文件成功后就可以点击OK,产生ip核。 

 IP核的例化

在IP Sources中可以看到生成的IP核,打开.veo文件

 在打开的.veo文件的最下方可以看到IP核的例化例子,可以按照这个例子来进行例化IP核

 

         然后按照上述的例子进行例化IP核,这里的数据位宽为14位,深度为256。

  1. module lfm_i_out(
  2. input clk,
  3. input reset, //高电平复位
  4. output [13:0] singal_out
  5. );
  6. reg [7:0] addr=0; //rom 数据地址
  7. always@ (posedge clk )
  8. begin
  9. if (reset)
  10. addr <= 0; //复位地址清零
  11. else
  12. addr <= addr + 1; //地址自增
  13. end
  14. lmf_i your_lmf_i (
  15. .clka(clk), // input wire clka
  16. .addra(addr), // input wire [7 : 0] addra
  17. .douta(singal_out) // output wire [13 : 0] douta
  18. );
  19. endmodule

进行仿真后,得到如下的仿真图,周期性产生线性调频信号。

同时与ROM内的数据比较可以看出,数据延时了两个时钟产生,

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/464968
推荐阅读
相关标签
  

闽ICP备14008679号