Micro Uart

A UART built using very little logic.
  FPGA proven NO
  ASIC proven NO


The Micro UART comes from a challenge I set myself: to write a fully functional UART using a minimum number of registers. The term 'fully functional' is rather vague so I set the following targets:

The UART has no standard processor interface. Instead it uses two 'select' signals in combination with a read and a write to give access to the registers. This also makes it easier to control the UART with a hardware FSM. The data bus is 16 bits wide to match the width of the programmable baud rate. (Eight bit processors are rather out of date anyway).
The code also contains a set of APB wrappers which will interface the UART to an ARM APB bus.
The UART has 4 registers:

I managed to built the UART using 76 registers. If you can live with a static baud rate you can save 16 registers (or more). I am using 8 times oversampling. This has shown to work reliable in the past. (For the second UART in the Raspberry-Pi chip I also used 8 times oversampling).

In the code you find a few more versions, each slightly bigger and more sophisticated then the previous.


A document describing the UART(s) (initial release) is available here. The complete package can be found in this zip archive.