Интересно, умеют ли i2c корки обрабатывать ситуацию с зависанием слейва на чтении. Если слейв не поймает(например из-за помехи) финальный ACK, или мастер внезапно отвалится, слейв может застрять на промежуточном нулевом бите и держать SDA в LOW, не давая делать старт/стоп правильным образом. Чтобы выйти из этого состояния, кто-то должен подёргать за SCL, пока подвисший слейв не дойдёт до позиции ACK или единичного бита данных и не отпустит SDA.
В микроконтроллере это можно решить софтовым ногодрыгом, а вот в FPGA переключения пинов в GPIO обычно не предусматривают

.