怎么用MATLAB产生FPGA所需的hamming窗系数

需求

在FPGA处理中如果需要对待处理数据加窗,则需要窗系数存储在ROM中以供使用。


前言

加窗有啥用呢,我们知道:时域的乘积就是频域的卷积。

而直接截取的一段数据,如果直接求解fft,你发现有效频点旁瓣贼拉高,对信号的后处理是不利的。

那么加个窗就会使得旁瓣被抑制很多,使得表现的没那么椎间盘突出。但不好的一面,会使得主瓣会被展宽。毕竟根据能量守恒定律,旁瓣矮了能量减小,主瓣就得身宽体胖吸收多余能量。

所以选择正确的窗函数也是很重要的。

MATLAB窗函数说明

 

 

流程

比如加个hamming窗,8192点,16bit放大。

new方法:直接生成xilinx 所需的coe文件。 ceil函数为取整。

clc;                                            
clear all;
close all;

N = 8192;                                         %窗长度
M = 2^16-1;                                       %系数放大16bit
w = hamming(N);                                   %加汉明窗
x = ceil(w*M);                                    %放大取整

plot(x);
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

 

以上。

posted @ 2019-04-02 18:04  小翁同学  阅读(1495)  评论(0编辑  收藏  举报