Watch 8-bit pixels stream from camera into dual BRAM line buffers, latch into 3×3 shift registers, feed the parallel shift-add tree, and trigger the bounding box unit.
Stores previous 2 image rows so the chip never re-reads from external memory. Real pixel byte values shift left each cycle.
Complete Hardware Vision Pipeline Architecture
How pixel streams traverse dual on-chip BRAM line buffers, latch into the 3×3 sliding window register array, feed the 0-DSP shift-add arithmetic tree, and update the autonomous bounding box tracker without CPU intervention.
Dual BRAM FIFOs (Zero DDR Overhead)
Traditional CPU or GPU image processing requires copying every video frame into external DDR DRAM, creating severe memory bus congestion. This FPGA pipeline stores only 2 horizontal scanlines (2 × 480 bytes = 960 Bytes) in dual on-chip Block RAMs.
On every clock tick, the newest pixel is written into FIFO 0, the read-out byte from FIFO 0 enters FIFO 1, and FIFO 1 outputs the pixel from 2 rows ago. This produces 3 vertically aligned pixels (Row Y, Row Y-1, Row Y-2) in parallel without DDR access.
3×3 Sliding Window (9 Shift Registers)
To compute 2D convolution, the chip needs a 3×3 pixel neighborhood surrounding each coordinate. Instead of reloading data, 9 D-Flip-Flops (p00 through p22) form a spatial shift matrix.
On each rising clock edge, the 3 new incoming bytes from the line buffer taps latch into column 2 (p02, p12, p22) while column 2 shifts into column 1, and column 1 into column 0. All 9 pixels are simultaneously available to combinational arithmetic gates every clock tick.
0-DSP Multipliers (Bit-Shift Adder Tree)
The Sobel convolution kernels have fixed integer weights: [-1, 0, 1] and [-2, 0, 2]. In silicon, multiplying by 2 is accomplished by shifting wires left by 1 bit (p << 1), which requires zero transistors and zero DSP blocks.
A balanced 3-stage adder tree computes horizontal gradient Gx and vertical gradient Gy in parallel, adds absolute values |Gx| + |Gy| (Manhattan distance), and compares against the threshold in a single clock cycle.
Autonomous Tracker (Zero CPU Interrupts)
While software object trackers require OpenCV bounding-box algorithms that stall the CPU, this silicon architecture uses 4 concurrent hardware comparators running at 150 MHz.
Whenever the convolution engine flags an active edge pixel at coordinate (X, Y), the registers conditionally update: x_min = min(x_min, X), x_max = max(x_max, X), y_min = min(y_min, Y), and y_max = max(y_max, Y). At vertical sync (VSYNC), the bounding box is latched with zero CPU latency.
Pipeline Latency & Throughput Analysis
The total latency from the first camera pixel entering the chip to the first processed edge pixel leaving the chip is exactly 2 scanlines + 4 clock cycles (the time needed to fill both line buffers and propagate through the 3-stage adder tree).
Once the pipeline is primed, the hardware achieves a 100% duty cycle: exactly 1 processed pixel is produced on every single rising clock edge without pipeline bubbles, easily sustaining 1080p @ 60 FPS (124.8 MHz pixel clock) or 720p @ 120 FPS.
Frequently Asked Questions
p << 1), which requires zero transistors. The entire convolution is implemented with a lightweight 3-stage adder tree.