电子工程师的网站
首 页 |  新闻资讯 | 最新产品 | 解决方案 | 技术参数
设计应用
电路图 | 技术资料 | 芯片资料 | 技术论坛
  现在位置: 首页 > 设计应用 > 接口/总线/驱动 > 详细信息
接口/总线/驱动:基于VHDL的I2C总线控制核设计
来源:   时间: 2008-1-30 6:47:32    

  摘要:从状态机的角度,介绍一种I2C控制核的VHDL设计方法。将其嵌入到FPGA中,用于实现与TMS320C6000系列DSP的接口,并配合DSP的软件完成对视频采集与显示处理系统中数字视频编、解码器工作模式寄存器的配置及其状态查询。着重介绍I2C控制核的总体设计方案,详细描述其内部命令状态机和时序状态机的工作原理及相应的VHDL代码。此外,介绍I2C控制核与DSP相互通信中断处理机制的VHDL实现方法。最后,给出在Xilinx公司的ISE6.1+ModelSimXE5.7c软件平台中进行EDA的综合结果与时序仿真图。s0100
   
  关键词:I2C总线状态机FPGAVHDLDSP控制器核
   
引言
   
  I2C总线是双向、两线、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。由于其使用两线的硬件接口简单,I2C总线的应用越来越广泛。实现I2C总线通信协议主要有两种方法:①利用MCU对两根I/O口线进行软件编程,模拟I2C总线的SCL和SDA时序要求;②使用专用I2C总线控制核,但受其主机(host)接口方式和时钟频率的限制,在有些场合应用并不方便。

  在我们开发的基于DSP的视频采集与显示处理系统中,为了满足数字视频信号传输带宽及图像处理算法速度的要求,选择了TI公司的32位高速、高性能DSPTMS320C6711(简称C6711)芯片(CPU时钟150MHz,外围存储器接口EMIF时钟100MHz)作为处理核心;外围加上FPGA和数字视频编码器与解码器,实现对标准复合视频信号的采集、处理和视频显示任务。由于C6711没有可以单独控制的I/O口线,所以不能使用①的方法;由于外围扩展存储器接口(EMIF)工作在100MHz,也不易实现②的方法,从系统小型化,充分利用FPGA的逻辑资源,提高硬件系统集成度的角度出发,选定在FPGA内自行设计I2C控制核的方法,实现DSP的高速异步存储器接口到I2C总线接口的转化。下面着重介绍如何使用VHDL进行I2C总线控制核设计。
   
