电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者电子文章FPGA基于VHDL的I2C总线控制核设计

基于VHDL的I2C总线控制核设计

11-20 16:14:10 | http://www.5idzw.com | FPGA | 人气:320
标签:fpga是什么,fpga教程,fpga培训,http://www.5idzw.com 基于VHDL的I2C总线控制核设计,http://www.5idzw.com

摘要: 从状态机的角度,介绍一种I2C控制核的VHDL设计方法。将其嵌入到FPGA中,用于实现与TMS320C6000系列DSP的接口,并配合DSP的软件完成对视频采集与显示处理系统中数字视频编、解码器工作模式寄存器的配置及其状态查询。着重介绍I2C控制核的总体设计方案,详细描述其内部命令状态机和时序状态机的工作原理及相应的VHDL代码。此外,介绍I2C控制核与DSP相互通信中断处理机制的VHDL实现方法。最后,给出在Xilinx公司的ISE6.1+ModelSimXE5.7c软件平台中进行EDA的综合结果与时序仿真图。

关键词: I2C总线 状态机FPGA VHDL DSP 控制器核

引言

I2C总线是双向、两线、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。由于其使用两线的硬件接口简单,I2C总线的应用越来越广泛。实现I2C总线通信协议主要有两种方法:①利用MCU对两根I/O口线进行软件编程,模拟I2C总线的SCL和SDA时序要求;②使用专用I2C总线控制核,但受其主机(host)接口方式和时钟频率的限制,在有些场合应用并不方便。

图1

在我们开发的基于DSP的视频采集与显示处理系统中,为了满足数字视频信号传输带宽及图像处理算法速度的要求,选择了TI公司的32位高速、高性能DSP TMS320C6711(简称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的传输速度,并且支持两种地址:①从设备地址(SCLAVE ADDRESS,8bit),分为读地址和写地址,高7位用于选中芯片, 第0位是读/写控制位(R/W),决定是对该芯片进行读或写操作;②内部寄存器单元地址(SUBADRRESS,8bit),用于决定对内部的哪个寄存器单元进行操作,通常还支持地址单元连续的多字节顺序读写操作。I2C总线的读、写操作过程如下。

写过程(S:开始,Sr:重开始,P:停止,-S:从设备,-M:主设备,W:写位,R:读位)

SLAVE ADDRESS(W) ACK-S SUBADDRESS ACK-S DATA(N BYTES) ACK-S P

读过程

S SLAVE ADDRESS(W) ACK-S SUBADDRESS ACK-S
(Sr) SLAVE ADDRESS(R) ACK-S DATA(N BYTES) ACK-M P

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)。



②如何通过软件编程,方便地实现对控制核中各种命令的操作。为此,在控制核内部共设备了6个8位寄存器,用于管理整个控制核的工作。这些寄存器的名称、标号、位数、地址、操作方式,以及寄存器内部设备的控制位及功能的具体情况如表1所列。寄存器内部设置的控制位及功能的具体情况如表1所列。寄存器的寻址使用EMIF接口地址总线的低三位eadd[4~2]和由高位地址译码得到的I2C控制核使能信号nce。当DSP发出的读、写命令完成后,I2C_top会向DSP发中断请求eint,让DSP发出下一个命令到CR,从RXR中读数,或进发送新数据到TXR。

表1 I2Ctop模块内部寄存器

寄存器 位 数 地 址 操 作

控制位及功能

控制寄存器CTR 8 000 只写 I2C控制核使能位(core-en),(中断使能位ien)
命令寄存器CR 8 001 只写 启动(start-r)、读(rd-r)、写(wr-r)、停止(stop-r)、主设备确认(ack-r)、中断响应位(i-ack-r)
状态寄存器SR 8 010 只读 从设备确认位(rx-ack)、I2C-core模块忙位(Core-busy)
发送寄存器TXR 8 011 只写 寄存器发送到从设备的数据
接收寄存器RXR 8 100 只读 寄存由从设备读取的数据
时钟尺度寄存器PRES 8 101 读写 寄存器时钟尺度因子,对时钟信号(eclk)实现指定倍数分频,得到SCL和SDA的五个子状态相互转移的同步时钟使能信号(eclk-en)

[1] [2]  下一页

,基于VHDL的I2C总线控制核设计
关于《基于VHDL的I2C总线控制核设计》的更多文章