How to implement Serial port RS-232 from 2.5V IO signal

fpgars232spartanvoltage

I am playing with a Xilinx Spartan-3A development (XC3S50A-TQ144C) and then I tried to implement RS-232 serial port by following the guide here: http://www.fpga4fun.com/SerialInterface.html

I bought a DB-9 port and connect RxD,TxD,GND of DB-9 port to three pin of my development board. (Of coz GND is connect to the GND of my board)

I tried to send a signal of one character every second from the pin to TxD. I checked the signal with a scope. The signal should be correct.

But I cannot see any character shown on my terminal by reading from /dev/ttyS0 (Serial port on Linux).

The scope show that the signal is sent using +2.5V and -2.5V respectively. I think the problem is that serial port should be sent with at least +5V / -5V. How can I modify the board (or construct an amplifier circuit) to send signal in higher voltage?

I have a photo capture of my scope here:

enter image description here

Best Answer

  • Look up the voltages for RS-232, your 2.5v logic is nowhere close. 5v and sometimes 3.3v logic may work to a degree, but is out of spec.

  • RS232 serial is inverted (traditionally in the level translator chip) from the sense of logic level serial.

  • if you connected an RS 232 output to your fpga without a level translator you have likely damaged it.

  • it is unlikely that you are getting -2.5v out of your fpga, rather this sounds like a measurement or description error.

In summary you need a level translator.