All Projects → ZipCPU → Fftdemo

ZipCPU / Fftdemo

A demonstration showing how several components can be compsed to build a simulated spectrogram

Labels

Projects that are alternatives of or similar to Fftdemo

Platformio Vscode Ide
PlatformIO IDE for VSCode: The next generation integrated development environment for IoT
Stars: ✭ 676 (+2839.13%)
Mutual labels:  verilog
Naivecpu
A CPU that implementing THCO-MIPS16 instruction set.
Stars: ✭ 5 (-78.26%)
Mutual labels:  verilog
Verilog Vga Controller
A very simple VGA controller written in verilog
Stars: ✭ 16 (-30.43%)
Mutual labels:  verilog
Verilog Ethernet
Verilog Ethernet components for FPGA implementation
Stars: ✭ 699 (+2939.13%)
Mutual labels:  verilog
Co4618
This repo is for the 4618 group nember to share code.
Stars: ✭ 5 (-78.26%)
Mutual labels:  verilog
Busblaster
KT-Link compatible buffer for the Bus Blaster v3
Stars: ✭ 6 (-73.91%)
Mutual labels:  verilog
Miaow
An open source GPU based off of the AMD Southern Islands ISA.
Stars: ✭ 650 (+2726.09%)
Mutual labels:  verilog
Tf530
tf530
Stars: ✭ 22 (-4.35%)
Mutual labels:  verilog
Fpga
related to Spartan6 FPGA
Stars: ✭ 5 (-78.26%)
Mutual labels:  verilog
Fpga Sram
mystorm sram test
Stars: ✭ 16 (-30.43%)
Mutual labels:  verilog
Hdl
HDL libraries and projects
Stars: ✭ 727 (+3060.87%)
Mutual labels:  verilog
Hydra
a programmable cryptographic coprocessor in verilog
Stars: ✭ 5 (-78.26%)
Mutual labels:  verilog
Netlist Graph
Java library for parsing and manipulating graph representations of gate-level Verilog netlists
Stars: ✭ 7 (-69.57%)
Mutual labels:  verilog
Spinalhdl
Scala based HDL
Stars: ✭ 696 (+2926.09%)
Mutual labels:  verilog
Upduino Ov7670 Camera
Design to connect Lattice Ultraplus FPGA to OV7670 Camera Module
Stars: ✭ 17 (-26.09%)
Mutual labels:  verilog
Verilator
Verilator open-source SystemVerilog simulator and lint system
Stars: ✭ 645 (+2704.35%)
Mutual labels:  verilog
Ie12
A (very) minimal web browser for FPGAs implemented in Verilog
Stars: ✭ 6 (-73.91%)
Mutual labels:  verilog
Cgragenerator
Stars: ✭ 22 (-4.35%)
Mutual labels:  verilog
Lenet accelerator
A Lenet ASIC Accelerator targeting minimum number of cycles
Stars: ✭ 17 (-26.09%)
Mutual labels:  verilog
K1801
1801 series ULA reverse engineering
Stars: ✭ 16 (-30.43%)
Mutual labels:  verilog

This project contains a Verilator FFT to screen spectrogram demonstration. To build, type "make" in the main directory. This will build a file "main_tb" in the bench/cpp directory, and similarly a "ddr_tb" in the bench/cpp directory. Running either program will simulate the entire design, all the way from A/D to display output, all using Verilator. The "main_tb" demo uses an unreasonable amount of block RAM with a VGA output, and the "ddr_tb" demo uses an external DDR3 SDRAM together with a (simulated) HDMI output. You will need to install Verilator and gtkmm to do this.

There's a pictoral overview of the project in the doc directory here, showing all of the components of this design. Most of those components can also be seen in the top-level simulatable file, as a processing flow that works its way through that file. Listed separately, these components are:

  1. A/D, 1Msps, taken from the wbpmic repository
  2. A filter, taking the A/D input at 1MHz down by a factor of 23x to 40kHz. A different configuration of this core will reduce the A/D from 1MHz down to 8kHz, for better resolution of speech.
  3. A hanning window function, drawn from the dblclockfft repository, that not only applies the hanning window but also creates an FFT overlap of 50%
  4. An FFT, of 1k points which should therefore yield about 43Hz resolution from a 40kHz stream.
  5. A very-rudimentary conversion to dB
  6. A controller to write the incoming data to screen memory
  7. Read from screen memory
  8. False colormap
  9. ... and the final component, the display. Since this is a verilator simulation, the actual display code, either for VGA or HDMI, is written in C++. The VGA simulation code was also borrowed, this time from the vgasim repository

This project is in response to all of those students who keep asking how to do this on Digilent's forum(s), while believing that it is impossible to simulate their designs. In particular, this design can be completely simulated from A/D to video output. VCD files can be generated, which will tell you every trace within this design--useful for debugging. Many of the design components have also been formally verified, so include several of the FFT components.

Hardware

The code now contains an actual hardware implementation. This implementation runs on a Nexys Video board with a PMod MIC3. It uses the DDR3 SDRAM of the Nexys Video board for storing the video frames and the HDMI for output.

This portion of the design is currently working on my desktop.

Copyright

This project is shared under the GPLv3 license. Please feel free to contact me if that license is insufficient for your needs.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].