赞
踩
需求
在FPGA处理中如果需要对待处理数据加窗,则需要窗系数存储在ROM中以供使用。手残matlab党当然还没搞到极致,不过够用了。
前言
加窗有啥用呢,我们知道:时域的乘积就是频域的卷积。
而直接截取的一段数据,如果直接求解fft,你发现有效频点旁瓣贼拉高,对信号的后处理是不利的。
那么加个窗就会使得旁瓣被抑制很多,使得表现的没那么椎间盘突出。但不好的一面,会使得主瓣会被展宽。毕竟根据能量守恒定律,旁瓣矮了能量减小,主瓣就得身宽体胖吸收多余能量。
所以选择正确的窗函数也是很重要的。
MATLAB窗函数说明
流程
代码已经更新,直接看第5点。
比如加个hamming窗,8192点,16bit放大,最终系数18bit位宽。
ceil函数说明:对带小数部分的数进行取整操作。
(1)在MATLAB中键入如下代码:
format long g; %不用科学计数显示
N = 8192; %8192点
w = hamming(N); %窗
x = ceil(w*65536); %窗数据放大
plot(x);
(2)在MATLAB中打开变量
(3)选中列,复制数据即可。
(4)修改为最终的xilinx coe文件。
怎么修改为最终的xilinx coe文件?
(1)有如下数据,假设有几千个:
(2)需要转成COE文件格式,则需要在数据起始添加,10表示十进制:
memory_initialization_radix=10;
memory_initialization_vector=
每个数据结尾是逗号,最后一个数据结尾是分号。
exp:
(3)则需要对文本数据添加逗号,方便修改coe文件。可使用excel对全部数据添加逗号操作。
导入文本数据到A,选中B1,然后在输入框中输入:=A:A&","
然后复制B1单元格,在选择单元格中输入需要框选的单元格:
然后按粘贴即可。
(4)复制带逗号的数据到coe文件中,修改最后一个数据的结尾为分号即可。
(5)上述流程不符合自动化的定义,更新代码,一劳永逸,直接生成系数文件。
- %produce the xilinx hamming window coe file
- clc; %clear
- clear all;
- close all;
-
- N = 4096; %change the window length
- M = 65535; %magnification
- w = hamming(N); %hamming window
- x = ceil(w*M); %enlarge M,but not over M+1
- fp=fopen('Hamming8192.coe','w'); %open the file
- fprintf(fp,'memory_initialization_radix=10;\n'); %header
- fprintf(fp,'memory_initialization_vector=\n'); %header
- fprintf(fp, '%g,\n', x(1:N-1)); % (1:n-1) data with ','
- fprintf(fp, '%g;\n', x(N)); %the last data with ';'
- fclose(fp); %close the file
以上。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。