I2C总线接口电路设计及VLSI实现 摘要:本文提出了一个从模式的IC总线接口电路设计,该接口电路实现了对变参数ASIC 器芯片的配置。此设计使得可配置的ASIC芯片中参数配置所需要的芯片管脚大大减少。该 方案现以通过行为仿真、综合后门级时序仿真,并且在无锡上华0.6umCM0S工艺上实现。 本文还提出了一个主从模式混合的I℃总线接口控制电路设计,该接口电路即可以配置为主 模式又可以配置为从模式,和微处理器配合可以很好的实现I℃总线协议。该方案现以通过 行为仿真、综合后门级时序仿真 关键词:IC总线接口电路、从模式、主从模式混合、VHDL、VLSI 目录 1前言 2 2I2℃总线的基本原理 4 3从模式的I2C总线接口的电路结构设计 8 3.1系统结构 8 3.2主状态机 9 3.3子模块 10 4主从模式混合的I2℃总线接口的电路结构设计 12 4.1系统结构 -12 4.1.1设计目标 12 4.1.2系统框图 13 4.22℃总线控制器子模块 13 4.2.1总体设计思路 13 4.2.2状态机 -13 4.2.2.1SCL状态机 13 4.2.2.2主状态机 15 4.2.3各子模块 -16 4.3微处理器接口模块 18 5测试验证 -20 5.1从模式的I2℃总线接口电路的测试 20 5.2主从模式混合的I2℃总线接口电路的测试 21 6LSI实现 24 7结论 24 1
!"#$%&'()#$ !"*#$+,-!"./0012% 3456789:;<=>?@ABC:;DEFGHIJ KLMNO PQ RSI% TU V> WXY)5#$9U Z)5#$9 [\]^ #>)5_` ab%34567 89:;<=>?@ABC:;L < <U V>< cdef < cf g hi jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj k k lm^ jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj n o pq jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj r og stpq jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj r oLk Uuvw jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj x oLo y z jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjgK n U V> pq jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjgk ng stpq jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjgk nLgLg {| jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjgk nLgLk st}~ jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjgo nLk WX y z jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjgo nLkLg jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjgo nLkLk uvw jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjgo nLkLkLg f uvw jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjgo nLkLkLk Uuvw jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjg nLkLo y z jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjgM nLo \]^ z jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjgr jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkK Lg jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkK Lk U V> jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkg M cf jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkn p jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkn
一、前言 I℃总线是一种被广泛应用的芯片间的串行总线,该总线最早是由Philips公司提出并 倡导的。℃总线通过两条信号线实现了连接在总线上的器件之间的软件寻址和同步串行 数据传输,完全避免了器件间的传统的片选寻址方法,节省了大量的数据总线、地址总线、 控制总线所占用的芯片管脚和PCB板的面积。器件之间简单的℃总线互联方式,可以使用 户的硬件系统具有最简单而灵活的扩展方法、简单而有效的系统调试和故障排除方案。并 且在设计基于℃总线的用户系统时,由于功能模块图上的功能模块的互联可以直接对应实 际的℃总线器件的互联,因此可以很方便地把功能模块图转变成电原理图。如果再把常用 的软件模块建库保存,在开发用户系统的软件部分所花费的时间和资源也可以大大减少。 总之,基于℃总线设计用户系统,可以有效降低用户系统的硬件部分和软件部分的研制成 本和生产成本。图1-1为℃总线的一个应用实例。 LINE BURST 接口 MODE 控制器 SDA DTMF 发生器 ADPCM 微控制器 图1-1DECT无绳电话基座 I℃总线的发展简史: ·1992年I℃总线协议的1.0版推出。该版本保留了最高传输速率为100kbt/s的标准模 式和7位寻址方式,并增加了最高传输速率达到400kbit/s的快速模式,具有该种模式的 I℃总线接口的IC器件可以向下兼容,应用在0-100kbit/s的系统中。此外该版本还增加 了对10位地址寻址方式的支持,这样就可以有1024个额外的从地址可以供系统使用。同 时,该版本忽略了对从地址的软件可编程的支持以及低速模式,因为前者的实现过于复杂, 未被实际应用,而后者事实上是整个℃总线协议的一个子集,不需要另外加以描述。 ·1998年℃总线协议的2.0版推出。此时℃总线协议已经成为了事实上的国际标准, 被IC设计生产商广泛采用。该版本增加了高速模式,最高传输速率达到惊人的3.4Mbit/s。 同时,原来对新的器件的固定输出电平的限制被取消,取而代之的是可以输出与总线电源 2
!"8 D % 67 ¡¢£FI ¤¥¦¤§¨[©ª8 «¬®¯°± ¤¬t"²§¨3³´µ0¶«<·¨< WX+¸!"./[ ¹ º»¼% ¤¥½¾ ¿À3 )5' Á¤stÃĽ¾ÅÆÇÈÉ3³<½¾ÅÄÊstË[ÌÍÎÏ34%D EFlÐ ÁstBÐÑÒ z~IÑÒ z¿À)5Ó Ô ¤¿ÀÕ&)5_3Ö·×ÑÒ z~ØÙm^~%ÚÛÜ×Ý ¦¤ zÞßàáFâãÁst¦¤äå+æçB[èéê)50012% ¥lÐ Ást)5ÄÊëìÁst¤äå[¦¤äåíXÙ [îïÙ%~ gjg 9 ð% ãɽñò • gxxk ó ab gLK ôõ%ôàö÷¬øù9 gKKúûüý |þ [ §¨3 D÷¬øù nKKúûüý ø ÃÄ ¤)5 F KjgKKúûüý st*%& ôT gK ·¨§¨3 )5Ä gKkn ·¨)5st'%© Bô·¨¦¤)5ìø Õ9h7Ð ÔÅ?I aby,- 5 !% • gxxr ó ab kLK ôõ%&B ab"#Ù9I$Ô|þ îï%&%ô÷ø ÷¬øù'( oLnPûüýL ©Bm)* ¤+,-.X/0/Å1¥)52é
相关的电平;原来快速模式的输出级在6mA输出0.6V要求被忽略。 ·2000年的2.1版开始允许在高速模式的重复启始信号后,可以延长SCL时钟的低电平周 期,并放宽了高速模式的一些时间参数的要求。 本毕业设计中包含了一个由VLSI实现的从模式的℃总线接口电路和一个既可配置为 主模式又可配置为从模式的℃总线接口电路。 前一个设计电路可作为一个成熟的IP核嵌入到参数可配置的ASIC芯片中,这样通过 该接口电路只需两个管脚就可实现系统配置参数的输入和系统配置参数的输出验证,如图 1-2所示。而完成相应功能的并行总线接口电路则需要相当多的管脚,比如一个8位总线接 口至少需要8条数据总线、若干条地址总线、读写控制线和片选线。 后一个设计电路的功能更为强大,用途也更为广泛,不仅可以作为主模式℃总线器件 配合从模式的I℃总线接口电路完成对参数可配置的ASIC器件的系统配置参数的输入和参 数的输出验证的任务,还可以直接和微处理器的IP核连接,使微处理器芯片直接具有℃ 总线接口,这样不需要再采用软件模拟的方式实现℃总线功能,因而大大节省了微处理器 的硬件资源和运算资源,提高了微处理器的编程效率。 SDA SCL AO CS cs ASIC I2C总 SDA CORE R/W R/W 线接口sCL DO D7 传统的总线接口 图1-2I℃总线接口示意图 3
34-5m)ø AF MO KLMc -6% • kKKK ó kLg ôâ789F÷ø :;7¡¢?)5<= f B>ì-? @DAB÷ø CB-6% DE*FG cf [H)#$9 U Z)#$9 % h)I9ÙJ KLM)#$ !"* 67 N,./)st#$M[st#$ OÚ~ gjk +P%Å®Ù3ÑÒD8Q,-3RS./TÚ r U2,- r «<VW ·¨<XYWX["²% ?ÑÒZ9[0\êZ9])5I9U ¤ #> ®Ù)#$ ¤st#$M[ ^_T)5Ó[\]^ K£'\]^ !"ÓÃÄ ,-Ü&¦¤ `3 ÑÒÕÅ00´µ\]^ ¤èé[abèéO÷\]^ Êù%
二、I℃总线的基本原理 I℃总线是通过两条双向线(时钟线SCL,数据线SDA)在器件之间传递信息的。SDA、 $CL的输出级必须是开漏或者开集电极输出,并外接上拉电阻,以实现“线与”功能,如图 2-1所示。当总线空闲时,SDA、SCL均为高电平。总线上的每个器件都有一个唯一的地址, 既作为数据的发送者或接收者,也可以配置成master或slave。master可以控制总线, 开始数据传输,产生传输所需的SCL时钟脉冲。其他被寻址的器件只能处于slave模式。 可以联入总线的器件数取决于总线的最大负载能力400P℉。 +VDD 电 SDA串行数据线 SCL串行时钟线 SCLK SCLK SCLKNI DATANI SCLKN2 DATAN2 OUT OUT OUT OUT 777 77 77 DATA SCLK DATA IN IN IN 器件1 器件2 图2-1I℃总线器件输出级示意图 I℃总线上的数据传输由起始状态启动,由停止状态结束。SDA线上的数据在SCL时钟 高时必须稳定。SDA上的高低电平状态的变化只能在SCL时钟为低时进行变化。在SCL为 高时,SDA由高到低的变化表示起始状态,SDA由低到高的变化则表示停止状态。这样的 定义可以避免把起始状态和停止状态误认作是普通的数据。 ℃总线是一个允许有多个主控制器的总线,它定义了一个仲裁过程,用来保证当一个 以上的master同时试图控制总线时,只有一个master可以控制总线,并且总线上传送的 数据不被其他master破坏。由于SDA上的数据只有在SCL为高时有效,而所有的master 在总线上传信息时都会在SCL上产生自己的时钟信号,所以当有两个或两个以上的主控制 器同时企图控制总线时,就需要用一个己经同步好的SCL时钟来进行以位为单位的仲裁过 程。SCL总线时钟同步是利用了I℃总线接口的线与功能,只要一个器件的SCL输出低电 平,SCL时钟总线就会被成低电平。SCL时钟总线的拉低会使相关器件开始对自己的SCL 低电平周期进行计数,只有当所有的器件对自己的SCL低电平周期计数结束回到SCL高电 平周期时,SCL总线才会被重新拉高。具有较短的SCL低电平周期的器件在计数结束后会 释放自己的SCL输出同时进入等待状态,直到SCL总线被拉高。SCL总线拉高又会使相关 器件对自己的SCL高电平周期计数,最先完成计数的器件会将SCL再次拉低。这样SCL的 高电平周期是由拥有最短的$CL高电平周期的器件决定,而低电平周期则是由拥有最长的 SCL低电平周期的器件决定。如图2-2所示。仲裁过程是当SCL时钟总线为高电平时,在
67 cdB> f « eeF ¤¥¬f¡g% e < f AhiâjkâlD Imn5o2pÑÒÚ~ kjg +P%RqrB e < f s9÷-%It ¤uÄv·¨ HI9«ãwkxê)5#$Ù Oyüz{ k y|z % Oyüz{ )5WX â7«¬ïî¬+, f B>}~%§¨ ¤NÒ]Ð y|z % )5ÀM ¤/Ð0Ò nKK % I«¬7uv;uvp% e I«F f B> ÷Bhi,% e I÷ì-uvNÒF f B>9ìB8%F f 9 ÷B e ÷ìP7uv e ì÷QPuv% ,)5°±×7uv[uvI6«% 89ÄSUWX ,7O)àR 5I Oyüz{ ©B~WXBNÄ Oyüz{ )5WXDEI¬w « Oyüz{ %Ð e I«NÄF f 9÷BÄÊÅ+Ä Oyüz{ FI¬¡gBuF f IïîB>¡¢O +5RÄk5IUWX ©B~WXBO,-"#©ª` f B>)859¾7 % f B>©ª 2ÑÒN- ¤ f ì - f B>Ùì-% f B>mì'34 ¤â7 f ì-?@8NÄR+Ä ¤ f ì-?@p f ÷ -?@B f :*m÷%ÃÄ f ì-?@ ¤Fp? ¡A f ©BM¢£uvÓ f m÷% f m÷Z'34 ¤ f ÷-?@¤®Ù ¤¥ f ܦmì% f ÷-?@§Ä f ÷-?@ ¤,Åì-?@Q§Ä= f ì-?@ ¤,%Ú~ kjk +P%7R f B>9÷-BF
SDA数据总线上进行的。当一个master的SDA输出为高,而另一个master的SDA输出为低 时,SDA数据总线线被拉低。这时前者发现SDA数据总线上的数据和自己的输出不一致, 它意识到已经丧失了总线控制权,随即它将关闭自己的SDA输出,因此竞争胜利的master 的数据不会被竞争失败的master破坏。如图2-3所示。失去总线控制权的master可以继 续产生SCL时钟脉冲直到它失去总线控制权的字节传送完毕。 开始对高电 wait 平周期计数 state CLK 计数器 CLK 复位 2 SCL 图2-2总线仲裁的时钟同步 ,master】失去总线控制权 (DATA 1=SDA) DATA DATA SDA 图2-3总线仲裁过程 2℃总线上的每个数据包都是由8个数据位和1个响应位构成,传送一个完整的数据字 节就需要9个SCL时钟脉冲传送。发送方先发送数据的最高位,并在响应位释放SDA,接 收方必须在响应位将SDA拉低表示接收到数据。slave接收者不能在响应位将SDA拉低, 表示他不能接收数据,此时master可以产生停止信号中止传送。当master接收方不响应, 表示这是接收的最后一个字节。 I℃总线的标准模式和快速模式的通讯是由4部分组成:起始信号、slave地址、数据 传送、停止信号。本设计支持7位寻址方式。如图2-4所示。起始信号后,7位slave地 址和1个读写控制位被发送。只有当slave的地址和master发送的地址一致时,slave才 会响应。slave被成功寻址之后,数据以字节为单位顺序传送,方向由读写控制位决定 (“1”表示读,“0”表示写),master产生停止信号终止数据传输,释放总线。另外, master也可以产生重复起始信号代替停止信号。 5
e «I8%R Oyüz{ e 9÷Å Oyüz{ e 9ì B e «mì% Bhã e «I«[¨ ©ª"#«¬WX®Y¥4¯ e Õ&°±² Oyüz{ «°±¬³ Oyüz{ %Ú~ kjo +P%¬´WX Oyüz{ )5µ ¶ïî f B>}~Ó¬´WX·´¬w®D% ! " #$ It«Fu r «[g¸qÙ¬w®«· ´,- x f B>}~¬w%ãw3¤ãw«÷DF¸¡A e x3hiF¸¥ e mìPx«% y|z xÒF¸¥ e mì PÒx«&B Oyüz{ )5ïî¡¢*¬w%R Oyüz{ x3¸ P x?·´% |þ [ø 6¹ n äåºÙò7¡¢< y|z ·¨<« ¬w<¡¢% §¨3 %Ú~ kjn +P%7¡¢? y|z · ¨[ g XYWXãw%NÄR y|z ·¨[ Oyüz{ ãw·¨¨B y|z ¸% y|z Ùѧ¨¥?«5·´9¾»C¬w3XYWX, ¼o g pPXo K pPY½ Oyüz{ ïî¡¢¾«¬¡A% Oyüz{ ê)5ïî:7¡¢1¿¡¢%