Giter VIP home page Giter VIP logo

dsp-rtl-lib's Introduction

DSP-RTL-Lib

RTL Verilog library for standard DSP modules

Overview

I am delighted and keen to share my passion towards Digital Signal Processing (DSP) with other passionates and learners. I am grateful to the open source community and to my professors, instructors, and colleagues who helped me through the last decade and a half to learn and fall in love with DSP.

I have been focusing on the hardware side of DSP, in particular front-end or RTL design and implementation. Nevertheless, I have digested Matlab/Octave and SystemC sufficient enough to model the developed DSP components, models and even systems as well. I am aiming for a mix-and-match (M&M) approach for this DSP library. As an example, to implement a digital-front-end (DFE) which requires a mixer, decimation stage, and channel selection modules, the DSP RTL Library (DRL) provides all the basic components “hopefully one day” which allows the designer to pick, mix and match them to create a functioning system.

I have very ambitious plans for the DSP RTL Library (DRL), and I hope to meet them all, if not alone may be with your appreciated help and support. I am looking forward to provide the most commonly used DSP components in generic parameterizable and synthesizable RTL code which can be used for either ASIC and/or FPGA development. Moreover, I am planning to provide a GRM “mostly Octave”. The purpose of these models to be used for bit-true verification and building time-lossly systems. I have a wish to validate these modules on an FPGA, but I am a bit sceptical on that point due to time constraints. I am aiming to develop scripts which will take design parameters and generate the RTL. This is planned once the library is alpha release, i.e. stable and mature enough.

The DRL will provide synthesized RTL developed in Verilog 2001, test-bench developed in SystemVerilog 2012, and Octave golden reference models (GRM).

The developed RTL is a conventional implementation, i.e. it is neither area nor power optimized. I have various ideas and thoughts regarding area, power, and latency optimization. However, these approaches are usually application or project specific. Therefore, I didn’t publish any of them at this stage. Nevertheless, if needed do not hesitate to contact me.

List of Abbreviations

Abbreviation Description
FIR Finite Impulse Response
IIR Infinite Impulse Response
CIC Cascade Integrator Comb
MAC Multiply ACCumulator
TF Transposed-Form
DF Direct-Form
PPD PolyPhase Decimation
PPI PolyPhase Interpolation
NCO Numerically Controlled Oscillator
CORDIC COordinate Rotation DIgital Computer
LFSR Linear Feedback Shift Register
RTL Register Transfer Logic
DSP Digital Signal Processing
DRL DSP RTL Library

List of Modules

Module Description Status
FIR Stable
MAC Stable
CIC Stable
PPD Stable
PPI Stable
DC Planned
IIR Planned
NCO Stable
CORDIC Stable

Coding Style

I recommend the following coding style which I used during the development of the DRL. The coding style is proposed to facilitate debugging and troubleshooting during both functional and formal verification. Therefore, please, stick to it!

  • Asynchronous active low reset
  • Synchronous active high enable
  • Rising edge flip-flops are only used
  • Arithmetic computations are carried out based on fixed-point 2’s complement data type.

Get Started

  1. Make sure that you have the Icarus Verilog installed on your machine.
  2. Download the dsp_rtl_lib.sh script individually.
  3. Make sure it is executable (ls -la, if it isn't then use chmod +x dsp_rtl_lib.sh).
  4. Execute the demo command which will clone the repository, design a CIC decimation filter, and execute a regression verification (./dsp_rtl_lib.sh -demo).

To design a new module (e.g. filt_ppd):

  1. cd DSP_RTL_Lib
  2. cp .drl_param/filt_ppd_1.param ./
  3. nedit filt_ppd_1.param (enter the design configuration values as indicated)
  4. ./dsp_rtl_lib.sh -d filt_ppd_1.param

Folder Structure

The folder structure for each designed module is as follow (e.g. filt_ppd)

  • filt_ppd
  • |_ log
  • |_ octave
  • |_ rtl
  • |_ sim
    • |_testbench
    • |_ testcases
      •  |_ response
        
      •  |_ stimuli
        
  • |_ vcd
  • |_ vvp

dsp-rtl-lib's People

Contributors

ahmedshahein avatar

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.