摘要:為了使基于FPGA設計的信號處理系統具有更高運行速度和具有更優化的電路版圖布局布線,提出了一種適用于FPGA結構的改進型WALLACE TREE架構乘法器。首先討論了基于標準單元3:2壓縮器的改進型6:4壓縮器,根據FPGA中slice的結構特點通過在FPGA Editer軟件工具編輯,對該壓縮器進行邏輯優化,將其應用于FPGA的基本單元slice結構中。并對乘法器的其他部分結構優化整合,實現一個資源和性能達到合理平衡,且易于在FPGA中實現的乘法器。實際運行結果表明,該乘法器的關鍵路徑延時小于8.4 ns,使乘法器時鐘頻率和系統性能都得到很大提高。
關鍵詞:乘法器;WALLACE;FPGA;6:4壓縮器
在數字信號處理中,乘法器是整個硬件電路時序的關鍵路徑。速度和面積的優化是乘法器設計過程的兩個主要考慮因素。由于現代可編程邏輯芯片FPGA的集成度越來越高,及其相對于ASIC設計難度較低和產品設計周期短,受到很多廠家和研究機構的關注。利用它的可編程和可擴展性,可將傳統乘法器設計方法應用到FPGA芯片中。乘法器設計基本上是部分積的生成及其之間的相加的優化過程。針對FPGA內部固有結構的特點,本文著重介紹了一種基于WALLACETREE優化算法的改進型乘法器架構。根據FPGA內部標準獨特slice單元,有必要對WALLACE TREE部分單元加以研究優化,從而讓在FPGA的乘法器設計中的關鍵路徑時延得以減小,整體時鐘性能得以提高。也能夠使FPGA的面積資源合理優化,提高器件的整體資源利用率。
1 WALLACE TREE結構
WALLACE TREE是對部分積規約,減小乘法器關鍵路徑時延的一種算法。傳統WALLACE TREE結構的CSA(Carry Save Adder)陣列乘法器如圖1所示,其中“·”代表生成的多個部分乘積項,相應電路中用邏輯與門來實現。求和陣列將前面生成的多個部分積通過3:2 CSA壓縮器,將其壓縮成2個部分積,最后通過末級進位相加得到所需的最終乘積結果。圖中矩形框所示為3:2 CSA壓縮器,其電路邏輯等效于一個全加器結構。通過運算可知N個部分積,要經類似的log(2N/3)級3:2壓縮,就可得到2個部分積。
2 壓縮器的優化
由于FPGA內部的結構是固定的,沒有以上WALLACE TREE所需要的CSA標準全加器結構。因此,在傳統的FPGA電路綜合實現時,該CSA全加
器被綜合在FPGA內部查找表(LUT)和進位鏈中,占用了整個slice單元的資源。由于經典WALLACETREE結構不具有良好的對稱性且需要權重對齊等因素,勢必要增大FPGA電路的復雜度,增加大量的FPGA內部布局和布線資源,在FPGA中不規則的布局布線結構,也增大了關鍵路徑的時延。
為在FPGA中較好地實現WALLACE TREE結構,結合FPGA中最小標準單元的結構silce,對CSA全加器單元結構加以改進。如圖2所示,可將WALLACE TREE相鄰的平級3:2 CSA壓縮器合并成一個6:4壓縮器。該壓縮器只需使用1個FPGA的silce資源,就能實現其數字邏輯。下面以3×3乘法器為例,進行WALLACE TREE壓縮器的推導和優化。如圖2的第一個部分積,部分積低位空白應補0,高位空白位用該部分積的最高位補齊。
下面對2個3:2 CSA壓縮器合并成一個6:4壓縮器單元運算邏輯做理論推導,其中:
合并這兩項3:2壓縮為6:4壓縮時,A1B2和P23屬同級進位,在計算過程中可將這兩項的位置互換,因此上式可推導演化成:
3 改進CSA的FPGA實現
Xilinx提供了一項強大的用戶界面軟件工具FPGA Editer,可以通過手動編輯和修改FPGA最基本的標準單元slice結構,使其符合所需要的邏輯。圖3左邊是一個WALLACE TREE 6:4壓縮的整體結構,右邊是實現架構中一個6:4壓縮的FPGA內部標準單元slice。slice電路中虛線是器件原有的預布線,實線是根據實際電路邏輯手動編輯后slice內部電路布線。根據上一面的推導式(5)~(8),slice內部的2個查找表(LUT)單元被配置成2輸入異或門單元。為了使整體WALLACE TREE布線齊整,還將式(7)直通邏輯實現也在該級slice壓縮器中完成,其中輸入電平A1B2經過2個MUX和一個配置為1的常有效LATCH輸出到,形成一個直通電路。
從圖3可以看出,WALLACE TREE的6:4壓縮器單元只用一個slice就可以實現。而幾乎所有Xilinx的FPGA器件內部slice結構都類似,因此該6:4壓縮器在基本的FPGA器件中都可以通過此手動編輯方法實現,形成一個可供頂層WALLACETREE邏輯調用的硬宏模塊。
4 乘法器的FPGA實現和仿真
在頂層乘法器WALLACE TREE邏輯架構設計中,可以通過描述語言模塊例化來調用前面手動實現的6:4壓縮器,可將slice壓縮模塊看成一個FPGA中固有的IP硬宏模塊,調用方法與使用FPGA器件內部的其他IP沒有區別。在FPGA Editer中對各個模塊相互位置按樹的層次和數字邏輯順序進行約束排列,形成一個約束文件。這樣FPGA芯片面積資源不僅得到充分的利用,在時序方面也會減小關鍵路徑的時延,提高時鐘頻率。
該乘法器的末級加法器要把WALLACE TREE得到的最后2個部分積快速的相加得到最終結果。末級加法器的實現方法有CPA(Carry Propaga tion Adder),該加法器的利用超前進位,可以使進位鏈這個關鍵路徑的時序在邏輯上層次減小。但該加法器在FPGA綜合實現后形成復雜結構,帶來的是利用了很大的布局面積和布線資源。FPGA內部結構中以其特有縱向結構的超級進位鏈,可將進位的器件延時和布線延時優化??梢岳迷撨M位鏈,合理進行布局約束優化,使進位鏈路徑時序減小。實踐表明,在16×16的加法器中,該進位鏈的時延只有6 ns左右,大大減小了整個乘法器關鍵路徑延時。在圖4中列出了本設計的FPGA布局布線布局布線后仿真結果。該結果在XILINX-Virtex5-VC5VSX35T器件中運行,通過ModelSim仿真輸出采集。multin_a和multin_b分別是16位乘數,acc_out是相乘后輸出的32位結果,rst_n是復位清0信號。整個設計的硬件描述語言采用Verelog語言,其中例化了預先用FPGA Editer工具設計好的6:4硬宏壓縮模塊。
圖5給出了WALLACE TREE乘法器設計的XILLNX-Virtex5-VC5VSX35T器件實際運行性能參數。該結果是FPGA器件以系統時鐘為120 MHz運行時,通過XILLNX公司ISE套裝軟件ChipScope采集獲取的數據。圖中,unt1和unt2采用FPGA內部一個測試計數器輸出的16位無符號乘數,將其輸入WALLACE TREE乘法器運算后,得到一組32位乘積結果。該實測結果表明,該結構的乘法器能工作正常工作在120 MHz系統時鐘的條件下,其實現電路關鍵路徑的延時小于8.33ns。
表1分別列出了16×16,24×24位乘法器在FPGA中用工具默認方法和本文方法生成的資源和時序對照圖??梢钥闯?,本文的結構更合理,資源和速度都得到了一定程度的優化。
5 結語
本文根據FPGA內部標準單元結構,提出了一種改進的WALLACE TREE 6:4壓縮器的新型邏輯結構,并用Xilinx提供的工具套件FPGA Edi-ter實現了該壓縮器單元。結合乘法器在FPGA中的仿真表明,該結構的乘法器在提高系統的時鐘頻率和節省布局布線方面都有很大的優勢。