Vivado ROM IP核的使用
配置IP核
- 选择IP核:Block Memory Generator
- basic 选择Single Port ROM

- 设置ROM的宽度和深度
要与.coe文件一致

4.Load Init File
vivado用于初始化的数据文件类型是.coe

4. 例化
打开ip核的例化模板.veo文件
初始化文件.coe
- 使用matlab生成.coe文件
n = 8;%量化位数 //[7:0]
f = 5e4; %信号频率Hz
fs = 25600000; %采样频率Hz
N = 256; %本次共采样点数
t = (0:N-1)/fs; %采样时间s
x = sin(2*pi*f*t); %信号采样值
y = x*(2^(n-1)); %量化
/*我感觉应该是乘2^n-1.先不考虑负数,量化公式应该是先除以自身的取值范围(这里是1),
再乘2^n-1。这样的话,采样最大值1才会对应1111_1111_1111_1111*/
y_z= round(y); %四舍五入取整%生成y.coe文件
fid=fopen('E:\matlab-function\y.coe','w'); %创建y.coe文件
fprintf(fid,'%d,\n',y_z); %向y.coe中写入数据
fclose(fid); %关闭y.coe文件
- “fopen”打开文件,赋予文件代号。
语法1:FID= FOPEN(filename,permission)
FID=+N(N是正整数):表示文件打开成功,文件代号是N。FID=-1 : 表示文件打开不成功。FID在此次文件关闭前总是有效的。
打开方式参数:w 写入(文件若不存在,自动创建) - fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:
fprintf(fid, format, variables)
fid为文件句柄,若缺省,则输出到屏幕1 for standard output (the screen) or 2 for standard error. If FID is omitted, output goes to the screen.
format用来指定数据输出时采用的格式:%d 整数 - fclose一般与fopen成对使用。当不需要对文件进行操作之后,就可以使用fclose函数对这个文件进行关闭。
- 量化:图中给出了连续时间波形和许多该波形的采样点,采样值以黑点表示,每个采样点都落在一个量化级内。假设有n个量化级,每个量化级用一个长度为b比特的二进制字表示,于是 n =2^b 。**量化之后,采样值用一个与其所处量化级相对应的码字来表示,**下图采样值可以用二进制序列100110111表示。

采样和量化对应信号的“垂直切割”和“水平切割”。
- 将.mif文件用记事本打开,格式修改为.coe的,并修改后缀。
- 编辑.coe文件格式
.coe的格式与.mif不同,没有地址
memory_initialization_radix=10;//10表示<10进制>
memory_initialization_vector =
2009,
1608,
1206,
804,
...
402;//将最后的逗号改为分号
测试
实际上用FPGA实现了波形发生器的功能,生成了正弦波,再经DAC就能用示波器看到。
module ip_rom(
clk,
dout);input clk;output [7:0] dout;reg [7:0] addra=8'b0;always@(posedge clk)beginif(addra==8'd255)addra <= 0;else addra <= addra + 1'b1;endrom rom_sin (.clka(clk), // input wire clka.addra(addra), // input wire [7 : 0] addra.douta(dout) // output wire [7 : 0] douta
);
endmodule
仿真结果与.coe数据一致:


修改dout的waveform style为模拟量:

思考
如何改变正弦波的频率?
可以分频计数;可以计数每次不加1,加2,3
参考资料:
https://blog.csdn.net/qyx635804080/article/details/95307404
http://blog.sina.com.cn/s/blog_5e1cdcaf0100vmnf.html
https://blog.csdn.net/qq_42457960/article/details/88930121
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
