I2C学习记录20220605

这篇博客主要讨论了Verilog代码中处理I2C时钟SCL和数据线SDA的逻辑。在系统时钟的上升沿,如果复位信号为低,初始化SCL和SDA寄存器为255。否则,通过复杂的条件判断更新SCL和SDA寄存器,以确保数据传输的准确性和稳定性。
摘要由CSDN通过智能技术生成

always @ (posedge sysclk)                 // 
    if(reset==1'b0)
        begin 
            SCL_reg <= 8'd255; 
            SDA_reg <= 8'd255; 
        end 
    else 

        begin 
            SCL_reg <= {SCL_reg[6],(((SCL_reg[5:0] == 6'd63) | (SCL_reg[5:0] == 5'd0)) ? SCL_reg[5] : SCL_reg[6]),SCL_reg[4:0],I2C_SCL}; 
            SDA_reg <= {SDA_reg[6],(((SDA_reg[5:0] == 6'd63) | (SDA_reg[5:0] == 5'd0)) ? SDA_reg[5] : SDA_reg[6]),SDA_reg[4:0],SDA_in}; 
        end 

     /*    begin 
            SCL_reg <= {SCL_reg[6],SCL_reg[5],SCL_reg[4:0],I2C_SCL}; 
            SDA_reg <= {SDA_reg[6],SDA_reg[5],SDA_reg[4:0],SDA_in}; 
        end 
 
 */

手算第一则代码,如下图。与第二则代码无异。signtap2实测亦一致也。奈何为之?小弟观手算图,猜测繁之,加判断句,更确保程序精准。避数据传输有乱矣!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值