项目简述
滑动累加器在算法的实现过程中经常碰见,最典型的就是均值滤波。相信大家对滑动累加的概念已经有了不错的掌握,其实就是给原始数据加一个窗然后求这个窗里面所有数据之和。本次实验我们先使用MATLAB实现滑动累加器,然后使用VIVADO实现滑动累加器,最后将两组生成的数据在MATLAB中对比从而相互验证我们实验的正确性。
本次实验所用到的软硬件环境如下:
1、VIVADO 2019.1
2、Modelsim 10.7
3、MATLAB 2015b
MATLAB代码
因为这次的项目没有任何算法的成分在里面,所以我们不再对理论部分多加赘述,这里直接给出相应的代码。
clc;
clear all;
PATH_SPD_RANGE = 6;
fid1 = fopen('data_in_fix.txt','r');
DataIn = fscanf(fid1,'%d');
h_path_pow_fix = DataIn.';
h_path_pow_win = filter(ones(1,2*PATH_SPD_RANGE+1),1,h_path_pow_fix);
h_path_pow_win = h_path_pow_win(2*PATH_SPD_RANGE+1:end);
h_path_pow_win_fix = h_path_pow_win;
fid1 = fopen('mb_pow_win.txt','w');
fprintf(fid1,'%d\n',h_path_pow_win_fix);
代码就是如此简单,可以使用filter函数一步生成。
FPGA代码
FPGA逻辑代码
因为过程比较简单,我们这里直接给出相应的代码:
module pow_win
(
input sclk ,
input rst_n ,
input [15:0] POUT ,
input POUT_EN ,
output wire [19:0] pow_win_data ,
output reg pow_win_en
);
//========================================================================================\
//**************Define Parameter and Internal Signals**********************************
//==========================================================&#