I was looking to do a simple project that needed control of the miniSpartan3 from a computer. I was slightly disappointed when I saw the board only brought the UART lines off the FT2232D, rather than some of the higher speed options… but on the plus side, UART communication is very easy on the PC. So, anyway… rather than starting from scratch, I dug around for a nice and clean UART example in VHDL, and found this: https://github.com/pabennett/uart .
I was able to quickly port it over to the miniSpartan3, making just a few minor modifications. The project is attached to this post in case anyone else would find it useful. This does a loopback, receiving bytes from the FTDI Tx, putting them in a FIFO, and then reading them out of the FIFO and sending to the FTDI Rx.
It’s a well laid out example with generics for the important parameters, and should be easy to break apart to do useful work. Simply using the 32 MHz clock I was able to run at up to 230400 bps… 460800 and 921600 both failed, though that could likely be fixed by using a DCM to create a faster and/or better ratio clock. I didn’t try any non-standard clock rates, though the FT2232D is supposed to support up to 3 mbps (which would require a DCM for sure).