一种基于FPGA的多通道I2C控制器制造技术

技术编号:8131056 阅读:203 留言:0更新日期:2012-12-27 03:13
本发明专利技术公开了一种基于FPGA的多通道I2C控制器,包括CPU接口、缓冲区间、仲裁器和I2C控制器,所述缓冲区间包括发送缓冲区间和接收缓冲区间,所述仲裁器包括写状态机和读状态机,所述仲裁器用于对I2C控制器的请求信号进行仲裁,所述缓冲区间用于对I2C控制器写入/读取和CPU写入/读取的数据进行缓冲,所述缓冲区间包括用于数据读取/写入计数的指针管理器。

【技术实现步骤摘要】

本专利技术涉及通信领域,具体涉及一种FPGA(Filed Programmable Gate Array)的多通道I2C (Inter-Integrated Circuit)控制器,特别是使用FPGA实现多个I2C控制器高效传输数据。
技术介绍
I2C控制总线作为最成熟的总线标准之一,它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高的特点,在工业控制领域得到广泛的应用。现有技术中,在I2C控制总线上,每个连接在总线上的I2C控制器都可以发起数据传输,经过冲突检测和仲裁防止数据被破坏。当连接在总线上的器件过多时,出现冲突的概率就会升高,器件获取总线仲裁的延时就相应增加,不利于实时性要求较高的情况。
技术实现思路
本专利技术的目的在于针对高效低延时的数据传输需求,提供一种基于FPGA的多通道I2C控制器。一种基于FPGA的多通道I2C控制器,包括CPU接口、缓冲区间、仲裁器和I2C控制器,所述缓冲区间包括发送缓冲区间和接收缓冲区间,所述仲裁器包括写状态机和读状态机,所述仲裁器用于对I2C控制器的请求信号进行仲裁,所述缓冲区间用于对I2C控制器写入/读取和CPU写入/读取的数据进行缓冲,所述缓冲区间包括用于数据读取/写入计数的指针管理器。进一步的,还包括CPU总线,外部CPU通过所述CPU总线访问所述多通道I2C控制器的控制寄存器和状态寄存器。进一步的,所述开销字节为4个字节,所述多通道I2C控制器具有共用的发送缓冲区间和接收缓冲区间,所述发送缓冲区间和接收缓冲区间由双端口随机存取器实现,依靠端口仲裁器实现所述多个I2C控制器读写缓冲区间并行操作,缓冲区间的指针由特定的模块进行管理。进一步的,所述指针管理器包括指针寄存器,在外部CPU读取缓冲区间数据时,所述指针寄存器减I,在外部CPU写入数据时,所述指针寄存器加I。进一步的,所述I2C控制器接收到数据则向仲裁器发出写请求,所述仲裁器中的写状态机查询到写请求后则查询与发出请求的控制器对应的接收缓冲区间的状态寄存器,如果状态寄存器中标识区间非满,则将I2C控制器发出的数据写入对应缓冲区间间,并且发出一个脉冲指示要求接收缓冲区间的指针管理器将对应指针加;否则仲裁器的写状态机重新进入到轮询状态,指针不变,且I2C控制器中的数据将会丢失,当I2C向仲裁器发出读请求,仲裁器中的读状态机检测到读请求后则查询与发出请求的I2C控制器对应的发送缓冲区间的状态寄存器,如果状态寄存器中标识区间非空,则将指针当前指向的数据读出,并且发出一个脉冲信号要求接收缓冲区间的指针管理器将对应指针减I;否则仲裁器的读状态机重新进入到轮询状态,指针不变,I2C控制器读出数据将是上一次读出的结果。进一步的,当I2C控制器从总线上每接收到一个完整的数据就产生一个同步脉冲请求信号并输出到仲裁器中;在结束一次连续数据接收后,I2C控制器产生一个中断到CPU中,在I2C控制器发起传输到仲裁器进行仲裁后,所述I2C控制器读取对应区间的状态寄存器,判断区间有效数据的数目,并自动将这些有效数据连续读出并传输到I2C总线上。本专利技术相较于现有技术,能够实现以较高的资源利用率实现更大的传输带宽和更低延时的数据传输与处理。本专利技术比单通道 的I2C控制器提供更大的带宽,有效降低I2C总线出现仲裁冲突的次数,提高实时性。本专利技术使用FPGA单块Block RAM作为缓冲区间,能够最大化地利用FPGA的RAM资源,有效降低成本,具有较高的资源利用率,能够实现更大的传输带宽和更低延时的数据传输与处理。另外,本专利技术具有可调整的CPU总线,能够作为各种处理器外设,应用灵活附图说明图I是本专利技术一种基于FPGA的多通道I2C控制器一个实施方式示意图;图2是图I所示缓冲区划分示意图;图3是仲裁器轮询状态机示意图;图4是指针管理器的组成示意图。具体实施例方式下面结合附图和具体实施方式对本专利技术做进一步详细说明。要提高在I2C控制总线上数据传输的实时性主要有两种方法,第一种是提高I2C控制总线的传输速率,但一般I2C控制器的工作速率在出厂后就设定了上限。第二种是将彼此不需要通信的控制器连接到不同的I2C总线上,不同的I2C总线由同一处理器进行管理。然而上述第二种方法中的处理器对多I2C总线管理的需求较高,要求较高的I2C并发操作和数据读写效率。本专利技术基于FPGA的多通道I2C控制器具有I2C控制器读写端口仲裁和缓冲区间指针管理。请同时参考图1-4,本专利技术一个实施方式包括CPU接口 11、缓冲区间12、仲裁器13和I2C控制器14。所述缓冲区间包括发送缓冲区间121和接收缓冲区间122。所述仲裁器13包括写状态机和读状态机。所述仲裁器13用于对I2C控制器14的请求信号进行仲裁。所述缓冲区间12用于对I2C控制器写入/读取和CPU写入/读取的数据进行缓冲。所述缓冲区间12包括用于数据读取/写入计数的指针管理器,所述指针管理器包括指针寄存器,在外部CPU读取缓冲区间12数据时,所述指针寄存器减I,在外部CPU写入数据时,所述指针寄存器加I。如图I所示,所述I2C控制器14与仲裁器13直接连接。当所述I2C控制器14接收到数据则向仲裁器13发出写请求,所述仲裁器13中的写状态机查询到写请求后则查询与发出请求的控制器对应的接收缓冲区间的状态寄存器,如果状态寄存器中标识区间非满,则将I2C控制器14发出的数据写入对应缓冲区间间,并且发出一个脉冲指示要求接收缓冲区间的指针管理器将对应指针加I ;否则仲裁器13的写状态机重新进入到轮询状态,指针不变,且I2C控制器14中的数据将会丢失。同样,当I2C向仲裁器发出读请求,仲裁器13中的读状态机检测到读请求后则查询与发出请求的I2C控制器14对应的发送缓冲区间的状态寄存器,如果状态寄存器中标识区间非空,则将指针当前指向的数据读出,并且发出一个脉冲信号要求接收缓冲区间的指针管理器I将对应指针减I ;否则仲裁器的读状态机重新进入到轮询状态,指针不变,I2C控制器读出数据将是上一次读出的结果。需要说明的是,FPGA中有两种RAM资源,第一种称为分布式RAM,其分布在整块FPGA中,数量相对较少,适用于构造容量小的FIFO(先进先出)或其他存储器;第二种称为Block RAM,是连续分布的RAM资源,适用于构造大容量的FIFO或其他存储器。本专利技术为了最大效率地利用RAM资源,采用Block RAM构造大容量双端口 RAM的方法。将Block RAM构造成双口 RAM后,对双口 RAM进行划分,如将参考图2,将1024字节的双口 RAM等分为16个区间,每个区间的大小为64字节,在双端口 RAM外部定义16个寄存器,用于缓冲区间12的指针,当在系统初始化时,需要将各个指针寄存器的值指向对应区间起始地址,如第一个指针寄存器初始化后的值为0x000,第二个指针初始化为0x040,如此类推。事实上,本专利技术并不限定双口 RAM的容量和区间大小,上述实施方式的RAM大小和区间大小只是一个应用 举例。指针管理器完成对指针的自加或自减操作,还需要保证指针不能越界,就是指针不能指向不属于相应区间外的地址,每当指针已经指向上界(下界)时,则指针再次自加1(自减I)后,指针指向下界(上界)。同时指针本文档来自技高网...

【技术保护点】
一种基于FPGA的多通道I2C控制器,其特征在于,包括CPU接口、缓冲区间、仲裁器和I2C控制器,所述缓冲区间包括发送缓冲区间和接收缓冲区间,所述仲裁器包括写状态机和读状态机,所述仲裁器用于对I2C控制器的请求信号进行仲裁,所述缓冲区间用于对I2C控制器写入/读取和CPU写入/读取的数据进行缓冲,所述缓冲区间包括用于数据读取/写入计数的指针管理器。

【技术特征摘要】
1.一种基于FPGA的多通道I2C控制器,其特征在于,包括CPU接口、缓冲区间、仲裁器和I2C控制器,所述缓冲区间包括发送缓冲区间和接收缓冲区间,所述仲裁器包括写状态机和读状态机,所述仲裁器用于对I2C控制器的请求信号进行仲裁,所述缓冲区间用于对I2C控制器写入/读取和CPU写入/读取的数据进行缓冲,所述缓冲区间包括用于数据读取/写入计数的指针管理器。2.根据权利要求I所述的基于FPGA的多通道I2C控制器,其特征在于,还包括CPU总线,外部CPU通过所述CPU总线访问所述多通道I2C控制器的控制寄存器和状态寄存器。3.根据权利要求2所述的基于FPGA的多通道I2C控制器,其特征在于,所述多通道I2C控制器具有共用的发送缓冲区间和接收缓冲区间,所述发送缓冲区间和接收缓冲区间由双端口随机存取器实现,依靠端口仲裁器实现所述多个I2C控制器读写缓冲区间并行操作,缓冲区间的指针由特定的模块进行管理。4.根据权利要求3所述的基于FPGA的多通道I2C控制器,其特征在于,所述指针管理器包括指针寄存器,在外部CPU读取缓冲区间数据时,所述指针寄存器减I,在外部CPU写入数据时,所述指针寄存器加I。5.根据权利要求4所述的基于FPGA的多通道I2C控制器,其特征在于,所述...

【专利技术属性】
技术研发人员:高胜刘增华
申请(专利权)人:深圳市邦彦信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1