Some time ago I needed an UART for a project. Things it needed to do were very simple and I didn't want to add a microprocessor to use UART and instead decided to just code a simple finite state machine to use it.

But I couldn't find a simple UART designed to be used with FSM. They add features I didn't need and were hard to use without adding a microprocessor. One of the simpler ones was RS232 UART from opencores. But it too was meant to be used with a microprocessor. Receive end signal and some other signals were high for more than one clock cycle, which made design of the FSM more complex. I could have added a rising edge detector, but I decided to change the UART implementation instead.

So I made signals to be high only for one clock cycle, transmission to start immediately when the transmission start signal was asserted and made baud rate generation more accurate.

The code, readme and one example is uploaded to github.