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:
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.