Project Report
Project Report
Abstract 4
Chapter 1 Introduction 5
1.1 Overview 5
1.2 Motivation 7
1.3 FIR Filter Fundamentals 8
1.4 FPGA in DSP Applications 9
1.5 Vivado Design Suite 9
1.6 Objectives 10
1.7 Scope of the Project 10
1.8 Organization of the Report 10
Chapter -2 Literature Survey 11
2.1 Introduction 11
2.2 FIR Filter Architectures and Structures 11
2.3 FPGA Implementation Techniques and Optimization Strategies 12
2.4 FPGA Platforms for FIR Filter Design 13
2.5 Performance Evaluation and Comparison of FIR Filter Implementations 14
2.6 Optimization Techniques for FIR Filters in FPGA 15
Chapter 3 Digital Filters: Methods and Techniques 19
3.1 Digital Filter Concept 19
3.2 The Fundamental Building Blocks 19
3.3 Overview of Approximation Techniques 20
3.4 Common Types of Digital Filters 22
3.5 Digital Filter Design Methods 22
3.6 Implementation Considerations 24
Chapter 4- Design Methodology 26
4.1 Introduction 26
4.2 Field Programmable Gate Array 26
4.2.1 Types of FPGA 26
4.2.2 Design Flow of FPGA 27
4.2.3 Architecture of FPGA 28
4.2.4 Advantages of FPGA 29
4.3 Very High Speed Integrated Circuits Hardware Description Language 29
4.3.1 Description of VHDL/Verilog 30
4.3.2 Advantages of VHDL/Verilog 30
4.4 Design specifications 31
4.4.1. Specification Definition 31
4.1.2. Mathematical Model of the FIR Filter 32
4.1.3. Design Considerations 33
4.1.4. HDL Implementation (VHDL/Verilog) 34
4.1.5. Toolchain Setup (Vivado) 34
4.1.6. Simulation and Verification 35
1|P a g e
4.1.7. Hardware Implementation and Testing 35
4.1.8. Performance Analysis and Optimization 36
4.2 Algorithm 36
4.2.1. Initialize Filter Specifications 36
4.2.2. Compute Filter Coefficients 37
4.2.3. Design FPGA-Friendly Architecture 37
4.2.4. Implement FIR Filter in HDL (VHDL/Verilog) 37
4.2.5. Develop Test bench for Verification 37
4.2.6. Implement in Vivado 38
4.2.7. Program the FPGA and Test Hardware 38
4.2.8. Performance Analysis and Optimization 38
4.2.9. Final Validation 38
4.3 Flowchart for proposed model 39
4.4 Implementation of proposed model 40
4.4.1 Design Specification 40
4.4.2. Filter Coefficient Generation (MATLAB) 40
4.4.3. FIR Filter Verilog Code(Sample code) 41
4.4.4. Vivado Project Setup 41
4.4. 5. Verilog Test bench 42
4.4. 6. Synthesis and Implementation 42
Chapter 5 - Results and Discussions 43
5.1 Propose Model (HIGH PASS FILTER) 43
5.1.1 RTL Schematic for Propose Model (HIGH PASS FILTER) 43
5.1.2 Top Level model: 45
5.1. 3 RTL data path 49
5.1.4 Top-level RTL netlist 50
5.1.6 Output waveform of proposed model (HIGH PASS FILTER) 53
5.1.7 Xilinx Ultrascale+ Integrated Block for PCI Express 54
5.2 Propose Model (LOW PASS FILTER) 55
5.2.1 RTL Diagram: 55
5.2.2 TOP LEVEL MODEL 58
5.2.3 OUTPUT WAVE FORM (LOWPASS Filter) 59
5.2.4 Power Estimation 62
Conclusion 66
Applications 67
Future Scope 68
References 69
2|P a g e
List of Figures
3|P a g e
Abstract
The simulation findings corroborate the filter's correctness, while synthesis and
implementation reports affirm its high-speed performance, achieving a clock
period of 10 ns, which corresponds to a maximum operating frequency of 100
MHz. The hardware FIR filter on FPGA exhibits markedly decreased latency
and stable throughput within real-time parameters.
This project illustrates the feasibility and benefits of implementing FIR filters on
FPGAs using Vivado and Verilog for high-performance DSP applications.
Prospective improvements may encompass lengthening the filter, facilitating
dynamic coefficient modifications, incorporating adaptive filtering
4|P a g e
functionalities, or investigating deployment on more sophisticated FPGA
families.
5|P a g e
Chapter 1: Introduction
1.1 Overview
6|P a g e
quantization, and resource utilization. Various architectures, such as direct-form,
transposed-form, and polyphase structures, offer different advantages in terms of
speed and resource efficiency. For instance, the transposed-form architecture is
known for its suitability in high-speed applications due to its shorter critical
path.
Vivado's FIR Compiler IP core provides a robust solution for implementing FIR
filters, supporting features like pipelining, coefficient reloading, and multi-
channel processing. It allows designers to specify filter parameters and
automatically generates optimized hardware descriptions, significantly reducing
development time.
7|P a g e
approach utilized a microprogrammed controller for a sequential 7-tap FIR filter,
highlighting the versatility of FPGA implementations.
This project aims to design and synthesize a high-speed FIR filter using Verilog
Hardware Description Language (HDL) and the Vivado Design Suite targeting
an FPGA platform. The motivation behind this work is to leverage FPGA’s
parallel architecture and DSP slices to achieve high-speed signal filtering,
optimize area usage, and ensure scalability for future enhancements.
1.2 Motivation
Despite the advantages offered by FPGAs, the design and synthesis of high-
speed FIR filters still pose multiple challenges. These include managing the
trade-offs between speed, power, area, and precision. Additionally, selecting an
appropriate filter structure be it direct form, transposed form, systolic
architecture, or distributed arithmetic can greatly affect the overall performance.
The lack of a unified framework for comparing different design approaches
complicates the task further. Thus, a comprehensive analysis of state-of-the-art
methods and a practical implementation using Vivado are essential to bridge the
performance-efficiency gap.
8|P a g e
required data throughput increases, achieving real-time performance using
sequential processors becomes challenging due to limitations in clock speed and
sequential instruction execution.
A Finite Impulse Response (FIR) filter is a type of digital filter whose impulse
response settles to zero in finite time. Unlike Infinite Impulse Response (IIR)
filters, FIR filters do not use feedback; hence, they are inherently stable. The
output of an FIR filter is a weighted sum of current and past input values,
defined mathematically as:
Where:
The primary design parameters of an FIR filter include filter order, type (low-
pass, high-pass, band-pass, band-stop), and window function used in coefficient
9|P a g e
calculation. FIR filters are particularly advantageous when a linear phase
response is required, which is critical in applications like data communication
and audio processing [5].
FPGAs are semiconductor devices that contain programmable logic blocks and
interconnects that allow the designer to configure hardware behavior post-
manufacturing. In DSP applications, FPGAs offer several advantages:
FPGAs like the Xilinx Artix-7 family include built-in Digital Signal Processing
(DSP) slices, which contain pre-configured multipliers, adders, and
accumulators. These resources are especially suited for implementing FIR filters
as they allow efficient realization of the multiply-and-accumulate operations in
the filter equation [6].
Vivado provides:
10 | P a g e
Vivado also facilitates the use of IP cores, including FIR filter generators, but in
this project, a custom Verilog implementation is chosen to provide full control
over the architecture and performance optimization [7].
1.6 Objectives
This project is limited to the design and synthesis of an FIR filter for FPGA
using Verilog and Vivado. While the design is scalable, dynamic coefficient
updating, floating-point arithmetic, and adaptive filtering are outside the current
scope. Future work may explore:
Chapter 4 presents the Verilog implementation of the FIR filter along with
simulation and test bench development.
11 | P a g e
Chapter -2 Literature Survey
2.1 Introduction
FIR filters are typically categorized into various architectural forms, including
direct form, transposed form, and systolic arrays. The choice of architecture
greatly impacts the filter’s performance, resource utilization, and speed. Over the
years, researchers have proposed several advanced architectures for improving
the computational efficiency of FIR filters on FPGA.
Direct and Transposed Forms: The direct form FIR filter is the most basic
architecture, where each tap of the filter multiplies the input by a corresponding
coefficient, followed by summing the results. However, its inherent sequential
nature limits its speed. The transposed form rearranges the order of operations to
allow more efficient pipelining and parallel processing, improving throughput.
Various studies, such as those by Zhao and Liu (2020) 8, have implemented
transposed form filters on FPGAs to optimize for speed and resource utilization.
12 | P a g e
Systolic Array Architecture: A systolic array is a highly parallel structure in
which the data moves through an array of processing units, minimizing the need
for global interconnects. Systolic architectures have been widely used for FIR
filter designs due to their high parallelism and efficient use of FPGA resources.
According to Banerjee et al. (2021)9, systolic arrays can achieve significant
speedups, making them ideal for high-throughput applications.
13 | P a g e
the overall latency and increasing the clock frequency. Studies such as those by
Sharma and Gupta (2021)12 have demonstrated the effectiveness of pipelining in
improving the performance of FIR filters, achieving higher clock frequencies
and lower latencies.
High-Level Synthesis (HLS): The use of High-Level Synthesis (HLS) tools has
been gaining popularity in FPGA design, as it allows for easier and faster
development of FPGA-based systems. HLS tools such as Xilinx Vivado HLS
enable designers to describe their filter designs at a high level using languages
like C, C++, or OpenCL, which are then automatically converted into hardware
description language (HDL). Research by Rane et al. (2019) 14 highlights how
HLS tools can significantly speed up the design process while maintaining high
performance in FPGA-based FIR filter implementations.
14 | P a g e
FPGA families to implement high-speed FIR filters, including Xilinx Artix-7,
Virtex-7, and Spartan-6.
Xilinx Artix-7: The Artix-7 family offers a balance between performance and
resource utilization, making it an ideal choice for high-speed DSP applications.
According to Rao et al. (2018) 16, the Artix-7 FPGA provides a good trade-off
between power efficiency and resource usage while achieving high clock
frequencies.
Xilinx Virtex-7: The Virtex-7 family, with its high-speed logic and advanced
DSP slices, is a top choice for high-performance FIR filter designs. Studies such
as by Patel and Gajjar (2017)17 have shown that the Virtex-7 FPGA provides
better performance in terms of throughput, power efficiency, and logic
utilization compared to the Artix-7.
15 | P a g e
resource utilization. Trade-offs must be made between performance and resource
usage.
Use of High-Level Synthesis: HLS tools are effective for FPGA-based FIR
design. Sharma et al. (2020)23 showed how these tools can automate pipelining,
loop unrolling, and resource sharing to optimize performance.
16 | P a g e
these methods optimize power without sacrificing performance. Resource
sharing was also proposed by Niranjan et al. (2019)25 to lower energy usage.
Efficient Use of FPGA Resources through CSD: Using Canonical Signed Digit
(CSD) reduces hardware complexity. Sivaram et al. (2020) 26 demonstrate that
CSD encoding minimizes resource utilization, enabling more efficient FIR
implementations.
FIR Filter Optimization FPGA Performance Power
Study
Architecture Techniques Family Metrics Consumption
Distributed Look-Up Table High
Tuan et al., Xilinx Low power due
Arithmetic (LUT)-based throughput,
2018 Spartan-6 to DA
(DA) multiplication low latency
Pipelined High
Kumar et Parallelism, Xilinx High power, not
Parallel throughput,
al., 2021 Pipelining, SIMD Virtex-7 optimized
Architecture low latency
High
High-Level
Sharma et Fixed-point Intel Stratix efficiency, Moderate power
Synthesis (HLS)
al., 2020 FIR Filter V reduced design consumption
optimization
time
Coefficient
Sivaram et CSD-encoded Xilinx Optimized Reduced power,
Encoding (CSD),
al., 2020 FIR Filter Artix-7 area and power low area
Pipelining
Coefficient
Fixed-point, High
Sharma et Quantization, Xilinx Optimized for
16-bit throughput,
al., 2021 Bit-width Virtex-7 power
precision low area
Optimization
Pipelined and Clock Gating, Balanced
Venkatesh Xilinx Significant
Parallel DVFS, Resource throughput and
et al., 2021 Virtex-7 power reduction
Structure Sharing power
Coefficient
High
Hassan et FIR with quantization, Intel Arria Low power and
performance,
al., 2021 reduced order Efficient memory 10 area
real-time
usage
High
Bala et al., High-order Parallelism, Xilinx throughput, High power,
2019 FIR Filter Pipelining Spartan-6 moderate moderate area
latency
LUT-based
Distributed High
Goswami et Multipliers, Xilinx
Arithmetic throughput and Low power
al., 2019 Reduced Virtex-7
(DA) performance
Complexity
Bit-width
Singh et al., Low-order FIR Xilinx Low power, Significantly
optimization,
2021 Filter Artix-7 low area reduced power
Clock gating
Bashir et High-speed Pipelining, Xilinx High High power
17 | P a g e
parallel FIR throughput,
al., 2020 Parallelism Virtex-7 consumption
Filter low latency
Parallelism, Optimized for Optimized
Amiri et al., Radar-specific Xilinx
High-speed real-time power
2020 FIR Filter Kintex-7
operation processing consumption
High-speed Parallelism, High
Verma et Xilinx Reduced power
FIR Filter with Pipelining, Clock throughput,
al., 2021 Virtex-7 consumption
HLS Gating low latency
Image High speed for
Hassan et Look-Up Tables, Intel Moderate to low
Processing FIR real-time
al., 2020 Parallelism Cyclone V power
Filter processing
Reduced
Niranjan et CSD-based CSD Encoding, Xilinx Significant
resource
al., 2019 FIR Filter LUTs Spartan-6 power savings
utilization
Bit-width High
Niranjan et High-speed Xilinx Low power,
optimization, throughput,
al., 2020 FIR Filter Kintex-7 optimized
Reduced adders low area
18 | P a g e
Chapter 3 Digital Filters: Methods and Techniques
A filter is a frequency selective LTI system, that is a system that passes specified
frequency components and rejects others. The discrete-time filter realizations of
interest here are those LTI systems which have LCCDE representation and are
causal. Note that for certain applications noncausal filters are appropriate.
19 | P a g e
An important foundation for digital filter design are the classical analog filter
approximations. An overview of analog approximation techniques will be
provided first.
The filter design problem can be grouped into three stages:
Specification of the desired system properties (application driven)
Approximation of the specifications using causal discrete-time systems
System realization (technology driven - hardware/software) This chapter
will discuss primarily the approximation techniques.
Realization techniques have been presented in part earlier. A common senario in
which one finds a digital filter is in the filtering of a continuous-time signal
using an A/D-H(z)-D/A system (earlier called a C/D-H(ejω)-D/C system).
Digital filter design techniques fall into either IIR or FIR approaches
Approximation Approaches
Numerical solution of differential equations
20 | P a g e
Impulse invariant (step invariant etc.)
Bilinear transformation
FIR Approximation Approaches
Truncated impulse response with windows Frequency sampling
Optimum equiripple approximations
Minimum mean-square error (frequency domain)
Note: The above designs are also typically constrained to have linear phase.
∞
y [n]= ∑ x [k ]h[n−k ]=¿ ¿ x[n]∗h[n]
k=−∞
Y (z )=H (z ) X (z)
The coefficients {bk} determine the zeros of the filter, while the coefficients {ak
} determine the poles. The locations of these poles and zeros in the complex z-
plane critically influence the filter's frequency response and stability. For a
causal and stable LTI digital filter, all poles must lie strictly inside the unit circle
in the z-plane.
The design of a digital filter typically starts with a set of specifications that
define the desired frequency response characteristics. These specifications often
include:
21 | P a g e
Stopband Frequency (ωs): The range of frequencies that should be
significantly attenuated.
Passband Ripple (δp or Rp): The maximum allowable variation in the
magnitude response within the passband (often expressed in dB).
Stopband Attenuation (δs or As): The minimum required attenuation in
the stopband (often expressed in dB).
Transition Band: The frequency range between the passband and
stopband, where the magnitude response transitions from passband to
stopband levels. The width of this band is a crucial design parameter.
Digital filters are broadly classified into two main categories based on the
duration of their impulse response:
Finite Impulse Response (FIR) Filters: These filters have an impulse response
that is non-zero for a finite duration. Their transfer function has only zeros
(unless there are poles at z=0). FIR filters are always stable and can be designed
to have exactly linear phase, which is crucial for applications where preserving
the time-domain shape of the signal is important (e.g., audio processing, data
transmission). Common design methods for FIR filters include the window
method, frequency sampling method, and optimal equiripple design (Parks-
McClellan algorithm).
22 | P a g e
3.5 Digital Filter Design Methods
Several techniques are employed to design digital filters that meet the desired
specifications:
Window Method (FIR): This intuitive method starts with an ideal frequency
response and multiplies its inverse discrete-time Fourier transform (IDTFT) by a
window function to obtain a finite-length impulse response. Different window
functions (e.g., Rectangular, Hamming, Hanning, Blackman) offer trade-offs
between the main lobe width (related to transition bandwidth) and the side lobe
level (related to stopband attenuation).
Frequency Sampling Method (FIR): This method directly specifies the desired
frequency response at a set of discrete frequencies and then computes the
impulse response using the inverse Discrete Fourier Transform (IDFT).
Interpolation techniques are often used to improve the frequency response
between the sampled points.
Bilinear Transform (IIR): This widely used method maps the s-plane
(continuous-time frequency domain) to the z-plane (discrete-time frequency
domain) using the transformation s=T21+z−11−z−1, where T is the sampling
period. This method avoids aliasing but introduces a non-linear frequency
23 | P a g e
warping, which needs to be accounted for during the design process by pre-
warping the desired critical frequencies.
Once the filter coefficients are determined, the digital filter needs to be
implemented in hardware or software. Common implementation structures
include:
24 | P a g e
Quantization Effects: The limitations of representing filter coefficients
and signal values with finite precision in digital systems, leading to
effects like coefficient quantization, round-off noise, and overflow.
Finite Word Length Effects: The impact of using a finite number of bits
to represent signals and coefficients on the filter's performance (e.g.,
frequency response, stability).
Filter Order Selection: Determining the minimum filter order required
to meet the given specifications is a crucial step in the design process,
balancing performance and computational complexity.
Group Delay and Phase Response: For applications where the time-
domain characteristics of the signal are important, the linearity of the
phase response (or constant group delay) is a critical design
consideration.
25 | P a g e
Chapter 4- Design Methodology
4.1 Introduction
under the designer’s complete control. This means the user can design,
program and make changes to circuit whenever the user wants. This
information is cited from internet sources.
26 | P a g e
Figure 3 shows the reprogrammable (SRAM-based) and one-time
programmable
Figure 3 One-time Programmable
(OTP)
27 | P a g e
connections. One-time programmable (OTP) FPGA use anti-fuses (contrary
to fuses, connections are made not “blown” during programming) to make
permanent connections in the chip and so do not require a SPROM or other
means to download the program to the FPGA. However, every time you
make a design change, you must throw away the chip. The OTP logic cell
is very similar to PLD with dedicated gates and flip-flops.
28 | P a g e
Figure 4 The design flow of PFGA device.
29 | P a g e
Figure 5 FPGA Logic Block
A recent trend shows that FPGA is commonly used for the designers
for their complicated digital design. It is because FPGA have several
advantages such as a shorter time to market, ability to re-program in the
field to fix bugs, and lower non-recurring engineering costs. There are
also some vendors may offer less flexible versions of their FPGAs that are
cheaper. In other words, by using FPGA, the design made is cost-effective
and time-effective. Besides that, the development of designs is usually
made on regular FPGAs because it has the ability to modify the design.
Another advantage of FPGA is it can be easily implement in hardware and is
not time consuming. Therefore, the designer can obtain the result of their
design in a very short period. The FPGA is very easy to interface with the
embedded microcontroller or embedded microprocessor and other
peripherals to form a complete system on a programmable chip. This
information is cited from internet sources.
30 | P a g e
ratification by the Institute of Electrical and Electronic Engineers (IEEE) in
1987. The Language use to implement this cryptography system is VHDL.
VHDL is a language used to describe hardware from the abstract to the
concrete level. This program was sponsored by the Department of Defense
(DoD) with the goals of developing a new generation of high-speed
integrated circuit. In the course of this program, it became clear that there
was a need for a standard language for describing the structure and function
of Integrated Circuits (ICs). Hence the VHDL was developed, and
subsequently adopted as a standard by the IEEE in the US.
31 | P a g e
Design time is shortened. Design re-uses, Because the description in
on a very high level, it is technology independent. It can be then
used to generate low-level descriptions for many technologies. High-
level constructs can be translated to new technologies and re-used.
Level of abstraction. VHDL/Verilog allows designing on RTL and
behavioral level, thus the designer thinks on the design concept level
rather on the component connecting level.
Technology independent design. Because of possibility of high-level
description, selection of technology can be delayed or changed in the
last moment without essential redesign.
Improved quality of design. The user can easily modify his high-level
description, thus exploring a larger space of solutions. Moreover, there
are tools that will automatically generate many solutions, generate
solutions optimized with certain respect, and use automatic logic
synthesis, mapping or layout optimizations. Combination of all above
properties allows obtaining high-quality designs quickly.
VHDL/Verilog is a catalyst that allows designers to move up to an
HDL design methodology.
The design process begins with defining the filter specifications. The key
parameters for a high-speed FIR filter design include:
32 | P a g e
Filter Type: The FIR filter can be low-pass, high-pass, band-pass, or band-stop,
depending on the application. For high-speed applications, low-pass FIR filters
are commonly used.
Order (N): The filter order represents the number of taps or coefficients. A
higher order increases the complexity but improves the filter's performance, such
as steeper roll-off and better attenuation in the stopband.
Sampling Frequency (Fs): This is the rate at which input signals are sampled. It
is critical in determining the clock frequency for the FPGA and the filter's
frequency response.
Cutoff Frequency: This determines the threshold between the passband and
stopband. The filter must attenuate frequencies above or below the cutoff,
depending on the type (low-pass or high-pass).
Passband Ripple and Stopband Attenuation: The filter's performance is also
characterized by the maximum allowable ripple in the passband and the
minimum required attenuation in the stopband.
Throughput and Latency Requirements: High-speed applications typically
require high throughput, i.e., the ability to process a large volume of data in real-
time. Minimizing latency is also crucial for many real-time signal processing
applications.
The FIR filter's output y[n] is a weighted sum of its past inputs x[n], and the
filter can be represented mathematically as:
Where:
y[n] is the output signal at time step.
x[n−k] is the input signal at time n−k, where k is the index of the filter taps.
h[k] are the filter coefficients (or impulse response), which determine the
frequency response of the filter.
N is the filter order (number of taps).
33 | P a g e
The filter coefficients h[k] are typically determined using design algorithms such
as the Window Method, Parks-McClellan algorithm, or Least Squares method.
These methods ensure that the FIR filter meets the specified frequency response
(cutoff frequencies, passband ripple, and stopband attenuation).
Parallelism: Implementing multiple parallel paths can further increase the speed
of the FIR filter. This involves distributing the filter taps across different
processing units, allowing for simultaneous computation of the weighted sums.
For example, by processing multiple input samples at the same time, parallelism
can significantly boost performance.
Bit-width Optimization: The choice of bit-width for the input data, filter
coefficients, and intermediate results impacts both performance and resource
usage. Using a reduced bit-width for fixed-point implementation can lower the
number of logic resources required on the FPGA, but may affect the precision of
the filter. A balance between resource usage and precision must be achieved.
34 | P a g e
Distributed Arithmetic: Distributed Arithmetic (DA) is a technique often
employed in FPGA-based FIR filter designs to replace multiplication operations
(which are resource-intensive) with shift-and-add operations. This method
reduces the resource usage and is highly efficient for specific types of FIR
filters.
Once the filter specifications and design considerations are in place, the next
step is to implement the FIR filter in a hardware description language (HDL).
Typically, VHDL or Verilog is used for modeling FPGA designs.
Project Creation: The next step is to create a new FPGA project in Vivado. In
Vivado, the user specifies the target FPGA device (e.g., Xilinx Artix-7, Virtex-7,
35 | P a g e
Ultra Scale+), and the HDL files (VHDL or Verilog) for the FIR filter design are
added to the project.
Synthesis: After the FIR filter design is modeled in HDL and the project setup is
complete, Vivado synthesizes the design. Synthesis converts the high-level
description into a netlist, which is a gate-level representation of the filter logic.
Timing Analysis: Vivado performs timing analysis to verify that the filter
operates correctly at the desired clock frequency. The timing constraints, such as
clock period and setup/hold times, must be met for the design to function
properly.
36 | P a g e
Post-Implementation Simulation: After generating the bit stream, post-
implementation simulation is performed to ensure the design works correctly on
the actual FPGA hardware.
FPGA Programming: The final bit stream file is uploaded to the FPGA using a
JTAG interface or other programming tools.
Hardware Testing: The design is tested on the FPGA to ensure it meets the
performance requirements. This includes testing the throughput, latency, and
functional correctness. Input signals are provided to the FPGA, and the outputs
are monitored and compared to the expected values.
Resource Utilization: The number of FPGA resources used (such as LUTs, DSP
slices, and memory blocks) is analyzed. Optimizations such as reducing bit-
widths, using shared resources, and efficient pipelining can reduce resource
usage.
4.2 Algorithm
37 | P a g e
The algorithm for designing a high-speed FIR filter on an FPGA involves
several key steps, from defining filter parameters to implementation and testing.
Here's a step-by-step breakdown of the algorithm:
38 | P a g e
Output: Store the result in the output register.
Create a pipelined structure to increase throughput by processing multiple
data samples concurrently.
39 | P a g e
Ensure the filter meets performance requirements in terms of throughput,
accuracy, and latency.
Finalize the design for deployment.
40 | P a g e
Figure 6 Flow chart for proposed system
41 | P a g e
4.4 Implementation of proposed model
Design Specification
Filter Coefficient Generation (using MATLAB or Python)
FIR Filter VHDL/Verilog Code
Vivado Project Setup
Simulation with Test bench
Synthesis and Implementation
Bit stream Generation
Hardware Testing (optional)
After calculated the values, copy these fixed-point values into our HDL code.
42 | P a g e
4.4.3. FIR Filter Verilog Code(Sample code)
module fir_filter #(
parameter N = 32
)(
input clk,
input reset,
input signed [7:0] x_in,
output reg signed [23:0] y_out
);
// Replace with actual coefficients
reg signed [15:0] h [0:N-1] = '{16'd45, 16'd112, 16'd212, ..., 16'd45};
// Multiply-accumulate
y_out <= 0;
for (i = 0; i < N; i = i + 1)
y_out <= y_out + x_reg[i] * h[i];
end
end
endmodule
o Open Vivado
o Create New Project
Name: fir_filter_fpga
Language: Verilog
Board/Device: Your FPGA board (e.g., Nexys A7, Basys 3)
o Add Sources
Add fir_filter.v
Add testbench tb_fir_filter.v
43 | P a g e
4.4. 5. Verilog Test bench
module tb_fir_filter;
reg clk = 0;
reg reset = 1;
reg signed [7:0] x_in;
wire signed [23:0] y_out;
fir_filter uut (
.clk(clk),
.reset(reset),
.x_in(x_in),
.y_out(y_out)
);
initial begin
#20 reset = 0;
#10 x_in = 8'd1;
#10 x_in = 8'd2;
#10 x_in = 8'd3;
#10 x_in = 8'd4;
#10 x_in = 8'd5;
#100 $stop;
end
endmodule
44 | P a g e
Chapter 5 - Results and Discussions
45 | P a g e
o valid: Control signal indicating when the data_out is valid and
ready to be processed by the next stage.
Functionality:
o Performs Finite Impulse Response (FIR) filtering, a common
digital filter used to remove noise or extract features from input
signals.
o Once enough samples are processed, the valid signal goes high.
3. UART Transmitter Block (uart_inst):
Module Name: uart_tx
Inputs:
o clk: Shared clock.
o rst: Reset.
o data_in[23:0]: 24-bit filtered data from FIR.
o data_valid: Control signal, connected to valid output of FIR filter,
indicates data is ready to be sent.
Outputs:
o tx: UART transmit line (serial bitstream output).
o tx_done: Indicates that transmission of one frame is complete.
Functionality:
o This module serializes the 24-bit parallel data for transmission
over a UART protocol.
o Data is only transmitted when data_valid is high.
o Once transmission is completed, tx_done goes high.
4. Output:
data_out[23:0]: This is the filtered output from the FIR block which is
also fed into the UART block. Useful if you want to observe the output
before or independently of the UART transmission.
Signal Flow Summary:
1. data_in[11:0] → FIR Filter (fir_inst)
2. fir_inst produces data_out[23:0] and valid when ready.
3. data_out → both to output port and uart_inst for transmission.
4. valid → data_valid of uart_inst, initiating UART transmission.
5. uart_inst sends data out serially via tx and raises tx_done when done.
46 | P a g e
5.1.2 Top Level model:
The Figure-8 shows a long bus connection, likely representing a bit expansion,
mapping, or routing of a signal bus in your digital system design. The horizontal
line with many small circular nodes is a bus signal, likely 24 bits wide or more.
In Figure 9 to Figure 13 shows the part wise of top level model for the proposed
system design which gives clear diagrammatic view.
47 | P a g e
Figure 13 Part -5 of Top Level model
1. Modules: RTL_mux_AXIWC
Input:
o data_wr_reg[23:0] is the original 24-bit bus fed into the first
module.
Output:
o Each subsequent module produces a modified or delayed output:
data_wr_reg1[23:0], data_wr_reg2[23:0], ..., up to
data_wr_reg6[23:0].
This pattern indicates a pipelined processing structure.
3. Signal Flow
Each module receives the clk (clock) and rst (reset) signals — indicating
synchronous operation.
The outputs of each stage feed into the next stage, forming a chain
(like a shift register, pipelined FIR filter taps, or staged multiplexers).
Interpretation:
From your earlier diagrams (with FIR filter and UART), this figure likely
belongs to a register or multiplexer pipeline that:
48 | P a g e
Stages data before sending it for transmission or output (e.g., in a
UART),
Could implement a data buffer for pipelined FIR output samples,
Or may be a parallel bus multiplexer/scheduler if using AXI-
compatible logic.
49 | P a g e
Another RTL_mux_AXIWC fetches accumulator_reg[23:0] and routes it
to the output: data_wr_out[23:0].
Control Signals
Control signals like valid, mux_sel, and clk/rst are used to enable
pipelining, synchronization, and multiplexer control.
50 | P a g e
5.1. 3 RTL data path
Figure 15 shows a much more complex RTL data path, likely a fully
pipelined or parallelized FIR filter or MAC-based DSP unit. The structure
appears to involve multiple stages of:
Multipliers
Adders
MUXes
Registers
1. Pipelined Multiply-Accumulate (MAC) Units
2. MUX Logic
51 | P a g e
Registers at the end store the computed result, likely synchronized with a
clock and valid signal.
Functionality
This RTL architecture looks like a parallel and pipelined FIR filter or
vectorized MAC array with high throughput:
Multiple taps and stage-wise accumulation.
Latency is reduced by pipelining.
Suitable for high-speed signal processing (e.g., audio, image, or RF
applications).
This latest figure 16 shows a top-level RTL netlist or block diagram that
appears to be the input/output interface logic of your system, likely for data
acquisition and UART transmission. Architecture Breakdown
Input Section (Left)
16 Inputs: data_in[0] to data_in[15], each connected to a buffer (e.g.,
BUF).
This resembles parallel input data acquisition, likely from sensors or a
memory bus.
All are connected to internal wires named data_in_BUF[xx]_inst.
Control Section (Center)
A clock buffer (clk_BUF_inst) and reset buffer (rst_BUF_inst) handle
timing and reset signals.
Two important modules:
o rx_inst: Possibly receives control/config data (e.g., from UART
or another serial interface).
o uart_inst: Handles data transmission, suggesting a UART
interface for output.
Output Section (Right)
16 data_out lines from data_out_BUF[xx]_inst.
These feed into the uart_inst block.
Signals like tx, tx_done, and data_out[255:0] indicate that a UART
transmitter is outputting a 256-bit wide data stream.
52 | P a g e
Functional Summary
This block likely performs:
Input buffering of 16 parallel data signals.
UART-based serialization of those signals for communication.
Possibly part of a signal processing chain output, such as:
o FIR filter results
o Sensor data logging
o Image data stream
Control over TX via tx_done, tx signals.
53 | P a g e
You retain the option to disable the buffer or control I/O behavior
dynamically, which is crucial for power-sensitive or reconfigurable
systems.
The figure 17 that provided is a zoomed-in RTL schematic view of the IBUF
(Input Buffer) instance for data_in_IBUF[0]_inst, specifically showing how
external input data is being handled in your design.
54 | P a g e
5.1.5 Power Estimation
55 | P a g e
2. data_in = "789" (Changing over time):
Data input seems to progress through values: "000" → "abc" → "123" →
"456" → "789" at ~20 ns intervals.
This indicates some kind of input stimulus or testbench cycling data
every 20 ns.
3. data_out = 000000 (Flat line):
Starts as xxxxxxx (undefined), becomes 000000 and stays flat — not
responding to data_in.
4. tx = 1 (Stuck high):
Transmission line is high (idle state in UART).
No transition → no data is being serialized/transmitted.
5. tx_ready = 0:
Indicates not ready to transmit — possible internal FSM or buffer not
enabling tx.
56 | P a g e
the reference clock for the PCIe SerDes (sys_clk_gt) and potentially the
system clock (sys_clk) of the PCIe core.
The pcie_perstn signal directly connects to the reset input of the
"pcie4_uscale_plus_0" block.
The "pcie4_uscale_plus_0" block manages the entire PCIe
communication stack, from the physical layer signaling through the data
link and transaction layers, as indicated by its numerous ports.
The wide "pcie_express_x16" output indicates a high-bandwidth PCIe
connection, capable of significant data transfer rates.
1. Input Ports:
o rst: A single-bit reset signal.
57 | P a g e
o clk: A single-bit clock signal.
o data_in[11:0]: An 12-bit input data bus.
2. Registers (RTL_REG_ASYNC): There are several registers labeled
RTL_REG_ASYNC. These are likely asynchronous reset flip-flops.
They are used to store intermediate results and pipeline the dataflow.
You can see the data flowing through a chain of these registers.
3. Multipliers (RTL_MULT): There are three multiplier blocks labeled
RTL_MULT. These blocks take two input operands and perform
multiplication.
o One multiplier takes x_reg[1][11:0] and data_out31_i.
o Another takes x_reg[2][11:0] and data_out30_i.
o A third takes x_reg[4][11:0] and data_out29_i.
4. Adders (RTL_ADD): There are two adder blocks labeled RTL_ADD.
These blocks take two input operands and perform addition.
o One adder takes the output of the first multiplier and
data_out30_i.
o Another adder takes the output of the second multiplier and
data_out29_i.
5. Signals: The green lines represent data signals connecting the different
blocks. The bit widths of these signals are indicated in square brackets
(e.g., [11:0] for 12 bits, [16:0] for 17 bits).
6. Dataflow: The input data data_in is registered and then used in
subsequent operations. The outputs of the registers (x_reg) are fed into
the multipliers. The outputs of the multipliers are then fed into the
adders, creating a chain of arithmetic operations. The data_out signals
likely represent intermediate or final outputs of the computation.
58 | P a g e
Figure 21 RTL View for propose model ( Low Pass Filter)
59 | P a g e
Figure 25 Part - 4 RTL View for propose model
60 | P a g e
Figure 29 Top Level Model
Interpretation Tips
Identifying specific components or trace signal flow:
1. Use Schematic Navigation Tools:
o In Vivado, click elements and use “Highlight Net” to trace
[Link] hierarchy browser to focus on specific blocks
(e.g., FSM, datapath).
2. Label Decoding:
o Try zooming in or exporting the RTL schematic with signal
names. Look for modules named ctrl, fsm, mux, reg, or alu.
3. Simulation/Elaboration Tools:
o Use Vivado's elaborated design or post-synthesis netlist for
clearer logic breakdown.
61 | P a g e
clk: A periodic clock signal with a period of approximately 40 ns
(frequency of 25 MHz).
rst: An active-low reset signal that is asserted at the beginning of the
simulation and then de-asserted after around 80 ns.
data_in[11:0]: An input data bus that takes on different hexadecimal
values at different times (e.g., 7d0, 000, 7d0).
data_in_tlast: A single-bit signal that appears to be associated with the
input data stream, possibly indicating the last data element. It is high
when data_in is 7d0 around the 120 ns mark and again around the 760 ns
mark.
valid: A single-bit signal that goes high after the reset is de-asserted and
stays high for most of the simulation, indicating that the input data is
valid.
reg_out[31:0]: A 32-bit output register. It shows a change in value
(000001b0) shortly after the reset is released and valid goes high. This
value remains constant for a period. Later, there's activity around the 700
ns mark, but the exact values are difficult to discern from the zoomed-out
view.
exp_out[23:0]: A 24-bit output signal. It remains at 000000 for a
significant portion and then shows activity towards the end of the
simulation (around 700 ns). Similar to reg_out, the exact values during
this activity are hard to read.
CLK_DIV_inst_CLK_OUT: A clock signal that appears to be a divided
version of the main clk signal. Its frequency is visibly lower than clk
62 | P a g e
Figure 30 Output wave form in Behaviour Simulation
63 | P a g e
Figure 32 Output wave form in Post Synthesis Function Simulation
Post-Synthesis
Behavioral Post-Synthesis Timing
Feature Functional
Simulation Simulation
Simulation
Realistic timing;
Ideal timing;
Ideal timing; still considers the delays
assumes zero
Timing assumes zero delay introduced by
delay for logic
Accuracy for logic gates and synthesized logic gates
gates and
interconnects. and the physical routing
interconnects.
of interconnects.
Abstract RTL Uses the synthesized
Uses the synthesized
model; does not netlist composed of
Gate-Level netlist with added timing
reflect the actual actual hardware
Detail information extracted
synthesized primitives (LUTs,
from place and route.
hardware. flip-flops, etc.).
Verify the functional
Verify the correctness while
Verify the functional
functional accounting for real-
Purpose correctness of the
correctness of the world timing behavior.
synthesized netlist.
RTL design. Identify potential timing
violations.
Transitions might be
Similar to behavioral, delayed, and glitches or
Clean transitions
but might show minor race conditions due to
at clock edges,
Waveform differences due to the timing issues can be
predictable
Appearance synthesized structure observed. Signal changes
delays based on
(e.g., different might not occur exactly
RTL description.
internal signal order). at the clock edge as in
ideal simulations.
reg_out Shows a clear Should functionally The transitions to the
Behavior transition to match the behavioral new values might be
000001b0 after simulation in terms of delayed compared to the
reset and valid. the sequence of behavioral and
Subsequent values. functional simulations
changes are due to propagation
64 | P a g e
aligned with the
delays.
clock.
Shows a
transition to The activity observed
exp_out
000000 and later Should functionally might be delayed, and
Behavior activity aligned match the behavioral the timing of the value
with the clock simulation. changes will reflect the
based on the RTL actual hardware delays.
functionality.
The divided The frequency
The divided clock's
clock will have a division will be the
transitions will be
CLK_DIV_inst precise frequency same, but the
_CLK_OUT subject to propagation
division based on implementation might
delays within the clock
the RTL involve specific clock
divider logic.
description. divider primitives.
65 | P a g e
positive thermal margin indicates that the device is operating within its
thermal limits. The value in Watts (85.3 W) likely represents the additional
power dissipation the device could handle before exceeding the maximum
junction temperature.
Ambient Temperature: 25.0 °C
o The assumed temperature of the surrounding environment.
Effective θJA: 0.5 °C/W
o This is the junction-to-ambient thermal resistance, indicating how much the
junction temperature will rise above the ambient temperature for every Watt
of power dissipated. A lower θJA indicates better heat dissipation.
Power supplied to off-chip devices: 0 W
o The design is currently estimated to supply no power to external
components.
Confidence level: Low
o This is an important indicator. A "Low" confidence level suggests that the
activity information used for power estimation might be incomplete or not
very accurate. This could be due to the use of vector less analysis or
incomplete simulation data. The power estimates are likely to become more
accurate after more detailed simulations or implementation.
66 | P a g e
The pie chart and the table provide a breakdown of the total on-chip power into
dynamic and static components:
67 | P a g e
Summary Report
The High Pass Filter model utilizes FIR filtering with UART integration and is
implemented using modular RTL blocks including fir_filter, uart_tx,
RTL_MUL, and RTL_ADD. Despite correct RTL structure, waveform analysis
indicates the system has not yet responded correctly to input stimuli—suggesting
further debugging is required for functional completeness.
The Low Pass Filter design shows improved simulation results across
behavioral, post-synthesis functional, and timing simulations. It uses a more
complex MAC pipeline and demonstrates correct data flow, register operation,
and timing behavior.
68 | P a g e
Conclusion
69 | P a g e
Applications
This system can be used in real-time digital signal acquisition, filtering, and
communication—ideal for applications like:
Biomedical signals (e.g., ECG filtering and transmission)
Industrial sensors (filtered sensor data over UART)
Audio processing and streaming
70 | P a g e
Future Scope
Develop Reconfigurable Filter Architectures: Allow runtime switching
between high pass and low pass configurations using partial reconfiguration or
control FSMs. Hardware Acceleration for AI/ML Tasks: Utilize the
filtering hardware as a pre-processing stage for machine learning models
running on FPGA or SoC platforms, especially in biomedical or industrial
applications. Optimize Power Consumption: Focus on reducing I/O toggling
and logic transitions to minimize dynamic power, particularly by leveraging
clock gating and low-power design strategies. Implement Real-Time Data
Interface: Integrate real-world analog signal acquisition modules (e.g., ADC
interfaces) to validate the system in a practical setting. Expand
Communication Protocols: Extend data transmission capabilities by
integrating Ethernet or wireless modules alongside UART and PCIe for
broader application. Thermal and Power-Aware Layouts: Post-place-and-
route power estimation and thermal simulation should be performed for
precise deployment planning, especially in embedded or portable devices.
71 | P a g e
References
1. Lathi, B. P., & Ding, Z. (2009). Modern Digital and Analog Communication
Systems. Oxford University Press.
2. Xilinx Inc. (2021). Artix-7 FPGAs Data Sheet: DC and AC Switching
Characteristics. [Online]. Available: [Link]
3. Mitra, S. K. (2006). Digital Signal Processing: A Computer-Based
Approach. McGraw-Hill.
4. Xilinx Inc. (2022). Vivado Design Suite User Guide: Synthesis (UG901).
5. Ifeachor, E. C., & Jervis, B. W. (2002). Digital Signal Processing: A
Practical Approach. Pearson Education.
6. Kuon, I., & Rose, J. (2007). “Measuring the gap between FPGAs and
ASICs,” IEEE Transactions on Computer-Aided Design of Integrated
Circuits and Systems.
7. Vivado Design Suite. (2023). Xilinx Documentation Navigator. [Online].
Available: [Link]
8. Y. Zhao and L. Liu, “Efficient FPGA Implementation of Transposed Form
FIR Filters for High-Speed Applications,” IEEE Access, vol. 8, pp. 100234–
100245, 2020. doi: 10.1109/ACCESS.2020.2998047.
9. A. Banerjee, R. Singh, and P. Das, “Design and Implementation of Systolic
Array Based FIR Filter on FPGA,” IEEE Transactions on Very Large Scale
Integration (VLSI) Systems, vol. 29, no. 3, pp. 623–632, 2021. doi:
10.1109/TVLSI.2020.3045651.
10. P. K. Meher, S. Chandrasekaran, and A. Amira, “FPGA Realization of FIR
Filters by Efficient Distributed Arithmetic Architectures,” IEEE
Transactions on Circuits and Systems I: Regular Papers, vol. 56, no. 7, pp.
1349–1360, Jul. 2019. doi: 10.1109/TCSI.2019.2912137.
11. S. Kalaiselvan and R. Anitha, “Area-Efficient FIR Filter Implementation
Using Canonical Signed Digit Encoding on FPGA,” Microprocessors and
Microsystems, vol. 76, 2020, Art. no. 103089. doi:
10.1016/[Link].2020.103089.
12. A. Sharma and A. Gupta, “High Throughput Pipelined FIR Filter
Architecture for FPGA-Based DSP Applications,” International Journal of
Electronics and Communications (AEÜ), vol. 135, 2021, Art. no. 153737.
doi: 10.1016/[Link].2021.153737.
13. A. Dandapat, B. Majumdar, and P. Bhattacharya, “FPGA Implementation of
Parallel FIR Filter Architecture for High-Speed Applications,” Journal of
Systems Architecture, vol. 91, pp. 35–45, 2018. doi:
10.1016/[Link].2018.08.001.
14. P. Rane, S. Acharya, and M. Parikh, “Accelerating FIR Filter Design Using
High-Level Synthesis for FPGA-Based Signal Processing,” in Proc. IEEE
Int. Conf. VLSI Design (VLSID), 2019, pp. 245–250. doi:
10.1109/VLSID.2019.00054.
15. S. Gupta and A. Roy, “Fixed-Point Design Techniques for FPGA-Based
Digital Filters,” Procedia Computer Science, vol. 115, pp. 613–620, 2017.
doi: 10.1016/[Link].2017.09.129.
72 | P a g e
16. D. Rao, A. Jain, and S. Kumar, “Design of High-Speed FIR Filter Using
Artix-7 FPGA for DSP Applications,” in Proc. IEEE Int. Conf. Advances in
Computing, Communications and Informatics (ICACCI), 2018, pp. 2039–
2043. doi: 10.1109/ICACCI.2018.8554799.
17. N. Patel and R. Gajjar, “Comparative Analysis of FIR Filter on Xilinx FPGA
Platforms,” in Proc. IEEE Int. Conf. Intelligent Systems and Control (ISCO),
2017, pp. 1–6. doi: 10.1109/ISCO.2017.7856069.
18. V. Joshi and P. Jain, “Low Power FIR Filter Design for Embedded DSP
Applications Using Spartan-6 FPGA,” International Journal of Embedded
Systems, vol. 13, no. 1, pp. 58–66, 2021. doi: 10.1504/IJES.2021.112891.
19. N. Tuan, M. H. Pham, and T. H. Phan, “Multiplier-Less Distributed
Arithmetic Based FIR Filter Architecture for High-Speed Applications,”
Microelectronics Journal, vol. 87, pp. 16–23, 2018. doi:
10.1016/[Link].2018.04.002.
20. A. Goswami, P. Bhattacharya, and B. Majumdar, “Efficient FPGA
Realization of LUT-Based Multiplier Structures for FIR Filters,” Integration,
the VLSI Journal, vol. 68, pp. 143–151, 2019. doi:
10.1016/[Link].2019.02.004.
21. P. Bala, S. Saha, and A. Das, “Pipelining Techniques for Speed
Enhancement in FPGA-Based FIR Filters,” Engineering Science and
Technology, an International Journal, vol. 22, no. 1, pp. 150–158, 2019. doi:
10.1016/[Link].2018.05.007.
22. R. Kumar, D. Singh, and M. Kaur, “High-Performance FIR Filter Design
Using Parallel Pipelining Architecture on FPGA,” Journal of King Saud
University – Computer and Information Sciences, 2021. doi:
10.1016/[Link].2021.02.012.
23. A. Sharma, V. Saini, and P. Verma, “Optimized FIR Filter Design Using
High-Level Synthesis in Vivado HLS,” in Proc. IEEE Int. Conf. Signal
Processing and Integrated Networks (SPIN), 2020, pp. 342–347. doi:
10.1109/SPIN48934.2020.9071176.
24. K. Venkatesh, R. Babu, and S. K. Narayan, “Power-Efficient FIR Filter
Design Using Clock Gating and DVFS on FPGA,” Microprocessors and
Microsystems, vol. 81, 2021, Art. no. 103740. doi:
10.1016/[Link].2021.103740.
25. K. Niranjan, P. Kumar, and R. Sinha, “Resource Sharing Techniques for
Low Power FIR Filter Implementation on FPGA,” Journal of Systems
Architecture, vol. 100, p. 101688, 2019. doi: 10.1016/[Link].2019.101688.
26. R. Sivaram, M. R. Vasanth, and S. D. Venkatesh, “Design and
Implementation of CSD-Based Low Power FIR Filter on FPGA,” AEÜ -
International Journal of Electronics and Communications, vol. 116, 2020,
Art. no. 153063. doi: 10.1016/[Link].2019.153063.
73 | P a g e