I have another source for using the serial IO. I got this from a friend who used it for a university project.
The module "serial_out" works as a adapter which reads input data from a FIFO and sends the data in blocks of 8 bit to the TX pin on RS232.
The instantiation is (Verilog):
serial_out instanceSerialOut(
.clk_i(iSerialClock), //input clock, 40MHz for 115200 Baudrate
.rst_i(iRESET), //reset signal
.data_i(InputData), //input data bus, size can be changed inside serial_out
.empty_i(FifoEmpty),//signal pin from FIFO, for FIFO is empty signal
.req_o(ReadRequest_To_Fifo),//signal pin to FIFO, for read request
.txd_o(oTX_Serial)); //pin to UART_TX pin
The data which is read from the fifo is split into blocks of 8 bit each in the serial_out module. Just change the case statement inside the module to the size of the data you read from your fifo.
That should work fine.
If you want to run the serial io slower just use half the clock rate.
e.g. 20MHz = 57600 Baudrate
cheers,
Alex