Spartan 3E Starter Kit LCD

Overview
This is a very simple design that initializes and displays 32-bit hexadecimal numbers on the display. Especially on this board that has few user LEDs, this design allows to ouput additional information that can be used to debug a design.
Design description
There are three modules in this design. 

lcd_display simplifies the interface to the LCD by taking care of generating the correct signals to the LCD with proper timing. It waits for the self-initialization process of the LCD to finish and then accepts user input. The user indicates if the input data is a command or a write and the delay to wait after the input data is given to the LCD. This way the user does not need to take care of any timing and is advised of the completion of the command with a signal. Note also that this module presents an 8-bit interface and takes care of the conversion to the 4-bit LCD interface. To do so it writes separately the upper and lower nibbles and generates the correct LCD_E pulse.

lcd_write_number is a module that initializes the LCD and then waits for a 32-bit number input from a user to display in hexadecimal representation.

Finally, the test module lcd_write_number_test uses the lcd_write_number module to display a running 32-bit counter on the display.
Design files
spartan_lcd.zip