UART 10Mbps 4X sampling - Page 1
Forum section: electronics / projects

author: rakeshm55
author_rank: Regular Contributor
timestamp: December 12, 2013, 12:39:02 pm
content: I have a Uart chipXR16V564- capable of handling 16Mbps with 4X sampling mode......i am trying to transmit continuously single byte (0x55h) , 10mbps(baud) data into the UART chip from an FPGA.On the receive pin of UART I receive the following seq. I check this on DSO.Start- 10101010-Stop- 1(for 100ns) - followed by Start- 10101010-Stop-1 and (so on)Start bit is 0Stop is 1 bit '1'No paritythe data too corresponds to 0x55h.....But when I read the receive bit at the UART i receive it as 0xABh continuously.....once after power cycling I received 0x55h continuously.......What could be the issue .... AB has a '11'' pattern it can only occur at stop bit followed by one bit .....please help

author: hlavac
author_rank: Frequent Contributor
timestamp: December 12, 2013, 12:56:31 pm
content: Sounds like inversion of the logic levels to me.You may want start bit of 1 and stop bit of 0...

author: fcb
author_rank: Super Contributor
timestamp: December 12, 2013, 01:34:00 pm
content: Sounds like your receive UART has nothing to SYNC to. I always design in a small break (>10 bits) to allow for re-syncing, but there are many other methods.If you explain what you want to achieve we might be able to suggest a remedy.

author: rakeshm55
author_rank: Regular Contributor
timestamp: December 12, 2013, 02:23:59 pm
content: My aim is to develop a 10mbps UART in FPGA having 10Mbps capability....So i am trying to create a test setup to test the HDL .....The UART chip capable of handling 16Mbps is already available in my board ..... So i transmit data from FPGA to UART and and capture it on a processor to view the result.....

author: fcb
author_rank: Super Contributor
timestamp: December 12, 2013, 03:50:56 pm
content: You need to read up on UART's I think. They are pretty simple regardless of speed.If you have a constant stream of data from TX/UART, and you drop a RX/UART onto it - it won't be able to SYNC unless you are (a) lucky or (b) have some sort of SYNC strategy. Now that strategy could be as simple as restarting the RX/UART every-time it receives crap data, or a ACK/NACK on the return channel if you have one.Ultimately if you are just developing a UART, then the problem remains for the coder to deal with. However if it's part of your application/system and your problem, then you need to understand SYNCing better.

author: rakeshm55
author_rank: Regular Contributor
timestamp: December 13, 2013, 11:30:22 am
content: Quote from: fcb on December 12, 2013, 03:50:56 pmFCB was spot on.... simple restart itself saved the day ......Thank u

author: dannyf
author_rank: Super Contributor
timestamp: December 13, 2013, 01:19:21 pm
content: Alternatively, you can transmit in frames, with gaps in between them. This allows the receiver to know where exactly a transmission start.That's typically the case in real life transmissions. A program that has trouble receiving a constantly transmitted 0x55 may otherwise work perfectly in real life.

author: marshallh
author_rank: Unknown
timestamp: December 14, 2013, 12:22:00 am
content: Serial mediums like RF or serdes-based protocols usually start with some sort of fixed preamble, a start byte/word etc. Simple crc32 would provide some assurance you don't have invalid data on the medium. There are lots of things you can do to add reliability, just depends what your application is.