当前位置:   article > 正文

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

rom系数生成

需求

在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)上述流程不符合自动化的定义,更新代码,一劳永逸,直接生成系数文件。

  1. %produce the xilinx hamming window coe file
  2. clc; %clear
  3. clear all;
  4. close all;
  5. N = 4096; %change the window length
  6. M = 65535; %magnification
  7. w = hamming(N); %hamming window
  8. x = ceil(w*M); %enlarge M,but not over M+1
  9. fp=fopen('Hamming8192.coe','w'); %open the file
  10. fprintf(fp,'memory_initialization_radix=10;\n'); %header
  11. fprintf(fp,'memory_initialization_vector=\n'); %header
  12. fprintf(fp, '%g,\n', x(1:N-1)); % (1:n-1) data with ','
  13. fprintf(fp, '%g;\n', x(N)); %the last data with ';'
  14. fclose(fp); %close the file

 

以上。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/739257
推荐阅读
相关标签
  

闽ICP备14008679号