Skip to content

ZCU104 Photonic Machine Learning Code Implemenation. It is composed of verilog codes and python codes.

Notifications You must be signed in to change notification settings

alexist2623/ZCU104_PhotonicML

Repository files navigation

FPGA Development for CRDONN

Overview

image

This project is composed of verilog codes and python codes which sends image data to SLM for Complex-valued, Reconfigurable,Diffractive all-Optical Neural Networks(CRDONN). The existing CRDONN system updated data from the PC. However, this method had difficulty updating data at precise timings due to the influence of the OS, which acted as a significant bottleneck in increasing the overall system bandwidth. For example, the existing image update consumed about 1 frame per second. To eliminate this bottleneck, an image update method using FPGA has been devised, and a performance improvement of approximately 10 frames per second is expected.

Image data to SLM device

image

Image data is saved in SD card as a bin file. This image is read from CPU(PS) and sent to PL side which converts image data to HDMI data format(8b/10b conversion). The image data is fixed at a resolution of 100x100, with the rest of the area being zero-padded on the PL side. Additionally, the image data is transformed on the PL side to comply with the HDMI 1.4 standard, and the auxiliary data for HDMI is fully input according to the EDID information of the SLM. Currently, the system works on a regular display, but the image is not displaying correctly on the SLM, and we are in the process of debugging this issue. HDMI Controller code is modified from https://github.com/sameer 's HDMI Code (https://github.com/hdl-util/hdmi.git).

PL-PS Cooperation

image

The image data is input into two separate FIFOs. One FIFO receives the new image data, while the other stores previously used data to be reused if no new image is available. When a signal indicating the need to input a new image from an external source is received (e.g., the camera exposure is complete), an interrupt signal is sent from the PL to the PS. The PS then sends the new image to the PL. This interrupt is handled by the GIC v2, and a service routine is defined in the PS firmware to process these interrupts.

About

ZCU104 Photonic Machine Learning Code Implemenation. It is composed of verilog codes and python codes.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published