公开/公告号CN101276292A
专利类型发明专利
公开/公告日2008-10-01
原文格式PDF
申请/专利权人 杭州华三通信技术有限公司;
申请/专利号CN200810106453.7
申请日2008-05-13
分类号G06F9/46(20060101);G06F9/38(20060101);
代理机构11018 北京德琦知识产权代理有限公司;
代理人宋志强;麻海明
地址 310053 浙江省杭州市高新技术产业开发区之江科技工业园六和路310号华为杭州生产基地
入库时间 2023-12-17 20:49:36
法律状态公告日
法律状态信息
法律状态
2023-09-01
专利权的转移 IPC(主分类):G06F 9/46 专利号:ZL2008101064537 登记生效日:20230815 变更事项:专利权人 变更前权利人:新华三技术有限公司 变更后权利人:北京紫光通信科技集团有限公司 变更事项:地址 变更前权利人:310052 浙江省杭州市滨江区长河路466号 变更后权利人:100088 北京市海淀区知春路7号致真大厦B座24层
专利申请权、专利权的转移
2017-05-03
专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F9/46 变更前: 变更后: 申请日:20080513
专利权人的姓名或者名称、地址的变更
2010-04-21
授权
授权
2009-01-14
实质审查的生效
实质审查的生效
2008-10-01
公开
公开
技术领域
本发明涉及中断处理技术,特别涉及一种中断合成方法、一种中断合成装置、以及一种模块化主机系统。
背景技术
模块化主机系统包括中央处理器(CPU)和多个插卡槽位,且插卡槽位可插接具有各种功能的插卡模块,从而便于模块化主机系统的功能扩展。
为了实现CPU实时响应插卡模块中的事件,每个插卡模块通过中断信号向CPU请求事件处理,但是由于CPU的中断管脚有限,不可能与每个插卡模块一一对应,所以需要将来自各插卡模块的中断信号进行合成后再上报到CPU,中断信号的合成可以由可编程逻辑器件来实现。实际应用中,中断分为沿触发和电平有效两种,为了确保不丢中断,目前普遍采用的是电平有效方式。
图1为现有能够实现中断合成的模块化主机系统的结构示意图。如图1所示,以8个插卡模块、中断信号为电平有效方式、且为低电平时有效为例,中断信号1~8分别为插卡模块1~8(图中未示出)输出的中断信号,并分别输入至可编程逻辑器件的8个输入管脚。在图1中,作为中断合成装置的可编程逻辑器件中包括中断状态寄存器和与门。
中断信号1~8输入至中断状态寄存器,该中断状态寄存器中的每一位分别用于记录中断信号1~8当前的电平值。由于不同的电平值反映中断信号是否有效,因而可以看作中断状态寄存器中记录了8个插卡模块的中断状态是否有效,即是否上报了中断。
中断信号1~8还输入至与门,这样,中断信号1~8中只要有一个为表示中断有效状态的低电平,则与门的中断请求(IRQ)管脚输出至CPU的信号就为低电平,使得IRQ管脚有效,即向CPU上报中断以通知CPU读取所记录的中断有效状态。
而CPU只要检测到IRQ有效,则读取可编程逻辑中的中断状态寄存器所记录的8个插卡模块的中断状态,从中断有效状态的插卡模块中读取中断信息,并执行相应的事件处理。
此外,只要中断信号1~8的电平值变为表示无效的高电平,则中断状态寄存器中记录的对应插卡模块的中断状态也会随之变为无效;同时,可编程逻辑器件的IRQ管脚相应地也变为无效。
此后,可编程逻辑器件继续对来自8个插卡模块的中断信号1~8进行合成,并在有中断信号有效时再次按照上述方式向CPU上报。
从图1所示可知,如果有插卡模块中断异常,例如,该插卡模块输出的中断信号一直处于有效状态,则相应地,可编程逻辑器件的IRQ管脚也将一直有效、中断状态寄存器中也一直记录该插卡模块的中断状态为有效,从而使得CPU不断读取中断状态寄存器、并一直处理该插卡模块的中断,进而导致模块化主机系统挂死。
可见,现有模块化主机系统中的中断合成方式无法避免由于插卡模块的中断异常而导致的挂死,因而使得中断合成的可靠性不高。
发明内容
有鉴于此,本发明提供了一种中断合成方法、一种中断合成装置、以及一种模块化主机系统,能够提高模块化主机系统对中断合成的可靠性。
本发明提供的一种中断合成方法,应用于包括中央处理器CPU和多个插卡模块的模块化主机系统,该方法包括:
分别对各插卡模块输出的中断信号进行波形整形,使得波形整形后的各中断信号在每次从无效变为有效后,其有效部分的长度与预设中断有效周期相等;
分别对波形整形后的各中断信号连续地进行采样,记录采样得到的对应插卡模块的中断有效状态,并通知所述CPU读取所记录的中断有效状态;
在所述CPU每次完成读取之后的预设读清周期内清空所记录的所有中断有效状态。
在所述中断信号从无效变为有效后,该方法进一步包括:对该中断信号的有效部分延迟一个系统时钟周期,使得该有效部分的开始时刻与系统时钟同步。
所述对波形整形后的中断信号连续地进行采样包括:以所述系统时钟为采样时钟,对波形整形后的中断信号连续地进行采样。
在CPU每次完成读取之后、清空所记录的所有中断有效状态之前,该方法进一步包括:将读清周期延迟一个系统时钟周期,使得所述读清周期与系统时钟同步。
在所述读清周期内,该方法进一步包括:禁止所述采样的执行。
所述中断有效周期与所述读清周期满足如下条件:
对波形整形后的中断信号中,长度等于所述中断有效周期的有效部分采样并记录的中断状态,如果在所述读清周期之前未被CPU读取,则该有效部分在所述读清周期之后仍能够被再次采样得到。
所述中断有效周期为4个所述系统时钟周期、所述读清周期为1个所述系统时钟周期。
本发明提供的一种中断合成装置,应用于包括中央处理器CPU和多个插卡模块的模块化主机系统,且该装置分别与所述CPU和多个插卡模块相连,所述中断合成装置包括:波形整形单元、状态采样单元、状态存储单元、中断上报单元、读清控制单元,其中,
所述波形整形单元,分别对各插卡模块输出的中断信号进行波形整形,使得波形整形后的各中断信号在每次从无效变为有效后,其有效部分的长度与预设中断有效周期相等;
所述状态采样单元,分别对波形整形后的各中断信号连续地进行采样,并将采样得到的对应插卡模块的中断有效状态记录于所述状态存储单元;
所述中断上报单元,在所述状态存储单元中记录有中断有效状态时,通知所述CPU读取记录于所述状态存储单元的中断有效状态;
所述读清控制单元,在所述CPU每次完成读取之后的预设读清周期内清空所述状态存储单元的所有中断状态。
所述波形整形单元进一步在所述中断信号从无效变为有效后,将该中断信号的有效部分延迟一个系统时钟周期、使得该有效部分的开始时刻与系统时钟同步。
所述状态采样单元以所述系统时钟为采样时钟,对波形整形后的中断信号连续地进行采样。
所述读清控制单元进一步在所述CPU每次完成读取之后,将读清周期延迟一个系统时钟周期,使得所述读清周期与系统时钟同步。
所述读清控制单元进一步在所述读清周期内禁止所述状态采样单元执行所述采样。
所述中断有效周期与所述读清周期满足如下条件:对波形整形后的中断信号中,长度等于所述中断有效周期的有效部分采样并记录的中断有效状态,如果在所述读清周期之前未被CPU读取,则该有效部分在所述读清周期之后仍能够被再次采样得到。
所述中断有效周期为4个所述系统时钟周期、所述读清周期为1个所述系统时钟周期。
本发明提供的一种模块化主机系统,包括:中央处理器CPU、中断合成装置、以及多个插卡模块,
所述中断合成装置,对各插卡模块输出的中断信号进行波形整形,使得波形整形后的中断信号在每次从无效变为有效后,其有效部分的长度与预设中断有效周期相等;分别对波形整形后的各中断信号连续地进行采样,记录采样得到的对应插卡模块的中断有效状态,并通知所述CPU读取所记录的中断有效状态;在所述CPU每次完成读取之后的预设读清周期内清空所记录的所有中断有效状态。
所述中断合成装置进一步在所述读清周期内禁止执行所述采样;
且所述中断有效周期与所述读清周期满足如下条件:对波形整形后的中断信号中,长度等于所述中断有效周期的有效部分采样并记录的中断有效状态,如果在所述读清周期之前未被CPU读取,则该有效部分在所述读清周期之后仍能够被再次采样得到。
由上述技术方案可见,本发明先对各插卡模块输出的中断信号进行波形整形,这样,即便有插卡模块中断异常、致使其输出的中断信号一直处于有效状态,但经波形整形后的该中断信号在从无效变为有效后,其有效部分也只会保留与预设中断有效周期相等的有限长度;然后,再对波形整形后的中断信号进行采样、记录采样得到的中断有效状态、并通知CPU读取记录的中断有效状态,由于中断信号的有效部分长度有限,采样并记录中断有效状态次数也是有限的,且CPU读取记录之后即会清空所记录的所有中断有效状态,因而CPU不会不断读取中断有效状态、且不会一直处理该插卡模块的中断,因而能够避免模块化主机系统的挂死,提高了中断合成的可靠性。
进一步地,本发明还可以在清空记录的读清周期内禁止采样的执行,且设置有效周期与读清周期满足如下条件:对中断信号中长度等于所述有效周期的有效部分采样并记录的中断状态,如果在所述读清周期之前未被CPU读取,则该有效部分在所述读清周期之后仍能够被再次采样得到。这样,还可以保证在上报中断时不会多报也不会漏报,从而进一步提高了中断合成的可靠性。
附图说明
图1为现有能够实现中断合成的模块化主机系统的结构示意图。
图2为本发明实施例中断合成方法的示例性流程图。
图3为本发明实施例中模块化主机系统的结构示意图。
图4为本发明实施例中经波形整形后的中断信号波形示意图。
图5为本发明实施例中读清控制信号的波形示意图。
图6为本发明实施例中不同时刻的各中断信号的波形示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
图2为本发明实施例中断合成方法的示例性流程图。如图2所示,该方法应用于包括CPU和多个插卡模块的模块化主机系统,且该方法包括:
步骤201,分别对各插卡模块输出的中断信号进行波形整形,使得波形整形后的各中断信号在每次从无效变为有效后,其有效部分的长度与预设中断有效周期相等。
具体来说,在本步骤中,可以在中断信号从无效变为有效后,将该中断信号有效部分延迟模块化主机系统中的一个系统时钟周期,用以实现中断信号有效部分与该系统时钟的同步,然后以该中断有效部分的开始时刻为起始点,截取有效部分中与预设中断有效周期长度相等的部分。
步骤202,分别对波形整形后的各中断信号连续地进行采样,记录采样得到的对应插卡模块的中断有效状态,且只要记录有中断有效状态,则向CPU上报中断以通知CPU读取所记录的中断有效状态。
具体来说,在本步骤中,可以直接以系统时钟为采样时钟,对波形整形后的中断信号连续地进行采样。当然,也可以倍频后的系统时钟为采样时钟。
步骤203,在CPU每次完成读取之后的预设读清周期内清空所记录的所有中断有效状态。
具体来说,在本步骤中,可以在CPU每次完成读取之后,先延迟一个系统时钟周期,然后再开始读清周期。
实际应用中,为了保证在读清周期前后不会向CPU多报和漏报中断,本步骤可以在预设读清周期内禁止步骤202中采样的执行,且保证有效周期与读清周期满足如下条件:对波形整形后的中断信号中,长度等于中断有效周期的有效部分采样并记录的中断状态,如果在读清周期之前未被CPU读取,则该有效部分在读清周期之后仍能够被再次采样得到。
至此,本流程结束。
需要说明的是,上述流程中的步骤201和步骤202均为实时执行的处理过程。
由上述流程可见,本发明先对各插卡模块输出的中断信号进行波形整形,这样,即便有插卡模块中断异常、致使其输出的中断信号一直处于有效状态,但经波形整形后的该中断信号在从无效变为有效后,其有效部分也只会保留与预设中断有效周期相等的有限长度;然后,再对波形整形后的中断信号进行采样、记录采样得到的中断有效状态、并通知CPU读取记录的中断有效状态,由于中断信号的有效部分长度有限,采样并记录中断有效状态次数也是有限的,且CPU读取记录之后即会清空所记录的所有中断有效状态,因而CPU不会不断读取中断有效状态、且不会一直处理该插卡模块的中断,因而能够避免模块化主机系统的挂死,提高了中断合成的可靠性。
此外,在上述流程中,如果在步骤203的读清周期内禁止步骤202中采样的执行、并保证有效周期与读清周期满足如步骤203所述的条件,还可以保证在上报中断时不会多报也不会漏报,从而进一步提高了中断合成的可靠性。
实际应用中,读清周期就是指读清控制信号的有效部分长度,对于如何在读清周期内禁止采样的执行可以有多种实现方式。例如,可以将读清控制信号作为采样的使能信号,在读清信号无效时采样才可以执行。再例如,设置读清周期内清空记录的操作具有高优先级、而采样则具有较低优先级,这样,只要执行清空记录的操作就无法执行采样。
图3为本发明实施例中模块化主机系统的结构示意图。如图3所示,该系统包括:CPU、中断合成装置、系统时钟发生器、以及多个插卡模块(图中未示出)。在图3中,以8个插卡模块、中断方式为电平有效方式为例。
其中,中断合成装置可以由可编程逻辑器件来实现,分别与CPU和多个插卡模块相连,其中包括:波形整形单元、状态采样单元、状态存储单元、中断上报单元、读清控制单元。
波形整形单元,分别对各插卡模块输出的中断信号1~8,即如图3所示的中断信号1~8进行波形整形,使得中断信号1~8在每次从无效变为有效后,其有效部分的长度与预设中断有效周期相等。
较佳地,波形整形单元在中断信号从无效变为有效后,可以先对该中断信号的有效部分延迟一个系统时钟周期用以实现该中断信号的有效部分与系统时钟的同步,然后以该中断有效部分的开始时刻为起始点,截取有效部分中与预设中断有效周期长度相等的一段,以实现对各插卡模块输出的中断信号的波形整形。
实际应用中,如果中断合成装置由可编程逻辑器件来实现,则可通过相应地硬件编程语言来确定多种不同的具体逻辑结构从而实现波形整形单元的功能。例如,可以设置包含有两个触发器的逻辑结构来实现用于同步的延迟,以系统时钟和中断信号的电平变化作为选通中断信号有效部分的触发条件;还可以设置包含有一个计数器和一个触发器的逻辑结构来实现波形整形,以计数器对系统时钟的计数结果作为截取中断信号有效部分的触发条件。
状态采样单元,分别对波形整形后的中断信号1~8连续地进行采样,并将采样得到的对应插卡模块的中断有效状态记录于状态存储单元。
较佳地,状态采样单元可以直接以系统时钟为采样时钟,对波形整形后的中断信号连续地进行采样;当然,也可以倍频后的系统时钟为采样时钟。
实际应用中,状态存储单元仍可以由寄存器来实现,且其每一位分别用于记录一个插卡模块的中断状态,例如1表示无效、0表示有效。
中断上报单元,在状态存储单元记录有中断有效状态时,通过IRQ管脚向CPU上报中断以通知CPU读取记录于状态存储单元的中断有效状态。
实际应用中,如果中断信号为低电平时有效,则中断上报单元可以由与门来实现;如果中断信号为高电平时有效,则中断上报单元可以由或门来实现。
读清控制单元,在CPU每次完成读取之后的预设读清周期内,清空状态存储单元的所有中断有效状态,即将其中记录的每一个插卡模块的中断状态均置为无效。
较佳地,CPU可以在每次完成读取之后可以通知读清控制单元;读清控制单元在CPU每次完成读取之后,先将表示读清周期的读清控制信号的有效部分延迟一个系统时钟周期,用以实现读清周期与系统时钟的同步。
实际应用中,如果中断合成装置由可编程逻辑器件来实现,则可通过相应地硬件编程语言来确定多种不同的具体逻辑结构从而实现读清控制单元的功能。例如,可以设置包含有两个触发器的逻辑结构来实现用于同步的延迟,以系统时钟和读清控制信号的电平变化作为选通读清控制信号有效部分的触发条件。
这样,即便有插卡模块中断异常、致使其输出的中断信号一直处于有效状态,但经波形整形后的该中断信号在从无效变为有效后,其有效部分也只会保留与预设中断有效周期相等的有限长度;然后,再对波形整形后的中断信号进行采样、记录采样得到的中断有效状态、并通知CPU读取记录的中断有效状态,由于中断信号的有效部分长度有限,采样并记录中断有效状态次数也是有限的,且CPU读取记录之后即会清空所记录的所有中断有效状态,因而CPU不会不断读取中断有效状态、且不会一直处理该插卡模块的中断,因而能够避免模块化主机系统的挂死,提高了中断合成的可靠性。
上述模块化主机系统中,如果需要保证在读清周期前后不会向CPU多报和漏报中断,则读清控制单元可以在预设读清周期内禁止状态采样单元执行采样。与此同时,还需要有效周期与读清周期满足如下条件:对波形整形后的中断信号中,长度等于有效周期的有效部分采样并记录的中断状态,如果在读清周期之前未被CPU读取,则该有效部分在读清周期之后仍能够被再次采样得到。
下面,结合一具体实例,对本实施例中的上述模块化主机系统的工作过程进行进一步说明。
假设有效周期为4个系统时钟周期、读清周期为1个系统时钟周期、中断信号为低电平有效。
图4为本发明实施例中经波形整形后的中断信号波形示意图。如图4所示,任一插卡模块输出的中断信号在下降延时刻到来之后,为了实现中断信号与系统时钟的同步,先将该中断信号的下降延延迟一个系统时钟周期(如图4中的虚线部分所示)然后进行波形整形,经波形整形后的中断信号的有效部分为4个系统时钟周期。如果将用于延迟的一个系统周期包括在内,则经波形整形后的中断信号的有效部分也可以看作为5个系统时钟周期。
这样,以系统时钟为采样周期对波形整形后的中断信号进行采样,即可在如图4所示的向上箭头所示的时刻采样到低电平,即采样到有效的中断状态。
此时,即可向CPU上报中断,并由CPU根据读控制信号读取记录的所有中断状态。
图5为本发明实施例中读清控制信号的波形示意图。如图5所示,CPU读取的操作周期、即CPU的读控制信号的有效周期,对应于T1~Tn这段系统时钟周期。T1~Tn这段系统时钟周期内,在每个系统时钟的上升沿(CPU的读控制信号在T1~Tn这段系统时钟周期内的向上箭头处),记录的中断状态都会被CPU读取。但是在时钟上升沿Tn,CPU读取的中断状态会覆盖其在Tn-1上升沿所读取的中断状态,因此,在下文中只考虑Tn上升延时CPU读取中断状态,而T1~Tn-1时刻不予考虑。
仍参见图5,在CPU读取完毕后(即如图5所示的读控制信号上升延),为了实现读清控制信号与系统时钟的同步,先对CPU的读控制信号上升延延迟一个系统时钟周期(如图5中的虚线部分所示),然后再产生1个系统时钟周期的读清控制信号将读清控制信号变为有效(即如图5所示的读清控制信号的低电平部分)并开始读清周期。然后,在读清周期内的系统时钟上升沿(读清控制信号在对应Tn+2上升延的向上箭头处),清空所记录的所有中断状态,且在禁止采样。
实际应用中,读清控制单元可输出读清控制信号,而读清控制信号的有效部分长度即为读清周期。对于如何在读清周期内禁止采样的执行可以有多种实现方式。
例如,可以将读清控制信号作为状态采样单元的使能信号,当读清信号无效时,使能状态采样单元执行采样;当读清信号有效时,状态采样单元未被使能而无法执行采样。
再例如,可以在波形整形单元和状态采样单元之间设置一常闭的开关电路,当读清信号有效时,该开关电路断开,使得状态采样单元由于无法接收到波形整形后的中断信号而无法实现有效的采样。
还例如,设置读清控制单元清空状态存储单元的优先级高于状态采样单元执行采样,这样,只要读清控制单元执行清空记录的操作、状态采样单元就无法执行采样。其中,由于上述中断合成装置可以由可编程逻辑器件来实现,因而对于上述各单元执行的各种操作可以由硬件语言来实现,而优先级的设置则可利用硬件语言中“if……else……”语句的语法特性来实现。
下面,再针对同一插卡模块在8个不同时刻产生的中断信号,对上述模块化主机系统为何能够避免多报和漏报中断进行详细说明。
图6为本发明实施例中不同时刻的各中断信号的波形示意图。如图6所示,CPU的读控制信号、以及读清控制信号,均是在插卡模块0为中断有效状态并通知CPU后产生的,CPU的读控制信号在T[-(n-1)]~T4这段系统时钟周期内有效、n为正整数,读清控制信号在T6时刻有效。
以下,在T0~T10这段系统时钟周期内,分别针对插卡模块1在8种情况下产生的中断信号进行说明。
在图6中,插卡模块1产生的中断信号经过波形整形后,有效部分长度均为5个系统时钟周期,包括用于采样的4个时钟周期(4个时钟周期的采样点为图中的向上箭头处)和用于同步而延迟的1个系统时钟周期。且插卡模块1在第1~8种情况产生的中断信号的有效部分对应的第一个采样点分别对应系统时钟的T0~T7。
1)对于在第1种情况产生的中断信号:
在T0~T3这段系统时钟周期内,插卡模块1产生的该中断信号的有效部分被采样,且采样得到的插卡模块1的中断有效状态被记录;同时,由于此时记录有中断有效状态,因而IRQ管脚有效并向CPU上报中断。
在系统时钟的T4时刻,CPU读取T3时刻记录的插卡模块1的中断有效状态,且之前已记录的插卡模块0的中断有效状态也被CPU最后一次读取。也就是说,对插卡模块1的中断信号中长度等于中断有效周期的有效部分采样并记录的中断有效状态,已在读清周期之前被CPU读取一次。需要说明的是,这里以及下文所述的读取一次是指在CPU的读控制信号一次有效周期内。
在系统时钟的T6时刻,清除所记录的所有插卡模块、即插卡模块0和插卡模块1的中断有效状态,IRQ管脚无效、且禁止采样。
可见,对于插卡模块1在第1种情况产生的一次有效的中断信号,会在读清周期之前向CPU上报一次,既不会多报中断也不会漏报中断。
2)对于在第2种情况产生的中断信号:
在T1~T3这段系统时钟周期内,插卡模块1产生的该中断信号的有效部分被采样,且采样得到的插卡模块1的中断有效状态被记录;同时,由于此时记录有中断有效状态,因而IRQ管脚有效并向CPU上报中断。
在系统时钟的T4时刻,CPU读取T3时刻记录的插卡模块1的中断有效状态,且之前已记录的插卡模块0的中断有效状态也被CPU最后一次读取。虽然插卡模块1产生的该中断信号的有效部分在T4时刻被再次采样,但由于可编程逻辑器件的传输延时特性,T4时刻采样得到的插卡模块1的中断有效状态在T5时刻才能够被读取到,而CPU的读控制信号在T5时刻已变为无效,因而T4时刻采样得到的插卡模块1的中断有效状态在读清周期之前不会被CPU再次读取。也就是说,对插卡模块1的中断信号中长度等于中断有效周期的有效部分采样并记录的中断有效状态,已在读清周期之前被CPU读取一次。
在系统时钟的T6时刻,清除所记录的所有插卡模块、即插卡模块0和插卡模块1的中断有效状态,IRQ管脚无效、且禁止采样。
可见,对于该插卡模块1在第2种情况产生的一次有效的中断信号,会在读清周期之前向CPU上报一次,既不会多报中断也不会漏报中断。
3)对于在第3种情况产生的中断信号:
在T2~T3这段系统时钟周期内,插卡模块1产生的该中断信号的有效部分被采样,且采样得到的插卡模块1的中断有效状态被记录;同时,由于此时记录有中断有效状态,因而IRQ管脚有效并向CPU上报中断。
在系统时钟的T4时刻,CPU读取T3时刻记录的插卡模块1的中断有效状态,且之前已记录的插卡模块0的中断有效状态也被CPU最后一次读取。虽然插卡模块1产生的该中断信号的有效部分在T4和T5时刻被再次采样,但由于可编程逻辑器件的传输延时特性,T4和T5时刻采样得到的插卡模块1的中断有效状态,分别在T5和T6时刻才能够被读取到,而CPU的读控制信号在T5和T6时刻已变为无效,因而T4和T5时刻采样得到的插卡模块1的中断有效状态在读清周期之前不会被CPU再次读取。也就是说,对插卡模块1的中断信号中长度等于中断有效周期的有效部分采样并记录的中断有效状态,已在读清周期之前被CPU读取一次。
在系统时钟的T6时刻,清除所记录的所有插卡模块、即插卡模块0和插卡模块1的中断有效状态,IRQ管脚无效、且禁止采样。
可见,对于该插卡模块1在第3种情况产生的一次有效的中断信号,会在读清周期之前向CPU上报一次,既不会多报中断也不会漏报中断。
4)对于在第4种情况产生的中断信号:
在系统时钟T3时刻,插卡模块1产生的该中断信号的有效部分被采样,且采样得到的插卡模块1的中断有效状态被记录;同时,由于此时记录有中断有效状态,因而IRQ管脚有效并向CPU上报中断。
在系统时钟的T4时刻,CPU读取T3时刻记录的插卡模块1的中断有效状态,且之前已记录的插卡模块0的中断有效状态也被CPU最后一次读取。虽然插卡模块1产生的该中断信号的有效部分在T4和T5时刻被再次采样,但由于可编程逻辑器件的传输延时特性,T4和T5时刻采样得到的插卡模块1的中断有效状态,分别在T5和T6时刻才能够被读取到,而CPU的读控制信号在T5和T6时刻已变为无效,因而T4和T5时刻采样得到的插卡模块1的中断有效状态在读清周期之前不会被CPU再次读取。也就是说,对插卡模块1的中断信号中长度等于中断有效周期的有效部分采样并记录的中断有效状态,已在读清周期之前被CPU读取一次。
在系统时钟的T6时刻,清除所记录的所有插卡模块、即插卡模块0和插卡模块1的中断有效状态,IRQ管脚无效、且禁止采样。
可见,对于该插卡模块1在第4种情况产生的一次有效的中断信号,会在读清周期之前向CPU上报一次,因而不会漏报中断;而且,虽然该中断信号在T6时刻、即读清周期内仍为有效,但由于读清周期内不采样(参见图中带有“x”图样的向上箭头),因而在读清周期内不会重复记录同一中断有效状态,从而不会多报中断。
5)对于在第5种情况产生的中断信号:
在T4和T5时刻,虽然插卡模块1产生的该中断信号的有效部分被采样,但由于可编程逻辑器件的传输延时特性,T4和T5时刻采样得到的插卡模块1的中断有效状态,分别在T5和T6时刻才能够被读取到,而CPU的读控制信号在T5和T6时刻已变为无效,因而在T4和T5时刻采样得到的插卡模块1的中断有效状态在读清周期之前不会被CPU读取到、即CPU在读清周期之前只会读取到之前已记录的插卡模块0的中断有效状态。也就是说,对插卡模块1的中断信号中长度等于中断有效周期的有效部分采样并记录的中断有效状态,在读清周期之前未被CPU读取。
在系统时钟的T6时刻、即读清周期内,清除所记录的所有插卡模块、即插卡模块0的中断有效状态,IRQ管脚无效、且禁止采样。
在系统时钟的T7时刻,插卡模块1产生的该中断信号的有效部分被采样,且采样得到的插卡模块1的中断有效状态被记录;同时,由于此时记录有中断有效状态,因而IRQ管脚有效并向CPU上报中断,之后,即可等待CPU读取。也就是说,对插卡模块1产生的中断信号中长度等于中断有效周期的有效部分采样并记录的中断状态,在读清周期之前未被CPU读取,但在读清周期之后能够被再次采样得到。
可见,对于该插卡模块1在第5种情况产生的一次有效的中断信号,会在读清周期之后向CPU上报一次,因而不会漏报中断;而且,虽然该中断信号在T4~T5这段系统时钟周期内、以及读清周期内有效,但由于T4~T5这段系统时钟周期内采样并记录的有效中断状态未被CPU读取、且读清周期内不采样(参见图中带有“x”图样的向上箭头),因而不会多报中断。
6)对于在第6种情况产生的中断信号:
在系统时钟的T5时刻,虽然插卡模块1产生的该中断信号的有效部分被采样,但由于可编程逻辑器件的传输延时特性,T5时刻采样得到的插卡模块1的中断有效状态在T6时刻才能够被读取到,而CPU的读控制信号在T5和T6时刻已变为无效,因而T5时刻采样得到的插卡模块1的中断有效状态在读清周期之前不会被CPU读取到,即CPU在读清周期之前只会读取到之前已记录的插卡模块0的中断有效状态。也就是说,对插卡模块1的中断信号中长度等于中断有效周期的有效部分采样并记录的中断有效状态,在读清周期之前未被CPU读取。
在系统时钟的T6时刻、即读清周期内,清除所记录的所有插卡模块、即插卡模块0和插卡模块1的中断有效状态,IRQ管脚无效、且禁止采样。
在T7和T8时刻,插卡模块1产生的该中断信号的有效部分被采样,且采样得到的插卡模块1的中断有效状态被记录;同时,由于此时记录有中断有效状态,因而IRQ管脚有效并向CPU上报中断,之后,即可等待CPU读取。也就是说,对插卡模块1产生的中断信号中长度等于中断有效周期的有效部分采样并记录的中断状态,在读清周期之前未被CPU读取,但在读清周期之后能够被再次采样得到。
可见,对于该插卡模块1在第6种情况产生的一次有效的中断信号,会在读清周期之后向CPU上报一次,因而不会漏报中断;而且,虽然该中断信号在系统时钟T5时刻、以及读清周期内有效,但由于系统时钟T5时刻采样并记录的有效中断状态未被CPU读取、且读清周期内不采样(参见图中带有“x”图样的向上箭头),因而不会多报中断。
7)对于在第7种情况产生的中断信号:
在系统时钟的T6时刻、即读清周期内,清除所记录的所有插卡模块、即插卡模块0的中断有效状态,IRQ管脚无效、且禁止采样。
在T7、T8和T9时刻,该中断信号的有效部分被连续采样,且采样得到的插卡模块1的中断有效状态被记录;同时,由于此时记录有中断有效状态,因而IRQ管脚有效并向CPU上报中断,之后,即可等待CPU读取。也就是说,对插卡模块1产生的中断信号中长度等于中断有效周期的有效部分采样并记录的中断有效状态,在读清周期之前未被CPU读取,但在读清周期之后能够被再次采样得到。
可见,对于该插卡模块1在第7种情况产生的一次有效的中断信号,会在读清周期之后向CPU上报一次,因而不会漏报中断;而且,虽然该中断信号在读清周期内有效,但由于读清周期内不采样(参见图中带有“x”图样的向上箭头),因而不会多报中断。
8)对于在第8时刻产生的中断信号:
在系统时钟的T6时刻、即读清周期内,清除所记录的所有插卡模块、即插卡模块0的中断有效状态,IRQ管脚无效、且禁止采样。
在T7~T10时刻,插卡模块1产生的该中断信号的有效部分被连续采样,且采样得到的插卡模块1的中断有效状态被记录;同时,由于此时记录有中断有效状态,因而IRQ管脚有效并向CPU上报中断,之后,即可等待CPU读取。也就是说,对插卡模块1产生的中断信号中长度等于中断有效周期的有效部分采样并记录的中断有效状态,在读清周期之前未被CPU读取,但在读清周期之后能够被再次采样得到。
可见,对于该插卡模块1在第8种情况产生的一次有效的中断信号,会在读清周期之后向CPU上报一次,因而不会漏报中断;而且,该中断信号在读清周期内以及之前无效,因而不会多报中断。
由上述实施例可见,本发明通过对中断信号的波形整形,避免了由于中断异常而导致的CPU挂死,提高了中断合成的可靠性。而且,本发明还可以通过在读清周期内对采样的禁止、以及读清周期与中断信号有效周期的条件限制保证不多报和漏报中断,进一步提高了中断合成的可靠性。
上述实施例中虽然均是以电平有效的中断方式为例,但基于相同的原理,上述实施例所提供的方案同时还适用于沿触发的中断方式、以及电平有效与沿触发混合中断方式。
实际应用中,中断信号的波形可能存在差异,但是都可以根据上述实施例所提供的方案而灵活变通。
为了保证不多报和漏报中断,需要中断信号的有效周期不少于5个系统时钟周期。如果中断信号不满足该条件,则可以对其进行相应处理,例如:
1、由硬件内部的寄存器来配置中断信号的有效周期长度;
2、在中断信号的任何电平状态的持续时间大于1个系统时钟周期的前提下,对中断信号的电平状态进行延长处理。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
机译: 通过轮询先前中断服务后的后续中断来最小化主机系统开销的机制
机译: 用于注塑机的顶出装置中的驱动装置,具有中断装置,该中断装置在达到确定的机械负荷时中断传动系,该机械负荷作用于中断装置
机译: 非瞬时中断切换系统,不间断中断接收装置,无中断中断切换方法和无中断切换程序