1.总体思想
   
  SCL和SDA分别为I2C总线的时钟线和数据线。目前,支持I2C总线通信协议的视频编、解码芯片大多只支持100Kb/s或400Kb/s的传输速度,并且支持两种地址:①从设备地址(SCLAVEADDRESS,8bit),分为读地址和写地址,高7位用于选中芯片,第0位是读/写控制位(R/W),决定是对该芯片进行读或写操作;②内部寄存器单元地址(SUBADRRESS,8bit),用于决定对内部的哪个寄存器单元进行操作,通常还支持地址单元连续的多字节顺序读写操作。I2C总线的读、写操作过程如下。
   
  写过程(S:开始,Sr:重开始,P:停止,-S:从设备,-M:主设备,W:写位,R:读位)SLAVEADDRESS(W)ACK-SSUBADDRESSACK-SDATA(NBYTES)ACK-SP
   
  读过程SSLAVEADDRESS(W)ACK-SSUBADDRESSACK-S(Sr)SLAVEADDRESS(R)ACK-SDATA(NBYTES)ACK-MP
   
  I2C控制核的设计采用自顶而下的方法,分为三个模块:I2C_top模块、I2C_cmd模块、I2C_core模块。总体结构框图如图1所示。I2C_top模块是顶层管理模块,主要任务是接收DSP发来的控制信号、命令及数据;发送由从设备读出的数据和确认位到DSP;实现I2C控制核与DSP的中断通信机制;提供当前I2C控制核的工作状态;把DSP发出的命令字信号送到I2C_cmd模块。
    
  在设计I2C控制核时,必须注意以下几个方面:
   
  ①I2C控制核与主机(Host,即C6711DSP)以及视频编解码器的硬件接口连接关系。考虑到I2C总线通信协议的时序关系及芯片读/写操作过程,I2C控制核应该包括两个外围接口,如图1所示。一是与C6711EMIF(ExternalMemoryInterface,扩展存储器接口)的高速异步存储器ASRAM(AsynchronousSRAM)接口,称为主机接口。它向I2C控制核发出控制命令与数据,钖0位地址总线、32位双向三态数据总线、异步输出使能信号aoe、异步写使能awe、异步读使能are、外部存储器空间选通ce2、外部中断申请eint。二是与视频编/解码器相连的I2C两线接口SCL、SDA。I2C控制核称为I2C总线的主设备(master),实现EMIF的ASRAM接口向I2C总线接口的转化;I2C器件(视频编码器、视频解码器)被称为I2CU叫线的从设备(slave)。
   
  ②如何通过软件编程,方便地实现对控制核中各种命令的操作。为此,在控制核内部共设备了6个8位寄存器,用于管理整个控制核的工作。这些寄存器的名称、标号、位数、地址、操作方式,以及寄存器内部设备的控制位及功能的具体情况如表1所列。寄存器内部设置的控制位及功能的具体情况如表1所列。寄存器的寻址使用EMIF接口地址总线的低三位eadd[4~2]和由高位地址译码得到的I2C控制核使能信号nce。当DSP发出的读、写命令完成后,I2C_top会向DSP发中断请求eint,让DSP发出下一个命令到CR,从RXR中读数,或进发送新数据到TXR。
   
  模块内部寄存器寄存器位数地址操作
   
  控制位及功能控制寄存器CTR8000只写I2C控制核使能位(core-en),(中断使能位ien)命令寄存器CR8001只写启动(start-r)、读(rd-r)、写(wr-r)、停止(stop-r)、主设备确认(ack-r)、中断响应位(i-ack-r)状态寄存器SR8010只读从设备确认位(rx-ack)、I2C-core模块忙位(Core-busy)发送寄存器TXR8011只写寄存器发送到从设备的数据接收寄存器RXR8100只读寄存由从设备读取的数据时钟尺度寄存器PRES8101读写寄存器时钟尺度因子,对时钟信号(eclk)实现指定倍数分频,得到SCL和SDA的五个子状态相互转移的同步时钟使能信号(eclk-en)
   
  时钟尺度寄存器(PRES)用于产生两个时钟频率信号:pres(7downto5),用于产生I2C控制核的工作频率fcore;pres(5downto0),用于产生I2C总线的时钟SCL频率fi2c。其计算公式如下:
   
  其中:pres1=1+pres(7downto5)
    
  pres2=1+pres(4dwonto0) nbsp;  由于eclk=100MHz,以pres(7downto5)=“100”=4,pres(4downto0)=”10000”=16,则
   
  fcore=100/[2×(1+4)]=10MHz
   
  fi2c=10/[6×(1+16)]=0.098MHz=98kHz≤100kHz
   
  可以看出,这样设备时钟尺度寄存器容易实现100MHz~100kHz的转变。
   
  ③需要设置与DSP的相互通信的机制。由于C6711的CPU运行速度为150MHz,而I2C的速度仅为100Kb/s,为了不影响DSP程序的高速运行,采用中断机制。当DSP发出读、写命令后,继续执行自己的程序,而由I2C控制核完成命令后,I2C_top模块负责向DSP发中断请示eint。DSP在中断服务程序中读取SR,从RXR中读数,并发出新命令到CR,发送新数据到TXR。
   
2.状态机描述
   
  设计的核心工作是对I2C总线命令及时序的状态划分。在控制核内共设置了两个状态机,分别称为命令状态机和时序状态机。其中,命令状态机用于管理I2C总线上的命令状态,如表1所列,并实现I2C总线具体的读、写操作的命令状态转移过程;时序状态机用于实现I2C总线上启动、停止、读、写、确认等命令的具体时序关系。这样就把控制核从逻辑上分为两个状态机,共同完成最终的总线命令与时序。
   
