本发明属于电通信技术领域,更具体地涉及一种通过I2C接口读写内部寄存器堆的装置及方法。
背景技术:
MIPI接口是一种新兴的高速接口,具有低功耗、高传输速率等特点,在移动设备中有着广泛的应用。MPHY IP是MIPI设计中最关键的部分,MPHY由于可以灵活的配置多种可选模式和属性,因而相比其他串行PHY具有显著的优势。这一灵活性是通过MPHY的配置区域来实现的,MPHY的配置区域由寄存器堆构成,其中的每个寄存器都具有特定的ID号。增强配置区域的可测试性和可观测性对MPHY的设计和验证至关重要。
然而,在芯片设计过程中,面积、功耗、外部接口的数量等制约因素,一定程度上限制了可测试方案。I2C接口作为各种总线中使用信号线最少的总线,仅通过SCL和SDA两根线就可以实现数据的传输,因此,I2C接口成为了常用的解决方案。在芯片设计当中,出于测试用途考虑,常常在芯片的设计中加入I2C从机,将需要观测的片内信号寄存在I2C寄存器中,通过片外I2C主机对片内I2C从机发起读请求的方式来观测片内信号,同样的,也可以将需要强制改写的片内信号的改写值和改写使能寄存在I2C寄存器中,通过片外I2C主机对片内I2C从机发起写请求的方式来强制改写片内信号。而对于内部寄存器堆而言,由于寄存器数目众多,将每个寄存器中存储的数值分别寄存到I2C寄存器中来实现可测试和可观测的方式,会消耗大量的I2C寄存器资源,进而影响功耗、面积等性能指标。因此,如何在不额外增加外部接口开销和内部存储资源消耗的前提下,实现对芯片内部寄存器堆的读写,对可测试性设计有着重要意义。
技术实现要素:
基于以上问题,本发明的主要目的在于提出一种通过I2C接口读写内部寄存器堆的装置及方法,用于解决上述技术问题中的至少之一。
为了实现上述目的,作为本发明的一个方面,本发明提出了一种通过I2C接口读写内部寄存器堆的装置,包括I2C主机、I2C从机、读写使能控制单元和读写操作单元,其中:
I2C主机用于向I2C从机和读写使能控制模块发送信号,并读取I2C从机中的数据;
I2C从机,包括第一I2C读写寄存器、第二I2C读写寄存器和I2C只读寄存器,用于分别接收I2C主机的发送信号并分别存储I2C主机读写的写ID和写数据、读ID及读数据;
读写操作单元用于对内部寄存器堆进行读写操作;
读写使能控制单元用于根据I2C主机的发送信号产生读或写使能信号并置1来控制读写操作单元,当写使能信号为1时,读写操作单元根据写ID和写数据进行写操作;当读使能信号为1时,读写操作单元根据读ID进行读操作,并将读取的读数据反馈至I2C只读寄存器。
进一步地,上述读写操作单元还用于在完成写操作或读操作后产生写完成信号或读完成信号并置1反馈至读写使能控制单元,写完成信号和读完成信号在保持一个周期后置0。
进一步地,上述读写使能控制单元包括一传送过程判断模块、一从机地址及传送方向判断模块、一写使能产生模块和一读使能产生模块。
进一步地,上述I2C主机向读写使能控制单元发送的信号为SCL和SDA线上状态的变化,传送过程判断模块根据此信号来判断I2C主机是否进行I2C操作并在检测到I2C起始信号后,产生传送过程指示信号并置1;在检测到I2C终止信号后,将传送过程指示信号置0。
进一步地,上述从机地址及传送方向判断模块在传送过程指示信号为1时,判断操作为写操作或者读操作,并在进行写操作时,产生预写使能信号并置1;在进行读操作时,产生预读使能信号并置1。
进一步地,上述从机地址及传送方向判断模块还用于接收写完成信号或读使能信号并将预写使能信号或预读使能信号置0。
进一步地,上述写使能产生模块,用于在预写使能信号为1且传送过程指示信号为0时,产生写使能信号并置1传输至读写操作单元,还用于接收写完成信号并将所述写使能信号置0;
进一步地,上述读使能产生模块,用于在预读使能信号为1且传送过程指示信号为0时,产生读使能信号并置1传输至读写操作单元,还用于接收读完成信号并将读使能信号置0。
进一步地,上述读写操作单元包括一写操作模块和一读操作模块。
进一步地,上述写操作模块接收写ID、写数据和写使能信号,并在写使能信号为1时对内部寄存器堆中相应的寄存器进行改写操作,并在完成改写操作后产生写完成信号并置1反馈至从机地址及传送方向判断模块和写使能产生模块。
进一步地,上述读操作模块接收读ID并在读使能信号为1时,对内部寄存器堆中相应的寄存器进行读取操作,并在完成读取操作后产生读完成信号并置1反馈至从机地址及传送方向判断模块和读使能产生模块,同时将读取的读数据发送至I2C只读寄存器存储。
为了实现上述目的,作为本发明的另一个方面,本发明提出一种通过I2C接口改写内部寄存器堆的方法,该方法通过如下装置实现,该装置包括I2C主机、I2C从机、读写使能控制单元和读写操作单元;该方法包括以下步骤:
步骤11、I2C主机向读写使能控制单元发送I2C操作开始信号及数据改写信号,并向I2C从机发送进行数据改写的写ID和写数据;
步骤12、读写使能控制单元根据I2C操作开始信号及数据改写信号,产生预写使能信号并置1;
步骤13、I2C主机向所述读写使能控制单元发送I2C操作停止信号;
步骤14、读写使能控制单元根据I2C操作停止信号及为1的预写使能信号,产生写使能信号并置1;
步骤15、读写操作单元根据写ID及写数据,接收为1的写使能信号,对内部寄存器堆进行改写操作,在完成改写操作后产生写完成信号并置1反馈给读写使能控制单元;
步骤16、读写使能控制单元接收为1的写完成信号将预写使能信号和写使能信号置0,完成对内部寄存器堆的改写。
本发明另一方面还提出一种通过I2C接口读取内部寄存器堆的方法,该方法通过如下装置实现,该装置包括I2C主机、读写使能控制单元和读写操作单元;该方法包括以下步骤:
步骤21、I2C主机向读写使能控制单元发送I2C操作开始信号及数据读取信号,并向I2C从机发送进行数据读取的读ID;
步骤22、读写使能控制单元根据I2C操作开始信号及数据读取信号,产生预读使能信号并置1;
步骤23、I2C主机向读写使能控制单元传输I2C操作停止信号;
步骤24、读写使能控制单元根据I2C操作停止信号及为1的预读使能信号,产生读使能信号并置1;
步骤25、读写操作单元根据读ID,接收为1的读使能信号,对内部寄存器堆进行读取操作,在完成读取操作后产生读完成信号并置1反馈给读写使能控制单元,并将读取的读数据传输至I2C从机;
步骤26、读写使能控制单元接收为1的读完成信号将预读使能信号和读使能信号置0;
步骤27、I2C主机向I2C从机发送信号,读取读数据,完成对内部寄存器堆的读取。
基于上述方案可知,本发明提供的通过I2C接口读写内部寄存器堆的装置及方法,只需两个I2C读写寄存器和一个I2C只读寄存器,I2C从机不需与内部寄存器堆的寄存器一一对应,通过读写使能控制模块和读写操作模块进行读写操作,则在不额外增加外部接口开销和内部存储资源消耗的前提下,可以有效地实现对内部寄存器堆的读写,进而有效地增加了内部寄存器堆的可测试性和可观测性。
附图说明
图1是本发明一实施例示出的通过I2C接口读写内部寄存器堆的装置结构示意图;
图2是本发明一实施例示出的读写使能控制模块的结构示意图;
图3是本发明一实施例示出的读写操作模块的结构示意图;
图4是本发明一实施例示出的通过I2C接口改写指定内部寄存器的信号关系图;
图5是本发明另一实施例示出的通过I2C接口读取指定内部寄存器的信号关系图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。
本发明一方面公开了一种通过I2C接口读写内部寄存器堆的装置,包括I2C主机、I2C从机、读写使能控制单元和读写操作单元,其中:
I2C主机用于向I2C从机和读写使能控制模块发送信号,并读取I2C从机中的数据;
I2C从机,主要包括第一I2C读写寄存器、第二I2C读写寄存器和I2C只读寄存器,用于分别接收I2C主机的发送信号并分别存储I2C主机读写的写ID和写数据、读ID及读数据;其中作为优选,该I2C从机主要由第一I2C读写寄存器、第二I2C读写寄存器和I2C只读寄存器组成,仅通过这三个寄存器即可实现对内部寄存器堆中的若干个寄存器进行读写操作。
读写操作单元用于对内部寄存器堆进行读写操作;
读写使能控制单元用于根据I2C主机的发送信号产生读或写使能信号并置1来控制读写操作单元,当写使能信号为1时,读写操作单元根据写ID和写数据进行写操作;当读使能信号为1时,读写操作单元根据读ID进行读操作,并将读取的读数据反馈至I2C只读寄存器。
其中,上述读写操作单元还用于在完成写操作或读操作后产生写完成信号或读完成信号并置1反馈至读写使能控制单元,写完成信号和读完成信号在保持一个周期后置0。
优选地,上述读写使能控制单元包括一传送过程判断模块、一从机地址及传送方向判断模块、一写使能产生模块和一读使能产生模块。I2C主机向读写使能控制单元发送的信号为SCL和SDA线上状态的变化,
传送过程判断模块根据此信号来判断I2C主机是否进行I2C操作并在检测到I2C起始信号后,产生传送过程指示信号并置1;在检测到I2C终止信号后,将传送过程指示信号置0。
从机地址及传送方向判断模块在传送过程指示信号为1时,判断操作为写操作或者读操作,并在进行写操作时,产生预写使能信号并置1;在进行读操作时,产生预读使能信号并置1;优选地,从机地址及传送方向判断模块还用于接收写完成信号或读使能信号并将预写使能信号或预读使能信号置0。
写使能产生模块,用于在预写使能信号为1且传送过程指示信号为0时,产生写使能信号并置1传输至读写操作单元,还用于接收写完成信号并将所述写使能信号置0;
读使能产生模块,用于在预读使能信号为1且传送过程指示信号为0时,产生读使能信号并置1传输至读写操作单元,还用于接收读完成信号并将读使能信号置0。
优选地,上述读写操作单元包括一写操作模块和一读操作模块。
写操作模块接收写ID、写数据和写使能信号,并在写使能信号为1时对内部寄存器堆中相应的寄存器进行改写操作,并在完成改写操作后产生写完成信号并置1反馈至从机地址及传送方向判断模块和写使能产生模块。
读操作模块接收读ID并在读使能信号为1时,对内部寄存器堆中相应的寄存器进行读取操作,并在完成读取操作后产生读完成信号并置1反馈至从机地址及传送方向判断模块和读使能产生模块,同时将读取的读数据发送至I2C只读寄存器存储。
本发明另一方面公开了一种通过I2C接口改写内部寄存器堆的方法,该方法通过如下装置实现,该装置包括I2C主机、I2C从机、读写使能控制单元和读写操作单元;该方法包括以下步骤:
步骤11、I2C主机向读写使能控制单元发送I2C操作开始信号及数据改写信号,并向I2C从机发送进行数据改写的写ID和写数据;
步骤12、读写使能控制单元根据I2C操作开始信号及数据改写信号,产生预写使能信号并置1;
步骤13、I2C主机向所述读写使能控制单元发送I2C操作停止信号;
步骤14、读写使能控制单元根据I2C操作停止信号及为1的预写使能信号,产生写使能信号并置1;
步骤15、读写操作单元根据写ID及写数据,接收为1的写使能信号,对内部寄存器堆进行改写操作,在完成改写操作后产生写完成信号并置1反馈给读写使能控制单元;
步骤16、读写使能控制单元接收为1的写完成信号将预写使能信号和写使能信号置0,完成对内部寄存器堆的改写。
本发明还公开了一种通过I2C接口读取内部寄存器堆的方法,该方法通过如下装置实现,该装置包括I2C主机、读写使能控制单元和读写操作单元;该方法包括以下步骤:
步骤21、I2C主机向读写使能控制单元发送I2C操作开始信号及数据读取信号,并向I2C从机发送进行数据读取的读ID;
步骤22、读写使能控制单元根据I2C操作开始信号及数据读取信号,产生预读使能信号并置1;
步骤23、I2C主机向读写使能控制单元传输I2C操作停止信号;
步骤24、读写使能控制单元根据I2C操作停止信号及为1的预读使能信号,产生读使能信号并置1;
步骤25、读写操作单元根据读ID,接收为1的读使能信号,对内部寄存器堆进行读取操作,在完成读取操作后产生读完成信号并置1反馈给读写使能控制单元,并将读取的读数据传输至I2C从机;
步骤26、读写使能控制单元接收为1的读完成信号将预读使能信号和读使能信号置0;
步骤27、I2C主机向I2C从机发送信号,读取读数据,完成对内部寄存器堆的读取。
以下通过具体实施例对本发明提出的通过I2C接口读写内部寄存器堆的装置及方法进行详细描述。
实施例1
如图1所示,为本实施例1提出的通过I2C接口读写内部寄存器堆的装置结构示意图,本装置包括I2C主机、包括三个I2C寄存器的I2C从机、读写使能控制模块和读写操作模块,以下分别说明各部分的具体功能。
I2C主机用于向I2C从机和读写使能控制模块发送信号,并读取I2C从机中的数据;
三个I2C寄存器,具体包括:
第一I2C读写寄存器,用于存储需要进行改写的内部寄存器的ID值及改写后的数据,简称写ID和写数据,其值是读写操作单元在进行写操作时的依据,12C主机可以对第一I2C读写寄存器进行读写控制;
第二I2C读写寄存器,用于存储需要读取的内部寄存器的ID值,简称读ID,其值可被读写操作单元在进行读操作的时候使用,I2C主机可以对第二I2C读写寄存器进行读写控制;
12C只读寄存器,用于存储读写操作单元返回的指定读ID寄存器中的数据,简称读数据,I2C主机只能对I2C只读寄存器进行读操作。
读写使能控制模块,用于根据SCL和SDA总线的起始、从机地址、传送方向以及终止状态,和读写操作模块输出的读写操作完成反馈,来产生读写使能信号。
读写操作模块,用于实现对内部寄存器堆的读写操作,在写使能信号有效时,对指定写ID的内部寄存器写入指定的写内容,并在完成本次写操作后返回写操作完成信号;在读使能信号有效的时刻,将指定读ID的内部寄存器中存储的内容反馈到I2C只读寄存器中,并在完成本次读操作后返回读操作完成信号。
如图2所示,为本实施例1所述的读写使能控制模块的结构示意图,具体包括:
传送过程判断模块,用于根据SCL和SDA线上状态的变化,来判断I2C主机是否正在进行I2C操作,并在检测到I2C起始信号后,将传送过程指示信号置1,直到检测到I2C终止信号,再将其置0;
从机地址及传送方向判断模块,用于根据传送过程指示信号有效之后的前七个比特的值,来判断从机地址,再根据传送过程指示信号有效之后的第八个比特的值,来判断当前I2C操作的传送方向为读操作还是写操作,并在检测到当前I2C操作的传送方向为写操作时,将预写使能信号置1,并保持直至读写操作单元输出的写操作完成信号有效后再重新置0;在检测到当前I2C操作的传送方向为读操作时,将预读使能信号置1,并保持直至读写操作单元输出的读操作完成信号有效时重新置0;
写使能产生模块,用于根据传送过程指示信号、预写使能信号和读写操作单元输出的写操作完成信号,来产生写使能控制信号,并在预写使能信号有效且传送过程指示信号无效时,将写使能控制信号置1,并保持直到写操作完成信号有效后再重新置0;
读使能产生模块,用于根据传送过程指示信号、预读使能信号和读写操作单元输出的读操作完成信号,来产生读使能控制信号,并在预读使能信号有效且传送过程指示信号无效时,将读使能控制信号置1,并保持直到读操作完成信号有效后再重新置0。
如图3所示,为本实施例1所述的读写操作模块的结构示意图,具体包括:
写操作模块,用于根据第一I2C读写寄存器中存储的写ID和写数据,在写使能信号有效时,将写数据写入到指定写ID的内部寄存器中,并在完成本次写操作后将写操作完成信号置1,保持一个周期后重新置0;
读操作模块,用于根据第二I2C读写寄存器中存储的读ID,在读使能信号有效时,将指定读ID的内部寄存器的值写入到I2C只读寄存器中,并在完成本次读操作后将读操作完成信号置1,保持一个周期后重新置0。
实施例2
如图4所示,为本实施例提出的通过I2C接口改写内部寄存器堆的方法的信号关系图,其改写的具体步骤如下描述:
步骤11、读写使能控制模块中的传送过程判断模块,根据SCL和SDA线上状态的变化,来判断I2C传送的起始标志,SDA信号在SCL信号为高电平时出现下降沿即表示I2C传送开始,传送过程判断模块在检测到此变化时将传送过程指示信号置1;
步骤12、读写使能控制模块中的从机地址及传送方向判断模块,根据传送过程指示信号有效之后的前七个比特的从机地址值和第八个比特的传送方向值进行判断,并在检测到当前I2C操作是对第一I2C读写寄存器的写操作时,将预写使能信号置1;
步骤13、读写使能控制模块中的传送过程判断模块,根据SCL和SDA线上状态的变化,来判断I2C传送的终止标志,SDA信号在SCL信号为高电平时出现上升沿即表示I2C传送终止,传送过程判断模块在检测到此变化时将传送过程指示信号置0;步骤14、读写使能控制模块中的写使能产生模块,在预写使能信号为1且传送过程指示信号为0时,将写使能信号置1;
步骤15、读写操作模块中的写操作模块,根据第一I2C读写寄存器中存储的写ID和写数据,将写数据写入到指定写ID的内部寄存器中,并在完成本次写操作后将写完成信号置1反馈给读写使能控制模块的从机地址及传送方向判断模块和写使能产生模块;
步骤16、读写使能控制模块中的从机地址及传送方向判断模块和写使能产生模块,在写操作完成信号为1后,分别将预写使能信号和写使能控制信号重新置0,完成对内部寄存器堆的改写。
实施例3
如图5所示,为本实施例提出的通过I2C接口读取内部寄存器堆的方法的信号关系图,其读取的具体步骤如下描述:
步骤21、读写使能控制模块中的传送过程判断模块,根据SCL和SDA线上状态的变化,来判断I2C传送的起始标志,SDA信号在SCL信号为高电平时出现下降沿即表示I2C传送开始,传送过程判断模块在检测到此变化时将传送过程指示信号置1;
步骤22、读写使能控制模块中的从机地址及传送方向判断模块,根据传送过程指示信号有效之后的前七个比特的从机地址值和第八个比特的传送方向值进行判断,并在检测到当前I2C操作是对第二I2C读写寄存器的写操作时,将预读使能信号置1;
步骤23、读写使能控制模块中的传送过程判断模块,根据SCL和SDA线上状态的变化,来判断I2C传送的终止标志,SDA信号在SCL信号为高电平时出现上升沿即表示I2C传送终止,传送过程判断模块在检测到此变化时将传送过程指示信号置0;
步骤24、读写使能控制模块中的读使能产生模块,在预读使能信号为1且传送过程指示信号为0时,将读使能信号置1;
步骤25、读写操作模块中的读操作模块,根据第二I2C读写寄存器中存储的读ID,在读使能信号为1时,将指定读ID的内部寄存器的值写入到I2C只读寄存器中,并在完成本次读操作后将读完成信号置1并反馈给读写使能控制模块中的从机地址及传送方向判断模块和读使能产生模块;
步骤26、读写使能控制模块中的从机地址及传送方向判断模块和读使能产生模块,在读完成信号为1时,分别将预读使能信号和读使能信号重新置0;
步骤27、I2C主机对I2C只读寄存器发起读操作,进而获取指定读ID的内部寄存器的值,完成对内部寄存器堆的读取。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。