FPGA-Based Real-Time Auction System
An FPGA auction system implementing keypad bidding, eight-digit comparison, countdown resets, and winner determination in digital logic
Project Overview
This project is a real-time auction system built by combining an FPGA board’s I/O devices with combinational and sequential logic. It accepts bids from a keypad, compares each bid with the current price, and updates the display only when the new amount is higher. The auction closes after eight seconds without a valid bid or immediately when the maximum value of 99,999,999 is entered.
The system was developed by a two-person team for Pusan National University’s Logic Circuit Design and Laboratory course in 2023. We designed the individual logic modules as block diagrams in Quartus Prime, connected them through the top-level Auction_System circuit, and verified their behavior on a Cyclone V FPGA board.
Demonstration Video
Auction Flow
Press * → Enter bid → Confirm with # → Compare prices → Update or reject → Close auction
- Pressing
*starts the auction or prepares the system for a new bid. The opening price is zero, and all eight countdown LEDs turn on. - The bidder enters an amount of up to eight digits on the keypad and confirms it with
#. - A bid higher than the current price is stored and shown on the 7-segment display, while the countdown resets to eight seconds.
- A bid less than or equal to the current price is rejected without resetting the active timer.
- If eight seconds pass without a valid bid, or if 99,999,999 is entered, the current price becomes the final winning bid.
The full-color LED is green while the auction is active and red after it closes. Eight additional LEDs visualize the remaining time by switching off one per second.
Logic Design
- Input conversion and edge handling:
d2bconverts the 0–9 keypad signals into 4-bit values, whiletriggerprevents a single key press from being stored multiple times. - Eight-digit storage: Eight 4-bit registers in
new_8_sramshift in the entered digits, andcurr_8_sramretains the accepted highest bid. - Bid comparison:
EightDigitComparatorcombines eight 4-bit comparisons from the most significant digit downward. It emits theGt_Bupdate signal only when#is pressed and the new bid is greater. - 7-segment output:
counter8cycles through the eight display positions, while multiplexers and theb2segdecoder dynamically present the current bid. - Eight-second timer: Six
CNT10stages divide the 1 MHz reference clock into a one-second pulse. An eight-step counter drives the remaining-time LEDs and restarts after every accepted bid.
My Contributions
According to the project report’s task allocation, I was responsible for the core input, comparison, display, and timing circuits.
- Designed the keypad bid-entry circuit
- Built the current-price update logic using eight-digit comparison and register modules
- Designed the multiplexed eight-digit 7-segment display circuit
- Implemented the one-second pulse generator and eight-second countdown timer
- Integrated the modules and verified their I/O behavior on the FPGA board
Results
The final circuit passed the Quartus Prime Fitter for the Cyclone V device using 79 ALMs, 112 registers, and 46 pins. The completed system covered the core auction flow: bid entry and comparison, current-price and timer updates after valid bids, multiplexed price display, and auction termination on timeout or the maximum bid.
Additional piezo alerts for the remaining time and rejected bids were removed from the final scope because of output constraints and circuit complexity. Auction progress and remaining time were instead communicated through the full-color status LED and the eight countdown LEDs.
Tech Stack
FPGA · Cyclone V · Quartus Prime 20.1 · Block Diagram/Schematic · Verilog HDL · Combinational & Sequential Logic · Keypad · 7-Segment Display · Full Color LED