Здравствуйте!
В общем, все просто - есть модуль i2c_contr, его назначение - запись по i2c в АЦП и ЦАП-е регистры и затем их чтение во внутреннюю память (модуль RAM55B),
Выкладываю последний вариант в котором в железке стабильно работает запись в АЦП, остальное не работает..
В предыдущих вариациях иногда получал запись в ЦАП как требуется
Чтение не работало ни разу, приходит NACK(SDAT == 1) после отправки адреса устройства с 8-м битом в 1(READ),
прикладываю простенький тестбенч, для просмотра линий SCLK и SDAT надо смотреть внутренние sclk и sdat в i2c_contr,
отображающие их поведение на линии, в реальности они собираются в верхнем модуле как
assign sdat = sda_en ? sda_o : 1'bz,
sda_i = sdat;
assign sclk = scl_en ? scl_o : 1'bz,
scl_i = sclk;
(ибо open drain у третьего спартана нет)
подскажите где лажаю, вроде все делал по стандарту I2C и даташитамНажмите для просмотра прикрепленного файла