iic eeprom verilog 仿真

2019-07-15 21:08发布

我正在做iic eeprom的仿真,需要一个eeprom 的behavior module,希望大神们指点指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
xjlnuc
2019-07-16 02:32
always @(negedge sda)
                if(scl==1)
                        begin
                                state <= state +1;
                                if(state == 2'b11)
                                        disable write_to_eeprom;
                        end
       
        //always@(posedge sda)
       
       
        always@(posedge sda)  //这里是因为写入的第一位数是1(器件地址状态字为10100010)
                if(scl == 1)
                        begin
                                stop_w_r;  //每写完一个字节的数据都产生停止,清零
                                //n = n + 1;
                        end
                else //if(n <= 32'd19)
                        begin
                         casex(state)
                                2'b01:
                                        begin       
                                                read_in;
                                                        if(ctrl_byte == 8'b1010_0010)
                                                                begin
                                                                        state = 2'b10;  
                                                                        write_to_eeprom;
                                                                       
                                                                end
                                                        else
                                                                state = 2'b00;
                                        end
                               
                                2'b11:
                                        read_from_eeprom;
                                default:
                                        state = 2'b00;
                         endcase
                        end
       
        task stop_w_r;
                begin
                        state = 2'b00;
                        addr_byte = 0;
                        ctrl_byte = 0;
                        out_flag = 0;
                        sda_buf = 0;
                end
        endtask

一周热门 更多>