使用Verilog编写一个I2C Master控制器作为FPGA入门项目,在实现‘时钟拉伸’和‘仲裁’功能时有哪些关键点和易错点?
正在自学FPGA,想通过实现一个完整的I2C Master控制器来巩固Verilog和状态机设计。基本的数据读写已经调通了,但协议中更复杂的部分,比如当Slave设备进行时钟拉伸(clock stretching)时,Master该如何检测和等待?还有多主情况下的仲裁机制,在代码层面应该如何实现?感觉这些地方光看协议文档有点抽象,希望有做过这个项目的朋友能分享一下具体的设计思路、状态机划分,以及调试过程中容易踩的坑。