Virtual RS232 Terminal with LVDS LCD Controller

Virtual RS232 Terminal with LVDS LCD Controller


Category: Uncategorized

Created: March 03, 2011

Updated: January 27, 2020

Language: Verilog

Other project properties

Additional info: FPGA proven

WishBone compliant: No

WishBone version: n/a

License: LGPL


An Virtual RS232 Terminal developed with Avnet Xilinx Spartan 3A Evaluation Kit ( Spartan XC3S400A ) that has a LVDS LCD Controller (Notebook LCD used for development, 3 LVDS Pairs interface) and a PS2 Keyboard Receiver.

The Core receives the ScanCodes on PS2 Keyboard, and sends ascii through serial port. Also, it received the ASCII Chars on Serial port and write on a CharRam Buffer (80x60 chars) that displays on the LCD Screen.

Video from project:

More info at: (Portuguese with Google Translation)


There are things working, and things to be done.


- Serial Data Receiver writting to Char Ram
- Fixed 80x60 Char RAM
- EnergyLabs Logo on ROM
- ScanCodes on ROM
- IBMPC 8x8 Font on ROM
- All ROMS was implemented as blockram, so I am using about 50% of the block ram resources.
- LCD LVDS Controller Uses modified XAPP486 and its a LVDS33 Signal.
- Parallax Scrolling BackGround (Made with logic)
- EnergyLabs Logo with Transparency (Color-Key)


- Faster Serial Receiver. Dunno why its so slow to receive chars on the serial, even at 115200 (Maybe its something when write)
- Dynamic Console Size
- All ROMS stored at external flash
- Modify XAPP486 or make a new 7-to-1 serializer (I tryed that, but the maximum speed at my core was only 40MHz), because I dont know how Xilinx made the XAPP486 and it has 4 channels (we only need 3) and the bits are in a different way.
- External RAM for Screen, actually I wasnt done that because I Dont have external ram.

Few things:

- The XAPP486 sends the 7 bits for each channel in a different way that LCD needs, as I didnt understand how XAPP486 was write, I only mapped the correct bits. Its working correct, but I think it can be better.