新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 采用硬件加速發(fā)揮MicroBlaze處理能力

采用硬件加速發(fā)揮MicroBlaze處理能力

作者:Karsten Trott博士 賽靈思(德國慕尼黑) 現場應用工程師 時間:2010-03-09 來源:電子產品世界 收藏

  例如,使用位反轉IP,只需一個寫入信號即可。IP會一直很快運行,足以對的任何請求做出及時響應。

本文引用地址:http://butianyuan.cn/article/106702.htm

  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倍。與效率最高的最新軟件算法相比,此算法仍使系統(tǒng)性能提升了11倍。

  當然,本例只有在您的CPU不提供位反轉尋址功能的情況下才有效。大多數 DSP都有此功能,但大多數微控制器都不具備這個功能。具備增加這個功能的特性可大幅度提升這種算法的處理速度。

  雖然修改不大,但收效十分明顯。我們甚至將代碼壓縮到兩個字大小。當然,現在硬件要求增加一些芯片。不過以此為代價獲得比任何標準微控制器更高的速度,是值得的。



評論


相關推薦

技術專區(qū)

關閉