【lattice软核】ROM的使用
=======================》》》》》
一、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(1'b1), //输出使能,高有效 42 .Reset(1'b0), //复位,高有效 43 .Q(date_out) 44 ); 45 46 47 endmodule