新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 一种基于FPGA的栈空间管理器的研究和设计

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

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

  
  3器设计
  
  为了快速、有效地保护被切换任务的信息,并满足自动检验功能的要求,在器设计中设计了2个逻辑模块,分别为状态控制逻辑模块和地址产生逻辑模块。状态控制逻辑模块主要生成入栈/出栈控制信号和Used信号,地址产生逻辑模块主要生成有效的入栈/出栈地址。基于对器总体结构工作过程的阐述,在Xilinx公司设计的XUPVirtexIIPro系列的芯片上设计一个模拟栈空间管理器,模拟管理8个任务,的深度为64,宽度为16bit,的深度为128,宽度为16bit,容量为10KB的堆栈空间。在设计管理器中,保证管理器快速综合,使占用的资源尽可能少,存储单元的选择是关键,该系统采用的是上一个18KB的BlockRAM资源,使用ISE8.2i提供的双端口RAM存储模块的IP核。如果选择其他方法,如用触发器和寄存器搭建存储单元,则综合时间长,且占用大量的Slices资源。
  
  在实际嵌入式系统应用中,根据系统要求,可计算出栈空间深度和宽度,具体的深度和宽度在VHDL代码中修改即可。
  
  3.1状态控制逻辑模块设计
  
  由于状态标志寄存器的空/满状态标志位决定栈空间入栈/出栈操作,所以如何设计空/满状态标志位是关键。为了保护的数据能正确入栈与出栈,防止存储器出现向上溢出或向下溢出,保证在满的情况下,不能进行push操作;在空的状态下,不能进行pop操作。控制信号的产生过程如图4所示。

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


  
  在状态控制逻辑模块设计时,prio_int信号驱动4个多路选择器,选择对应状态标志寄存器组中的各位段,分别有full信号值、empty信号值、fcount信号值和intNesting信号值。empty/full信号和push/pop信号作为组合逻辑输入信号产生相应的push_en/pop_en有效控制信号,该控制信号决定栈空间是否执行入栈/出栈操作。
  
  在push_en/pop_en控制信号有效的情况下,驱动二进制运算逻辑加/减1,输出运算结果。输出的信号值有3个用途:(1)作为空/满标志状态产生逻辑的输入信号,该信号逻辑产生empty/full信号;(2)写回到fregx对应的fcount位中;(3)作为Used输出信号值,表示当前的使用情况。
  
  在产生empty、full信号逻辑模块设计时,采用了对输入信号的每一位进行组合逻辑判断的方法,使该信号分两路,一路作为与门组合逻辑的输入信号产生full信号。如果输入信号的每一位都为1,则full信号置1,其他情况置0;另一路作为或门非组合逻辑的输入信号产生empty信号。如果输入信号的每一位都为0,则empty置1,其他情况置0。在整个逻辑模块设计中,采用组合逻辑设计,目的是缩短工作时延,提高系统工作频率。



评论


相关推荐

技术专区

关闭