IIC总线通讯接口器件的CPLD实现
CLK1COUNT:='0';
ELSE
CLK1COUNT:=CLK1COUNT+1;
END IF;
END IF;
IF(SLAVE='1' AND SCL='1' AND SDA 'EVENT AND SDA='1')THEN
STP:='1';
CSTA:='0';
END IF;
END IF;
END PROCESS;
2.4 总线仲裁
在通讯过程中,ISP器件在发送数据的同时接收总线上的数据,将该数据与已送的数据进行比较,若不相同则置位状态发生器的SLAVE,表示该主机退出竞争。通过处理给控制寄存器发送控制字可以让ISP器件转入从机工作方式。这时启动地址检测,禁止SCL的发送。在一次通讯结束后,将状态生成器的END置位,此时处理器可以再次将ISP器件设置为主机方式。
2.5 控制寄存器与状态生成器
控制寄存器主要是定义ISP器件的工作状态,其各位的定义为:
BUSY CLKEN CLKS2 CLKS1 STA STP M/SBUSY:若该位为'1',主机作为接收机时,不发应答信号;
STA:启动信号位;
STP:停止信号位;
M/S:主从机位,用于选择芯片工作状态(主机还是从机);
CLKS1、CLKS2:频选控制位;
CLKEN:SCL使能位,该位为1时SCL置高电平。
状态生成器可以生成工作状态信号(中断、IIC总线竞争、从机方式时通讯开始与结束)供处理器查询处理。
3 参数配置
该器件可以配置为从100kbps(标准)到400kbps(高速)的任何传送速度,以满足不同的需要。只需在VHDL(描述的结构体中指明配置的参数即可实现配置,非常方便。
本设计只使用一片可编程芯片即可完成IIC总线接口的芯片功能。由于采用VHDL-93语言进行设计,具有良好的可移植性,可用于其它ISP厂家的产品中。通过ByteBlast下载线可以在线改变其功能,体现了ISP器件的优越性。
《IIC总线通讯接口器件的CPLD实现(第3页)》