I read in a Xilinx application note that as data rates became faster became developed source synchronous transfer technique and later came the self-synchronous methods that make use of 8b-10b or some other encoding and the data is extracted from the input data stream.
However, while SPI is very old and not really "high speed" unlike how we communicate with DDR RAMs using source synchronous transfers, it still sends out data with clock. Thus, is it correct to say that SPI is a simple low speed source synchronous data exhange protocol?
Besides this, usually protocol contains data along with information about data like start of packet, end of packet, CRC, source, destination bits e.t.c. However SPI does not contain any of this. Is it still correct to call it protocol?
While serial data transfer being asynchronous, has start bit and end bit thus in my understanding the simple serial transfer e.g used in RS-232 is a protcol but SPI does not posses such information. What am I misunderstanding here?
Answer
Source synchronous transmission means that the same device that generates the data also generates the clock.
During a write transaction, SPI uses source synchronous transfer.
But during a read transaction, the bus master generates the clock while the slave generates the data. This is not a source synchronous transfer.
In principle, SPI allows the slave and master to transmit data simultaneously, and the slave does in fact transmit meaningless data (usally all-0's or all-1's) when the master is transmitting, which would mean both source-synchronous and "receiver-synchronous" (not a real word, as far as I can tell) transmission is happening at all times in an SPI system.
No comments:
Post a Comment