CN111626010A - 一种硬件兼容通用型i2c控制器ip核设计的方法及装置 - Google Patents

一种硬件兼容通用型i2c控制器ip核设计的方法及装置 Download PDF

Info

Publication number
CN111626010A
CN111626010A CN202010332833.3A CN202010332833A CN111626010A CN 111626010 A CN111626010 A CN 111626010A CN 202010332833 A CN202010332833 A CN 202010332833A CN 111626010 A CN111626010 A CN 111626010A
Authority
CN
China
Prior art keywords
read
module
data
register
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010332833.3A
Other languages
English (en)
Other versions
CN111626010B (zh
Inventor
党舒平
黎成中
伍思进
谢国倩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangxi Huanan Communication Co ltd
Original Assignee
Guangxi Huanan Communication Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangxi Huanan Communication Co ltd filed Critical Guangxi Huanan Communication Co ltd
Priority to CN202010332833.3A priority Critical patent/CN111626010B/zh
Publication of CN111626010A publication Critical patent/CN111626010A/zh
Application granted granted Critical
Publication of CN111626010B publication Critical patent/CN111626010B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/08Intellectual property [IP] blocks or IP cores
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System (AREA)

Abstract

本发明涉及电子通讯控制领域,具体公开了一种硬件兼容通用型I2C控制器IP核设计的方法及装置,包括:自适应硬件设计模块:支持不同数目I2C从器件的热拔插和自动去抖技术;时钟模块:生成I2C模块基准时钟;多芯片兼容型I2C读写模块:生成相应位宽I2C从器件地址、寄存器地址、写数据和读数据的接口;可重构读写缓存模块:在命令与数据双缓存的同时,根据状态监测和顶层命令,进行动态的数据存取、命令发送和数据的重构读写操作;全局状态指示信号及状态寄存器模块:实时监控IP核的运行状态、定位程序停止的硬件和软件原因指示信号,本发明在FPGA上实现改进型的I2C IP核设计,明确I2C IP核总线状态指示、增强了I2C IP核的硬件兼容性和提高I2C IP核的可重构机制。

Description

一种硬件兼容通用型I2C控制器IP核设计的方法及装置
技术领域
本发明属于电子通讯控制领域,特别涉及一种硬件兼容通用型I2C控制器IP核设计的方法及装置。
背景技术
I2C总线是一种常用的串行控制及数据总线,由Philips半导体公司提出,广泛应用于各种可编程芯片的实时配置、传感器芯片的通信以及Flash芯片的读写等场合,成为当前的主流总线之一。I2C总线由时钟线SCL和数据线SDA构成,连接I2C主器件和I2C从器件,其中SCL为单向信号,SDA为双向信号。单个I2C主器件可挂载多个I2C从器件,并支持多种速度模式以及不同长度的寻址方式。在时序上,I2C总线由起始位(S)、终止位(P)、数据位(D)和确认位(ACK)非确认位(NACK)构成,其中S、P均由I2C主器件发起,D为双向信号,ACK为I2C从器件对于I2C主器件的确认,NACK为I2C主器件通知I2C从器件本次数据连续读结束。在对于I2C器件读写时,一般要先对芯片进行寻址,再对芯片内部的寄存器进行寻址。
由于支持I2C总线的器件种类和数量众多,器件内部的寄存器数量差异较大,因此具体的寄存器寻址方式不完全相同,例如Silicon Labs的SI5338B芯片和IDT的CPS1848的寄存器寻址位数相差24位,这就导致实际使用时I2C的程序无法完全具有通用性。且当前的大多数I2C IP核存在着总线状态指示不明、硬件兼容性不强以及可重构机制较差等现象。FPGA作为主流的复杂电子系统核心芯片之一,具有集成度高、灵活性强和开发周期短等特点,在主流FPGA上实现改进型的通用I2C总线IP核的设计,将会极大地缩减调试时间,增强整个模块的性能。本发明分为Xilinx FPGA和Altera FPGA两个版本的IP核,同时支持VHDL和Verilog两种语言。
发明内容
本发明的目的在于提供一种硬件兼容通用型I2C控制器IP核设计的方法及装置,其能够明确I2C IP核总线状态的指示、增强了I2C IP核的硬件兼容性和提高I2C IP核的可重构机制。
为实现上述目的,一种硬件兼容通用型I2C控制器IP核设计的方法,包括以下步骤:
S1、进行自适应硬件设计模块的设计:
S1.1、采集I2C主器件管脚的供电电压V参数、I2C从器件单个管脚的输入阻抗R参数、I2C从器件的个数N参数;
S1.2、根据所述S1.1采集的参数信息计算出I2C主器件的输出驱动电流I,
Figure BDA0002465580360000021
S1.2、根据所述I2C主器件的输出驱动电流I进行动态调节I2C主器件输出管脚的驱动能力;
S2、进行时钟模块的设计:
S2.1采集FPGA输入的基准时钟fIN、用户输入的目标I2C基准频率FBIAS和SCL频率fI2C
S2.2根据
Figure BDA0002465580360000031
且100KHz≤fI2C≤400KHz和步骤S2.1采集的参数信息计算出I2C模块的基准时钟fbias、FPGA的PLL核的倍频系数M、分频系数N1、分频模块的分频系数N2
S3、进行多芯片兼容型I2C读写模块的设计:
S3.1、根据fbias=3fI2C设置3个fbias时钟周期中第N个时钟周期SCL/SDA的高、低或高阻状态,其中0≤N≤2;
S3.2、定义SDA为双向信号,定义SDA的控制信号;
S3.3判断当前的I2C读写操作是否处于ACK位和读数字位,若是则将所述步骤S3.2中定义的SDA控制信号进行赋值,将其设置为高阻的状态进行释放总线,将SDA的控制交由I2C从器件处理;
S4、进行可重构读写缓存模块的设计:
S4.1、判断在当前I2C读写操作下,I2C从器件有无ACK,若有则执行当前指令集缓存中的指令,若无则根据SRS寄存器的状态计算出数据缓存中重构读写的起始地址,将当前的指令集缓存中的指令再次执行直至整个数据包成功写入/读出;
S4.2、判断指令集缓存中的指令是否执行完毕,若所述指令执行完毕则进行指令集缓存和数据缓存的清空,若所述指令未执行完毕则继续等待和判断;
S4.3、每次读操作完成后,设置读数据有效信号拉高1个fbias时钟周期,并将从I2C子器件中读出的数据发送至读数据端口;
S5、进行全局状态指示信号及状态寄存器模块的设计:
S5.1、对当前读写控制状态机的状态进行判断;
S5.2、根据S5.1的判断结果输出周期不定的有效指示信号:I2C总线忙、正在进行写操作、正在进行读操作、读操作完成、写操作完成和读数据;输出有效时间为1个时钟周期,与fbias同步的指示信号:对I2C从器件寻址无响应、对I2C从器件内部寄存器的寻址无响应、对I2C从器件内部寄存器写入数据时无响应。
优选的,上述技术方案中,还包括在FPGA内部实现I2C总线的外部的上拉/下拉电阻
优选的,上述技术方案中,所述S1中自适应硬件设计模块的设计还包括基于顶层方法的板级延时自动去抖技术,具体描述如下:
设置SCL和SDA的板级走线延时差值Tskew,设置走线长度匹配的FPGA内的时钟源fdeskew_IN,根据NIO_DELAY=Tskew/fdeskew_IN计算IO_DELAY子核的个数,根据级联调用IO_DELAY子核。
优选的,上述技术方案中,所述S5中全局状态指示信号及状态寄存器模块的设计还包括SRS寄存器的设置,具体描述如下:
SRS寄存器为只读寄存器,设置SRS寄存器通过SRS寄存器的地址、状态寄存器的输出数据接口、SRS寄存器输出数据的有效信号与外部相连,若发生I2C从器件无ACK时,根据对SRS寄存器的读操作,判断当前具体出错的步骤,确定出可重构读写的范围。
优选的,上述技术方案中,还包括采用RAM实现所述可重构读写缓存模块内部的指令集缓存和数据缓存。
与上述方法相对应的,本发明还公开一种硬件兼容通用型I2C控制器IP核设计的装置,包括:
第一模块:自适应硬件设计模块:用于采集I2C主器件管脚的供电电压V参数、I2C从器件单个管脚的输入阻抗R参数、I2C从器件的个数N参数,根据所述采集的参数信息计算出I2C主器件的输出驱动电流I,
Figure BDA0002465580360000051
根据所述驱动电流I进行动态调节I2C主器件输出管脚的驱动能力;
第二模块:时钟模块:用于采集FPGA输入的基准时钟fIN、用户输入的目标I2C基准频率FBIAS和SCL频率fI2C,根据
Figure BDA0002465580360000052
且100KHz≤fI2C≤400KHz,计算出I2C模块的基准时钟fbias、FPGA的PLL核的倍频系数M、分频系数N1、分频模块的分频系数N2
第三模块:多芯片兼容型I2C读写模块:用于根据fbias=3fI2C设置3个fbias时钟周期中第N个时钟周期SCL/SDA的高、低或高阻状态,其中0≤N≤2,定义SDA为双向信号,定义SDA的控制信号,判断当前的I2C读写操作是否处于ACK位和读数字位,若是则将所述定义的SDA控制信号进行赋值,将其设置为高阻的状态进行释放总线,将SDA的控制交由I2C从器件处理;
第四模块:可重构读写缓存模块:用于判断在当前I2C读写操作下,I2C从器件有无ACK,若有则执行当前指令集缓存中的指令,若无则根据SRS寄存器的状态计算出数据缓存中重构读写的起始地址,将当前的指令集缓存中的指令再次执行直至整个数据包成功写入/读出;对当前指令集缓存中的指令进行判断指令是否执行完毕,若执行完毕则进行指令集缓存和数据缓存的清空,若所述未执行完毕则继续等待和判断;每次读操作完成后,设置读数据有效信号拉高1个fbias时钟周期,并将从I2C子器件中读出的数据发送至读数据端口;
第五模块:全局状态指示信号及状态寄存器模块:用于对当前读写控制状态机的状态进行判断,根据判断结果输出周期不定的有效指示信号:I2C总线忙、正在进行写操作、正在进行读操作、读操作完成、写操作完成和读数据;输出有效时间为1个时钟周期,与fbias同步的指示信号:对I2C从器件寻址无响应、对I2C从器件内部寄存器的寻址无响应、对I2C从器件内部寄存器写入数据时无响应。
与现有的技术相比,本发明具有如下有益效果:
1.本发明中的一种硬件兼容通用型I2C控制器IP核设计的方法及装置,采用动态调整I2C主器件输出管脚的驱动能力,支持不同数目I2C从器件的热拔插,实现外围硬件电路的自适应设计;基于FPGA内已经存在的时钟,采用FPGA内的时钟周期为基准进行实时调整信号的延时,确保时序匹配,板级或板间延时的自动去抖技术。
2.本发明中在命令与数据双缓存的前提下,根据状态监测和顶层命令,进行动态的数据存取、命令发送和数据重读写,可实现可重构读写技术。
3.本发明的多芯片兼容型I2C读写模块可根据顶层IP核的设计,可生成不同位宽的I2C从器件地址接口、寄存器地址接口、写数据接口和读数据接口,同时可设置连续读写的个数,针对多种不同模式的I2C器件及其子寄存器,可进行兼容型读写。
4.本发明中在主流FPGA(Xilinx和Altera)上实现硬件兼容通用型I2C控制器IP核设计,将会极大地缩减调试时间,增强整个模块的性能。
附图说明
图1是本发明的方法流程图。
图2是本发明的总体结构图。
图3是本发明的自适应硬件设计模块和时钟模块结构图。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
该实施例公开了一种硬件兼容通用型I2C控制器IP核设计的方法,如图1所示,包括以下步骤:
步骤S1、进行自适应硬件设计模块的设计;
步骤S2、进行时钟模块的设计;
步骤S3、进行多芯片兼容型I2C读写模块的设计;
步骤S4、进行可重构读写缓存模块的设计;
步骤S5、进行全局状态指示信号及状态寄存器模块的设计。
上述所述步骤S1中自适应硬件设计模块的设计描述如下:
I2C总线均为开漏设计,总线空闲时保持常高,传统的设计中需上拉电阻。FPGA的IO支持可编程上拉/下拉电阻,自适应硬件设计模块将外部的上拉/下拉电阻移至FPGA内部实现,节省了硬件空间;I2C总线挂载的I2C从器件数目和板级或板间的SCL和SDA走线长度对I2C主器件驱动能力提出了要求,通过动态调整I2C主器件输出管脚的驱动能力,可支持不同数目I2C从器件的热拔插,并实现功耗的最小化,具体描述如下:
设置I2C主器件管脚的供电电压为V,I2C从器件单个管脚的输入阻抗为R,I2C从器件的个数为N,则I2C主器件的输出驱动电流需满足:
Figure BDA0002465580360000071
参见图3,在XilinxFPGA应用中,本发明先输入参数V、R、N计算出驱动电流的电流值,再通过脚本文件修改约束文件,基于ucf语法的语句对SCL和SDA管脚增加pullup属性、调整驱动能力;
在Altera FPGA中,本发明可在QSF文件中自动增加设定Weak pull-up resistor属性为True的编程语句,并在pin planner中根据设计实时调整输出电流上限;
针对板级或板间SCL和SDA走线长度不匹配的问题,本发明基于FPGA内已经存在的时钟,采用FPGA内的时钟周期为基准进行实时调整信号的延时,确保时序匹配,具体描述如下:
参见图3,首先输入SCL和SDA的板级或板间走线延时差值Tskew,指定走线长度匹配(deskew)的时钟源fdeskew_IN,在IO_DELAY子核的system verilog源程序中增加程序语句,自动计算所需IO_DELAY子核的个数:
NIO_DELAY=Tskew/fdeskew_IN (2)
进而通过级联调用IO_DELAY子核的方式,实现板级或板间延时的自动去抖技术。
上述所述步骤S2中时钟模块的设计描述如下:
复杂电子系统的输入基准时钟一般在几十MHz至百MHz,FPGA的PLL核的输出频率也有其下限,两者均大于I2C总线的速率,本发明采用PLL子核+分频模块的方式,根据FPGA输入的基准时钟和用户输入的目标I2C基准频率,计算PLL的输出时钟频率和分频模块的分频系数,配合达到指定的SCL频率fI2C,SCL是I2C总线的时钟信号,SCL频率是I2C总线的时钟频率,并对非法的指定速率给出错误信息;对于无法精确达到的频率给出警告,且分频模块通过输出负反馈的方式支持小数分频,设定FPGA输入基准时钟为fIN,用户输入的目标I2C基准频率为FBIAS,若PLL的倍频系数和分频系数分别为M和N1,其中M和N1为自然数,分频模块的分频系数为N2,由于I2C总线的起始/终止位要求SCL为高时SDA跳变,因此通过一个fbias=3fI2C的时钟来实现这种特性,设最终得到的I2C模块的基准时钟为fbias,并通过每3个fbias时钟周期完成1位I2C操作的方式来满足I2C总线时序,则
Figure BDA0002465580360000091
Figure BDA0002465580360000092
且100KHz≤fI2C≤400KHz;
参见图3,在Xilinx FPGA应用中,通过计算出M和N1,然后修改MMCM_ADV子核的MULT_F/DIVID_F/DUTY_CYCLE等参数,其中MULT_F=M,DIVID_F=N1,DUTY_CYCLE设定=50;
参见图3,在Altera FPGA应用中可通过修改io_pll子核的VCO频率和hi_div、lo_div等例化参数以合成所需的I2C模块基准时钟fbias
上述步骤S3中多芯片兼容型I2C读写模块的设计的描述如下:
为兼容不同器件的寻址和读写方式,本发明的多芯片兼容型I2C读写模块根据顶层IP核的设计,可生成不同位宽的I2C从器件地址接口、寄存器地址接口、写数据接口和读数据接口,同时可设置连续读写的个数,首先实现fbias=3fI2C,每一位I2C(包括S、P、D、ACK和NACK)均由3个fbias时钟周期实现,以fbias,N(SCL,SDA)=(X,Y)表示3个fbias时钟周期中第N个时钟周期SCL/SDA的状态,其中0≤N≤2,X/Y=0,1,Z分别表示SCL/SDA为高、低或高阻态;
起始位:fbias,0(SCL,SDA)=(1,1);
fbias,1(SCL,SDA)=(1,0);
fbias,2(SCL,SDA)=(0,0);
结束位:fbias,0(SCL,SDA)=(0,0);
fbias,1(SCL,SDA)=(1,0);
fbias,2(SCL,SDA)=(1,1);
ACK位:fbias,0(SCL,SDA)=(0,Z);
fbias,1(SCL,SDA)=(1,Z);
fbias,2(SCL,SDA)=(0,Z);
Z表示I2C主器件释放总线以等待I2C从器件响应;
写数据位:fbias,0(SCL,SDA)=(0,DATA_W);
fbias,1(SCL,SDA)=(1,DATA_W);
fbias,2(SCL,SDA)=(0,DATA_W);
DATA表示本次要写的1bit数据;
读数据位:fbias,0(SCL,SDA)=(0,DATA_R);
fbias,1(SCL,SDA)=(1,DATA_R);
fbias,2(SCL,SDA)=(0,DATA_R);
DATA表示本次从SDA总线上读回的1bit数据;
NACK位:fbias,0(SCL,SDA)=(0,0);
fbias,1(SCL,SDA)=(1,0);
fbias,2(SCL,SDA)=(0,0);
除上述对SCL和SDA的生成方式外,还需将SDA定义为双向inout信号,同时定义SDA_Control信号,当处于ACK和读数据位时,SDA_Control=‘0’表示I2C主器件通过将SDA赋值为高阻的方式释放总线,SDA的控制交由I2C从器件处理,具体对应的VHDL语句为:
SDA<='0'when(SDA_control='1'and SDA_out='0')else'Z';
对应的Verilog语句为:
SDA=(SDA_control='1'&&SDA_out='0')?1‘b1:1’bz。
上述所述步骤S4中可重构读写缓存模块的设计描述如下:
将计算机的运行理念应用于可编程芯片中,将地址和写数据/读结果分别作为指令集和数据,增加可重构读写信号,将指令集和数据写入开辟的缓存中,等待顶层模块确认数据写入或读出完成后,进行清除指令集和数据的缓存,否则根据可重构读写信号,从缓存中分别读取之前的命令和数据,重新发起读写请求,直至整个数据包成功写入/读出;参见图1,可重构读写缓存模块内部包含指令集缓存和数据缓存,分别由RAM实现,定义为CMD_RAM和DATA_RAM,CMD_RAM的大小由slave_addr和REG_addr决定,DATA_RAM的深度和宽度则由连续读写个数burst_cnt和I2C从器件内部寄存器的位宽REG_width决定;要写入I2C从器件的数据data_write由用户逻辑给定,当出现读写操作时I2C从器件无ACK时,若顶层设计使能重构读写,则本发明将根据SRS寄存器的状态,计算出DATA_RAM中重构读写的起始地址,将当前CMD_RAM中的指令再次执行,并根据指令完成的情况确定是否清空CMD_RAM或DATA_RAM,正常的读操作完成后,读数据有效data_valid信号会拉高1个fbias时钟周期,同时将从I2C子器件中读出的数据发送至读数据data_read端口。
上述所述步骤S5中全局状态指示信号及状态寄存器模块的设计描述如下:
以多种状态指示信号的方式,指示当前程序运行的阶段,以及停止时的原因,用于实时监控IP核的运行状态、定位程序停止的硬件和软件原因,指示信号包括总线忙、读/写进行中、读完成、新数据有效、写完成和无响应的具体状态,并支持接口信号指示和状态寄存器集(status register set,SRS)指示两种方法;
由于多芯片兼容型I2C读写模块是通过有限状态机进行读写的,因此可根据当前状态,分别输出以下指示信号:
I2C_bus_busy:总线忙;
writing:正在进行写操作;
reading:正在进行读操作;
上述信号的有效时钟周期不定;
write_finished:写操作完成;
read_finished:读操作完成;
new_data_flag:读数据有效;
上述信号有效时间为1个时钟周期,与fbias同步;
Slave_addr_nack:表示对I2C从器件寻址无响应;slave_reg_nack:表示对I2C从器件内部寄存器的寻址无响应;write_data_nack:表示对I2C从器件内部寄存器写入数据时无响应;上述信号有效时间为1个时钟周期,与fbias同步。
SRS寄存器为只读寄存器,通过srs_addr,srs_data和srs_data_valid信号与外部相连,其中srs_addr为SRS寄存器的地址,srs_data为状态寄存器的输出数据接口,srs_data_valid为SRS寄存器输出数据有效信号;当发生I2C从器件无ACK时,可通过对SRS寄存器的读,判断当前具体出错的步骤,进而确定可重构读写的范围。
read_en:读使能,每次I2C读操作时与命令同时置位,有效时间为1个时钟周期,与fbias同步;write_en:写使能,每次I2C写操作时与命令同时置位,有效时间为1个时钟周期,与fbias同步。
与上述方法实施例相对应的,本实施例还公开了一种硬件兼容通用型I2C控制器IP核设计的装置,包括下述第一至第五模块:
第一模块:自适应硬件设计模块:用于采集I2C主器件管脚的供电电压V参数、I2C从器件单个管脚的输入阻抗R参数、I2C从器件的个数N参数,根据所述采集的参数信息计算出I2C主器件的输出驱动电流I,
Figure BDA0002465580360000131
根据所述驱动电流I进行动态调节I2C主器件输出管脚的驱动能力;
第二模块:时钟模块:用于采集FPGA输入的基准时钟fIN、用户输入的目标I2C基准频率FBIAS和SCL频率fI2C,根据
Figure BDA0002465580360000132
且100KHz≤fI2C≤400KHz,计算出I2C模块的基准时钟fbias、FPGA的PLL核的倍频系数M、分频系数N1、分频模块的分频系数N2
第三模块:多芯片兼容型I2C读写模块:用于根据fbias=3fI2C设置3个fbias时钟周期中第N个时钟周期SCL/SDA的高、低或高阻状态,其中0≤N≤2,定义SDA为双向信号,定义SDA的控制信号,判断当前的I2C读写操作是否处于ACK位和读数字位,若是则将所述定义的SDA控制信号进行赋值,将其设置为高阻的状态进行释放总线,将SDA的控制交由I2C从器件处理;
第四模块:可重构读写缓存模块:用于判断在当前I2C读写操作下,I2C从器件有无ACK,若有则执行当前指令集缓存中的指令,若无则根据SRS寄存器的状态计算出数据缓存中重构读写的起始地址,将当前的指令集缓存中的指令再次执行直至整个数据包成功写入/读出;对当前指令集缓存中的指令进行判断指令是否执行完毕,若执行完毕则进行指令集缓存和数据缓存的清空,若所述未执行完毕则继续等待和判断;每次读操作完成后,设置读数据有效信号拉高1个fbias时钟周期,并将从I2C子器件中读出的数据发送至读数据端口;
第五模块:全局状态指示信号及状态寄存器模块:用于对当前读写控制状态机的状态进行判断,根据判断结果输出周期不定的有效指示信号:I2C总线忙、正在进行写操作、正在进行读操作、读操作完成、写操作完成和读数据;输出有效时间为1个时钟周期,与fbias同步的指示信号:对I2C从器件寻址无响应、对I2C从器件内部寄存器的寻址无响应、对I2C从器件内部寄存器写入数据时无响应。
参见图2,图2是本发明的整体结构图,其中自适应硬件设计模块直接作用于FPGA上的SCL和SDA硬件管脚,与其它模块相对独立;时钟模块生成的fbias用于驱动后续的多芯片兼容型I2C读写模块;可重构读写缓存模块由命令缓存和数据缓存组成,两者均由RAM实现;多芯片兼容型I2C读写模块中的状态机和控制逻辑用于实现可重构读写控制和多芯片兼容型I2C读写控制;多芯片兼容型I2C读写模块的SCL和SDA信号连接至所I2C从器件;用户逻辑连接多芯片兼容型I2C读写模块的其余信号。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。

Claims (10)

1.一种硬件兼容通用型I2C控制器IP核设计的方法,其特征在于,包括:
S1、进行自适应硬件设计模块的设计:
S1.1、采集I2C主器件管脚的供电电压V参数、I2C从器件单个管脚的输入阻抗R参数、I2C从器件的个数N参数;
S1.2、根据所述S1.1采集的参数信息计算出I2C主器件的输出驱动电流I,
Figure FDA0002465580350000011
S1.2、根据所述I2C主器件的输出驱动电流I进行动态调节I2C主器件输出管脚的驱动能力;
S2、进行时钟模块的设计:
S2.1采集FPGA输入的基准时钟fIN、用户输入的目标I2C基准频率FBIAS和SCL频率fI2C
S2.2根据
Figure FDA0002465580350000012
且100KHz≤fI2C≤400KHz和步骤S2.1采集的参数信息计算出I2C模块的基准时钟fbias、FPGA的PLL核的倍频系数M、分频系数N1、分频模块的分频系数N2
S3、进行多芯片兼容型I2C读写模块的设计:
S3.1、根据fbias=3fI2C设置3个fbias时钟周期中第N个时钟周期SCL/SDA的高、低或高阻状态,其中0≤N≤2;
S3.2、定义SDA为双向信号,定义SDA的控制信号;
S3.3判断当前的I2C读写操作是否处于ACK位和读数字位,若是则将所述步骤S3.2中定义的SDA控制信号进行赋值,将其设置为高阻的状态进行释放总线,将SDA的控制交由I2C从器件处理;
S4、进行可重构读写缓存模块的设计:
S4.1、判断在当前I2C读写操作下,I2C从器件有无ACK,若有则执行当前指令集缓存中的指令,若无则根据SRS寄存器的状态计算出数据缓存中重构读写的起始地址,将当前的指令集缓存中的指令再次执行直至整个数据包成功写入/读出;
S4.2、判断指令集缓存中的指令是否执行完毕,若所述指令执行完毕则进行指令集缓存和数据缓存的清空,若所述指令未执行完毕则继续等待和判断;
S4.3、每次读操作完成后,设置读数据有效信号拉高1个fbias时钟周期,并将从I2C子器件中读出的数据发送至读数据端口;
S5、进行全局状态指示信号及状态寄存器模块的设计:
S5.1、对当前读写控制状态机的状态进行判断;
S5.2、根据S5.1的判断结果输出周期不定的有效指示信号:I2C总线忙、正在进行写操作、正在进行读操作、读操作完成、写操作完成和读数据;输出有效时间为1个时钟周期,与fbias同步的指示信号:对I2C从器件寻址无响应、对I2C从器件内部寄存器的寻址无响应、对I2C从器件内部寄存器写入数据时无响应。
2.根据权利要求1所述的一种硬件兼容通用型I2C控制器IP核设计的方法,其特征在于,还包括在FPGA内部实现I2C总线的外部的上拉/下拉电阻。
3.根据权利要求1所述的一种硬件兼容通用型I2C控制器IP核设计的方法,其特征在于,所述S1中自适应硬件设计模块的设计还包括基于顶层方法的板级延时自动去抖技术,具体描述如下:
设置SCL和SDA的板级走线延时差值Tskew,设置走线长度匹配的FPGA内的时钟源fdeskew_IN,根据NIO_DELAY=Tskew/fdeskew_IN计算IO_DELAY子核的个数,根据级联调用IO_DELAY子核。
4.根据权利要求1所述的一种硬件兼容通用型I2C控制器IP核设计的方法,其特征在于,所述S5中全局状态指示信号及状态寄存器模块的设计还包括SRS寄存器的设置,具体描述如下:
SRS寄存器为只读寄存器,设置SRS寄存器通过SRS寄存器的地址、状态寄存器的输出数据接口、SRS寄存器输出数据的有效信号与外部相连,若发生I2C从器件无ACK时,根据对SRS寄存器的读操作,判断当前具体出错的步骤,确定出可重构读写的范围。
5.根据权利要求1所述的一种硬件兼容通用型I2C控制器IP核设计的方法,其特征在于,还包括采用RAM实现所述可重构读写缓存模块内部的指令集缓存和数据缓存。
6.一种硬件兼容通用型I2C控制器IP核设计的装置,其特征在于,包括:
第一模块:自适应硬件设计模块:用于采集I2C主器件管脚的供电电压V参数、I2C从器件单个管脚的输入阻抗R参数、I2C从器件的个数N参数,根据所述采集的参数信息计算出I2C主器件的输出驱动电流I,
Figure FDA0002465580350000031
根据所述驱动电流I进行动态调节I2C主器件输出管脚的驱动能力;
第二模块:时钟模块:用于采集FPGA输入的基准时钟fIN、用户输入的目标I2C基准频率FBIAS和SCL频率fI2C,根据
Figure FDA0002465580350000032
且100KHz≤fI2C≤400KHz,计算出I2C模块的基准时钟fbias、FPGA的PLL核的倍频系数M、分频系数N1、分频模块的分频系数N2
第三模块:多芯片兼容型I2C读写模块:用于根据fbias=3fI2C设置3个fbias时钟周期中第N个时钟周期SCL/SDA的高、低或高阻状态,其中0≤N≤2,定义SDA为双向信号,定义SDA的控制信号,判断当前的I2C读写操作是否处于ACK位和读数字位,若是则将所述定义的SDA控制信号进行赋值,将其设置为高阻的状态进行释放总线,将SDA的控制交由I2C从器件处理;
第四模块:可重构读写缓存模块:用于判断在当前I2C读写操作下,I2C从器件有无ACK,若有则执行当前指令集缓存中的指令,若无则根据SRS寄存器的状态计算出数据缓存中重构读写的起始地址,将当前的指令集缓存中的指令再次执行直至整个数据包成功写入/读出;对当前指令集缓存中的指令进行判断指令是否执行完毕,若执行完毕则进行指令集缓存和数据缓存的清空,若所述未执行完毕则继续等待和判断;每次读操作完成后,设置读数据有效信号拉高1个fbias时钟周期,并将从I2C子器件中读出的数据发送至读数据端口;
第五模块:全局状态指示信号及状态寄存器模块:用于对当前读写控制状态机的状态进行判断,根据判断结果输出周期不定的有效指示信号:I2C总线忙、正在进行写操作、正在进行读操作、读操作完成、写操作完成和读数据;输出有效时间为1个时钟周期,与fbias同步的指示信号:对I2C从器件寻址无响应、对I2C从器件内部寄存器的寻址无响应、对I2C从器件内部寄存器写入数据时无响应。
7.根据权利要求6所述的一种硬件兼容通用型I2C控制器IP核设计的装置,其特征在于,还包括在FPGA内部实现I2C总线的外部的上拉/下拉电阻。
8.根据权利要求6所述的一种硬件兼容通用型I2C控制器IP核设计的装置,其特征在于,所述第一模块中自适应硬件设计模块的设计还包括基于顶层方法的板级延时自动去抖技术,具体描述如下:
设置SCL和SDA的板级走线延时差值Tskew,设置走线长度匹配的FPGA内的时钟源fdeskew_IN,根据NIO_DELAY=Tskew/fdeskew_IN计算IO_DELAY子核的个数,根据级联调用IO_DELAY子核。
9.根据权利要求6所述的一种硬件兼容通用型I2C控制器IP核设计的装置,其特征在于,所述第五模块中全局状态指示信号及状态寄存器模块的设计还包括SRS寄存器的设置,具体描述如下:
SRS寄存器为只读寄存器,设置SRS寄存器通过SRS寄存器的地址、状态寄存器的输出数据接口、SRS寄存器输出数据的有效信号与外部相连,若发生I2C从器件无ACK时,根据对SRS寄存器的读操作,判断当前具体出错的步骤,确定出可重构读写的范围。
10.根据权利要求6所述的一种硬件兼容通用型I2C控制器IP核设计的装置,其特征在于,还包括采用RAM实现所述可重构读写缓存模块内部的指令集缓存和数据缓存。
CN202010332833.3A 2020-04-24 2020-04-24 一种硬件兼容通用型i2c控制器ip核设计的方法及装置 Active CN111626010B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010332833.3A CN111626010B (zh) 2020-04-24 2020-04-24 一种硬件兼容通用型i2c控制器ip核设计的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010332833.3A CN111626010B (zh) 2020-04-24 2020-04-24 一种硬件兼容通用型i2c控制器ip核设计的方法及装置

Publications (2)

Publication Number Publication Date
CN111626010A true CN111626010A (zh) 2020-09-04
CN111626010B CN111626010B (zh) 2022-08-23

Family

ID=72271795

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010332833.3A Active CN111626010B (zh) 2020-04-24 2020-04-24 一种硬件兼容通用型i2c控制器ip核设计的方法及装置

Country Status (1)

Country Link
CN (1) CN111626010B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112328528A (zh) * 2020-11-19 2021-02-05 深圳宝新创科技股份有限公司 一种基于飞腾处理器的时钟芯片兼容方法、装置和设备
CN112463662A (zh) * 2020-12-16 2021-03-09 福州创实讯联信息技术有限公司 一种用户态控制i2c设备的方法与终端
CN112527350A (zh) * 2020-12-08 2021-03-19 中国科学院国家空间科学中心 一种星载sram型fpga配置与刷新控制的ip核
CN117033293A (zh) * 2023-10-09 2023-11-10 井芯微电子技术(天津)有限公司 一种主模式i2c/smbus控制器及其控制方法
CN117648084A (zh) * 2024-01-29 2024-03-05 井芯微电子技术(天津)有限公司 一种实现i2c底层驱动的方法、装置及可读介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7281082B1 (en) * 2004-03-26 2007-10-09 Xilinx, Inc. Flexible scheme for configuring programmable semiconductor devices using or loading programs from SPI-based serial flash memories that support multiple SPI flash vendors and device families
CN101324875A (zh) * 2007-06-11 2008-12-17 大唐移动通信设备有限公司 一种扩展i2c总线的方法及i2c总线扩展装置
US20170115987A1 (en) * 2014-03-24 2017-04-27 Inesc Tec - Instituto De Engenharia De Sistemas E Computadores, Tecnologia E Ciência Control module for multiple mixed-signal resources management
CN109391511A (zh) * 2018-09-10 2019-02-26 广西华南通信股份有限公司 一种基于可拓展训练网络的智能通信资源分配策略

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7281082B1 (en) * 2004-03-26 2007-10-09 Xilinx, Inc. Flexible scheme for configuring programmable semiconductor devices using or loading programs from SPI-based serial flash memories that support multiple SPI flash vendors and device families
CN101324875A (zh) * 2007-06-11 2008-12-17 大唐移动通信设备有限公司 一种扩展i2c总线的方法及i2c总线扩展装置
US20170115987A1 (en) * 2014-03-24 2017-04-27 Inesc Tec - Instituto De Engenharia De Sistemas E Computadores, Tecnologia E Ciência Control module for multiple mixed-signal resources management
CN109391511A (zh) * 2018-09-10 2019-02-26 广西华南通信股份有限公司 一种基于可拓展训练网络的智能通信资源分配策略

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
RAMESH BABU DASARA 等: "DESIGN OF WISHBONE INTERFACED I2CMASTER CORE CONTROLLER USING VERILOG", 《INTERNATIONAL JOURNAL SCIENCE TECHNOLOGY AND MANAGEMENT》 *
程良奇 等: "一种通用存储器控制器IP核的设计与实现", 《第十三届全国信息存储技术学术会议论文集》 *
马宏锋 等: "基于SoPC的通用TFT-LCD控制器IP核设计", 《现代电子技术》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112328528A (zh) * 2020-11-19 2021-02-05 深圳宝新创科技股份有限公司 一种基于飞腾处理器的时钟芯片兼容方法、装置和设备
CN112527350A (zh) * 2020-12-08 2021-03-19 中国科学院国家空间科学中心 一种星载sram型fpga配置与刷新控制的ip核
CN112527350B (zh) * 2020-12-08 2024-04-26 中国科学院国家空间科学中心 一种星载sram型fpga配置与刷新控制的ip核
CN112463662A (zh) * 2020-12-16 2021-03-09 福州创实讯联信息技术有限公司 一种用户态控制i2c设备的方法与终端
CN112463662B (zh) * 2020-12-16 2024-04-05 福州创实讯联信息技术有限公司 一种用户态控制i2c设备的方法与终端
CN117033293A (zh) * 2023-10-09 2023-11-10 井芯微电子技术(天津)有限公司 一种主模式i2c/smbus控制器及其控制方法
CN117033293B (zh) * 2023-10-09 2023-12-08 井芯微电子技术(天津)有限公司 一种主模式i2c/smbus控制器及其控制方法
CN117648084A (zh) * 2024-01-29 2024-03-05 井芯微电子技术(天津)有限公司 一种实现i2c底层驱动的方法、装置及可读介质
CN117648084B (zh) * 2024-01-29 2024-04-30 井芯微电子技术(天津)有限公司 一种实现i2c底层驱动的方法、装置及可读介质

Also Published As

Publication number Publication date
CN111626010B (zh) 2022-08-23

Similar Documents

Publication Publication Date Title
CN111626010B (zh) 一种硬件兼容通用型i2c控制器ip核设计的方法及装置
US11238003B2 (en) Interface clock management
EP0411806A2 (en) Computer system with modular upgrade capability
WO2023284169A1 (zh) 从axi总线到opb总线的数据写入方法及读取方法
EP2075703A1 (en) Memory control circuit, method, and integrated circuit
US20120150474A1 (en) Debug state machine cross triggering
US8902683B2 (en) Memory access alignment in a double data rate (‘DDR’) system
US7461187B2 (en) Bus system and data transfer method
US8339869B2 (en) Semiconductor device and data processor
US6792527B1 (en) Method to provide hierarchical reset capabilities for a configurable system on a chip
US20080100335A1 (en) Apparatus and method for determining on die termination modes in memory device
JP3510618B2 (ja) バスブリッジ回路及びそのアクセス制御方法
CN1933015A (zh) 半导体集成电路器件
US5590316A (en) Clock doubler and smooth transfer circuit
EP0492913A2 (en) Signal conditioning logic
JPH11167515A (ja) データ伝送装置及びデータ伝送方法
US5754825A (en) Lower address line prediction and substitution
EP0426156B1 (en) Floppy disk controller with DMA verify operations
TWI734150B (zh) 記憶體介面電路、記憶體儲存裝置及訊號產生方法
JP6160273B2 (ja) 半導体回路装置、及び、電子装置
JPH06196997A (ja) データ出力装置とその方法および記憶装置
CN201383142Y (zh) 嵌入式机器视觉控制器
US20230195661A1 (en) Method for data communication between subregions of an fpga
CN215416630U (zh) 一种实现mipi读写的系统
JP2006164119A (ja) データ処理装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant