基于FPGA的IIC测试系统的研究与实现

2015-12-02 01:42梁泽雨钟小芸
制造业自动化 2015年8期
关键词:示波器时钟总线

梁泽雨,潘 晴,钟小芸

LIANG Ze-yu, PANG Qing, ZHONG Xiao-yun

(广东工业大学 信息工程学院,广州 541004)

0 引言

IIC总线是由Philips公司开发的一种用于芯片间通讯的串行传输总线,它由串行时钟SCL和数据线SDA实现全双工数据传送[1]。因为它具有接线少、传输数据快速准确、允许多主机控制、具有仲裁和时钟同步等特点,被越来越多的厂家和开发人员使用[2]。对于每一款有IIC接口的芯片,其芯片手册标明其对时序的要求,芯片没有达到其所要求的值,则为不合格的芯片。

市场上有很多IIC接口的芯片。随着芯片集成度的提高和功能的不断增强,IIC接口芯片的验证越来越复杂。据统计调查,芯片的验证的工作量占据芯片设计周期的70%以上[3]。因此提高芯片验证的准确度与效率意义重大。由于中国芯片产业起步比较晚,目前市场上并没有专门测试IIC接口的工具。传统芯片的IIC接口验证,通过人手和人眼在示波器观察和测量SDA、SCL两路信号,这类测试存在测试流程复杂、工作量大、测试项单一的缺点。并且,市场上的示波器精度不一,当示波器精度不高时测试误差很大,达不到测试的目的。本文提出的是一种基于FPGA平台的IIC测试系统,该系统率先通过设计了码型发送器与码型接收器,构造了一个强大的IIC测试系统,该系统的测试项达二十多项,测试项全面且工作量大大减少。整个测试流程在PC机通过使用TCL脚本控制系统工作,实现测试全自动化。该系统测试准确可靠并且完全摆脱对示波器精度的依懒,不仅能够实现IIC波形的重现,并且能在示波器精度不高时仍能得到精确的测试结果。

1 系统的工作原理

1.1 码型

码型为本文定义的一种数据帧结构,由32位二进制数组成,高两位分别是SCL和SDA,中间三位为保留位,低27位为时间计数值,即为SCL和SDA电平状态的持续时间,如图1所示。SCL中三拍确定SDA的一位,如图2所示,SCL线的1、2、3拍确定SDA的一位低电平,4、5、6拍确立SDA的一位高电平。依此类推,通过相应地改变SCL三个拍的值,即可实现数据建立时间,数据保持时间,SCL高低电平等测试项的改变。如图3为数据为60ns的数据保持时间的码型波形。码型的提出,只需用FPGA构造一个码型发送器与码型接收器即可实现对IIC测试硬件模块的设计,大大降低了FPGA生成模块的复杂度,本文只需构造不同的码型即可达到相应的IIC测试项测试的目的。本文的测试项由IIC的协议规范提出,测试项全面,几乎覆盖了IIC的所有性能测试,采用遍历的方法对IIC的标准时序容忍度、各种异常进行测试。

图1 为码型数据帧结构

图2 SCL和SDA的码型关系图

图3 60ns数据保持时间的码型图

1.2 Master和Slave模式

Master模式即待测芯片工作在主模式,FPGA作为码型采集器,采集IIC总线上数据和从器件响应器,产生应答信号;Slave模式即待测芯片工作在从模式,FPGA工作在主模式时,一方面FPGA作为码型发送器,将码型发送给待测芯片;另一方面FPGA作为码型采集器,采集IIC总线的数据。

2 系统的硬件设计

系统采用FPGA平台作为数据处理的核心,FPGA具有强大的时序处理能力,目前己经广泛应用于工程设计中,如CCD采集系统[4]、半导体激光电流电压测试系统[5]等。该系统的各个模块均在FPGA上采用Verilog代码综合而成,主架构为由LOCALBUS_TO_IBUS模块和时钟分频模块构成,该模块主要负责与PC机进行数据交换以及为其挂接的各个模块提供时钟分频,系统具有可扩展性,各类的总线模块都可挂接在此模块中。系统采用200M的时钟频率,采样精度为5ns。系统根据IIC码型发送器模块和IIC码型接收器模块采集IIC总线上的数据和往IIC总线发送码数据达到对IIC总线的测试。如图4所示为系统的模块图。

图4 系统的模块图

2.1 IIC码型发送器

IIC码型发送器主要实现对各种码型的发送从而达到控制IIC总线的目的。码型数据存在txt文档中,TCL脚本将txt文档转为.bin文件通过TFTP下到码型发送器的FIFO中去。FIFO是一种先进先出的电路,常用于存储和缓存在两个时钟之间的数据传输[6]。FIFO能克服由时钟之间的时钟周期不同步造成的数据丢失问题,能有效地控制亚稳态的发生。将FIFO中的码型数据帧结构随时钟脉冲提取出来,高两位赋给SCL,SDA,低27位赋给27位的计数器。高两位控制SCL和SDA的状态,27位的计数器控制SCL和SDA线持续的时间,通过统一的200M时钟控制各个小模块工作,从而达到将码型发送到IIC总线中去,如图5所示为码型发送器模块结构框图。

图5 码型发送器模块结构图

2.2 码型接收器模块

IIC码型接收模块主要实现IIC时序的检测与采集的目的。它采用上升或下降沿检测的方法,每当遇到上升沿或下降沿就会产生触发信号将SCL和SDA的状态以及持续的时间保存下来,将其构造成码型数据帧结构存到FIFO当中去,通过TCL脚本将FIFO中的数据取回PC机分析处理。如图6所示为码型接收器模块结构框图。

图6 码型接收器模块结构框图