2.1命令状态机
   
  命令状态机是I2C_cmd模块的核心部分。该模块的主要功能有两个:一是把I2C_top模块发送的start、write、read、stop四个命令信号转化命令码,发送I2C_core模块;二是实现DSP发出和从slave接收到数据的串并转换。
   
  从I2C总线的通信协议中可以看出I2C总线上的信号可以分为空闲(IDLE)、启动(START)、读(READ)、写(WRITE)、确认(ACK)和停止(STOP)六种工作状态。在IDLE时,SCL和SDA都为高电平,从设备不断检测Start命令的出现。I2C控制核(即I2C总线的主设备)在接收到DSP发送来的Start命令后,主设备进入START状态,并根据Read和Write命令,可以进入READ或WRITE状态。由于主机的读、写操作都是以字节进行的,对应8个周期的I2C总线读/写操作,故设置一个8字拍的计数器,使得READ或WRITE状态能维持8个SCL周期。在完成字节读或写操作之后,都将进入ACK状态。进入ACK,标志一个DSP的读/写命令已经完成,因此发送中断申请给DSP。在中断服务程序中,DSP查询状态寄存器后,再发出下一个命令。这时I2C控制核,或者是转移到IDLE,或者是转移到STOP。命令状态转移关系如图2所示。
   
2.2时序状态机
   
  I2C_core模块负责与视频编码器、解码器的I2C接口,最终实现I2C总线信号SCL和SDA的启动、停止、读、写、确认等具体操作的时序关系。其功能的实现主要由时序状态来完成。根据I2C总线通信协议中SCL和SDA之间的时序关系,总线上包含两种命令(Start/Restart,Stop)和两种操作(Write,Read),时序关系如图4所示。Start命令:在SCL为高电平时,SDA上出现一个下降沿。Stop命令:在SCL为高电平时,SDA上出现一个上升沿。Write操作:SDA只能在SCL为低电平时变化,在SCL为高电平时应保持不变。Read操作:只能在SCL为高电平时,对SDA进行采样。

  为了叙述上的方便,每个命令状态在时序上划分为5个子状态(A,B,C、D、IDLE)。I2C总线时序状态转移关系如图3所示,状态划分如图4所示。在实际中为了更精确地控制时序,对命令时序进行了更细的划分。START和STOP分为7位子状态(a~f,idle),WRITE和READ分为6个子状态(a~e,idle)。这个“6”也就是为什么在公式(2)中分母上有一个“6”。
   
  SCL在Start命令的A状态时,保持原有电平不变,而在B状态时变为高电平,这样就可以实现Restart命令。系统时钟信号eclk由时钟尺度因子分频,得到状态转移的同步时钟使能信号(eclk_en)。在eclk和eclk_en的控制下进行状态移转,最后都转移到空闲状态(IDLE),并保持最后一个状态时的信号电平。图4中标注了每个命令的关键时刻。
   
