发明内容
本发明的目的在于提供一种解决上述问题的可变位宽的位操作控制系统和方法,具体而言,本发明提供一种可变位宽的位操作控制系统,用于对GPIO接口进行控制,其特征在于:包括第一控制寄存器、第二控制寄存器、第三控制寄存器、位读写控制电路、或操作电路及与操作电路;
其中第一控制寄存器为位操作写1控制寄存器;第二控制寄存器为位操作写0控制寄存器;第三控制寄存器为位操作读控制寄存器;所述第一控制寄存器、第二控制寄存器和第三控制寄存器的位数均大于等于被操作的位;
或操作电路用于将被操作的位的数值与第一控制寄存器的数值进行或操作,并将结果反馈给位读写控制电路;
与操作电路用于将被操作的位的数值与第二控制寄存器的数值进行与操作,并将结果反馈给位读写控制电路。
位读写控制电路用于实现获取或操作电路的输出、与操作电路的输出,并将所述输出写入被操作的位,以及对被操作的位和第三控制寄存器的值进行与逻辑。
进一步地,其特征在于:所述第一控制寄存器、第二控制寄存器和第三控制寄存器中至少一个的位数等于被操作的位。
进一步地,其特征在于:所述被操作的位数为8位、16位、32或64位。
进一步地,其特征在于:所述或操作电路、与操作电路和位读写控制电路中的至少两个集成在一个电路中。
进一步地,其特征在于:所述第一控制寄存器用于当需要给被操作的位写入1时,向第一控制寄存器中的对应位写1;并由或操作电路对被操作的位数据与第一控制寄存器中的值自动进行或操作,之后位读写控制电路将此结果更新写入被操作的位。
进一步地,其特征在于:所述第二控制寄存器用于当需要给被操作的位写入0时,向第二控制寄存器中的对应位写0;并由与操作电路对被操作的位数据与第二控制寄存器中的值自动进行与操作,之后位读写控制电路将此结果更新写入被操作的位。
进一步地,其特征在于:所述第三控制寄存器用于当需要读取被操作的位时,向第三控制寄存器中的对应位写入1,位读写控制电路将当前被操作的位数值与第三控制寄存器配置的值进行与逻辑。
本发明还提供一种可变位宽的位操作控制方法,其特征在于:采用上述任一项所述的可变位宽的位操作控制系统,其中所述方法包括:
a)当需要向被操作的位某一位或者某几位写1时,向第一控制寄存器中的对应位写1,不需要操作的位写0或在初始值为0时无需进行特定值的写操作;b)或操作电路对被操作的位数据与第一控制寄存器中的值自动进行或操作;c)之后位读写控制电路将或操作的结果更新写入被操作的位,完成单个或某几个位单独写1的控制功能。
进一步地,其特征在于:所述方法还包括,d)当需要向被操作的位某一位或者某几位写0时,向第二控制寄存器中的对应位写0,不需要操作的位写1或在初始值为1时无需进行特定值的写操作;e)与操作电路对被操作的位数据与第二控制寄存器中的值自动进行与操作;f)之后位读写控制电路将与操作的结果更新写入被操作的位,完成单个或某几个位单独写0的控制功能。
进一步地,其特征在于:所述方法还包括:g)当要读取被操作的位中某一位或几位时,将第三控制寄存器内对应位写入1;h)位读写控制电路将当前被操作的位数值与第三控制寄存器配置的值进行与逻辑,所述与逻辑结果就是读取的被操作位的数值。
发明效果:
采用本发明的方案案使得位操作控制逻辑仅使用3个地址及对应的控制寄存器,实现各个位的单独控制或者是某几位的单独控制,灵活度更高,且节省了5地址及对应的控制寄存器,同时当BIT位越多时,更节省寄存器成本,简化操作复杂度。
具体实施方式
为了使本技术领域人员更好的理解本发明,下面结合附图和实施方法对本发明作进一步的详细描述,需要说明的是,在不冲突的情况下,本申请中的实施例和实施例中的特征可以相互任意组合。
参照下面的描述和附图,将清楚本发明的实施例的这些和其他方面。在这些描述和附图中,具体公开了本发明的实施例中的一些特定实施方式,来表示实施本发明的实施例的原理的一些方式,但是应当理解,本发明的实施例的范围不受此限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
如图2所示,本发明的可变位宽的位操作控制系统,包括第一控制寄存器、第二控制寄存器、第三控制寄存器、位读写控制电路、或操作电路及与操作电路。
其中,第一控制寄存器为位操作写1控制寄存器,其位数等于被操作的位的位数,其内所有位的初始值为0,当需要向被操作的位中某一位或者某几位写1时,可直接向第一控制寄存器中的对应位写1,不需要操作的位无需进行特定值的写操作。在优选的方案中,所述第一控制寄存器的初始值可以不为0,在对第一控制器写入1时,不写1的位写0。
第二控制寄存器为位操作写0控制寄存器,其位数等于被操作的位的位数,其内所有位的初始值为1,当需要向被操作的位中某一位或者某几位写0时,可直接向第二控制寄存器中的对应位写0,不需要操作的位无需进行特定值的写操作。在优选的方案中,所述第二控制寄存器的初始值可以不为1,在对第二控制器写入0时,不写0的位写1。
第三控制寄存器为位操作读控制寄存器,其位数等于被操作的位的位数,其内所有位初始值为0,要读取被操作的位中某一位或几位时,可将第三控制寄存器内对应位写入1。在优选的方案中,所述第三控制寄存器的初始值可以不为0,在对第一控制器写入1时,不写1的位写0。
或操作电路用于将被操作的位的数值与第一控制寄存器的数值进行或操作,并将结果反馈给位读写控制电路。
与操作电路用于将被操作的位的数值与第二控制寄存器的数值进行与操作,并将结果反馈给位读写控制电路。
位读写控制电路用于实现获取或操作电路的输出、与操作电路的输出,并将所述输出写入被操作的位,以及对被操作的位和第三控制寄存器的值进行与逻辑。
下面结合附图2说明本发明方案的控制逻辑:
1.第一控制寄存器初始值为0,当需要向被操作的位某一位或者某几位写1时,可直接对应向第一控制寄存器中的对应位写1,不需要操作的位无需进行特定值的写操作。此时,或操作电路对被操作的位数据与第一控制寄存器中的值自动进行或操作,使得1写入对应的位,之后位读写控制电路将此结果更新写入被操作的位,完成单个或某几个位单独写1的控制功能,而对于被操作的位中上述被操作的某一位或某几位之外的位,值没有发生变化,原来的值是0仍然是0,原来的值是1仍然是1。完成上述操作后,第一控制寄存器将恢复初始值全0的状态以便于提供下一次的操作控制。在另一方案中,第一控制寄存器初始值不为0,在向第一控制寄存器中的对应位写1时,不需要操作的位写0。完成操作后,也不用将第一控制寄存器恢复初始值。
2.第二控制寄存器初始值为1,当需要向被操作位的某一位或者某几位写0时,可直接对应第二控制寄存器中的对应位写0,不需要操作的位无需进行特定值的写操作。此时,与操作电路将被操作的位数据与第二控制寄存器中的配置值自动进行与操作,使得0写入对应的位,之后位读写控制电路将此结果更新写入被操作的位,完成单个或某几个位单独写0的控制功能,而对于被操作的位中上述被操作的某一位或某几位之外的位,值没有发生变化,原来的值是0仍然是0,原来的值是1仍然是1。完成上述操作后,第二控制寄存器将恢复初始值全1的状态以便于提供下一次的操作控制。优选的方案中,第二控制寄存器初始值不为1,在向第二控制寄存器中的对应位写0时,不需要操作的位写1。完成操作后,也不用将第二控制寄存器恢复初始值。
3.第三控制寄存器初始值为0,要读取被操作的位中某一位或几位时,将第三控制寄存器内对应位写入1,此时位读写控制电路将当前被操作的位数值与第三控制寄存器配置的值进行与逻辑,此时,与的结果就是被操作的位对应的端口的状态。并可在下一个操作周期读出。优选的方案中,第三控制寄存器初始值不为0,在向第三控制寄存器中的对应位写1时,不需要操作的位写0。完成操作后,也不用将第三控制寄存器恢复初始值。
在优选的方案中,位读写控制电路内的与逻辑运算可由位于第三控制寄存器之外的单独的第二与操作电路实现。
在优选的方案中,所述或操作电路、与操作电路和位读写控制电路中的至少两个可以组合到一个电路中。
在优选的方案中,所述第一、第二、第三控制寄存器中的至少一个的位数大于被操作的位数。以第一控制寄存器位数大于被操作的位数为例,此时,可以只操作第一控制寄存器的后八位与被操作的位运算,而不用考虑前面位数的情况。其逻辑关系与上面描述相同,这里不再赘述。
在优选的方案中,还包括临时寄存器,用于将或操作电路和与操作电路的运算结果临时存储,并且供位读写控制电路调用。所述临时寄存器优选地位于所述位读写控制电路内。
采用本发明的方案案使得位操作控制逻辑仅使用3个地址及对应的控制寄存器,实现各个位的单独控制或者是某几位的单独控制,灵活度更高,且节省了5地址及对应的控制寄存器,同时当BIT位越多时,更节省寄存器成本,简化操作复杂度。
实施例1:
下面结合附图具体说明书本发明实施例1,本实施例中以采用操作8位的位操作控制为例,但是应当知道,16位、32位、64位等等均可以实现本实施例的方案,并且所述系统的控制方法通过处理器(例如CPU)及对应程序控制实现。
1)该8位被操作的位控制外部GPIO端口P1~P8。初始时,第一控制寄存器、第二控制寄存器和第三控制寄存器的值均处于初始状态,被操作的8个位的初始值均为0。
2)当P2端口需要配置为1时,仅需向第一控制寄存器写0x2(即0000 0010,十六进制的2),或操作电路将第一寄存器的值0x2自动与被操作位的8个位0X0(0000 0000)进行或逻辑,即0x2|0x0=0x2,并将该值通过位读写控制电路写入被操作的位的8个位,实现P2端口的单独配置1;
3)进一步的,当P5,P6,P8端口需要配置为1时,仅需向位第一控制寄存器写0xB0(1011 0000),或操作电路将第一寄存器的值0xB0自动与被操作的位的8个位先前值(0x2)进行或逻辑,即0xB0|0x2=0xB2(1011 0010),并将该值通过位读写控制电路写入被操作的位的8个位,实现P5,P6,P8端口的单独配置1,P2端口状态不变,仍然为1;
4)进一步的,当P8端口需要配置为0时,仅需向第二控制寄存器写0x7F(01111111),与操作电路将第二控制寄存器的值0X7F自动与被操作的位的8个位先前值(0xB2)进行与逻辑,即0x7F&0xB2=0x32(0011 0010),并将该值通过位读写控制电路写入被操作的位的8个位,实现P8端口的单独配置0,P2,P5,P6端口状态不变,仍然均为1;
5)进一步的,当P2,P5端口需要配置为0时,仅需向第二控制寄存器写0xED(11101101),与操作电路将第二控制寄存器的值0xED自动与被操作的位的8个位先前值(0x32)进行与逻辑,即0xED&0x32=0x20(0010 0000),并将该值通过位读写控制电路写入被操作的位的8个位,实现P2,P5端口的单独配置0,P6端口状态不变,仍然为1;
6)进一步的,当需要获取P5,P6端口状态时,仅需向位第三控制寄存器写0x30(0011 0000),位读写控制电路将当前被操作的8个位的值0x20(0010 0000)和第三控制寄存器配置的0x30进行与逻辑,即0x30&0x20=0x20,实现P5,P6端口状态的获取,即P5端口状态为0,P6端口状态为1。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离前述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。