FPGA 解決方案和標準控制器內核比較

2020-12-17 電子產品世界

 MicroBlaze處理器是賽靈思(Xilinx)在嵌入式開發套件 (EDK) 中提供的兩款32位內核之一,是實現硬體加速的靈活工具。圖1是MicroBlaze的典型設計。該內核含有一個32位乘法器,但不含浮點單元(FPU)、桶式移位器或專用硬體加速器。對Xilinx公司Spartan FPGA 器件而言,默認系統含有區域優化的MicroBlaze(採用三級流水線),但大多數客戶通常在開始時使用速度優化版(採用五級流水線)進行性能評估,其優點是小巧簡潔,易於擴展。

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

  Xilinx客戶針對這種處理器設計所要求的兩個實際應用案例可說明MicroBlaze在硬體加速方面的作用。本文以 Spartan 器件為重點,比較 FPGA 解決方案標準控制器內核,展現我們能夠達到的性價比。這一方法同樣適用於Virtex FPGA

  案例1:實施位反轉算法

  在第一個應用示例中,假定MicroBlaze處理器的運行速度僅為50MHz。採用 Spartan-3或Spartan-6器件可輕鬆實現這一速度。諸如本地存儲器總線(指令和數據,LMB)以及處理器本機總線(PLB)等所有內部總線的運行速度均達到50MHz。為簡單起見,假定沒有連接外部DDR存儲器。

  現在假設客戶想要在這個CPU上實施位反轉算法。MicroBlaze自身沒有通過硬體直接提供這個功能。再假定每秒需要完成2萬次位反轉操作。

  要解決這個問題,大多數客戶首先會採用純軟體方案,因為這樣可輕鬆地實現想要的功能。而且如果性能足夠高,無需進行任何修改。

  為此,讓我們先從簡單的軟體算法出發,實施簡短精悍的解決方案。結果確實簡單、精巧而且容易理解,不過效率很低。
unsigned int v=value;
unsigned int r = v;
int s = sizeof(v) * CHAR_BIT - 1;
for (v >>= 1; v; v >>= 1)
{
r = 1;
r |= v 1;
s--;
}
r = s;
return r;

  這段程序運行相當順利,不過就算在專門針對速度優化的MicroBlaze(使用五級流水線)上運行處理一個32 位字的算法,也用了220個周期。要執行2萬次位反轉操作,在速度為50MHz的MicroBlaze上約需88ms。

  客戶試圖採用略有不同的方法來優化算法,但仍作為純軟體解決方案來實施。

  要進一步提升性能,就要採用純硬體解決方案,通過一種新的方式來讓硬體加速器充分發揮性能。

 為了加速這種基礎操作,只需要在MicroBlaze快速單工鏈路(FSL)上連接一個非常簡單的內核。標準FSL實施方案使用FSL總線(包括同步或異步FIFO)將數據從 MicroBlaze內核傳輸到FSL 硬體加速器IP核。帶FIFO 的FSL總線與FIFO可對上述兩者間的數據存取進行去耦。

  如果採用帶FIFO的標準FSL總線,則一般情況下執行時間為4個周期:一個周期用來將MicroBlaze上的數據通過FSL寫入FIFO;一個周期用來將數據從FIFO 傳輸到FSL IP;一個周期用來把結果從FSL IP傳送回 FSL總線的FIFO中;最後一個周期則負責從FSL總線讀出結果並傳輸至 MicroBlaze。

  MicroBlaze到FSL總線的連接以及FSL總線到FSL IP的連接可在EDK的圖形視圖中輕鬆創建。

  這樣代碼要長得多,效率也有大幅度提升,但時間還是太長了,執行2萬次操作現在仍然大概需要52ms。

  隨後客戶在網際網路上進行了一些調查,找到一種更好的算法,把代碼改編為:

unsigned x = value;
unsigned r;
x = (((x 0xaaaaaaaa) >> 1) | ((x
0x55555555) 1));
x = (((x 0xcccccccc) >> 2) | ((x
0x33333333) 2));
 x = (((x 0xf0f0f0f0) >> 4) | ((x
0x0f0f0f0f) 4));
 x = (((x 0xff00ff00) >> 8) | ((x
0x00ff00ff) 8));
 r = ((x >> 16) | (x 16));
 return r;

  這個代碼看起來效率高,短小精悍。而且它不需要會造成流水線中斷的分支。它在這個核心系統上運行只需29 個周期。

  不過這個算法需要在1 、2、4、8和16位之間進行移位操作。我們在MicroBlaze的屬性窗口中激活桶式移位器。不管移位操作的長度如何,採用桶式移位器可允許我們在一個周期內完成移位指令。這樣可以讓純軟體算法在 MicroBlaze上運行得稍快一些。

  激活MicroBlaze硬體上的桶式移位器可將處理算法所需時間縮短到22個周期。與第一個版本的軟體算法相比,此算法得到了顯著改善。目前採用此算法,執行所有 2萬次操作只需8.8ms,效率提升了10倍,不過仍未達到客戶要求。

  不過效率還有提升的空間。算法中的時延非常關鍵,應儘可能地縮短。但在我們的實施方案中,採用兩根FSL總線仍需要四個時鐘周期。不過我們可以通過將 MicroBlaze與硬體加速器之間的現有連接方式改為直接連接,便可將時延減半,縮短至兩個時鐘周期。這樣一個周期用於將數據寫入 FSL硬體加速器IP,而另一個周期則負責讀回結果。

  在採用直接連接方式時,需注意幾個問題。首先,協處理器IP應存儲輸入,並以寄存方式提供結果。請注意在執行此操作時沒有使用帶FIFO的FSL總線。

  此外,以不同時鐘速率運行 MicroBlaze和FSL硬體加速器IP 容易發生問題。為避免發生衝突,設計人員最好將MicroBlaze和 FSL硬體加速器IP的運行速率設為一致。

  不過,如何在不使用FSL總線的情況下將MicroBlaze和FSL硬體加速器IP直接連接起來呢?這很簡單,只需將MicroBlaze和硬體加速器的數據線連接起來即可。如果需要,可再添加握手信號。

  例如,使用位反轉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;