3 系统软件设计

系统的测试流程采用TCL脚本控制实现全自动化。TCL是一种解释执行脚本语言,比c/c++有着更高抽象层次的语言,TCL的结构简单,容易掌握,兼容Linux/Unix、Window操作系统。通过编写脚本语言,即可方便控制下位机的操作。首先是在EXCEL表格中读入要进行测试的速率,本系统支持IIC多种速率的测试。其次是转入相应的测试速率,读入相应的测度速率中要测试的项,并对系统进行初始配置,启动测试。最后是将FPGA采到的码型数据调用MFC软件分析并得到最终的测试结果并写回到EXCEL表格中,测试完成。TCL脚本的主要控制流程图如图7所示。

图7 TCL脚本程序框架流程图

4 IIC测试结果分析

4.1 测主(mater模式)

测主即待测芯片工作在主模式,FPGA充当数据采集器,采集待测芯片与IIC从设备的通信数据。待测芯片向IIC从设备发送数据,通过FPGA采集总线上的数据并进行分析,如下图所示,待测芯片向IIC从器件发送0x0123数据,其中IIC从器件设备地址为0xc,图8为MFC软件分析出来的波形,图9为示波器实际采集到的波形,上面的一路信号表示SDA,下面一路信号表示SCL,可以看出MFC实际分析出来的波形与示波器实际采集到的波形几乎一样。图10为MFC经过软件分析后的最终结果,其精度为5ns级。该项测试证明了IIC测试系统的可靠性、精度高的优点,并且该系统不依赖示波器的精度,测试结果能写回EXCEL表格当中,整个测试流程全自动化。不仅能够实现对IIC波形的重现,而且能够得到精确的测试结果。

图8 MFC软件分析出的波形图

图9 示波器实际采到的值

图10 测试的最终结果图

4.2 测从(slave模式)

测从即为待测芯片工作在从模式,FPGA工作在主模式,FPGA将各种码型激励发送给待测芯片。测从分为标准时序的测试和异常测试。

1)标准时序测试

标准时序的测试就是对IIC的起始条件建立时间、起始条件保持时间、数据建立时间等测试项的测试,通过遍历方式来构造不同的测试项的时间容忍度,判断待测芯片是否能正常读写数据。例如对数据建立时间容忍度的测试,IIC协议规范为数据保持时间不少于300ns。由此构造数据保持时间为:400ns,350ns,300ns,250ns,200ns,150ns,100ns,50ns的码型,看待测芯片是否能产生应答,如图11所示为MFC软件的波形分析图为50ns的数据保持时间码型图,黄色信号线为码型发送器发出的数据,绿色信号线为码型接收器检测到的信号,由图可看出MFC检测到的时间保持时间为65ns,误差仅为15ns。在绿色信号线中,第9个时钟上的数据,产生了下拉,说明待测芯片能应答,表示待测芯片支持50ns的数据保持时间容忍度,该测试项的最终测试结果会在相应的EXCEL表格中写上pass,如图12所示。该项测试证明了IIC测试系统通过将不同的码型发给待测芯片并判断待测芯片是否能产生应答,从而得出测试结果。由实验可看出,该IIC测试系统精度高误差小,最高精度可达5ns。

图11 测试的MFC软件分析图

图12 测试最终结果图

2)异常测试

异常测试就是通过构造各种异常,例如:读功能ACK异常,写功能ACK异常,非法帧格式异常等,通过构造异常码型来判断待测芯片是否能响应。如图13所示为多停止条件的异常测试,黄色信号为发出去的码型,绿色信号为检测到的码型,由图中可得,经过连续三个停止信号后开始进行地址数据的传输,所图可得待测芯片遇多停止条件后,能正常读写数据。该测试项说明了本系统能对IIC所能出现的各种异常进行测试,只需改变各种码型即可实现对IIC的各种异常测试,功能强大,测试项全面。

图13 异常测试的MFC软件分析图

5 结论

本文提出了一种基于FPGA的IIC接口的测试系统,其设计思路新颖,避免了硬件电路的改变,所有测试的变化在于码型。该系统通过实验证明了系统可靠性与精度高,并且系统的整个测试实现全自动化,大大提高了测试效率。该系统彻底摆脱了对示波器精度的依赖,不仅能实现对IIC波形的重现,而且能得出精确的测试结果。本系统虽然只针对IIC测试,但是其设计思路具可推广性,该系统可扩展成多总线接口的测试系统。该系统的提出,将对整个芯片测试领域有很大的推动作用。

[1]陈光建,贾金玲,基于单片机I2C总线系统设计[J].仪器仪表学报,2006,27(6):2466-2472.

[2]季宏锋,吴军辉,徐立鸿,总线技术及应用实例[J].自动化与仪表,2002,04(21):21-23.

[3]夏雷,基于TCL语言的系统配置自动化测试脚本设计与实施[D].北京邮电大学,2007.

[4]刘爽,赵凯生,基于ARM和FPGA的嵌入式CCD采集系统[J].光电子激光.2007,18(11):1296-1298.

[5]杨明伟,许文海,顾慧萍,融入FPGA技术的半导体激光器功率-电流-电压测试系统[J].光电子激光.2005,16(3):344-353

[6]刘祥远,陈书明,一种高性能异步FIFO 结构[J].电子学报,2007,12(11).

猜你喜欢
示波器时钟总线
别样的“时钟”
古代的时钟
一种基于CAN总线的误码测试方法
一款教学示波器的Y通道设计与实现
可携带式虚拟双踪示波器
有趣的时钟
时钟会开“花”
CAN总线并发通信时下位机应用软件设计
汽车示波器——为绿色维修保驾护航
基于CAN总线的水下通信系统设计