FPGA应用实例——实现I2C总线主机控制器
2014-10-21刘蕴韬



【摘要】在以51单片机为核的小型电路设计中,没有足够的I/O端口与内部时钟中断实现I2C总线功能。本文运用VHDL语言对FPGA进行必要的编程,在不影响51单片机地址分配的同时能够将8位并行数据转化为符合I2C总线协议的串行数据,实现I2C主机控制器功能。同时,应用MaxPlus软件对设计进行时序仿真,分析设计可行性与存在的不足,该设计能够满足预定目标,拓展FPGA应用。
【关键词】I2C总线;FPGA设计;MaxPlus仿真
Abstract:In a small circuit nuclear design based on 51 SCM,no I/O port enoughand internal clock interrupt to realize I2C bus function.In this paper,the use of VHDL language programming necessary for FPGA without affecting the 51 SCM also addresses are assigned to 8 bit paralleldata into serial data with I2C bus protocol,iIplementation of I2C host controller function.
Key words:I2C Bus;FPGA design;MaxPlus emluator
1.引言
I2C總线是一种常见的数据总线格式,在电路设计中经常使用,其优点是接口结构简单,数据传输快,实现简单。但是,在以51单片机为核的小型电路设计中,没有专门的I2C总线控制端口,因此迫切需要找到一种能够实现I2C总线主机控制器的设计方案。本文在51单片机数据总线与地址总线的复用的基础上,对FPGA进行适当编程,实现I2C主机控制器功能。该方案取代了使用专门的I2C总线转换芯片的方法,节约了成本,同时能够满足地址总线的有效分配,拓展了FPGA的应用范围。通过运用MaxPlus软件对FPGA器件进行时序仿真后,分析了确认原该电路逻辑正确,实现的可行性。进而验证了该方法是可行的。
2.I2C总线协议简介与VHDL语言简介
I2C总线以SDA由高到低电平作为起始条件,依次发送从机地址(7位地址或10位地址),与8位串行数据信息,以SDA由低到高电平作为结束条件。7位地址主机数据传输格式如图1所示[1]。
图1 I2C总线主机数据传输图
VHDL语言是进行大型FPGA工程设计时最常用的硬件编程语言。VHDL采用IEEE的标准,语法简单,通俗易懂。……
