We present a QR Code scanner implemented on an AMD Urbana FPGA, utilizing an OV7670 camera module to identify QR Codes and transmit the decoded information via HDMI to an external monitor. The OV7670 produces a 480x480 image that is subsequently converted to black and white and smoothed through convolutions to reduce graphical noise. Alignment patterns are used to locate the code, determine the module size, and generate the downsampled QR code for decoding. Upon decoding, the results are communicated to a computer via Manta. Our scanner can decode version-1 QR codes as small as 240x240 pixels in as fast as .02 seconds with possible optimizations to decrease the speed further.
- AMD Urbana FPGA
- OV7670 camera module mounted onto a Seeeduino Xiao SAMD21 (Arduino code included in the repository).
The only software requirement besides Vivado is Manta, which is used to output the decoding results.
- Final Report is an IEEE Formatted report contains the whole system structure including the decoding algorithm, system block diagram, and memory utilization, timing, and performance.
- YouTube Video, gives a brief overview of the system's workings, and a super creative HDMI multiplexing illustrating the decoding process stage by stage.
- custom_camera_firmware includes the firmware, the camera module Arduino code.
- hdl includes the HDL code written using SystemVerilog.
- sim includes some test benches used to help test and debug our system's functionality.
- xdc contains the .xdc constraints file.
- qr_output contains a python script used to pass the output through Manta.
M.Subhi Abo Rdan: [email protected]
Ayana Alemayehu: [email protected]