FPGA|CPLD|ASICwilliam hill官网
直播中

dingyyyyyy

2年用户 8经验值
擅长:可编程逻辑
私信 关注
[问答]

verilog实现I2C透传时,SDA引脚的输入、输出切换逻辑应该怎么处理?

verilog实现I2C透传,作为主从机设备之间的传输通道,但是SDA信号在cpld的端口进行输入、输出状态切换的逻辑始终处理不好,有没有大佬能帮忙分析一下!

已退回10积分

回帖(5)

dianzi

2022-8-17 17:03:29
帮顶
举报

yundfq

2022-8-17 20:13:17
为何要经过CPLD,直接使用I2C缓冲器不好么
1 举报
  • dingyyyyyy: 因为透传I2C只是其中一个功能,cpld的整体作用是将多路通讯信号选择一路固定的端口输出,根据指令,将arm的通信信号透传给下一级,下一级是可以随意变换的设备,比如I2C实时时钟、SPI移位寄存器等等

卿小小_9e6

2022-8-17 20:36:27
//------仅供参考
a.水平有限,IIC完整流程并未进行仿真。
b.仿真IIC的start没有问题。
c.仿真软件使用的是Vivado自带的仿真工具。


1 举报
  • dingyyyyyy: 按照代码逻辑,en使能前,fsm初始状态为0;en使能后,满足(IIC_MASTER_SDA == 1'b0) && (iic_en == 1'b1)这个条件,fsm_state_SDA应该为2呀,但是仿真数据显示值1,那是不是软件判断走了(IIC_MASTER_SDA == 1'b0)这个条件;IIC_MASTER_SDA == 1'b0对于这两个条件来说不是冲突了吗?
  • i2c_bypass_sim.png

    iic_prj.zip (2022-8-17 20:36 上传)

    52.98 KB, 下载次数: 20

dingyyyyyy

2022-8-18 15:38:35
@卿小小_9e6 只改了仿真的iic_data输出逻辑值,结果显示IIC_SLAVE_SDA的波形在传输1信号时,会在0与高阻态之间反复
举报
  • I2C仿真.PNG

    I2C.zip (2022-8-18 15:27 上传)

    77.22 KB, 下载次数: 20

infortrans

2022-11-22 08:33:56
感谢热心人的无私分享,学习学习。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分