首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
基于FPGA的μC/OS-II任务管理硬件设计
来源:本站整理  作者:佚名  2010-05-05 15:15:41



在图2中,任务管理系统调用的硬件实现电路主要由分配器、选择器和TCB寄存器组成。
    (1)分配器。建立任务和删除任务时,分配器根据任务的ID号选择建立任务的信息送到对应的输出通道上,分配器的输出端与多路选择器的一路输入端直连,即参数1被送到了选择器的输入端,作为一路输入。挂起任务和恢复任务时,分配器根据任务的ID号,将任务的状态送到对应TCB的状态寄存器中。
    (2)选择器。选择器的输入端分别是建立任务时要送给 TCB的数据(参数1)和删除任务时要送给TCB的数据(系统初始值),数据输出端与一个TCB块直连。建立信号有效时,选择参数1写入TCB,建立任务完成;否则,写入系统的初始值覆盖TCB信息,即任务被删除。挂起和恢复任务只需根据任务的ID号找到相应的TCB并修改其状态寄存器的值。二值选择器的输入端是0和1,可以分别表示任务的等待和就绪状态。
    (3)TCB寄存器。在软件实现的RTOS中,空闲TCB块和已占用的TCB块分别以空闲任务链表和任务链表的形式常驻内存。但是基于链表的软件算法并不适合直接采用硬件高效实现,因为只有读取链表的前一个表项的内容后,才能获得后续表项的地址,限制了硬件并行的开发。因此,本文将TCB的数据结构全部采用片内的寄存器资源实现,从而节省了链表的查找时间,提高了系统调用的执行效率。
2.2 任务调度器的硬件设计
    μC/OS-II进行任务调度的思想是,每时每刻总是让优先级最高的就绪任务处于运行状态。为了实现高效的调度算法,采用组合电路实现硬件调度器,如图3所示。以优先级为选择条件,将TCB中的状态寄存器直接与调度器相连接。这样,只要任务的优先级或任务的状态有一个发生改变,就会立刻引发一次任务的的重新调度。

    图3中,数据分配器与TCB寄存器中的状态寄存器RDY输出端直连,使用优先级PRI作为选择条件,将RDY的就绪态(RDY=‘1’)分配到不同的输出通道上。寄存器REG_X接收数据分配器输出通道的输出值并按位存储。将所有的REG_X寄存器按位进行或运算,结果送寄存器PRI_REG。如图4所示,优先级寄存器PRI_REG的位数对应系统中任务的个数,寄存器PRI_REG某位为1就表示相应优先级的任务处于就绪态,且低位的优先级依次高于高位的优先级。译码器从寄存器读取PRI_REG的值进行译码,送出处于就绪态且优先级最高的任务。比较器PRI_COMP以任务的ID号为索引,任务的优先级PRI为比较内容。将每个任务的优先级与译码找到的就绪态的最高优先级相比较,若相同,则输出任务的ID号,否则输出0。最后将所有比较器PRI_COMP的输出做或运算,即得到处于就绪态的优先级最高任务的ID号。

    假设在某一时刻,系统中优先级PRI为1、2、3、6和7的任务处于就绪态,对应任务的ID号分别是010、100、001、110和111,则调度器中的数据处理流程如图5所示。

2.3 仿真及实验结果
      整个设计采用VHDL硬件语言描述。为了验证该硬件实现的正确性和高效性,使用 ISE 8.2软件进行时序仿真验证。任务管理硬件实现的功能仿真如图6所示。

      (1)建立任务。依次建立3个任务,优先级与ID号相同分别为7、1和6。若系统中只有优先级为7的任务处于就绪态,则Next_task_id为7;当建立了优先级为1的任务时,高优先级任务剥夺低优先级任务的CPU使用权,Next_task_id为1,直到有更高优先级的任务到来,或任务自身删除,优先级为1的任务将一直执行。
      (2)查询任务。处理器通过查询任务这个系统调用获得任务自身或其他应用任务的信息,查询即将TCB的内容输出。
      (3)挂起任务。挂起优先级为1的任务,则优先级为6的任务开始执行。挂起的任务处于等待状态,只有通过调用任务恢复函数才能恢复。
      (4)建立任务。建立优先级分别为5、2和4的3个任务。优先级为5的任务剥夺优先级为6的任务的CPU使用权,优先级为2的任务又剥夺优先级为5的任务的CPU使用权开始执行,优先级为4的任务等待。
    (5)删除任务。删除了优先级为2的任务,此刻系统中优先级为4的任务开始执行。
    (6)恢复任务。恢复优先级为1的任务,优先级为1的任务剥夺优先级为4的任务的CPU使用权又重新开始执行。
    从图6可以看出,硬件实现可以高效完成操作系统任务管理的系统调用的功能。建立任务和删除任务需要3个时钟节拍,挂起任务、恢复任务和查询任务的状态需要1个时钟节拍。任务调度是实时的,只要任务的状态或优先级有一个发生改变,就立刻重新调度。该设计所消耗的逻辑资源较少,降低了开发成本,使其集成组件成为可能。
    本文针对传统实时操作系统内核占用系统资源、影响系统实时性的问题,提出了用单独的硬件电路实现实时操作系统中的系统调用和任务调度器的方案。重点给出了采用FPGA实现μC/OS-Ⅱ任务管理模块的过程。仿真结果表明,任务管理的硬件实现保持了系统调用的正确性,同时减少了系统调用的执行时间、降低了处理器系统开销。因此,硬件RTOS的实现,具有一定研究和使用价值。

上一页  [1] [2] 

关键词:

·上一文章:基于FPGA的可调信号源设计
·下一文章:优化光伏系统

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:55,265.63000 毫秒