I do have some inquiries regarding using an I2C slave controller (from Arria 10 FPGA).
We are currently assessing MCTP protocol support in our device, whose physical layer is built upon SMBus/I2C, according to MCTP specs. Our starting point would be to use the built-in I2C controller in our fixed processor inside the fpga. Our device would only act as I2C slaves meaning it doesn’t initiate any communication.
I understand that SMBus and I2C have mostly similarities in electrical signal level, except on speeds (SMBus is only up until 100KHz clock, while I2C supports higher clocks; but anyway we are just after basic implementation at 100KHz clock so this is not a concern). However, later on the MCTP specs, it describes the MCTP behavior only in terms of SMBus protocol, like SMBus block write which I don't see exact equivalent protocol in I2C. It also recommended using ARP, which I think is not specified in I2C and only in SMBus. So I'm expecting that the MCTP host will be sending me, the device, commands in terms of SMBus protocol. Now if we have an SMBus controller in Arria 10 this won't be a problem, but we only have I2C, and I'm not sure whether our I2C "slave" controller will understand SMBus protocol. I've tried to research online but I'm getting conflicting views. I've also asked Altera but still waiting for their reply. What I kept on reading is that "SMBus is a subset of I2C".
I'm mostly concerned about multi-byte transactions (block write, read, multi-byte write, whatever their names are), since the host will be sending packets and I will be replying with certain number of data bytes. Will our I2C controller work with SMBus protocol? Let me know what you think.