BojanFaletic / MA_HLS

HLS moving average filter

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Simple moving average filter in Xilinx HLS

Wave

Moving average filter with 1 tick of latency. Filter depth and data type can be changed in ma.hpp.

// data type
#define BIT_NUM 8
#define BIT_FLOAT 5
#define BIT_LEN (BIT_NUM + BIT_FLOAT)

using hls_int = ap_fixed<BIT_LEN, BIT_NUM, AP_RND>;

// Number of stages in filter
#define FILTER_DEPTH 32

// Intermediate variable for storing temp data
#define BIT_NUM_ACC (BIT_NUM + 5)
#define BIT_LEN_ACC (BIT_LEN + BIT_NUM_ACC)
using hls_acc_int = ap_fixed<BIT_LEN_ACC, BIT_NUM_ACC, AP_RND>;

Filter source code is in ma.cpp. Test is in main.cpp.

resources

Each stage of filter adds 1 clk of smoothing. For FILTER_DEPTH=32, data will be smooth after 33 clocks.

About

HLS moving average filter


Languages

Language:C++ 94.9%Language:Ada 3.8%Language:Makefile 0.5%Language:VHDL 0.4%Language:Tcl 0.2%Language:Verilog 0.1%Language:LLVM 0.1%Language:Shell 0.0%Language:HTML 0.0%Language:C 0.0%Language:Batchfile 0.0%Language:Ruby 0.0%