This repository contains the synthesizable Register-Transfer Level (RTL) Verilog design and FPGA hardware verification for a Multi-Rate Mixed-Signal Interface: a 1-Bit Delta-Sigma Analog-to-Digital Converter (ADC) front-end coupled with a 36-Bit Cascaded Integrator-Comb (CIC) Decimation Filter.
In modern ASIC and SoC architectures (GPUs, AI accelerators, mobile processors), interfacing with continuous real-world analog signals requires high-precision conversion without consuming massive silicon area. This project replaces traditional, hardware-expensive multi-bit ADCs by utilizing 1-bit Pulse Density Modulation (PDM) at an extreme oversampling rate (
The architecture bridges the analog/digital boundary across three distinct clock and frequency domains using a multiplier-free hardware design:
-
Clock Domain Translation (
basys3_top.v): The master$100 \text{ MHz}$ quartz oscillator of the Basys 3 board is divided down by a factor of 195 to generate the synchronous$512 \text{ kHz}$ oversampling clock required by the modulator. -
Delta-Sigma Modulator Front-End: An analog voltage stream is converted into a 1-bit high-frequency pulse density train. A solid High (
$+1.0$ ) is mapped to64'h3FF0000000000000, and a Low ($-1.0$ ) is mapped to64'hBFF0000000000000. -
CIC Decimation Core (
CIC_Decimation.v): Operating at$512 \text{ kHz}$ , internal integrator accumulators continuously sum the incoming bitstream. A downsampling timing controller (Digital_Decimation_Filter_tc.v) fires a hardware strobe (ce_out) every 128 clock cycles, sampling the accumulator and dropping the high-frequency quantization noise. - Physical LED Bus Mapping: The top 16 active bits of the 36-bit decimated integer are routed to physical FPGA output pins to visually demonstrate real-time hardware signal integration.
| Parameter | Specification | Engineering Rationale |
|---|---|---|
| Front-End Architecture | 1st-Order Discrete-Time |
Trades instantaneous precision for raw sampling speed |
| Back-End Filter | Multi-Stage CIC Decimator | Multiplier-Free Math: Uses only adders, subtractors, and registers |
| Oversampling Ratio (OSR) | Provides significant quantization noise suppression at baseband | |
| Master Clock ( |
Standard crystal oscillator on Xilinx Artix-7 development boards | |
| Sampling Frequency ( |
Derived via custom RTL synchronous clock divider | |
| Baseband Output ( |
Exact Nyquist rate output after |
|
| Internal Resolution | 36-Bit Signed Integer | Prevents mathematical overflow during massive integration cycles |
| Target Hardware | Xilinx Artix-7 (xc7a35tcpg236-1) |
Digilent Basys 3 FPGA Development Board |
A critical design requirement for mixed-signal ASIC wrappers is minimizing logic overhead. By choosing a CIC filter topology instead of a Finite Impulse Response (FIR) filter, zero expensive DSP multiplier slices were consumed.
As extracted directly from the AMD Vivado Post-Synthesis Utilization Report for the target Artix-7 (xc7a35tcpg236-1) FPGA:
-
Slice LUTs:
410 / 20,800 (2%)— Extremely lightweight logic footprint across the top wrapper and decimation filter. -
Slice Registers:
346 / 41,600 (1%)— Highly efficient storage utilization for the 36-bit integration accumulators and delay lines (mapped as standard Flip-Flops). -
Bonded IOB (Input/Output Buffers):
19 / 106 (18%)— Physical pin connections allocated for the master clock, reset button, 1-bit PDM input stream, and the 16-bit LED output bus. -
Clock Buffers (BUFGCTRL):
2 / 32 (6%)— Dedicated low-skew routing buffers for the$100 \text{ MHz}$ master and$512 \text{ kHz}$ divided clock domains. -
DSP Slices (Multipliers):
0 / 90 (0%)— Complete elimination of hardware multipliers, proving optimal silicon area efficiency.
├── rtl/ # Synthesizable Hardware Sources
│ ├── basys3_top.v # Top-level physical board wrapper & clock divider
│ ├── Digital_Decimation_Filter.v # Main decimation subsystem interconnect
│ ├── CIC_Decimation.v # Multiplier-free Integrator-Comb filter core
│ ├── Digital_Decimation_Filter_tc.v # R = 128 downsampling timing controller
│ └── nfp_convert_double_to_fixed_8_En0.v # Fixed-point data format converter
│
├── tb/ # Verification & Simulation Benches (Testbenches)
│ ├── basys3_tb.v # Full system behavioral testbench (10ms timeline)
│ └── Digital_Decimation_Filter_tb.v # Algorithmic core testbench (File I/O)
│
├── constraints/ # Physical FPGA Mapping
│ └── basys3_pins.xdc # Xilinx Design Constraints for Basys 3 (Artix-7)
│
└── docs/ # Verification Datasheet & Visual Evidence
├── simulink_model.png # Golden Reference mathematical Z-domain model
├── Block Diagram Delta-Sigma-Filter.png # Architectural data-flow schematic
├── gtkwave_decimation.png # Core RTL timing verification screenshot
├── Vivado Waveform.png # Physical XSIM 10ms hardware verification
├── utilization_report.png # Synthesis Slice LUT/Register resource counts
└── synthesized_schematic.png # Gate-level physical schematic (Vivado F4)
The architecture was designed using a top-down verification methodology, starting from a Z-domain mathematical model and culminating in physical gate-level behavioral timing analysis.
The decimation algorithms were first prototyped and simulated in Simulink to establish baseband frequency response and signal-to-noise ratio (SNR) targets before RTL translation.
At the core subsystem level, testbenches verified that the clock enable flag (ce_out) fires exactly once every 128 cycles of the Out1) without metastable transitions.
To prove physical hardware readiness without relying on software simulation abstractions, basys3_tb.v simulates a 10-millisecond real-time execution window. It generates a physical
Notice the discrete decimation stepping on the 16-bit LED bus (led_out[15:0]). The hardware smoothly staircases upwards during high-density input integration (
Post-synthesis logic mapping confirms clean structural routing between the input buffers (analog_in_pin_IBUF), clock domain distribution (clk_512k_BUFG), the timing controller (u_Digital_Decimation_Filter_tc), and the CIC filter stages (u_CIC_Decimation).
This project is entirely open-source and can be verified using either lightweight command-line open-source simulators or industry-standard AMD Vivado suites.
To run the core algorithmic verification on any Linux, macOS, or Windows terminal:
# Clone the repository
git clone https://github.com/Rahul-Ramteke-11/Artix7-Delta-Sigma-Decimation-Filter.git
cd Artix7-Delta-Sigma-Decimation-Filter/tb/
# Compile the RTL and Testbench using Icarus Verilog
iverilog -o sim.vvp Digital_Decimation_Filter_tb.v ../rtl/*.v
# Execute the simulation
vvp sim.vvp
# View the generated timing waveforms
gtkwave Digital_Decimation_Filter_tb.vcd
- Open AMD Vivado and create a new RTL Project targeting the Basys 3 (
xc7a35tcpg236-1). - Add all
.vfiles located in/rtlas Design Sources. - Add
basys3_pins.xdclocated in/constraintsas your Constraints File. - Add
basys3_tb.vlocated in/tbas your Simulation Source. - To view physical timing: Click Run Simulation -> Run Behavioral Simulation. In the Tcl Console, type
run alland click Zoom Fit to view the full 10ms integration ramp. - To generate hardware: Click Generate Bitstream. Once compiled, open the Hardware Manager, connect the Basys 3 via USB, and program the device with the generated
.bitfile.
Rahul Ramteke Third Year Undergraduate Student, Indian Institute of Technology Gandhinagar ; Specialization: Analog & Mixed-Signal IC Design / RTL Architecture / 3D ICs For professional inquiries, architecture discussions, or ASIC engineering roles, please reach out via GitHub or LinkedIn.





