欢迎来到天天文库
浏览记录
ID:17480534
大小:127.50 KB
页数:7页
时间:2018-09-02
《iic总线通讯接口器件的cpld解决方案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、http://www.cdtarena.comIIC总线通讯接口器件的CPLD解决方案 1IIC总线的数据传输规范 I2C(IIC)总线主从机之间的一次数据传送称为一帧,由启动信号、地址码、若干数据字节、应答位以及停止信号等组成。通讯启动时,主动发送一个启动信号(当SCL线上是高电平时,SDA线上产生一个下降沿)、从机的地址码(8位)和读写信号;通讯停止时,主机发送一个停止信号(当SCL线上是高电平时,SDA线上产生一个上升沿)。在数据传送过程中,当SCL线上是高电平时,必须保证SDA线上的数据稳定;传送一个字节的数据,必须由接收机发一个应答信号。总线的传输码速率为
2、100kbps(标准)~400kbps(高速)。采用+5V电源供电时,输入电平规定为:VILmax=1.5V,VIHmin=3V;采用宽电源电压时,电平规定为:VILmax=1.5VDD,VIHmin=3VDD。IIC总线的通讯过程如图1所示。 2ISP的逻辑实现 基于IIC总线的数据传输规范,为完成IIC总线的数据发送与接收,采用ISP器件实现通讯接口的逻辑功能框图如图2所示。通过频选、控制、可控时钟可获得100kHz、200kHz、300kHz、400kHz的时钟频率。器件退出总线竞争后,时钟线置高电平。 http://www.cdtarena.com
3、2.1通讯的启动与停止 在主机方式下,接收数据时,ISP器件必须通过启动信号生成器送出一个启动信号,然后发送从机的地址信号和读写信号。只有这样,才能在总线上发送数据。该过程由控制寄存器启动。VHDL描述如下:PROCESS(WR,CS)——WRISCPUWRITESIGNAL——CSISTHISCHIP"SSELECTSIGNALADDRS:="0";IF(Ctrreg(0)="1"ANDCtrreg(3)="1"ANDSCL1="1")THEN——Ctrreg为控制寄存器CLK1COUNT:="0";SDA1:="1";IF(CLK1EVENTANDCLK="0")
4、THENIF(CLK1COUNT="3")THENSDA1:="1";ADDRS:="1";Ctrreg(3):="0";CSTA:="1";ELSECLK1COUNT:=CLK1COUNT+1;ENDIF;ENDIF;ENDIF;IF(ADDRS="1"ANDSCL1"EVENTANDSCL1="1")THEN%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#18
5、3;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;——将数据寄存器中的数据%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#183;%26;#1
6、83;%26;#183;%26;#183;——及WR信号移位发出(略)ENDIF;ENDhttp://www.cdtarena.comPROCESS;当一次通讯结束时,主机要发送停止信号。该过程同样同控制寄存器控制;当控制字第二位为"1"时,ISP器件产生停止信号。VHDL描述与启动类似。 2.2发送数据 在主机方式下,完成启动和地址信号发送后即开始发送数据。发送数据时并串转换器在SCL的下降沿移位,保证SCL高电平时SDA上的数据稳定。发送的进程由WR信号和从机的应答信号启动。当ISP器件在总线竞争失败时,由处理器将ISP器件转为从机工作方式,处理器向地址检测
7、电路送该器件在系统中的地址。只有在接收到的地址信息与该器件所设的地址相同时,才发出应答信号,开始通讯。每发送一个字节即将SDA拉高,等待接收机的应答信号,准备下一个数据。 2.3接收数据 在主机方式下,完成通讯启动和地址信号发送后便开始准备接收数据。每接收一个字节后要发出应答信号,产生一个负脉冲作为中断请求信号输出给处理器。若此时系统忙,则拉低SCL电平迫使发送机进入等待状态。从机方式下的接收与主机方式下一样。VHDL描述如下:PROCESS(SDA1)SACK:="0";FULL1:="0";STP:
此文档下载收益归作者所有