基于fpga的iic(eeprom)控制器设计
1:设计接口,
模式mode[1:0]
00:byte_wr
01:byte_rd
10:page_wr
11:page_rd
写数据wr_data[7:0],
写使能wren
读数据rd_data[7:0]
读使能rden
输出data_flag,同步读数据
iic俩根线sdc,sda
2设计时序
本设计scl时钟速率为100khz,scl非严格意义时钟,scl有休闲状态
50M/100khz=500,设计计数器为0--499,分别定义四中标识
parameter SDA_NEG=124, reg sda_neg_flag;//sda下降沿标识
SCL_NEG =249, reg scl_neg_flag;//scl下降沿标识
SDA_POS =374, reg sda_pos_flag;//sda上升沿标识
SCL_POS =499; reg scl_pos_flag;//scl上升沿标识
产生读写位个数控制计数器,读写位时序控制计数器。计数器都根据四种标识flag来变化。仿真的时候没必要非得有个eeprom的模型,没有eeprom模型,在写的时候收到的应答在sda线上是高阻显示。前期通过modelsim静态观察时序是否正确,后期通过signaltab来具体验证数据是否正确。最后通过串口和eeprom数据回传实验来观察数据的正确与否。由于本人所用网速实在差劲,上传资料要好久,所以具体资料请加本人好友本人会在2天之内发给各位网友。
各位初学者如有不懂之处请联系本人,QQ:2685664564,加扣扣时备注电子发烧友。
后续本人会有更多精彩分享,而且会贴上调试图片在博客上。
iic接口问题