《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > IIC总线通讯接口器件的CPLD实现

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

2009-01-04
作者:张冬冬

    摘  要: 介绍了采用ALTERA公司的可编程器件EPF10K10LC84-3实现IIC总线的通讯接口的基本原理,并给出了部分的VHDL语言描述。该通讯接口与专用的接口芯片相比,具有使用灵活、系统配置方便的特点。 

    关键词: IIC总线  CPLD  VHDL  ISP

 

    IIC总线是PHILIPS公司开发的一种简单、双向、二线制、同步串行总线。它只需两根线(串行时钟线和串行数据线)即可在连接于总线上的器件之间传送信息。该总线是高性能串行总线,具备多主机系统所需要的裁决和高低速设备同步等功能,应用极为广泛。 

    目前市场上虽然有专用IIC总线接口芯片,但是地址可选范围小、性能指标固定、功能单一、使用不方便。根据IIC总线的电气特性及其通讯协议,采用ALTERA公司的FLEX10K系列ISP器件EPF10K10LC84-3可以方便地实现IIC总线的通讯接口,且具有高速、易调试、可以灵活地实现在线配置等优点,同时大大地减少了系统的开发周期。 

1 IIC总线的数据传输规范 

    IIC总线主从机之间的一次数据传送称为一帧,由启动信号、地址码、若干数据字节、应答位以及停止信号等组成。通讯启动时,主机发送一个启动信号(当SCL线上是高电平时,SDA线上产生一个下降沿)、从机的地址码(8位)和读写信号;通讯停止时,主机发送一个停止信号(当SCL线上是高电平时,SDA线上产生一个上升沿)。在数据传送过程中,当SCL线上是高电平时,必须保证SDA线上的数据稳定;传送一个字节的数据,必须由接收机发一个应答信号。总线的传输码速率为100kbps(标准)~400kbps(高速)。采用+5V电源供电时,输入电平规定为:VILmax=1.5V,VIHmin=3V;采用宽电源电压时,电平规定为:VILmax=1.5VDD,VIHmin=3VDD。 

    IIC总线的通讯过程如图1所示。 

 

 

2 ISP的逻辑实现 

    基于IIC总线的数据传输规范,为完成IIC总线的数据发送与接收,采用ISP器件实现通讯接口的逻辑功能框图如图2所示。通过频选、控制、可控时钟可获得100kHz、200kHz、300kHz、400kHz的时钟频率。器件退出总线竞争后,时钟线置高电平。 

 

 

2.1 通讯的启动与停止 

    在主机方式下,接收数据时,ISP器件必须通过启动信号生成器送出一个启动信号,然后发送从机的地址信号和读写信号。只有这样,才能在总线上发送数据。该过程由控制寄存器启动。VHDL描述如下: 

    PROCESS(WR,CS) 

    ——WR IS CPU WRITE SIGNAL 

    ——CS IS THIS CHIP’S SELECT SIGNAL 

    ADDRS:=‘0’; 

    IF(Ctrreg(0)=‘1’ AND  Ctrreg(3)=‘1’ AND SCL1=‘1’)THEN 

    ——Ctrreg 为控制寄存器 

        CLK1COUNT:=‘0’; 

        SDA1:=‘1’; 

    IF(CLK1'EVENT AND CLK=‘0’)THEN 

    IF (CLK1COUNT=‘3’) THEN 

        SDA1:=‘0’; 

        ADDRS:=‘1’; 

        Ctrreg(3):=‘0’; 

            CSTA:=‘1’;              

            ELSE 

        CLK1COUNT:= CLK1COUNT+1; 

    END  IF ; 

        END IF; 

        END IF; 

    IF(ADDRS=‘1’AND SCL1'EVENT AND SCL1=‘1’)THEN 

        ……………………——将数据寄存器中的数据 

        ……………………——及WR信号移位发出(略) 

    END IF; 

    END PROCESS;  

    当一次通讯结束时,主机要发送停止信号。该过程同样由控制寄存器控制;当控制字的第二位为‘1’时,ISP器件产生停止信号。VHDL描述与启动类似。 

2.2 发送数据 

    在主机方式下,完成启动和地址信号发送后即开始发送数据。发送数据时并串转换器在SCL的下降沿移位,保证SCL高电平时SDA上的数据稳定。发送的进程由WR信号和从机的应答信号启动。 

    当ISP器件在总线竞争失败时,由处理器将ISP器件转为从机工作方式,处理器向地址检测电路送该器件在系统中的地址。只有在接收到的地址信息与该器件所设的地址相同时,才发出应答信号,开始通讯。每发送一个字节即将SDA拉高,等待接收机的应答信号,准备下一个数据。 

2.3 接收数据 

    在主机方式下,完成通讯启动和地址信号发送后便开始准备接收数据。每接收一个字节后要发出应答信号,产生一个负脉冲作为中断请求信号输出给处理器。若此时系统忙,则拉低SCL电平迫使发送机进入等待状态。从机方式下的接收与主机方式下一样。VHDL描述如下: 

        PROCESS(SDA1) 

        SACK:=‘0’; 

    FULL1:=‘0’; 

    STP:=‘0’; 

    INTQ:=‘1’; 

    IF(CSTA=‘1’ AND ADDOK=‘1’)THEN 

    IF(SCL1’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’; 

            FULL1:=‘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:若该位为‘1’,主机作为接收机时,不发应答信号; 

    STA:启动信号位; 

    STP:停止信号位; 

    M/S:主从机位,用于选择芯片工作状态(主机还是从机); 

    CLKS1、CLKS2:频选控制位; 

    CLKEN:SCL使能位,该位为1时SCL置高电平。 

    状态生成器可以生成工作状态信号(中断、IIC总线竞争、从机方式时通讯开始与结束)供处理器查询处理。 

3 参数配置 

    该器件可以配置为从100kbps(标准)到400kbps(高速)的任何传送速度,以满足不同的需要。只需在VHDL描述的构造体中指明配置的参数即可实现配置,非常方便。 

    本设计只使用一片可编程芯片即可完成IIC总线接口的芯片功能。由于采用VHDL—93语言进行设计,具有良好的可移植性,可用于其它ISP厂家的产品中。通过ByteBlast下载线可以在线改变其功能,体现了ISP器件的优越性。 

参考文献 

1 DATA HANDBOOK IIC—BUS Compatible. ICs PHISLIPS,1989 

2 曾繁泰,陈美金. VHDL程序设计.北京:清华大学出版社,2000.8

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。