Wm8731 I2C 控制模块
module x(clock_50m,
i2c_sclk,
i2c_sdat,
reset_n,
ack,tr_end,start,config_step,reg_index,key1,i2c_data,reg2_data,clock_20k,hex1,hex2,xs1,xs2);
input clock_50m;
input reset_n,key1;
output i2c_sclk,ack,tr_end,start,clock_20k;
output[1:0] config_step;
output[3:0] reg_index;
output[23:0]i2c_data;
output[15:0] reg2_data; //输出声道
output[6:0] hex1,hex2; //七段码显示
output[2:0] xs1; //LED 显示
output[3:0] xs2;
reg[6:0] hex1,hex2;
inout i2c_sdat;
reg clock_20k;
reg [15:0]clock_20k_cnt;
reg [1:0]config_step;
reg [3:0]reg_index;
reg [23:0]i2c_data;
reg [15:0]reg_data;
reg start,bz,bx;
reg[15:0] reg2_data;
wire ack;
wire tr_end;
wire[2:0] xs1;
wire[3:0] xs2;
i2c u1(.clock_i2c(clock_20k),
.reset_n(reset_n),
.ack(ack),
.i2c_data(i2c_data),
.start(start),
.tr_end(tr_end),
.i2c_sclk(i2c_sclk),
.i2c_sdat(i2c_sdat));
assign {xs1,xs2}=reg2_data[6:0];
always@(posedge clock_50m or negedge reset_n) //产生 i2c 控制时钟-20khz
begin