LVDS Display controller for microprocessors

„As LVDS is a differential signal standard we can’t just connect it directly to an MCU even though it supported the larger display resolutions. So as we already had to use some kind of converter in between we decided to go with an FPGA and embed a complete display controller solution into it.

The FPGA is connected to the LVDS display using an 8-bit differntial pair interface. Then it is connected to a 16-mbit ISSI SRAM for the framebuffer and finally to a 16-bit Host interface which is made compliant to the Motorola-8080 standard which is commonly seen in other TFT display controllers such as ILI9320, SSD2119 and SSD1963.
And as we both need a lot of pins (over 50 I/O pins) and a reasonable portion of available logic we decided to go with the 250K version of the Xilinx Spartan 3E device.

The standard Host interface we made makes it possible for any microcontroller or microprocessor to write to the display controller and thereby display graphics on these larger resolution displays.
Even a small and a bit slow Arduino will be able to display graphics on the display though it won’t be able to do full screen updates that fast.
But to make it a bit more featured and more comfortable to use with smaller microprocessors we have made some fast Clearings and write commands that doesn’t require a lot of write cycles from the Host microprocessor.

So currently the display controller supports the following commands:

  • Set framebuffer writing pointer position (X,Y)
  • Set framebuffer access region (X0,Y0,X1,Y0)
  • Reset framebuffer access region
  • Framebuffer writing – write pixels to pointer position
  • Put pixel (X,Y,Color)
  • Clear display (Color)
  • Clear region (X0,Y0,X1,Y1,Color)“