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?

  • 1
    \$\begingroup\$ Sounds like you understand it all, except that technology has been solving slightly different problems at different times, and words like 'protocol' subtley shift in meaning to suit. Don't over-think it. \$\endgroup\$ – Neil_UK Apr 16 '16 at 22:10

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.

  • \$\begingroup\$ What about the term "protocol", where does it really apply when we talk of SPI, Serial port vs USB and Ethernet? \$\endgroup\$ – quantum231 Apr 17 '16 at 10:57
  • \$\begingroup\$ @quantum231, SPI is so simple and so loosely defined that I wouldn't call it a "protocol". But different chips require different protocols for the data sent to and from them using SPI. Even these are usually very simple, like "You send me an 8-bit address in lsb first order, then I send you back an 8-bit data byte in lsb first order". But one chip might keep sending back data from next address if you keep sending it clocks. Another might use 16-bit addresses. A third one might require a command byte followed by an address byte before it sends anything back, etc. \$\endgroup\$ – The Photon Apr 17 '16 at 14:20

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.