經(jīng)過優(yōu)化的低成本FPGA中的高性能DSP功能
通用的DSP芯片和FPGA是實現(xiàn)DSP功能的兩種普遍的方法。每種方法都各有優(yōu)點,其最適宜的方法因應用要求的不同而各異。本文論述了通用DSP的功能,闡述了通用DSP和FPGA之間的差異,比較了現(xiàn)有的用FPGA實現(xiàn)DSP的解決方案,最后介紹了LatticeECP2M DSP的結構以及實現(xiàn)DSP的設計方法。
通用的DSP解決方案與FPGA實現(xiàn)方法的對比
帶有加法、減法或累加運算的乘法器是大多數(shù)DSP應用的核心。通用DSP芯片把這些功能的有效實現(xiàn)方法和一個通用微處理器結合在一起。乘法器的數(shù)目一般為數(shù)個,微處理器將數(shù)據(jù)串行地實現(xiàn)乘法或其它功能,中間結果存放在存儲器或累加器中。性能的提高主要通過提升用于乘法的時鐘速度來實現(xiàn)。典型的時鐘速度從數(shù)十MHz到1GHz。其性能,用每秒百萬次乘法累加(MMAC)來衡量,通常為10到4000。更高性能要求的功能不得不分拆在多個DSP引擎中實現(xiàn)。這些芯片的價格從低端性能的幾美元到高端性能的數(shù)百美元。這種方法的優(yōu)點是能夠直接實現(xiàn)用諸如C這樣的高級編程語言編寫算法。
面向DSP的FPGA能在一個芯片上并行地實現(xiàn)許多功能。通用的布線、邏輯和存儲器資源用來實現(xiàn)各個功能之間的互連、實現(xiàn)額外的功能、定序或在必要的情況下存儲數(shù)據(jù)。一些基本的器件僅提供乘法器,需要用戶用邏輯構造所有其它的功能。更多的高級器件提供加法、減法和累加功能,作為一整套DSP構造模塊的一部分。FPGA通常擁有數(shù)十個乘法單元,可以在數(shù)百MHz的時鐘速度下工作。例如,LatticeECP2-70 FPGA擁有88個18x18的乘法器,運行速度可達325MHz,性能達到每秒28600MMAC。
設計者經(jīng)常要實現(xiàn)結構化的DSP功能,這在FPGA內要占用大量的計算資源。通常在FPGA內實現(xiàn)的結構化功能為:有限脈沖響應濾波器(FIR)、無限脈沖響應濾波器(IIR)、快速傅立葉變換(FFT)和混頻器。每種功能都需要將乘法單元與加法、減法和累加結合在一起。圖1和圖2分別是典型的FIR濾波器和快速傅立葉變換(FFT)的實現(xiàn)方式。
目前在低成本FPGA中實現(xiàn)DSP功能有幾種方法。第一種方法是使用器件內的查找表(LUT)。這個方法提供相對低的性能而且占用許多FPGA資源。另外一種方法是在FPGA中用硬核實現(xiàn)乘法器。這減少了實現(xiàn)DSP所需的FPGA資源。然而正如前面所述,在FPGA中實現(xiàn)的大多數(shù)DSP功能需要在 乘法器之后進行加、減和累加。這些功能要占用大量的FPGA資源,最后的數(shù)據(jù)寬度可達36位。因此經(jīng)常會在設計中形成瓶頸。為了面對這個挑戰(zhàn),最新的FPGA利用有效的硬邏輯在乘法器之后進行可編程加、減和累加。用這種方法實現(xiàn)DSP功能后,大大減少了通用資源的使用,并能獲得很高的性能。
LatticeECP2/M器件結構
LatticeECP2和LatticeECP2M系列重新定義了低成本FPGA,在更低的成本下?lián)碛懈嘧罴训腇PGA特性。器件含有sysDSP塊和工程預制的源同步I/O。在LatticeECP2M中有高達5.3M位的RAM塊、在LatticeECP2中有高達1.1M位的RAM塊。在LatticeECP2M中有3.125Gbps嵌入式SERDES,支持PCIexpress、Ethernet (1GbE 和 SGMII)以及多個其它標準。集成了以前只有高成本、高性能FPGA才有的特點和性能,這些系列的產品極大地擴展了利用低成本FPGA的應用范圍。
LatticeECP2/M器件由一個低成本的FPGA結構加上3個~42個sysDSP塊構成(圖3為sysDSP塊)。圖4是ECP器件的整體結構圖。圖中紅色部分是sysDSP塊,專門用來實現(xiàn)DSP的功能。LatticeECP2/M系列中的sysDSP塊支持三種數(shù)據(jù)寬度下(9、18和36)的四種功能單元。用戶為一個DSP塊選擇一種功能單元,然后選擇數(shù)據(jù)寬度和操作數(shù)的類型(帶符號/無符號)。sysDSP塊中的操作數(shù)可以是帶符號或者無符號的,但在一個功能單元中不可以混合使用。類似的,操作數(shù)的寬度在一個塊中必須相同。每個sysDSP塊中的資源可以經(jīng)過配置支持下面四種單元:
● MULT(乘法)
● MAC(乘法、累加)
● MULTADD(乘法、加/減)
● MULTADDSUM(乘法、加/減,累加)
每個塊中可用的單元數(shù)目取決于數(shù)據(jù)寬度。該寬度有三種數(shù)值可供選擇:x9,x18和x36。數(shù)個這樣的單元可以連接起來,從而以并行方式實現(xiàn)DSP功能。
DSP設計方法
Lattice提供便捷的方法讓設計者處理sysDSP塊的這些性能,下面分別敘述這些方法:
●ispLEVER工具中的Module/IP Manager是一個圖形接口,可以迅速地產生實現(xiàn)DSP單元的模塊。這些模塊可以在HDL設計中被適當?shù)夭捎谩?BR> ●將特定的功能通過編代碼嵌入設計的HDL中,允許綜合工具推理出DSP塊的用法。
●采用一個Lattice Block套件在MathWork的 Simulink中實現(xiàn)設計。然后,ispLEVER軟件中的ispLeverDSP可以適當?shù)貙⑦@些模塊轉換成HDL。
●直接在源代碼中用實例說明DSP組件。
任何設計方法選擇取決于DSP運算規(guī)則的設計方法以及物理實現(xiàn)時所要求的控制程度。圖5展示了在MathWork的Simulink工具中使用Lattice Block套件的情形。
結語
DSP技術的應用將進一步發(fā)展。對DSP應用中典型功能的分析表明:乘法器、加法、減法和累加單元的組合是必需的。LatticeECP2/M器件把DSP塊和低成本的FPGA結構組合在一起。通過在sysDSP塊內實現(xiàn)加法、減法、和累加功能,有很高的性能和LUT的利用率。
評論