首页 > 其他 > 详细

lattice软核之:ROM的使用

时间:2015-11-17 12:23:44      阅读:893      评论:0      收藏:0      [点我收藏+]

 

=======================》》》》》

一、ROM核调用:==================》》》》》

=======================》》》》》

  技术分享

技术分享

 

 

=======================》》》》》

二、ROM表的生成:==================》》》》》

=======================》》》》》

查看内存使用手册,如图可以找到,我的是MachXO2系列芯片

技术分享

技术分享

在手册中查看.mem文件需要的格式

技术分享

技术分享

技术分享

技术分享

了解了文件数据格式,那么就需要编写数据了,数据可以自己计算来填写,比如编一个1024*8的正弦波表,但是手工麻烦

下面介绍下工具,我暂时没找到更好的工具,如果大家有更好的工具希望能告知。当然也可以用execl,matlab等实现。

技术分享

软件下载页面点此下载

使用方法

1、查看--全局参数里设置一下

技术分享

2、点设定波形--正弦波。就有了波形数据了

3、点保存,保存为mif文件。  此时保存的文件和.mem需要的内容格式不同,需要手动修改,打开文件如图

技术分享

在最后一行还有个END,记得删除

4、另保存为.mem格式(记事本似乎不可以竖列选,我用的是notepad++,其他高级编辑器也都可以)

5、回到IP核调用那块重新调用,把这个文件添加进去,选择hex文件格式的,生成

=======================》》》》》

三、ROM软核添加进工程:==================》》》》》

=======================》》》》》

1、打开工程目录,找到刚才省成的rom.v文件,拖放到diamond的source文件

技术分享

=======================》》》》》

四、rom核的使用:==================》》》》》

=======================》》》》》

我现在要写一个ROM直接接DAC输出正弦波的,则要考虑时序,查看手册

技术分享

技术分享

DAC的时序如下

技术分享

具体分析自己看,可以看出需要在时钟下降沿改变地址,上升沿时保持稳定

则代码如下

 1 /*--------------------------------------------------------------------------------------
 2 -- Filename ﹕ dac.v
 3 -- Author ﹕tony-ning
 4 -- Description ﹕DAC硬件测试  ,10M方波,AD9760
 5 -- Called by ﹕Top module
 6 -- Revision History ﹕15-10-16
 7 -- Revision 1.0
 8 -- Company ﹕ 
 9 -- Copyright(c)  All right reserved
10 ---------------------------------------------------------------------------------------*/
11 
12 
13 module dac
14 (
15     input CLK25, //输入25M时钟
16     output CLK_DA,//输出给DAC的100M时钟
17     output [9:0]date_out
18 );
19     
20 
21     
22     reg [9:0]count2;
23     
24     always @( negedge CLK)//地址累加,下降沿改变
25         begin
26             count2<=count2+2;//改变累加数字可改变输出频率
27         end
28 
29     assign CLK_DA=CLK;//时钟输出
30     
31     pll PLL100M//锁相环倍频
32     (
33         .CLKI(CLK25), 
34         .CLKOP(CLK)
35     );
36     
37     rom_sin sin//调用rom核,
38     (
39         .Address(count2), //地址
40         .OutClock(CLK), //时钟
41         .OutClockEn(1b1), //输出使能,高有效
42         .Reset(1b0), //复位,高有效
43         .Q(date_out)
44     );
45     
46 
47 endmodule

 

lattice软核之:ROM的使用

原文:http://www.cnblogs.com/tony-ning/p/4971053.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!