IIC总线 Verilog FGPA模块实现 注释详尽 初学必备,实现了IIC读写EEPROM,已封装成模块,实例中为了testbench测试,将写入的数据变成了固定值,注释详尽,初学者也能明白,本人初学时编写,完整测试通过
/***
* clk50M : 50M输入时钟
* resetKey : 复位信号
* IIC_SDA : IIC数据接口
* IIC_SCL : IIC控制时钟接口
* RWSignal : 读写信号,读1,写0
* startSignal : 开始执行读命令信号,上升沿触发开始
* readLen : 需要读取的字节个数
* beginAddr : 开始读取的地址位置
* getNum : 当前对应地址获取到的字节值
* sendNum : 要写入的数据
* dpDataOkClk : 成功读处理完一个字节信息,读或写,将产生一个上升沿
*/
//`MINCLK_DELAY产生一次计数,产生12次计数可以产生一次IIC_SCL信号的跳变
//50M/2/2/MINCLK_DELAY/12 = IIC_CLK
`define MINCLK_DELAY 4'd5
`define EEPROM_ADDR 7'b1010000
`define SDA_SENDDATA 1'b1
`define SDA_GETDATA 1'b0
`define READE_DATASG 1'b1
`define WRITE_DATASG 1'b0
module IICTest0(clk50M, resetKey, IIC_SDA, RWSignal, startSignal, beginAddr, IIC_SCL, sendNum, getNum, dpDataOkClk);
1