采用硬件加速发挥MicroBlaze处理能力

  作者:Karsten Trott博士 赛灵思(德国慕尼黑) 现场应用工程师 时间:2010-03-09来源:电子产品世界

  例如,使用位反转IP,只需一个写入信号即可。IP会一直很快运行,足以对MicroBlaze的任何请求做出及时响应。

  IP本身非常简单。以下是摘录 VHDL 代码中的一段:

architecture behavioral of
  fsl_bitrev is
  -- data value sent by microblaze:
  signal data_value :
std_logic_vector(0 to 31) := (others=>'0');
begin
  -- bitreversed value to write back:
FSL_M_Data <= data_value;
process(FSL_Clk)
begin
  if rising_edge(FSL_CLK) then
     if (FSL_S_Exists = '1') then
       -- create the bitreversed data:
   data_value(0) <= FSL_S_Data(31);
   data_value(1) <= FSL_S_Data(30);
   data_value(2) <= FSL_S_Data(29);
...
 data_value(30) <= FSL_S_Data(1);
 data_value(31) <= FSL_S_Data(0);
   end if;
end if;
end process;
end architecture behavioral;
如果在两者之间没有使用 FSL总线的情况下添加这个IP,您必须对项目的MHS文件进行如下修改:
BEGIN microblaze
 ...
 PARAMETER C_FSL_LINKS = 1
 ...
PORT FSL0_S_EXISTS = net_vcc
 PORT FSL0_S_DATA = FSL0_S_DATA
 PORT FSL0_M_DATA = FSL0_M_DATA
 PORT FSL0_M_WRITE = FSL0_M_EXISTS
 PORT FSL0_M_Full = net_gnd
END
BEGIN fsl_bitrev
PARAMETER INSTANCE = fsl_bitrev_0
 PARAMETER HW_VER = 1.00.a
 PORT FSL_S_DATA = FSL0_M_DATA
 PORT FSL_S_EXISTS = FSL0_M_EXISTS
 PORT FSL_M_Data = FSL0_S_DATA
 PORT FSL_M_Full = net_gnd
 PORT FSL_Clk = clk_50_0000MHz
END

  现在效率显著提高。硬核仅在两个周期内可完成位反转操作:一个周期用于把数据写入IP,另一个周期则负责读回结果。处理2万个位反转操作现在只需0.8ms。

  与最初采用的算法相比,效率提升了110倍。与效率最高的最新软件算法相比,此算法仍使系统性能提升了11倍。

  当然,本例只有在您的CPU不提供位反转寻址功能的情况下才有效。大多数 DSP都有此功能,但大多数微控制器都不具备这个功能。具备增加这个功能的特性可大幅度提升这种算法的处理速度。

  虽然修改不大,但收效十分明显。我们甚至将代码压缩到两个字大小。当然,现在硬件要求增加一些芯片。不过以此为代价获得比任何标准微控制器更高的速度,是值得的。

1 2 3 4 5 6

关键词: Xilinx FPGA 处理器 硬件加速 MicroBlaze FPU 201003

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版