明德扬杨老师 发表于 2023-12-20 10:36:32

明德扬PCIE系列开发板K7325T试用体验-第三篇

本文为明德扬原创文章,转载请注明出处!作者:Vito
第三周来完成低速协议-iic的工程查看核心板原理图刚好有一片M24C02 EEPROM,采用的接口是iic,因此就以该器件作为上板验证的硬件基础了。硬件连接如下图所示:本次工程完成的目标:FPGA通过iic协议向24C02写入0-255个数据,然后再依次读出数据,比较和写入的数据是否一致。iic协议看似简单,但是它的读写跳转状态还挺多的,很容易在写程序时就绕晕了。因此本次工程实现按照规划步骤,理清思路分步进行,主要分为以下部分:n 1.数据手册协议理解,总结iic读写流程。 n 2.根据读写流程进行状态设计,明确接口。n 3.编写iic驱动代码,连接i2c仿真模型进行仿真调试。n 4.上板验证 1. 协议M24C02的数据手册我没有在给我的硬件资料中找到,如下图,希望之后补充完整。 我在网上找到同型号的SPEC,如下图,ST公司的eeprom,i2c速率支持100K和400K;本型号C02的容量是2Kbit的。 对于i2c设备,首先需要明确器件地址,如下图所示,器件地址是7位的,其中高4位是固定为1010,bit3-bit1由硬件决定,结合核心板原理图设计及封装,所以器件地址为:1010_000, bit0为读写控制位,1为读操作,0为写操作。 下面是读写时序,写时序总结: 开始->器件地址写->从机应答->寄存器地址->从机应答->写数据->从机应答->结束注:1.如果是页写,就是在一个字节写数据之后不接停止,紧接着发下一个字节的数据而已。寄存器地址从机会自动累加,但是不能超过一页(本器件是16字节),否则地址会回滚。2.本i2c设备容量为2k bit,换算成245个字节刚好是8位的寄存器地址,当然还有更大容量的i2c设备,所以为了兼容大容量的,寄存器地址分为16bit和8bit的。3.对于写保护就是写入数据无效,但器件地址匹配从机也会响应,本项目暂不考虑这种使用场景,波形忽略。 读时序如下图,读时序相对于写操作来讲会稍微复杂一点,针对最常用的随机写操作而言,需要先发起一次伪写,目的是将i2c设备内部的寄存器地址指针指到想要读的位置,然后再进行一次读操作。读时序总结:开始->器件地址写->从机应答->寄存器地址->从机应答->重新开始->器件地址读->从机应答->从机返回数据->主机不应答->结束注:如果主机应答,那么从机就会继续返回下一字节的数据,直到主机不应答后从机才会停止进入待机模式。 2. 状态跳转因为状态较多,所以采用状态机跳转,方式如下。 根据状态转移设计接口信号以及具体时序。这里以写时序为例 3.代码编写及调试根据状态转移以及时序,编写i2c_dri模块接口以及代码 编写完i2c协议驱动之后就需要进行仿真,这里使用的是eeprom的仿真模型文件,见附件。在tb中编写从1写到255地址依次递增,数据和地址一一对应,写完之后再依次读回来,然后对比读写数据的结果。这里截取第一段写的过程的仿真波形 可见,依次完整的写操作波形符合协议规范,并且从设备在接收到数据后也应答了对应的请求,说明这一次写操作是ok的。 4.上板验证仿真通过后就可以上板验证了,增加io约束,将对应的信号映射到实际板子上,时钟复位,eeprom的引脚。为了方便观察实验结果,使用了一个LED作为数据比较结果的示意,当读写eeprom的结果正常,那么led灯将常亮,如果结果不正常,那么LED灯将会闪烁。如下图是上板结果,LED灯常亮结果正确。
众所周知,XILINX-Kintex系列以性价比著称,在高性能低功耗的前提下,价格也相对较低,目前市场上不存在缺货的情况,所以当使用量大的时候,价格也会更有优势。所以在研发工作中。这个款核心板是非常适用于二次开发和产品使用的。明德扬推出0元试用核心板活动正在进行中,可以联系客服黄老师参加:13316124179(微信同号)
    如需直接购买可点击淘宝链接
页: [1]
查看完整版本: 明德扬PCIE系列开发板K7325T试用体验-第三篇