首 页 用户登录 | ![]() |
|||
|
|||
按字母检索 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
按声母检索 | A | B | C | D | E | F | G | H | J | K | L | M | N | O | P | Q | R | S | T | W | X | Y | Z | 数字 | 符号 |
|
![]() |
您的位置: 5VAR论文频道 → 论文中心 → 理工论文 → 电子通信 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
基于VHDL的I2C总线控制核设计 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
收集整理:佚名 来源:本站整理 时间:2009-01-10 22:25:41 点击数:[] ![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[本篇论文由上帝论文网为您收集整理,上帝论文网http://paper.5var.com将为您整理更多优秀的免费论文,谢谢您的支持] 关键词:I2C总线 状态机FPGA VHDL DSP 控制器核 引言 I2C总线是双向、两线、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。由于其使用两线的硬件接口简单,I2C总线的应用越来越广泛。实现I2C总线通信协议主要有两种方法:①利用MCU对两根I/O口线进行软件编程,模拟I2C总线的SCL和SDA时序要求;②使用专用I2C总线控制核,但受其主机(host)接口方式和时钟频率的限制,在有些场合应用并不方便。 1 总体思想 SCL和SDA分别为I2C总线的时钟线和数据线。目前,支持I2C总线通信协议的视频编、解码芯片大多只支持100Kb/s或400Kb/s的传输速度,并且支持两种地址:①从设备地址(SCLAVE ADDRESS,8bit),分为读地址和写地址,高7位用于选中芯片, 第0位是读/写控制位(R/W),决定是对该芯片进行读或写操作;②内部寄存器单元地址(SUBADRRESS,8bit),用于决定对内部的哪个寄存器单元进行操作,通常还支持地址单元连续的多字节顺序读写操作。I2C总线的读、写操作过程如下。 写过程(S:开始,Sr:重开始,P:停止,-S:从设备,-M:主设备,W:写位,R:读位)
读过程
I2C控制核的设计采用自顶而下的方法,分为三个模块:I2C_top模块、I2C_cmd模块、I2C_core模块。总体结构框图如图1所示。I2C_top模块是顶层管理模块,主要任务是接收DSP发来的控制信号、命令及数据;发送由从设备读出的数据和确认位到DSP;实现I2C控制核与DSP的中断通信机制;提供当前I2C控制核的工作状态;把DSP发出的命令字信号送到I2C_cmd模块。 在设计I2C控制核时,必须注意以下几个方面: ①I2C控制核与主机(Host,即C6711 DSP)以及视频编解码器的硬件接口连接关系。考虑到I2C总线通信协议的时序关系及芯片读/写操作过程,I2C控制核应该包括两个外围接口,如图1所示。一是与C6711 EMIF(External Memory Interface,扩展存储器接口)的高速异步存储器ASRAM(Asynchronous SRAM)接口,称为主机接口。它向I2C控制核发出控制命令与数据,钖0位地址总线、32位双向三态数据总线、异步输出使能信号aoe、异步写使能awe、异步读使能are、外部存储器空间选通ce2、外部中断申请eint。二是与视频编/解码器相连的I2C两线接口SCL、SDA。I2C控制核称为I2C总线的主设备(master),实现EMIF的ASRAM接口向I2C总线接口的转化;I2C器件(视频编码器、视频解码器)被称为I2CU叫线的从设备(slave)。
时钟尺度寄存器(PRES)用于产生两个时钟频率信号:pres(7 downto 5),用于产生I2C控制核的工作频率fcore;pres(5 downto 0),用于产生I2C总线的时钟SCL频率fi2c。其计算公式如下: 其中:pres1=1+pres(7 downto 5) pres2=1+pres(4 dwonto 0) 由于eclk=100MHz,以pres(7 downto 5)=“100”=4,pres(4 downto 0)="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。 设计的核心工作是对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进行采样。 Tags: |
提供人:佚名 | |
【返回上一页】【打 印】【关闭窗口】 |
![]() |
5VAR论文频道 |
![]() |
5VAR论文频道 |
![]() |
关于本站 -
网站帮助 -
广告合作 -
下载声明 -
网站地图
Copyright © 2006-2033 5Var.Com. All Rights Reserved . |