• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > 基于VHDL/CPLD的I2C串行总线控制器设计及实现

基于VHDL/CPLD的I2C串行总线控制器设计及实现

录入:edatop.com     点击:

3.1 μC接口设计

μC接口用于连接I2C接口电路和μC,主要实现两者之间的信号交互握手机制。设计时可以用VHDL提供的状态机来描述信号交互机制中的工作状态切换,如图3(a)所示。

μC接口电路中使用的四组寄存器的地址是24位的,高16位为I2C总线控制器的基址(MBASE),占用μC的地址空间,低8位用于区别不同的寄存器。寄存器本身是8位的,图3(b1)为控制寄存器,图3(b2)为状态寄存器。图中示出了每一位的含义。

3.2 I2C接口设计

I2C接口用于连接μC接口电路和I2C总线,由两个状态机构成:一个是I2C接口主状态机,用于执行发送和接收操作;另一个为"SCL/SDA/ STOP 产生"状态机,当I2C总线控制器为主机时,这个状态机产生SCL/START/STOP信号。

I2C接口用于I2C总线的驱动和接收,当I2C总线控制器为主机时,I2C接口必须按I2C总线规范驱动总线;当总线控制器为从机时,I2C必须能正确接收满足I2C总线规范的信号。I2C设计规范对总线的时序作了详细的定义,在不同模式下这些参数的具体数值都有明确的规定。"SCL/START/STOP 产生"状态机的状态转换如图4所示, I2C接口主状态机的转移图如图5所示。

4 仿真与硬件实现

本文中仿真工具采用Mentor公司的ModelSim Plus 6.0 SE,其显著的优越性能是提供了一个混合语言仿真环境,已在产业界广泛应用。为了测试验证系统的功能,本文采用了Atemel公司提供的采用I2C总线协议的AT24C02 E2PROM芯片(256B 8bit)的VerilogHDL仿真模型(AT24C02.v)作为从器件对象,用VerilogHDL语言构建了testbench(测试向量),对所设计I2C总线控制器进行仿真。

图6和图7为μC通过I2C总线控制器对E2PROM进行数据写/读的仿真波形(将数据FFH~0HH写进地址0~255单元,然后将它们再按顺序读的模式读出)。往E2PROM写入时需要给出所写起始单元的地址(图6中为00H); 从E2PROM顺序读时不用给出起始单元地址而从当前地址处开始读(本文中写完256B数据后,地址指针又回到0处)。相关状态及数据已在图中作了标示。由此可见,所设计的总线控制器完全符合标准I2C串行协议的时序要求。

本文设计的系统实现平台采用Xilinx公司的XC95216-10-PQ160 CPLD芯片,总逻辑门个数为4 800。经综合、适配、布局布线后占用器件资源的情况为:宏单元120/216(56%)、寄存器111/216(52%)、功能块331/432(77%)、乘积项分配器544/1080(51%)。可见,系统占用约一半的资源,相当精简。整个系统下载到CPLD后在2MHz时钟频率下运行正常。

作者:钱敏 黄秋萍 李富华 刘蓓 来源:21IC电子网

上一篇:全业务运营时代的业务支撑系统
下一篇:OCS是融合计费的重要组成部分

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图