相關焦點

  • 以MSP432主機微控制器的軟體與硬體集成解決方案
    以MSP432主機微控制器的軟體與硬體集成解決方案 佚名 發表於 2018-03-12 09:08:55 隨著全球互聯程度的日益加深,嵌入式系統解決方案也在不斷增加新的連接選項
  • 電動自行車控制器設計方案
    Nuvoton MCU的電動自行車控制器設計方案以其良好的適用性、穩定性,電路簡單、性價比等特點和Nuvoton品牌優勢正在成為電動自行車控制器領域中的後起之秀。   Leadtrend通嘉科技推出綠色節能應用解決方案:
  • 基於SoC FPGA晶片的異步全彩LED顯示控制器解決方案
    圖1:中國LED顯示屏產值(數據來源:GLII)2 市場流行方案的介紹目前市場上比較流行的方案有以下幾種:1) ARM-CortexA8 + FPGA解決方案2) ARM Cortex-M4解決方案:3) FPGA解決方案:
  • 美高森美推出高集成度IGLOO2拓寬FPGA產品組合
    此外,IGLOO2器件的非易失性配置省去了外部快閃記憶體,提供了具有更高的系統集成度、性能和可靠性的系統架構。  美高森美已經與計劃在廣泛的產品中使用IGLOO2的主要客戶進行接洽,而這些客戶計劃的產品包括工業控制器、乙太網開關、FADEC引擎控制器、飛彈系統,以及其它應用。
  • CPLD對FPGA從並快速加載的解決方案
    單板調試階段常用JTAG模式,該方式需要控制器,FPGA等晶片JTAG接口構成菊花鏈,且在該模式下,控制器其他功能不能使用。  (2)從串方式。從串加載方式佔用資源少,主要是和FPGA相連的I/O接口較少,但是一個配置時鐘只能傳輸一個bit數據,速度相對較低。  (3)主從方式。
  • 基於Nios軟CPU內核的FPGA非線性校正方案
    基於FPGA 的非線性校正方法的實現方案有兩種對OFDM基帶信號實現非線性校正的方案。一種是基於FPGA,一種是基於DSP。基於FPGA方案的優點在於集成度高,而基於DSP在算法實現和調試方面更為方便[6]。
  • CORTEX-M3與STM32_M3內核STM32的三相多功能電能表解決方案
    電能表作為電能計量的基本設備,受到國家電力部門的長期重視,電能表生產企業更是不遺餘力地尋求設計與開發性能俱佳且成本更低的解決方案。Cortex-M3包含嵌套向量中斷控制器NVIC,中斷響應速度最快僅6周期,內部集成總線矩陣,支持DMA操作及位映射。
  • Arm技術文檔分享|Cortex-M 系列處理器Cortex-M3 DesignStart FPGA...
    Cortex-M3 DesignStart FPGA-Xilinx Edition相關文檔ARM Cortex-M 系列的 CPU 處理器內核(包括 ARM Cortex-M0、ARM Cortex-M1、ARM Cortex-M3 處理器)的 ARM 文檔集。
  • 如何使用CCG3PA控制器設計Type-C充電器和移動電源?
    如果採用PD,則可以升壓到20V 5A(100W),  USB PD的標準協議定義了15W、27W、45W、60W和100W,最大支持20V 5A也就是100W。 3 USB PD和USB Type-C的不同之處是什麼?
  • 賽普拉斯新增5款基於ARM Cortex-M 內核的微控制器系列產品
    作為嵌入式處理解決方案領域的領導者,賽普拉斯半導體公司今日宣布推出五款基於ARM® Cortex®-M為內核的微控制器產品,為其FM4 MCU系列新增3款高性能靈活MCU(S6E2C系列、S6E2G系列以及S6E2H系列),並且為FM0+產品線新增2款高能效MCU(S6E1B系列和S6E1C系列
  • 史上最經典電動自行車控制器設計方案
    永磁直流電機按照電機的通電形式來分,可分為有刷電機和無刷電機兩大類,有刷電機由於採用機械換相裝置導致可靠性和壽命降低,因此逐漸退出電動車市場。  無刷電機又可分為有傳感器和無傳感器兩類,對於無位置傳感器的無刷電機,必須要先將車用腳蹬起來,等電機具有一定的旋轉速度以後,控制器才能識別到無刷電機的相位,然後控制器才能對電機供電。
  • 基於STM32微控制器處理先進電機控制方法
    本文將探討基於ARM的標準微控制器如何在一個被DSP和FPGA長期壟斷的市場上打破複雜的控制模式,我們將以意法半導體的基於Cortex-M3 內核的STM32系列微控制器為例論述這個過程。 首先,我們回顧一下電機控制的基本原理。在電機控制系統內,為什麼處理器非常重要?我們為什麼需要非常好的計算性能?
  • CMSemicon首款RISC-V內核MCU問世 集成模擬外設簡化設計
    > 近日,專注混合信號SoC創新研發者中微半導體(深圳)股份有限公司(以下簡稱CMSemicon),宣布正式發布首款集成RISC-V內核的32位微控制器-ANT32RV56xx。
  • 基於JTAG接口實現ARM的FPGA在線配置
    引 言   隨著通信技術的發展,出現越來越多的無線接入技術,為了解決不同標準間的互通和兼容,人們提出了軟體無線電(Software Defined Radio,SDR)技術。
  • Mentor Graphics憑業界領先能力推出適用於微控制器和多核應用的...
    Nucleus RTOS 進程模式已擴展了對於基於ARM® Cortex® M內核的支持。軟體開發人員首次可以使用單一的嵌入式作業系統,通過整個ARM內核的內存分區來提高系統可靠性,促進整個產品系列(包括高低端設備)的代碼復用。
  • 計算機藍屏問題與解決方案
    0x00000077:KERNEL_STACK_INPAGE_ERROR 錯誤分析:說明需要使用的內核數據沒有在虛擬內存或物理內存中找到,這個錯誤常常是磁碟有問題,相應數據損壞或受到病毒侵蝕。 解決方案:使用殺毒軟體掃描系統,使用「chkdsk/r」命令檢查並修復磁碟錯誤,如不行則使用磁碟廠商提供的工具檢查修復。
  • 無線遙控器的IR應用解決方案
    使用藍牙,ZigBee和更簡單的方法(如頻移鍵控(FSK),幅移鍵控(ASK)或開關鍵控(OOK))的各種RF方法允許遙控器提供IR無法提供的功能和功能。表1提供了各種無線RF方法的簡單比較。簡單的OOK/ASK電路使收發器和接收器解決方案的實施成本非常低廉。但是,沒有可以圍繞其設計系統的通信標準,因此每個系統供應商基本上設置它們自己的頻率和數據接口。因此,每個系統解決方案都是「唯一的」,導致設計用於一個系統的控制不能與來自另一個系統的控制交換。
  • 系統級晶片(SoC)的複雜設計選擇:內核、IP、EDA和NoC
    為了更快地執行複雜任務,一些SoC還採用了多個處理器內核。SoC的功能、性能和應用越來越複雜,對晶片設計和晶圓製造也提出了更高的要求。jscEETC-電子工程專輯不同的SoC類型有不同的應用場景,圍繞微控制器(MCU)構建的系統級晶片一般用於計算性能要求不高的消費電子、家電和IoT產品。
  • 如何選擇更適合你的ARM Cortex內核?
    >  Cortex-A處理器為利用作業系統(例如Linux或者Android)的設備提供了一系列解決方案,這些設備被用於各類應用,從低成本手持設備到智慧型手機、平板電腦、機頂盒以及企業網絡設備等。升級到64位的原因之一顯而易見是為了支持大於4GB的物理內存,儘管Cortex-A15和 Cortex-A7已經具備此能力。在這種情況下,升級到64位其實是為伺服器應用提供更好的支持,伺服器中越來越多的作業系統和應用程式都採用64位,當然,Cortex-A50系列為上述情況提供了功耗優化的解決方案。
  • 採用直接PCF方法實現的電機控制解決方案
    本文描述了飛思卡爾MC56F8013數位訊號控制器(DSC)上面向PFC的平均電流模式控制。除了節省功率和滿足電流標準外,採用PFC還有其它各種原因。PFC可以減少諧波失真,諧波失真可能導致發電設備中的工作溫度升高,而較高的溫度又可能縮短旋轉機器、電纜、變壓器、電容器、保險絲、開關觸點和電湧抑制器等設備的使用壽命。