0
\$\begingroup\$

I'm sending some serial data (UART) from PC to an FPGA. I have implemented a serial protocol on an FPGA according to the usual description of the uart: low bit for start bit, high for stop bit and data bits in between. I am using Realterm software to send the data, a hex value of 0x50 in this case. This is what the output looks like on the oscilloscope: enter image description here

From what I expect the output of 0x50 sent via UART should be:

0(start bit)0101 0000 1(stop bit).

The actual output is completely inverted though including the start and stop bits. Is this how UART transmit usually works? If not can it be somehow inverted?

\$\endgroup\$
3
\$\begingroup\$

From what I expect the output of 0x50 sent via UART should be:

0(start bit)0101 0000 1(stop bit).

While that would make sense, it's incorrect. Serial data traditionally transmits the least significant bit first, so the expected output is:

    0 0000 1010 1
Start LSB...MSB Stop

which matches with your oscilloscope trace:

enter image description here

\$\endgroup\$
  • \$\begingroup\$ I see. I also confused the 0 in the end for inverted start bit which confused me even more. Thanks! \$\endgroup\$ – Anthropomorphous Dodecahedron Feb 1 at 21:14
  • \$\begingroup\$ @AnthropomorphousDodecahedron that said. The serial data in RS232 interfaces is inverted and of higher voltage in the cable, your oscilloscope capture is of the data between the interface IC and the FPGA. \$\endgroup\$ – Edgar Brown Feb 1 at 22:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.