OLED ASCii Display
This module displays ASCii coded text on the OLED Display Pmod. It provides an interface that makes it possible to control each display character individually. This module is (by far) sub-optimal and may be improved by several means. This could by the objective of a student project.
( figure source )
1 36kb Block RAM
The resetn input is active-low, eg it must be set to get the module working properly (='1')
The OLED_ctrl module manages its own initialization, therefore, it is not necessary to perform any specific operation. The display power-on sequence may take up to 120ms, users should then expect a very long first-write time response from the module.
Displaying a character
Each character position is identified by a couple of std_logic_vectors :
col (std_logic_vector(3 downto 0)) defines the column of the char to be written. Columns are numbered from left to right (0 to 15)
line (std_logic_vector(2 downto 0)) defines at which line the char should be written. Lines are numbered from top to bottom (0 to 3).
To write a character on the screen, it is necessary to assign the ASCii value of the character, the column and line to write. The write command is provided by char_write.
position and ASCii char values must not change as long as char_write is set (='1')
once asserted, char_write must remain asserted until the write_ack output is asserted by the module too. The OLED_ctrl module response time is between 100µs and 1ms
once a write operation is started, the module will be busy transfering data to the screen during 12µs to 15µs. The write_ack output will remain high while this operation is performed.
As it is possible to connect the OLED Pmod in two ways, the displayed text might not be easily readable. By default, the module considers that text should be displayed the same orientation than the PCB serigraphy (references / brand and copyrignt). If the display should be rotated by 180° for design reasons, the module provides the optional reverse_display generic input. If reverse_display is set to '1', displayed text and positions will be rotated to reduce architecture modifications.