Calculating LCD Frame Rate and GLCDC Bandwidth for Graphics Systems
Frame Rate
LCD frame rate is limited by one of two factors:
The rendering speed of the frame buffer
The transmission speed of the frame to the LCD
The rendering speed is determined by the drawing algorithm. An entire frame buffer can be populated using a single memset command or a single dave2D command, however that is not a likely application for a user. For the purposes of these calculations, we will assume that the frame buffer is written pixel by pixel. This means the rendering speed is limited by the RAM write speed and LCD resolution.
The transmission speed is limited by the GLCDC PHY clock and frame size. The frame size includes front porch and back porch bits, which are required by the LCD but are not part of the displayed frame.
The system inputs are:
Bus clock frequency, Bclk [Hz]
Horizontal Resolution, SH [pixels]
Vertical Resolution, Sv [pixels]
GLCDC Clock , LCDclk [Hz]
GLCDC Clock Div, LCDdiv [counts]
Horizontal Cycles CH [counts]
Vertical Lines, CV [counts]
The system does not assume 100% access of the system for render or that the GLCDC has 100% access to the bus. The developer must assume a level of access to the bus:
System Bandwidth, Gsystem (Bus bandwidth scaling factor, related to RAM access, empirically derived)
GLCDC Bus Access, GGLCDC
The rendered framerate can be summarized as:
The transferred frame rate is capped at:
GLCDC Bandwidth
The GLCDC will consume a certain number of cycles based on the resolution, transfer rate, and the scaling factor of the GLCDC bus access:
The unique frame writes per second (FWSrendered) with GLCDC is given by the clocks remaining per second for the system to render given a system access scaling factor and resolution:
This equation does assume that the GLCDC is rendering upon each transferred frame. This is not always the case. This calculation yields a conservative estimate for bandwidth.
This adjusted frame writes per second can be used to get the bandwidth of the GLCDC module. This bandwidth is how much timing tolerance the GLCDC has to catch up with rendered frames:
It’s typical to try and optimize the unique frame writes per second to equal the transferred frames per second.
Example Table