设计应用

基于组件复用的可重构I²C总线读写控制电路设计

作者:徐波,杜晓实,朱力可,王萍
发布日期:2025-07-24
来源:电子技术应用

引言

随着现代软件无线电架构不断朝着综合化、微型化和智能化的方向发展,如何平衡SWaP(Size,Weight and Power)三者之间的关系以及应对各类复杂战场应用环境给系统设计者带来极大的挑战。为了满足软件实时性处理的要求,软件无线电系统通常在高速采样数据流与软件处理之间利用FPGA先进行预处理,把高速数据流降低到软件处理能够适应的速度之内[1]。但是由于历史等诸多原因,当前多数项目的FPGA设计中继承代码较多,暴露出逻辑代码可移植性差、平台依赖性强、代码对开发人员的依赖度高、程序扩展性弱、灵活性低、系统集成与整合难度大等问题。因此,如何增强设计的可重用性和扩展性,成为当前系统设计中一个常见但却很容易忽视的问题。

逻辑设计的特点介于软件设计和硬件设计之间,即利用软件方法设计硬件电路。软件工程体系结构设计中通常采用模块化的开发方式,遵循“高内聚、低耦合”的原则[2]。“内聚”即表示模块内部之间的紧密度,“高内聚”是指一个模块的功能明确、独立,模块内部各元素功能联系紧密,“高内聚”设计的优点是功能明确,一个模块只负责一个功能,可维护性强,模块内部功能相关性高,修改功能后不会影响其他功能。“耦合”即表示功能模块之间关联度和依赖度,“低耦合”是指尽量减少各功能模块之间依赖度,“低耦合”设计的优点是,由于模块间的依赖度降低,系统的可重用性和扩展性相应提高,同时模块功能发生改变时不会影响其他模块功能。“高内聚、低耦合”的设计原则大大降低了功能修改的影响,提高了系统重用性。

芯片和FPGA设计中也大量借用了软件工程中“高内聚、低耦合”的设计思想,在专用芯片(ASIC)和片上系统(SoC)的设计中,将特定功能的模块以IP核的方式进行定制设计,最后根据需求将各功能IP核整合集成在通用总线上;在FPGA设计中,器件厂商或IP供应商也提供了大量的IP软/硬核用于系统的集成开发。

通用的低速通信IP核包括SPI、UART、CAN、GPIO和I²C等, I²C总线协议是一种用于芯片间相互通信的串行传输总线协议,它由串行时钟SCL和串行数据线SDA完成全双工数据传送。由于I²C总线具有连线少、协议简单、允许多机控制和同步、可扩展性强的优点,因此被广泛应用于电子装备中。

随着工艺的不断进步,I²C总线协议版本也不断演进,因而导致各家芯片支持的波特率等规格差异很大。对ADI、Linear、TI和3PEAK公司的几款常用芯片进行了对比,如表1所示。如Linear公司的LTC2991只支持两种模式:标准模式和快速模式[4];即使是相同厂商的不同系列芯片,支持的波特率模式也有差别,比如ADI公司的ADT75芯片支持两种模式:标准模式和快速模式[5],但AD7994支持三种波特率模式:标准模式、快速模式和高速模式[6]。

表1 各厂商器件I²C接口速率

无标题.png

其次,由于各家芯片的应用场景和功能不同,导致芯片内部支持的寄存器读写属性、数据位宽差异也较大。有的芯片内部寄存器支持单字节读写操作,有的支持多字节读写操作,有的支持单字节写入,多字节读出操作等,在单字节和多字节的读写操作方式上也有差异,在发生芯片厂商更换等场景时,则需要重新定制设计,导致代码通用化程度低。同时,近年国内外对基于I²C协议的总线控制器均有大量研究应用,总体来说有采用嵌入式处理器的软件应用方式、或者通过纯硬件以及FPGA等方式等。文献[3]给出了基于嵌入式处理器并利用普通I/O管脚模拟出I²C串口的方案;李雨桐等[10]给出了基于ADS1115的FPGA接口设计,由此证明了利用有限状态机并结合ADS1115的I²C接口时序的方案可行性,但是该方案将状态控制和接口时序控制共同设计,代码耦合度高,不利于代码的可重用。

为解决上述问题,本文讨论并借鉴上述模块化设计方法,提出一种总线控制的优化策略,即基于组件复用方法设计了一种可重构的I²C总线读写控制电路。以此为基础,讨论并提供AD7994、TPAFEA008和LTC2991芯片的总线控制接口设计实例与FPGA上的验证结果。


本文详细内容请下载:

https://www.chinaaet.com/resource/share/2000006601


作者信息:

徐波,杜晓实,朱力可,王萍

(中国西南电子技术研究所,四川 成都 610036)


Magazine.Subscription.jpg

此内容为AET网站原创,未经授权禁止转载。
可重构组件复用 IC总线读写控制 FPGA设计 软件无线电 国产化器件