Content originally posted in LPCWare by wellsk on Fri Jun 28 08:54:00 MST 2013Sorry, I missed that 60Hz although ti was right there looking at me. With LCDs with fast pixel clocks, the latency for filling the FIFOs when they are getting empty is more important the the bandwidth of the system.
Estimating if an LCD with a fast pixel clock will work in a specific system is a little bit of guesswork. I'd prefer you go with something safer that will work instead of pushing the limits.
Going back and looking at LCD specs, the LCD FIFO is larger than I though (16x64), so that 174nS value is not accurate (by quite a bit!) and the controller will generally request data slower (which is a good thing).
The LCD FIFO needs to buffer enough data to keep the LCD refreshed - smoothly - even when the system is under load. In some cases, system events can occur that cause the LCD FIFO fill to be delayed. For example, the CPU might be doing a burst read from DRAM (memcpy, or maybe a LDM operation with a stack pop), but this may get stalled due to a DRAM refresh cycle. If multiple stalls like this happen, it can cause delays to the LCD refresh cycle and the LCD FIFO will eventually underflow and you'll get a display glitch/tear. The point of the LCD clock rate this tearing starts to happen is systemic - how many devices are trying to use the DRAM, how big is your DRAM bus size, how fast is your DRAM/bus clocks?
>(According to the bandwidth calculator the bus load for my application with the LPC4088 is 54%(@80Mhz,32bit) which is higher than with LPC1788 (45,6%@120Mhz,16bit) which doesn't seem logical, does it?)
The bandwidth calculators are great tools to get an idea of bandwidth used in a system for the LCD controller, but I'm not sure they'll actually tell you if you'll get glitch free operation. DRAM is protocol based and requires setup on muxed address lines prior to bursting the data from the device. The DRAM controller will need to write a row and column address, close or open banks, and occasionally handle DRAM refresh prior to performing the data access. For a 4x32-bit burst read operation, a 32-bit interface would take 4 clock cycles for the data, while a 16-bit interface would require 8 block cycles. - these 4 and 8 clocks don't include the RAS/CAS setup time So if all things are equal (clock rate, CAS/RAS latencies, etc.) and both 16- and 32-bit interfaces did a 4x32-bit transfer of data, the 16-bit transfer wouldn't take twice as long - even though it requires twice the data transfer clocks - because the setup time before the data transfer requires overhead which is the same for both DRAM bus sizes.
...so if I was doing this...I wouldn't go with the 16-bit DRAM bus interface when using the LCD controller at your target pixel clock - especially at 60Hz or 80Hz DRAM clock speed. IYes - it might work, but you wouldn't really have a lof of bandwidth to work with and you might end up having to lower your LCD clock rate to get a stable image....
Sorry for long delay and the rambling. I hope this helps,