附件上传不成,以下是代码:
/*这是一个控制AT24C08读写的基于IIC协议的状态机,具体功能是,向AT24C08输入一个数,再把这个数读回来。
输入的数和读回的数分别用一位数码管显示。IIC的实现思路是将SCL时钟分成四段,操作SDA变换。*/
module i2c_controller_top(write,read,datain,clock,rst,scl,sda,seg,dig);
input clock,rst;
input[3:0]datain;//数据输入端
input write,read;//控制读写的按键
output reg [7:0] seg;//数码管段信号
output reg[1:0]dig;//数码管位信号
output reg scl;
inout wire sda;
//--------------数码管显示部分---------------//
reg clk_dig;//数码管动态显示时钟
reg[15:0]cnt1;//数码管显示用的分频系数
reg[7:0]seg_code;//数码管显示译码器的输入码
//reg st;
reg [7:0]dout,dout_buf;//数据输出端及其缓冲器(输出从AT24C08读回的数据)
wire[7:0]din;//主状态机的数据输入端
always@(posedge clock or negedge rst)begin //产生数码管动态显示时钟
if(!rst) begin
cnt1 |