微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > I2C总线通讯接口器件的CPLD实现

I2C总线通讯接口器件的CPLD实现

时间:10-29 来源:互联网 点击:

  • 在主机方式下,完成通讯启动和地址信号发送后便开始准备接收数据。每接收一个字节后要发出应答信号,产生一个负脉冲作为中断请求信号输出给处理器。若此时系统忙,则拉低SCL电平迫使发送机进入等待状态。从机方式下的接收与主机方式下一样。VHDL描述如下: PROCESS(SDA1) SACK:="0"; FULL1:="0"; STP:="0"; INTQ:="1"; IF(CSTA="1" AND ADDOK="1")THEN IF(SCL"1"EVENT AND SCL1="0")THEN ……――接收数据,串入并出移位(略) FULL1:="1"; END IF; END IF; IF(FULL1="1")THEN IF(RD"EVENT AND RD="1"AND SCL1"EVENT AND SCL1="0 AND BUSY="0")THEN SDA1:="0"; FULL:="0"; INTQ:="0"; ELSE SDA1:="1"; IF(CLK1"EVENT AND CLK="0" AND FULL1="0")THEN IF(CLK1COUNT"20")THEN INTQ:="1"; 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/S BUSY:若该位为"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器件的优越性。

  • Copyright © 2017-2020 微波EDA网 版权所有

    网站地图

    Top