1、首先利用matlab 生产MIF文件,在matlab新建一个M文件,输入以下代码:
***********************************************************
x=0:1:1023;
y=round(100*sin(2*pi*x/1024))+100;
a=[x;y];
fid=fopen('sin.mif','w');
fprintf(fid,'%d : %d;\n',a);
fclose(fid);
********************************************************************
保存后运行就会生存一个sin.mif文件,在文件前面加上以下代码:
*******************************************************************
WIDTH=8;
DEPTH=1024;
ADDRESS_RADIX=UNS;
DATA_RADIX=UNS;
CONTENT BEGIN
**********************************************************************
后面加上:
*********************************************************************
END;
***********************************************************************
将文件sin.mif拷贝在工程文件夹里面即可。
2、在Quartus II中点击MegaWizard添加ROM:
总线设为8位,地址为10位,即深度1024words
添加sin.mif文件
3、给ROM写一个驱动
*****************************************************************************************
module sine (
input clk, //50MHz
input reset,
output reg[9:0] address,
output reg clk_p);
reg[7:0] data;
reg[8:0] cnt;
always @(posedge clk)
begin
if(cnt < 9'd500)
cnt <= cnt + 1'b1;
else
begin
cnt <= 1'b0;
clk_p <= ~clk_p;
end
end
always@(posedge clk_p or negedge reset)
begin
if(!reset) address <= 10'd0;
else address <= address + 1'b1;
end
endmodule
******************************************************************************
例化后添加到原理图文件中
4、原理图文件设计如下: