专利名称:采用cpld实现扩充中断的装置的利记博彩app
技术领域:
本发明涉及嵌入式系统的微处理器的外围扩展装置,特别涉及采用CPLD(复杂可编程逻辑控制器)实现扩充中断的装置。
为实现上述目的,采用CPLD实现扩充中断装置包括CPLD挂在嵌入式控制器的数据总线和地址总线上,多个CPLD内的控制系统输入中断的寄存器,所述CPLD的中断触发端连接到嵌入式控制器的中断触发源上。
本发明降低了系统的设计复杂性,使系统的后期修改性能得到增强。不需要修改系统的硬件,只需要修改系统的软件就可达到修改系统的目的。本发明提高了系统的运行速度,降低了CPU的负担。
2.该扩充的中断和GPIO控制器的逻辑器件是可以编程的,其上的功能具有可以随着系统的程序变化而变化。
3.为了简化系统的设计,该中断和GPIO控制器的中断级别只有一个级别,没有级别的高低之分,这样在一定的程度上节约了系统的资源,达到降低成本的目的。
4.为了操作上的灵活,该中断和GPIO控制器具有中断屏蔽,中断的触发条件设置如沿触发还是电平触发,高电平触发还是低电平触发等都是功能上的设置。
5.由于采用了CPLD所以中断和GPIO控制器本身是可以更新的,这样就可以根据系统的情况进行灵活配置了。
6.中断和GPIO控制器里面的一些寄存器的内容可以读写的,从而系统通过读写中断和GPIO控制器的寄存器来达到控制该中断和GPIO控制器的目的。
7.该中断和GPIO控制器的功耗应该是非常低的,适合于手持产品。
结合以上的一些特点,如图2所示,本发明采用可编程逻辑控制器实现扩充中断。在系统的输出方面,本发明和现有技术没有本质的区别。但在系统的输入方面,本发明和现有技术的最本质的区别是本发明采用了中断的方式,而现有技术采用了查询的方式。在本发明的CPLD中,可以对于系统的输入定义一系列不同的寄存器,来达到系统输入中断的控制目的。本发明仅仅多占用了CPU的一个中断源,可以扩充设计者想要的任何中断,在实际的工作中具有非常大的意义。
如图3所示,中断和GPIO控制器的工作原理是这样的,当输入信号产生了一个变化,并且该变化符合中断沿或者中断电平以及电平的高低等等的条件,就可以把中断传递到中断响应寄存器,如果该中断是被屏蔽掉的,则该中断只传递到中断响应寄存器,如果该中断是非屏蔽的,则传递到中断状态寄存器,然后通过CPLD_IRQ给系统的中断控制器申请中断。
首先,定义该中断和GPIO控制器的寄存器,其包括GPIO_IN_VALUE,GPIO_IN_STATUS,GPIO_IN_POLARITY,GPIO_IN_EDGE,GPIO_IN_MASK,GPIO_IN_PENDING以及GPIO_OUT_VALUE寄存器,由于系统总线的缘故,它们的位数定义为16位,具体含义如下GPIO_IN_VALUE输入信号数值寄存器,该寄存器的数值反映了输入信号线上的即时状态,信号为高时为1,为低时为0。
GPIO_IN_MASK 中断屏蔽寄存器,其对应的信号为GPIO_IN0到GPIO_IN15,当该寄存器对应位为0的时候,在符合中断条件的时候,GPIO_IN_STATE寄存器对应的位不标志(为0),当其对应位为1的时候,在符合中断的条件的时候,GPIO_IN_STATE对应的位设置标志(为1)。
GPIO_IN_PENDING中断响应寄存器,当中断已经触发了之后,如果中断屏蔽寄存器的对应位的数值为1的时候,GPIO_IN_STATUS对应的位设置标志(为1),GPIO_IN_PENDING对应的位设置标志(为1),如果中断寄存器对应的位的数值为0时候,GPIO_IN_STATUS对应的位不设置标志,GPIO_IN_PENDING对应的位设置标志GPIO_IN_STATUS中断状态寄存器,当中断已经触发了之后,如果中断屏蔽寄存器的对应位的数值为1的时候,GPIO_IN_STATUS对应的位设置标志(为1),GPIO_IN_PENDING对应的位设置标志(为1),如果中断寄存器对应的位的数值为0时候,GPIO_IN_STATUS对应的位不设置标志,GPIO_IN_PENDING对应的位设置标志。
GPIO_IN_EDGE中断沿检测寄存器,当GPIO_IN_POLARITY对应的位为0的时候,如果GPIO_IN_EDGE为0时候,其中断的触发条件为低电平触发,如果GPIO_IN_EDGE为1的时候,其中断为下降沿触发。当GPIO_IN_POLARITY对应的位为1的时候,如果GPIO_IN_EDGE为0时候,其中断为高电平触发,如果GPIO_IN_EDGE为1的时候,其中断为上升沿触发。
GPIO_IN_POLARITY中断极性寄存器,当GPIO_IN_POLARITY对应的位为0的时候,如果GPIO_IN_EDGE为0时候,其中断的触发条件为低电平触发,如果GPIO_IN_EDGE为1的时候,其中断为下降沿触发。当GPIO_IN_POLARITY对应的位为1的时候,如果GPIO_IN_EDGE为0时候,其中断为高电平触发,如果GPIO_IN_EDGE为1的时候,其中断为上升沿触发GPIO_OUT_VALUE输出信号的数值寄存器,该寄存器的数值反映了输出管脚上的信号的高低,当位数为1的时候,表示该对应的管脚为高,当为0的时候,表示对应的管脚电平为低。
其次,该中断和GPIO控制器首先必须初始化,其初始化的内容包括以上所列的除了GPIO_IN_VALUE寄存器外的所有寄存器,以便中断寄存器可以正确工作。
再者,如果系统需要设置一些输出信号,则可以直接访问GPIO_OUT_VALUE寄存器的内容。
最后,如果系统发生了中断响应,则中断响应的流程如下1.读取并清除GPIO_IN_STATUS和GPIO_IN_PENDING寄存器;2.读取GPIO_IN_VALUE寄存器;
3.响应相应位的中断服务程序。
首先介绍一下INTEL SA1110和INTERRUPT AND GPIO CONTROLLER之间的连接信号如下CLK提供中断和GPIO控制器工作所需要的时钟,信号的方向为SA1110输出,中断和GPIO控制器输入;BD是数据总线,其带宽为16位,信号的方向为双向;BA是地址总线,其带宽为5位,信号的方向为SA1110输出,中断和GPIO控制器输入;SA_CS3是中断和GPIO控制器的片选信号,信号的方向为SA1110输出,中断和GPIO控制器输入;SA_OE是中断和GPIO控制器的输出使能信号,信号的方向为SA1110输出,中断和GPIO控制器输入;SA_WE是中断和GPIO控制器的输入使能信号,信号的方向为SA1110输出,中断和GPIO控制器输入;CPLD_IRQ是中断和GPIO控制器的中断请求信号,表明该控制器目前给SA1110发出中断请求信号 信号的方向为中断和GPIO控制器输出,SA1110输入;中断和CPIO控制器及外围设备之间的信号为16路输入信号,16路输出信号,输入信号的工作方式采用了中断控制的方式,输出信号的工作方式采用了系统直接访问的方式。由于对于整体系统而言,输入信号之间的区别不大,输出信号之间的区别也不大,所以在这里对于输入信号盒输出信号的具体含义就不做详细的说明。图5是系统运行流程图;图6是中断流程图。
权利要求
1.一种采用CPLD实现扩充中断装置,包括CPLD挂在嵌入式控制器的数据总线和地址总线上,其特征在于还包括多个CPLD内的控制系统输入中断的寄存器,所述CPLD的中断触发端连接到嵌入式控制器的中断触发源上。
2.按权利要求1所述的装置,其特征在于所述寄存器包括输入信号数值寄存器,该寄存器的数值反映了输入信号线上的即时状态,信号为高时为1,为低时为0。
3.按权利要求1所述的装置,其特征在于所述寄存器包括中断屏蔽寄存器,其对应的信号为GPIO_IN0到GPIO_IN15,当该寄存器对应位为0的时候,在符合中断条件的时候,GPIO_IN_STATE寄存器对应的位不标志(为0),当其对应位为1的时候,在符合中断的条件的时候,GPIO_IN_STATE对应的位设置标志(为1)。
4.按权利要求1所述的装置,其特征在于所述寄存器包括中断响应寄存器,当中断已经触发了之后,如果中断屏蔽寄存器的对应位的数值为1的时候,GPIO_IN_STATUS对应的位设置标志(为1),GPIO_IN_PENDING对应的位设置标志(为1),如果中断寄存器对应的位的数值为0时候,GPIO_IN_STATUS对应的位不设置标志,GPIO_IN_PENDING对应的位设置标志。
5.按权利要求1所述的装置,其特征在于所述寄存器包括中断状态寄存器,当中断已经触发了之后,如果中断屏蔽寄存器的对应位的数值为1的时候,GPIO_IN_STATUS对应的位设置标志(为1),GPIO_IN_PENDING对应的位设置标志(为1),如果中断寄存器对应的位的数值为0时候,GPIO_IN_STATUS对应的位不设置标志,GPIO_IN_PENDING对应的位设置标志。
6.按权利要求1所述的装置,其特征在于所述寄存器包括中断沿检测寄存器,当GPIO_IN_POLARITY对应的位为0的时候,如果GPIO_IN_EDGE为0时候,其中断的触发条件为低电平触发,如果GPIO_IN_EDGE为1的时候,其中断为下降沿触发,当GPIO_IN_POLARITY对应的位为1的时候,如果GPIO_IN_EDGE为0时候,其中断为高电平触发,如果GPIO_IN_EDGE为1的时候,其中断为上升沿触发。
7.按权利要求1所述的装置,其特征在于所述寄存器包括中断极性寄存器,当GPIO_IN_POLARITY对应的位为0的时候,如果GPIO_IN_EDGE为0时候,其中断的触发条件为低电平触发,如果GPIO_IN_EDGE为1的时候,其中断为下降沿触发,当GPIO_IN_POLARITY对应的位为1的时候,如果GPIO_IN_EDGE为0时候,其中断为高电平触发,如果GPIO_IN_EDGE为1的时候,其中断为上升沿触发。
8.按权利要求1所述的装置,其特征在于所述寄存器包括输入信号数值寄存器,该寄存器的数值反映了输入信号线上的即时状态,信号为高时为1,为低时为0。
9.按权利要求1所述的装置,其特征在于所述寄存器包括输出信号的数值寄存器,该寄存器的数值反映了输出管脚上的信号的高低,当位数为1的时候,表示该对应的管脚为高,当为0的时候,表示对应的管脚电平为低。
全文摘要
一种采用CPLD实现扩充中断装置,包括CPLD挂在嵌入式控制器的数据总线和地址总线上,多个CPLD内的控制系统输入中断的寄存器,所述CPLD的中断触发端连接到嵌入式控制器的中断触发源上。本发明降低了系统的设计复杂性,使系统的后期修改性能得到增强。不需要修改系统的硬件,只需要修改系统的软件就可达到修改系统的目的。本发明提高了系统的运行速度,降低了CPU的负担。
文档编号G06F13/32GK1459734SQ02120038
公开日2003年12月3日 申请日期2002年5月21日 优先权日2002年5月21日
发明者刘鹏, 颜洪涛 申请人:联想(北京)有限公司