Giter Site home page Giter Site logo

hls_fft's Introduction

HLS_FFT

Overview

This repository contains HLS code that calls the Xilinx FFT IP core from the FFT IP Library and a Python program to handle it.
The following environments were tested:

  • Vivado 2022.1
  • Vitis HLS 2022.1
  • PYNQ-Z1 (PYNQ 2.5)

It appears that this repository is referenced on the Xilinx Q&A page. Thank you.

Usage

The following command will create the FFT IP core and block design for PYNQ-Z1. Replace with the version of Vivado installed on your machine.

source /tools/Xilinx/Vivado/<version>/settings64.sh
make all

After the make command finishes, launch the project with vivado vivado/fft.xpr. You can see the following block design.
bd
The hardware drivers can be found in this notebook.

HLS design

Data input/output is as follows:

  • The top function

    void hls_fft(fft_stream &input, fft_stream &output, unsigned size)
  • The circuit is driven by the CTRL register(offset 0x00)

  • size is a register(offset 0x10) that sets the number of FFT points with $size = log_2 POINT$
    This can be set to a value of 3~10 ( $2^3$ ~ $2^{10}$-Point FFT ).
    If you want to set more than that, change TWO_TO_THE_POWER_OF_N_MAX in the header file. The Xilinx FFT IP core allows $2^3$ ~ $2^{16}$-Point FFT.

  • Data is transferred by DMA using the AXI4-Stream interface

  • The FPGA logic input/output types can be numpy.csingle(float complex) or numpy.single(float)
    The default input/output is a float complex. You can switch between them by manipulating the #define directive in the header file.
    The FFT IP Library defines float complex types for input and output. Therefore, note that using float for inputs and outputs in FPGA logic (Uncomment USE_FLOAT in header file) requires type conversion in the FPGA logic, which may result in performance degradation.

io

hls_fft's People

Contributors

dygv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

tomhairless

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.