i2c_master_bit_ctrl.v 完成位传输的功能。位传输的功能包括数据按位传输的实现和 I²C协议各个命令的实现两部分。
如图 4-5 所示开始和重复开始命令的产生包括 5 个阶段:idle 和 A、B、C、D 等。停止命令包括 4 个阶段:idle 和 A、B、C 等。读、写一个字节通过 8 次位操作完成。
实现代码如下:
- `include "timescale.v"
- `include "i2c_master_defines.v"
- //模块名称及 IO
- module i2c_master_bit_ctrl(
- clk, rst, nReset,
- clk_cnt, ena, cmd, cmd_ack, busy, al, din, dout,
- scl_i, scl_o, scl_oen, sda_i, sda_o, sda_oen
- );