3.中断信号的处理机制
   
  I2C控制核作为I2C总线的主设备,是在DSP的控制下工作的。它采用中断机制与DSP通道。当一个读写命令完成后,主设备会向DSP发出一个中断申请信号eint(上升沿有效)。在DSP的中断服务程序中,置位命令寄存器的中断响应确认位(i_ack_r='1'),使主设备清除其发出的中断申请信号(eint='0'),而i_ack_r信号将在置位命令结束后的下一个时钟上升沿自动清除。这样,可以允许主设备发出下一个中断申请。
   
  process(nReset,eclk)
   
  begin
   
  if(nReset='0')then
   
  int<='0';i_ack_r<='0';
   
  elsif(eclk'ventandeclk='1')then
   
  if(nce='0'andnAwe='0')then
   
  if(core_en='1'andeadd=”001”)then
   
  --写入命令寄存器
   
  i_ack_r<=cr(7);--写入'1'
   
  endif;
   
  else
   
  i_ack_r<='0';--自动清除
   
  endif;
   
  int<=cmd_done_ackandien;
   
  endif;
   
  Eint<=intand(noti_ack_r_;endprocess;命令码
   
4.EDA综合结果与结论
   
  使用XilinxISE6.1对I2C核的VHDL描述进行综合(synthesize)和实现(implement),目标器件采用Xilinx公司的高密度系统级FPGA-Virtex系列芯片v50cs144-6。设计的总体等效门数为1844门,系统时钟的最大频率为120.758MHz。图5为使用ModelsimXE5.6a对在目标器件上布局布线后的VHDL模块进行仿真(SimulatePost-Place&RouteVHDLModule)的结果。其中,edat信号上“10010000”中的“1”依次是启动和写命令;“01100001”中的“1”依次是停止、读、中断清除命令。从图中可以看出,实现了从TMS320C6000EMIF接口到I2C总线接口的转换功能,并实现发中断申请(eint=1)和清除中断申请的功能,完成了I2C总线通信协议的启动、写、确认,读、确认、停止操作的时序。

相关信息
发表评论
打印本页 关闭本页
泰克推出业内首个手持式RF干扰查找工具
    泰克公司日前宣布,在其NetTek系列中增加最新产品-RF Scout干扰查找器。据称,这一产品在一个坚固耐用的手持式平台中为查找RF干扰、检查信号质量提供了所有必要的工具,使得网络性能规划和优化团队能够在随时可以用于现场的工具中,探索、发现、分析和存档干扰或其它信号质量问题。   转向速度更高的无线数据业务的发展趋势,正推动着对更干净的RF信号的需求,因为高速数据速率依...
>>详细内容
高性能射频调制器促成多载波通信发送器设计(上)
    蜂窝发送器的设计依赖于能够保持高线性度和高动态范围的高性能RF调制器。随着多载波发送器的增长,RF调制器必须保持低噪声基底,从而提供较高的性能指标,这通常取决于二阶或三阶互调。本文讨论了这些需求,并说明MAX2022能够满足典型四载波WCDMA发送架构的要求。 概述   现有的蜂窝基站大多采用超外差结构发送或接收射频信号。这种结构需要两次变频或更多的上、下变频级、中间滤...
>>详细内容
高性能射频调制器促成多载波通信发送器设计(下)
    蜂窝发送器的设计依赖于能够保持高线性度和高动态范围的高性能RF调制器。随着多载波发送器的增长,RF调制器必须保持低噪声基底,从而提供较高的性能指标,这通常取决于二阶或三阶互调。本文讨论了这些需求,并说明MAX2022能够满足典型四载波WCDMA发送架构的要求。 工作在UMTS波段的多载波WCDMA   多项性能指标综合体现出的优势在于多载波的互调特性。从本文可以看出,MAX2022能够...
>>详细内容
CSR蓝牙技术帮助诺基亚推出高性能蓝牙耳机
    目前已经上市的新款诺基亚蓝牙耳机BH-200采用了CSR公司的BlueCore3-Audio Flash (BlueCore3-AF),其语音通讯完全符合蓝牙v1.2技术规范。诺基亚蓝牙耳机BH-200是采用HFP1.5免提协议的第一款耳机,也是诺基亚公司采用CSR BlueCore技术并且已经上市的高端无线耳机系列之一。   诺基亚蓝牙耳机BH-200仅重14克,尺寸为49x22x21毫米,支持5小时30分钟通话时间及150小时待机时间。该款耳...
>>详细内容
PC-ISDN的接口设计
    摘要:提出了PC与基本速率ISDN连接的软硬件设计方案。介绍了基于PC总线、80C188微处理器、Mitel公司的ISDN通信器件以及IDT公司的EPLD逻辑硬件的ISDN卡的硬件结构,同时对软件的结构、任务和模块以及实现方案也作了说明。   关键词:PC-ISDN   ISDN 数据通信 Intel 80C188   1 系统设计考虑  计算机的普及及促进了远程通信的发展。然而1M字节大小的文件经过目前最快的V.34  ...
>>详细内容
德州仪器 Aureus™ 数字音频解决方案
  德州仪器Aureus™数字音频解决方案助力哈曼卡顿、安桥与雅马哈家庭娱乐新品获奖的音频DSP帮助OEM厂商为客户实现精彩特性。   日前,德州仪器(TI)宣布三家领先的音视频(A/V)接收机制造商(哈曼卡顿、安桥与雅马哈)已采用获奖的Aureus™系列高性能音频DSP产品,并应用在多款新一代A/V接收机与数字媒体中心产品中,从而为创新型家庭娱乐应用带来质量出众的音频体验。   TI高性...
>>详细内容
已有(
)位对此新闻感兴趣的网发发表了看法 >>更多评论
内 容:
     
 
热点新闻
一周排行
关于我们 | 服务项目 | 付款方式 | 广告服务 | 联系我们 | 友情链接 | 投诉 建议 合作 | 网站地图 | 加入收藏
Copyright © 2007-2008 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:浙B2-20050339 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8007 QQ:303939539 | MSN:zh1226@hotmail.com |  邮箱:laz8258@163.com dzsc51@163.com