/Parallel-8-Tap-FIR-Filter-VHDL

2 INPUT/OUTPUT Parallel 8 Tap FIR Filter written in VHDL , compiled, simulated and synthesized using Xilinx Vivado.

Parallel-8-Tap-FIR-Filter-VHDL

2 INPUT/OUTPUT Parallel 8 Tap FIR Filter written in VHDL , compiled, simulated and synthesized using Xilinx Vivado.

One 8 tap FIR filter mathematical expression: mathematics and two 4 tap (for simplicity) parallel FIR filters: parallel mathematics

Implementation and Design Concerns

  1. We wanted the design to be pipelined (1 cycle latency) and the critical path to be as small as possible (Great Clock frequency)
  2. As few filp flops as possible used.
  3. When valid_in=0, current state of the system must remain stable: Idea: "gated clock" --> chip enable.

Implementation was done following a "structural" methodology and using behavioral VHDL. More specifically the modules constructed were:

  1. Input Module 2.Multiplier Module and 3. Adder Module. The idea is shown in the image below (for 4 Tap filter but the same logic is applied for 8 tap). 3modules

Construction of one 1 I/O FIR filter.

By compining the above modules, one is able to implement one 1 I/O FIR filter. In order to add pipeline to the filter, extra flip flops must be added as shown in the "lines" and "dots" in the schematics below. CamScanner 05-14-2021 16 42 - Page 3

CamScanner 05-14-2021 16 42 - Page 5

Compining 2 FIR Filters

We can construct the 2-Parallel pipelined FIR Filter by compining 2 identical FIR module above. Only difference is , we have to give the correct inputs, so the only module that needs to be changed in the (now common for both Filters) input module.

Input module:

parallelINPUT

IO paralell

Below it is presented in the following order:

  1. RTL produced by Vivado
  2. Behavioral Simulation
  3. Utilisation
  4. Critical Path

RTL

simulation

util

critical path

Note that pipeline produces correct results after 10 Clock Cycles and initial reg values are 0.Also, utilisation and critical path are result of synthesis and not implementation

Board and Software

  • Board Used: Zybo (xc7z010clg400-1) , Zynq-7000 product family.
  • Xilinx Vivado 2018.2.1

VHDL Code

Available only upon request.

Author:

Dimitrios Lampros