新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于FPGA的栈空间管理器的研究和设计

基于FPGA的栈空间管理器的研究和设计

作者:时间:2010-10-09来源:网络收藏

摘 要: 提出了一种将堆划分为任务栈和中断嵌套栈的设计结构,使堆最小化。采用VHDL硬件语言,在设备上模拟实现了具有自动检验功能的。栈空间由不同功能的逻辑模块组成,主要阐述了状态控制逻辑模块和地址产生逻辑模块的设计方法。

本文引用地址:http://www.eepw.com.cn/article/191537.htm

  航空航天、工业控制、汽车电子和核电站建设等领域的高速发展,对嵌入式操作系统实时性的要求越来越高。同时,由于的集成度和速度的不断提高,使嵌入式操作系统硬件化实现成为发展趋势。硬实时操作系统中的堆栈管理对系统的实时性和可靠性起着至关重要的作用,而传统操作系统内核是将每个任务的堆栈空间直接进行最大化处理,导致大量存储空间浪费,另外采用通用RAM寻址方式也不能满足对被切换任务信息的快速保护。

  基于上述问题,本文提出了一种堆栈空间结构,设计了一款具有自动检验功能的栈空间,并在Xilinx公司的集成开发环境系统上实现。

  1 堆栈空间结构

  堆栈空间是按先进后出(LIFO)原则分配的连续存储器空间,可以满足保护任务切换信息和中断响应时保护处理器状态和任务参数数据的需要[1],且对每个任务分配一个单独的任务栈和一个响应系统中断任务的中断嵌套栈。如图1所示,栈空间划分为n个任务栈和1个中断嵌套栈。


  任务栈主要保护被切换任务的信息。它存放的数据有:任务代码首地址、任务参数、任务中定义的局部变量、被调用函数的参数和局部变量及任务中各个函数的返回地址。中断嵌套栈存放被中断任务的数据,包括发生中断时需要保存的上下文、中断嵌套时需要保存的上下文和中断服务程序的局部变量。

  在硬实时操作系统中,当发生中断或中断嵌套时,堆栈地址指针从任务栈切换到中断嵌套栈。当所有的中断服务程序全部执行完成后,堆栈地址指针从中断嵌套栈切换到任务栈,继续执行该被中断的任务。这种管理方式同以往操作系统采用被中断任务的数据保存到相应任务堆栈的方法相比,更有效节约了堆栈空间开销。

  2 栈空间管理器总体结构

  为了节约RAM开销,从总体结构上构建了一款具有LIFO及自检功能的栈空间管理器。栈空间管理器结构包括一个双端口存储单元、状态控制逻辑模块、地址产生逻辑模块、中断判断逻辑。其中状态控制逻辑模块由空/满标志产生逻辑、二进制运算逻辑和标志寄存器组3部分组成;地址产生逻辑模块由读/写地址逻辑、中断栈逻辑和地址寄存器组3部分组成。

  由图2可知,状态控制逻辑模块的工作过程为:从标志寄存器组中读出当前任务栈的使用量fcount信号值,fcount信号值传送至二进制运算逻辑。在读/写控制信号有效的情况下,二进制运算逻辑有效,修改fcount信号值,修改后的值作为USED的输出值,同时写回到标志寄存器的对应fcount位中。修改后的信号值也作为空/满标志产生逻辑的输入信号,空/满标志产生逻辑生成Full/Empty标志,并把该标志位写回到标志寄存器对应位Full/Empty中。其中标志寄存器freg的结构如图3所示,初始值为0000001000000000B。


上一页 1 2 3 下一页

关键词: FPGA 栈空间 管理器

评论


相关推荐

技术专区

关闭