A
Anand P Paralkar
Hi,
I need to implement a simple UART. By simple, I mean the UART only needs
a transmitter which would take parallel data and shift it out serially at
a fixed baud rate. The receiver receives serial input data at the same,
fixed baud rate, which must be output in parallel, one byte at a time.
In short, the UART should look something like:
+---------------+
--->| |
Parallel Data In | |-----> Tx to RS232 line driver
--->| |
| |
<---| |
Parallel Data Out | |<----- Rx from RS232 line driver
<---| |
| |
| |
+---------------+
The UART should perform:
1. Start bit detection/generation.
2. Stop bit detection/generation.
3. Data bits sampling/transmitting.
The UART does NOT need to have:
1. Programmable baud rate.
2. Programmable character length (6, 7 or 8 bits per character).
3. Programmable stop bit length (1, 1.5 or 2 bits per character).
4. Parity checking.
5. RTS/CTS based or any other type of flow control.
6. Buffering (using Rx and Tx FIFOs).
7. Interrupt generation.
Could you please suggest a design for the receiver section. (I have seen a
few articles on the Internet, but most of them are "datasheets" of UARTs.
None of them discuss the internal design.)
I would be particularly interested in knowing how to determine the
required clock frequency for a given baud rate in the receiver section.
Why do people choose 3X or 16X clocks (times baud rate) in typical UART
implementations?
Thank you for your time.
Thanks,
Anand
I need to implement a simple UART. By simple, I mean the UART only needs
a transmitter which would take parallel data and shift it out serially at
a fixed baud rate. The receiver receives serial input data at the same,
fixed baud rate, which must be output in parallel, one byte at a time.
In short, the UART should look something like:
+---------------+
--->| |
Parallel Data In | |-----> Tx to RS232 line driver
--->| |
| |
<---| |
Parallel Data Out | |<----- Rx from RS232 line driver
<---| |
| |
| |
+---------------+
The UART should perform:
1. Start bit detection/generation.
2. Stop bit detection/generation.
3. Data bits sampling/transmitting.
The UART does NOT need to have:
1. Programmable baud rate.
2. Programmable character length (6, 7 or 8 bits per character).
3. Programmable stop bit length (1, 1.5 or 2 bits per character).
4. Parity checking.
5. RTS/CTS based or any other type of flow control.
6. Buffering (using Rx and Tx FIFOs).
7. Interrupt generation.
Could you please suggest a design for the receiver section. (I have seen a
few articles on the Internet, but most of them are "datasheets" of UARTs.
None of them discuss the internal design.)
I would be particularly interested in knowing how to determine the
required clock frequency for a given baud rate in the receiver section.
Why do people choose 3X or 16X clocks (times baud rate) in typical UART
implementations?
Thank you for your time.
Thanks,
Anand