Project maintainers


Name: rtftextcontroller
Created: Sep 6, 2011
Updated: Feb 24, 2023
SVN Updated: Feb 24, 2023
SVN: Browse
Latest version: download (might take a bit to start...)
Statistics: View
Bugs: 0 reported / 0 solved
Star2you like it: star it!

Other project properties

Category:Video controller
Development status:Beta
Additional info:FPGA proven
WishBone compliant: Yes
WishBone version: n/a
License: LGPL


2023/02/24 The controller now uses a 256-byte config space which allows the I/O addresses to be set programmatically. The goal is to have some degree of PCI software compatibility. The size of the text display memory has been parameterized to allow smaller or larger memories to be used.

2022/09/30 Yet a newer version of the text controller ( has been added. It is much the same as the previous version. It is configurable to interface to either a 64 or 32 bus as a MMIO device. The size of the font memory has been increased. Text cells remain in the same format. RGB output has changed slightly to 40 bits; 36 bit color RGB12-12-12 and a four bit color plane indicator. The glyph editor has been updated, it is still pretty primitive, but works well enough to create fonts. It has been modified to handle .mem file formats.

2020/11/26 A new version of the text contoller ( has been added. This version uses a 64-bit bus to interface to the processor as a MMIO device. It supports bitmap fonts from 6x6 up to 32x32. Text cells are 64-bits wide and include 21-bit RGB777 foreground, background colors and a 12-bit character code. Up to 4096 different characters may be simulataneously displayed. A more detailed description is in the docs. A couple of basic fonts 7x10 and 12x18 are available. The file to use for font information is specified in the char_ram.v file. Font information may also be loaded at runtime programmatically.

An all-in-one text / bitmap / sprite controller (FT_VIC.v) is in the works. It will use a 640x400 video mode, fixed 80x50 char text display, 640x400 bitmapped graphics with 12 48x42 sprites. This controller is being designed to use main memory rather than dedicated rams for the sprites. Initially output will be 7 bit RRGGGBB color.

The latest incarnation of the text controller has a default resolution of 56x31 expecting a 1366x768 screen resolution. The size and number of characters displayed is easily programmable. The controller now uses externally supplied horizontal and vertical sync signals for a reference point. The controller detects the positive edge of the signals. The display memory is 32 bits wide of which 9 bits are used for each of foreground, background colors, and the character code. Character codes and attributes are stored together in the same memory word. The register set for the controller remains the same. There is no longer a separate attribute memory at $FFD1xxxx. Also supported is a transparent color which allows text to be placed ontop of another externally supplied image.

This is a text mode video controller that supports color. The default resolution is 52x31 expecting a 1680x1050 graphics mode for display. The controller uses an external sync generator which must supply end-of-scanline and end-of-frame signals. Display memory is sixteen bits wide of which nine bits are implemented allowing 512 different characters to be displayed simultaneously.
Character bitmaps are stored in block RAM allowing them to be reprogrammed at run time, these can be pre-initialized in a constraints file.

The display controller fits into a memory map at addresses $FFD0xxxx, $FFD1xxxx, and $FFD2xxxx, for the text memory, attribute memory, and character bitmaps respectively.
Note that there are multiple images of the memories within the address range.
The display controller register set is at $FFDA00xx.