嵌入系统中断控制器的设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

的提高。不仅仅是单一的功能模块, 甚至是一个完整的系统都 可以被集成在单芯片中。这使得嵌入系统 ()*+,--,- ’./0,*) 具备了性能高、 体积小、 功耗低等特点, 嵌入系统的应用也因此 而迅速地发展起来。不同于传统设计方法, 嵌入系统的设计是 (13345670589 ’3,65:56 (90,;<70,- 25<6=50) 为基础的电路 以 1’(2 设计。 可编程逻辑器件在嵌入系统的设计过程中具有非常重要 的作用。可编程逻辑器件具有可快速修改电路逻辑的特点, 同 时良好的开发环境可以使设计者脱离繁复的底层设计。 这对缩 短嵌入系统的开发周期是至关重要的。 相对而言, 要求用于实现嵌入系统设计的集成电路具有较 高的集成度和较大的规模, 足以将整个嵌入系统装入单个芯片 单芯 中。 以 140,<7 公司的 1>)?!"@ 可编程逻辑器件系列为例, 片 的 规 模 可 达 $A" 万 逻 辑 门 、 B""@ 内 存 容 量 、 以 及 约 C"" 条 可 以 将 2>E 、 内存以及外围器件全部集成到芯片中。 (D 引 脚 , 另外, 与可编程逻辑器件相配合的集成开发环境, 为嵌入系统 的综合、 修改和调试提供了强大的支持。 在实际的嵌入系统应用中, 异步实时交互系统占了很大部 分, 这就要求系统对数据或控制信号的输入具有较高的响应速 度。而中断方式相对于查询方式具有响应速度快, 效率高的特 点。因此中断方式为多数嵌入系统所采用。而中断控制器也由 独立器件变为片上系统的一部分, 因此, 中断控制器的设计也 就成为嵌入系统设计的重要组成部分。 , 中断控制 由于嵌入系统多为片上系统 ( ’./0,*FD9F2G53 )
嵌入系统中断控制器的设计
刘建华 杨 勋 边计年 薛宏熙 (清华大学计算机科学与技术系, 北京 $"""CB )
)F*754: 45=MGNNO*754/#0/59;G=7#,-=#69
摘 要 嵌入系统不同于以往的通用系统, 它具有高集成度、 高专用性的特点。嵌入系统的设计者不再使用通用的中断
控制器芯片, 而是必须设计出适应于该嵌入系统需要的中断控制器模块。 该文阐述了嵌入系统中断控制器高层次设计的 设计思路和设计方法。对嵌入系统中断控制器的设计具有较好的指导作用。 关键词 中断 嵌入系统 高层次综合 可编程逻辑器件 文献标识码 1 中图分类号 Q>PP!
中断服务例程也是存放在内存中的一段代码, 中断服务例程的 启始地址也成为对中断分类的一个标准。 如果某个中断的服务 例程的启始地址是一个固定地址,则称这种中断为直接中断。 如果某中断发生后, %&’ 从总线读入一条转入服务例程的指令 (如 )*+ 指令) , 则称这种中断为向量中断 , 被读入的指令称为 中断向量。 如果服务例程的启始地址由某寄存器 (或寄存器组) 的值决定, 则称这种中断为间接中断。
图$
程序流程对中断的响应
基金项目: 国家自然科学基金 (编号: ; 国家 NXP 重点基础研究发展规划项目 (编号: W""XW"$W ) Y$NNC"P"B"P ) 作者简介: 刘建华, 清华大学计算机科学与技术系硕士研究生。
计算机工程与应用 !""!#"$ $!A
根据不同的触发方式、屏蔽方式和中断服务例程调用方 式, 中断可分为不同的类型。 针对不同的中断类型, 中断控制电 路也需要进行不同的设计。中断的具体分类如下:
( 中断控制器的设计 (#$ 中断控制器的结构
中断控制器通常由 , 个模块构成, 图 ! 表示了 , 个模块的 互连关系。中断状态寄存器中保存着可屏蔽中断的屏蔽标志, 程序可以通过改变状态寄存器的值允许或禁止某中断的发生。 预编码模块接收中断请求, 并根据当前的标志状态, 给出表示 当前的中断状态的编码表示。在每条指令的最后一个机器周 期, 表示中断请求的预编码被中断采样控制模块采样。如果有 中断发生则在锁存预编码后产生中断响应,使预编码模块复 位, 同时产生其他控制信号使程序流转向中断服务例程。根据 控制模块锁存的预编码, 中断地址产生模块产生中断服务例程 的启始地址送到总线上。
?2#*+8@*: R5::,<,90 :<8* ;,9,<74F3=<38/, /./0,*, ,*+,--,- /./0,* 07I,/ 89 /8*, ;88- :,70=<, , /=6G 7/ G5;G 590,;<70589 79- G5;G /3,65745T70589#(9 ,*+,--,- /./0,*, /./0,* -,/5;9,</ -8 980 =/, 7 /,37<70, ;,9,<74F3=<38/, 6G53 7/ 79 590,<U <=30589 6890<844,< 6G53 79. 489;,<; 0G,. *=/0 -,/5;9 79 73345670589F/3,65:56 590,<<=30589 6890<844,< 7/ 7 37<0 8: /./0,*# QG5/ 373,< 3<838/,/ 0G, *,0G8- 59 G5;GF4,L,4 -,/5;9 8: 79 ,*+,--,- /./0,* 590,<<=30589 6890<844,<#(0 5/ G,43:=4 08 0G, -,/5;9,< 8: 0G, ,*+,--,- /./0,*# A"5B’+3#: (90,<<=30589 , )*+,--,- /./0,*, V5;GF4,L,4 /.90G,/5/, ><8;<7**7+4, &8;56 R,L56,
!#!
中断
按屏蔽方式,中断分为可屏蔽中断和不可屏蔽
由于中断的发生是异步的, 主程序随时有可能被中断服务
(#!
中断标志寄存器模块的设计
中断标志寄存器通常由中断掩码 (-.*/ ) 、 中断允许标志
位和未处理中断标志位组成。当中断允许标志位为禁止中断 时, 所有可屏蔽中断都将被屏蔽。当中断允许标志位为允许中 断时, 各个中断根据自己的掩码标志决定是否被屏蔽。中断掩 码和中断允许标志位, 将被预编码模块作为编码的依据。未处 理中断标志表示了当前已经发生但尚未被 %&’ 处理的中断。 由于未处理中断标志是只读的, 因此中断标志寄存器在读 中断标 取和写入时的含义通常是不同的。以 01234 5"56 为例, 志寄存器的读写格式如图 ( 所示。 -7#6 、 -8#6 和 -6#6 为 可 屏 蔽中断 )*+7#6 、 )*+8#6 和 )*+6#6 的中断掩码。由于 )*+7#6 是 边沿触发,因此需要 )7#6 位对 )*+7#6 中断锁存器进行复位, 此信号是只写的。在读标志寄存器的时候, 未处理中断标志位 及中断允许标志位 (09 ) 将被读出。由于中断标 (0#76 、 08#6 、 06#6 ) 志未用满寄存器的全部 5 位, 在 01234 5"6" 中 , 中断标志和串 行数据 0 : ; 是共享同一寄存器的。 *0< 、 *;< 和 *;9 信 号 是 串 虽 行通讯使用的信 号 , -*9 是 中 断 掩 码 操 作 的 使 能 位 。 另 外 , 然中断允许位是可设置的, 但 01234 5"56 却没有采用对标 志 寄 存器直接写入的方法, 而是利用两条单独的指令对中断允许位 进行设置。
在直接中断中, 跳转地址固定, 取指快, 适用于中断服务例 程单一简单的情况。如果在中断发生后, 还需要根据某些参数 决定使用哪个服务例程, 则可以采用向量中断, 向量中断具有
$!8 !""!#"$ 计算机工程与应用
被复位, 即系统复位或中断响应时, 锁存器应被清零。 需要说明 的是, 通常在系统复位时中断锁存器也应被清零, 因此中断锁 存 器 的 清 零 信 号 一 般 也 是 由 中 断 响 应 信 号 与 ,-. 复 位 信 号 “或” 运算后产生。 /)0)’ 进行
(!""! ) 文章编号 $""!FCPP$F "$F"$!AF"P
!"#$%& ’( )&*"++,-*$’& .’&*+’//"+ $& 012"33"3 45#*"1
6$, 7$8&9,8 :8&% ;,& <$8& 7$&$8& ;," =’&%>$
(R,37<0*,90 8: 28*3=0,< ’65,96, 79- Q,6G9848;. , Q/59;G=7 E95L,</50., S,5M59; $"""CB)
例程打断。而当主程序在进行某些重要运算时, 中断服务例程 的插入将有可能改变某些临时寄存的数据, 造成主程序的运行 发生错误。 因此在主程序某段代码的运行过程中就可能需要屏 蔽中断, 通过设置屏蔽标志对中断暂时不做响应。能够被屏蔽 掉的中断称为可屏蔽中断。 而另一类中断是在任何时候都不可屏蔽的, 称为不可屏蔽 中断。 一个比较典型的例子是掉电中断, 当发生掉电时, 无论主 程序正在进行什么样的运算, 它都肯定无法正常运行下去。这 种情况下,急需进行的是一些掉电保护的操作。对这类中断,
的中断触发方式, 图 , 显示了不同中断的有效判别逻辑。针对
图! 中断控制器的模块结构
( 高有效) , 信号可直接经过非门 被 引 入 (1$ 电位触发中断 0=+$ 低有效) ; 针 对 边 沿 触 发 中 断 0=+! (上 升 沿 有 效 ) , 信号应被锁 ; 针 对 边 沿 触 发 且 需 要 保 持 的 中 断 0=+( 存器锁存 (1! 低 有 效 ) (上升沿并保持) , 信号被锁存后还再与信号本 身 做 与 (1( 低 有 效) 。 对边沿触发的中断来说, 被锁存的信号应当在适当的时候
图(
01234 5"56 中断标志寄存器读写格式
值得注意的是, 当某中断被处理时, 为防止其它中断的干 扰, 中断允许位应关闭。 因此在设计标志寄存器时, 既可以采用 收到中断响应信号后自动关闭中断允许位的策略, 也可以由中 断服务例程本身选择是否关闭中断允许位。
(#(Baidu Nhomakorabea
预编码模块的设计
预编码模块首先要判断中断信号的有效性。 针对前面所述
!
关于中断
几乎所有 2>E 都有至少一个中断输入引脚,在每条 指 令
的最后一个机器周期 (&7/0 H76G59, 2.64, ) 2>E 对 中 断 请 求 进 行采样, 并对中断进行响应。 如果此时允许中断, 除给出中断响 外, 应信号 ((90,<<=30 16I98J4,-;, ) 2>E 还 应 该 转 入 一 个 指 定 ((90,<<=30 ’,<L56, K8=059, ) 为中断进行服 的 中 断 服 务 例 程 (’K 务, 如进行传输数据等等。图 $ 显示了 2>E 执行中断服务例程 的过程。由于中断服务例程可能在任意指令周期间插入主程 序, 因此过于频繁的中断可能引起主程序实际上失去对程序流 的控制。这是中断设计时必须考虑的问题。
$
引言
随着 %&’( 技术进入深亚微米时代,芯片集成度得到空前
部分不再由独立的通用中断控制芯片构成, 这就需要系统开发 者根据特定的中断类型设计专用的中断控制器逻辑, 应用于嵌 入系统中。该文将在对中断的类型特点进行介绍之后, 阐述中 断控制器的模块结构以及针对不同类型中断的设计方法及其 实现。该文的重点将着眼于高层次的设计。
一定的灵活性。间接中断相对于向量中断具有更高的灵活性, 适用于更加复杂的情况。
!#$
按触发方式,中断分为电位触发中断和边沿触
电位触发方式用一段持续的高电位 (或 低 电 位 ) 表示中断
发中断
请求。这就要求中断请求信号要有足够长的保持时间, 要保持 到当前指令的最后一个机器周期,以保证 %&’ 采样时中断请 求有效。另一方面, 在收到 %&’ 的中断响应信号后, 中断设备 应将中断请求信号复位, 避免误操作。 边沿触发方式是以一个信号的上跳沿 (或 下 跳 沿 ) 表示中 断请求。 %&’ 应对中断请求进行锁存。为防止干扰信号触发中 断,有的边沿触发方式要求中断信号在跳变后维持一段保持 时间。 采用哪种中断触发方式主要取决于中断设备自身的特性。
%&’ 应随时进行响应。
不可屏蔽中断不应过多,只有对一些需要紧急处理的、 不 常发生的事件才可以应用不可屏蔽中断。 不恰当的设置不可屏 蔽中断, 可能影响主程序的正常运行。
!#(
按中断服务例程调用方式分,中断分为直接中
当 %&’ 对中断进行响应的时候, 中断服务例程将被执行。
断、 间接中断和向量中断
相关文档
最新文档