稳定;传送一个字节的数据,必须由接收机发一个应答信号。总线的传输码速率为100kbps(标准)~400kbps(高速)。采用+5V电源供电时,输入电平规定为:VILmax=1.5V,VIHmin=3V;采用宽电源电压时,电平规定为:VILmax=1.5VDD,VIHmin=3VDD。IIC总线的通讯过程如图1所示。
2ISP的逻辑实现
2.1通讯的启动与停止
2.2发送数据
2.3接收数据
在主机方式下,完成通讯启动和地址信号发送后便开始准备接收数据。每接收一个字节后要发出应答信号,产生一个负脉冲作为中断请求信号输出给处理器。若此时系统忙,则拉低SCL电平迫使发送机进入等待状态。从机方式下的接收与主机方式下一样。VHDL描述如下:PROCESS(SDA1)SACK:="0";FULL1:="0";STP:="0";INTQ:="1";IF(CSTA="1"ANDADDOK="1")THENIF(SCL"1"EVENTANDSCL1="0")THEN……——接收数据,串入并出移位(略)FULL1:="1";ENDIF;ENDIF;IF(FULL1="1")THENIF(RD"EVENTANDRD="1"ANDSCL1"EVENTANDSCL1="0ANDBUSY="0")THENSDA1:="
0";FULL:="0";INTQ:="0";ELSESDA1:="1";IF(CLK1"EVENTANDCLK="0"ANDFULL1="0")THENIF(CLK1COUNT"20")THENINTQ:="1";CLK1COUNT:="0";ELSECLK1COUNT:=CLK1COUNT+1;ENDIF;ENDIF;IF(SLAVE="1"ANDSCL="1"ANDSDA"EVENTANDSDA="1")THENSTP:="1";CSTA:="0";ENDIF;ENDIF;ENDPROCESS;
2.4总线仲裁
在通讯过程中,ISP器件在发送数据的同时接收总线上的数据,将该数据与已送的数据进行比较,若不相同则置位状态发生器的SLAVE,表示该主机退出竞争。通过处理给控制寄存器发送控制字可以让ISP器件转入从机工作方式。这时启动地址检测,禁止SCL的发送。在一次通讯结束后,将状态生成器的END置位,此时处理器可以再次将ISP器件设置为主机方式。
2.5控制寄存器与状态生成器
控制寄存器主要是定义ISP器件的工作状态,其各位的定义为:BUSYCLKENCLKS2CLKS1STASTPM/SBUSY:若该位为"1",主机作为接收机时,不发应答信号;STA:启动信号位;STP:停止信号位;M/S:主从机位,用于选择芯片工作状态(主机还是从机);CLKS1、CLKS2:频选控制位;CLKEN:SCL使能位,该位为1时SCL置高电平。状态生成器可以生成工作状态信号(中断、IIC总线竞争、从机方式时通讯开始与结束)供处理器查询[FS:PAGE]处理。
3参数配置
该器件可以配置为从100kbps(标准)到400kbps(高速)的任何传送速度,以满足不同的需要。只需在VHDL(描述的结构体中指明配置的参数即可实现配置,非常方便。本设计只使用一片可编程芯片即可完成IIC总线接口的芯片功能。由于采用VHDL-93语言进行设计,具有良好的可移植性,可用于其它ISP厂家的产品中。通过ByteBlast下载线可以在线改变其功能,体现了CPLD中的ISP器件的优越性。