一种中断控制方法和中断控制器的制造方法

文档序号:9375364阅读:211来源:国知局
一种中断控制方法和中断控制器的制造方法
【技术领域】
[0001]本发明属于中断控制器的电子电路领域,尤其是涉及一种包含软件模式、硬件模式的可编程中断控制器。
【背景技术】
[0002]SOC设计中包含众多硬件模块,很多硬件模块都会输出一个或几个中断请求,而处理器内仅有一个或两个中断请求信号输入,所以中断必须经过中断控制器的处理才能进入处理器。
[0003]中断分为硬件模式和软件模式,软件模式需要CPU访问中断控制器得到中断号,进而查询中断向量表,得到中断服务函数地址;硬件模式,中断控制器发出中断请求的同时发出中断向量,CPU可以根据中断向量,执行相应的中断服务函数。
[0004]本发明中断控制器,兼容软件模式和硬件模式,而且中断嵌套机制简单,具有较有低的延时,中断控制器接受中断到中断控制器向处理器发出中断请求只需要3个周期。

【发明内容】

[0005]有鉴于此,本发明旨在提出一种中断控制方法和中断控制器,利用优先级比较模块在实现软件模式和硬件模式兼容的情况下,降低延时,实现中断的可选择响应。
[0006]为达到上述目的,本发明的技术方案是这样实现的:
[0007]—种中断控制方法,包括以下步骤:
[0008](a)设定中断控制器中控制寄存器的选定工作模式和当前中断优先级寄存器的当前中断优先级;
[0009](b)外部中断源和/或中断控制器内部产生的可配置中断在配置优先级后进入优先级仲裁模块,优先级仲裁模块仲裁出最优中断,进入步骤(C),若优先级仲裁模块没有接收到任何中断请求,则进入步骤(d);
[0010](c)优先级仲裁模块将最优中断的优先级输入优先级比较模块,将最优中断的中断号输入中断向量产生模块,进入步骤(e);
[0011](d)优先级仲裁模块向中断向量产生模块输出的中断号为0,进入步骤(e);
[0012](e)将优先级比较模块中的优先级和当前中断优先级寄存器中的当前中断优先级进行比较,若优先级比较模块中的优先级不大于当前中断寄存器中的当前中断优先级,则重复步骤(b)至步骤(e),若优先级比较模块中的优先级大于当前中断优先级寄存器中的当前中断优先级,则优先级比较模块向CPU输出中断请求;
[0013](f)若该控制寄存器选定软件模式,则进入步骤(g),若该控制寄存器选定硬件模式,则进入步骤(h);
[0014](g)在优先级比较模块向CPU输出中断请求的同时,中断向量产生模块将优先级仲裁模块输出的中断号保存到中断认知寄存器中,
[0015]然后CPU通过寄存器读写接口读取中断认知寄存器,
[0016]该读操作使当前中断优先级寄存器中的当前中断优先级被保存到嵌套中断优先级保存模块,优先级仲裁模块向优先级比较模块输出的优先级保存在当前中断优先级寄存器中,
[0017]同时CPU得到中断向量对应的中断函数地址的偏移量,执行响应的中断服务函数,
[0018]CPU中断响应结束时,CPU写中断结束寄存器,同时嵌套中断优先级保存模块将当前中断优先级还原到当前中断优先级寄存器中;
[0019](h)在优先级比较模块向CPU输出中断请求的同时,中断向量产生模块向CPU输出中断向量和中断向量使能信号,
[0020]当接收到CPU给出的硬件中断认知信号有效时,当前中断优先级寄存器中的当前中断优先级被保存到嵌套中断优先级保存模块,优先级仲裁模块向优先级比较模块输出的优先级保存在当前中断优先级寄存器中,
[0021]CPU中断响应结束时,CPU写中断结束寄存器,
[0022]同时嵌套中断优先级保存模块将当前中断优先级还原到当前中断优先级寄存器中。
[0023]进一步的,所述步骤(b)中的可配置中断由中断控制器中的软件设置/清除寄存器产生,所述优先级配置寄存器中的优先级配置范围为O到15,共16个。
[0024]进一步的,所述步骤(b)中的优先级仲裁模块仲裁出最优中断的方法包括以下步骤:
[0025](bl)比较所有中断的优先级,选出优先级最高的中断;
[0026](b2)计数优先级最高的中断的个数,若数目为1,则该优先级最高的中断即为最优中断,若数目大于1,则选出其中中断号最低的中断即为最优中断。
[0027]进一步的,所述步骤(g)或步骤(h)中的CPU中断响应结束前,若有更高优先级的中断进入优先级仲裁模块,则按照步骤(b)至(h)流程执行,若前一中断的执行阶段进入中断函数后CPU打开外部中断使能,以保证中断嵌套,则中断控制器有两次中断请求发生,且嵌套中断优先级保存模块中会有两个优先级保存。
[0028]进一步的,所述步骤(g)或步骤(h)中的嵌套优先级保存模块为“后进先出”结构,该嵌套优先级保存模块的深度为15。
[0029]进一步的,所述步骤(h)中的中断向量是字对齐的,中断向量的位宽取决于输出中断控制器的外部中断数量和软件可配置中断的数量。
[0030]进一步的,所述步骤(h)中的中断向量的位数H的计算表达式为H =log2(Ml+M2),其中M1+M2 = 2N+,Ml为外部中断个数,M2为可配置中断个数,N+为正整数;
[0031]或者H= [log2(Ml+M2)]+l,其中M1+M2乒2N+,Ml为外部中断个数,M2为可配置中断个数,N+为正整数,[]表示向下取整。
[0032]—种中断控制器,包括通信接口、优先级仲裁模块、中断向量产生模块、优先级比较模块、嵌套中断优先级保存模块和寄存器模块;
[0033]所述通信接口外接中断源,中断源经通信接口输入中断信号;
[0034]所述优先级仲裁模块,用于选出最优中断;
[0035]所述中断向量产生模块,用于产生中断向量使能和中断向量;
[0036]所述优先级比较模块,用于比较优先级仲裁模块输出的优先级和当前中断优先级的大小;
[0037]所述嵌套中断优先级保存模块,由于保存被嵌套中断的优先级;
[0038]所述通信接口输入的中断信号和/或寄存器模块内产生的可配置中断信号经寄存器模块配置优先级后输入优先级仲裁模块;
[0039]优先级仲裁模块选出最优中断后,向中断向量产生模块输出最优中断的中断号,向优先级比较模块输出最优中断的优先级;
[0040]优先级比较模块与寄存器模块通信连接,该优先级比较模块内的最优中断的优先级与寄存器模块内设定的当前中断优先级进行比较,比较结果控制优先级比较模块中中断请求的发送;
[0041 ] 寄存器模块与嵌套中断优先级保存模块通信连接;
[0042]中断向量产生模块配合寄存器模块与CPU通信连接。
[0043]进一步的,所述寄存器模块包括件设置/清除寄存器、优先级配置寄存器、控制寄存器、当前中断优先级寄存器、中断认知寄存器、中断结束寄存器和寄存器读写接口 ;
[0044]所述软件设置/清除寄存器,用于设置、清除软件可配置中断;
[0045]所述优先级配置寄存器,用于配置各个中断的优先级;
[0046]所述控制寄存器,用于配置中断控制器工作模式:软件模式或硬件模式;
[0047]所述当前中断优先级寄存器,用于保存当前执行中断的优先级,复位后,当前中断优先级寄存器中的当前中断优先级为最大值;
[0048]所述中断认知寄存器,用于保存中断向量;
[0049]所述中断结束寄存器,由CPU写入,用于向中断控制器表示中断响应结束;
[0050]寄存器读写接口用于访问所有寄存器;
[0051]进一步的,所述通信接口输入的中断信号和/或软件设置/清除寄存器内产生的可配置中断信号经优先级配置寄存器配置优先级后输入优先级仲裁模块。
[0052]进一步的,所述优先级比较模块与当前中断优先级寄存器通信连接,比较当前中断优先级寄存器中的当前中断优先级与优
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1