关键词: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控制核的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 总体思想 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模块。
|