Vision Processing with the Canny Edge Detection Reference Design

ID 683433
Date 2/14/2015
Public
Document Table of Contents

1.5.3. Frame Buffering

The Canny edge reference design uses a triple buffering pointer to buffer video frames in the ARM processor. This pointer swap mechanism prevents unnecessary copying from the input frame buffer to a processing buffer and from the processing buffer to the output frame buffer. The pointer swap mechanism has 3 buffers: Input, Processing and Output.

During a pointer swap, the design swaps the input buffer pointer with the processing buffer. The samples in the new processing buffer are ready for image processing. Likewise, the design swaps the processing buffer pointer with the output buffer. Then the processed video frame is ready for the design to output. The design swaps the output buffer pointer with the input buffer.

To ensure the design does not swap the processing buffer before it processes an image frame, the pointer change occurs only when image processing on a video frame is complete. The ARM processor informs the mSGDMA of a frame process completion via the FPGA-ARM AXI connection bus. To ensure the input buffer is filled, the swap must also occur only on the start of a new video frame. Processing a video frame can take longer than 1/60 seconds because of algorithmic complexity and the amount of pixel data in one frame, so the design may drop video frames, decreasing the output frame rate.