適用於低密度 PLD 應用的 Radix-4 布斯乘法器 (VHDL)

邏輯主頁

特點

以下主題透過 Lattice Diamond 2.0.1 版設計軟體進行解說。

  • Radix-4 布斯順序乘法器概述
  • 布斯演算法的狀態機結構與應用
  • Radix-4 布斯字寬可擴展性
  • 使用測試平台測試乘法器

介紹

此 VHDL 模組使用簡單的 2 狀態有限狀態機(Finite State Machine,FSM)來評估乘積暫存器中保存的 3 位元分組,並根據這些分組從五種可能的操作中選擇一種。此 2 狀態 FSM 的狀態圖如下圖 1 所示。這種 3-bit 重新編碼的移位和加法過程稱為布斯演算法(Booth algorithm)。本模組中使用的版本稱為 Radix-4 布斯乘法器(Booth Radix-4 Multiplier)。


圖 1 – Radix-4 布斯 FSM 狀態圖

背景

Radix-4 布斯演算法將部分積的數量減少了一半,同時將電路複雜度降至最低。這使得 FPGA 或 CPLD 的運作功耗更低,並且在沒有硬乘法器可用的情況下(例如本例中使用的 Lattice MachXO2 PLD)可以提供乘法運算。布斯重編碼(Booth Recoding)透過跳過不新增任何新乘積項的時脈週期來實現這些優勢。Radix-4 布斯重編碼只是一個多工器,它根據乘積暫存器中的位元分組選擇正確的移位加法運算。乘積暫存器保存乘數。根據重新編碼值將被乘數與其二進位補碼相加。。重編碼見下表 1。乘法範例請見下圖 2。


圖 2 – Radix-4 布斯演算法範例

本設計所需/使用的軟體:

• Lattice Diamond 設計軟體 2.0.1 版,以及第三方軟體 Synplify Pro for Lattice 和 Active-HDL Lattice Edition。

應用

建立電路

Radix-4 布斯乘法器可以從 4 位元向上擴展為偶數值,例如 6、8、10…。使用者受限於 PLD 的邏輯密度和速度。更大的字寬需要更大的電路,傳輸延遲也更長。也就是說,更大的電路需要更慢的時脈頻率。6-bit 乘法器在 MachXO2 上的基準測試頻率為 135MHz,而 18-bit 乘法器可以運作在 125MHz。

該設計有五個輸入連接埠(“clk”、“n_reset”、“start”、“mcand” 和 “mplier”)和兩個輸出連接埠(“done” 和 “product”)。乘法器需要一個啟動脈衝,使用來自「mcand」和「mplier」輸入的值初始化 FSM,並將 FSM 置於「BUSY」狀態。數學步驟可以透過在實例化之間使用 “start” 和 “done” 訊號進行排序。

18-bit 實現的 RTL 圖如下圖 3 所示。

圖 3 – Radix-4 布斯乘法器的 RTL 圖

所包含的測試平台是透過「HDL 圖表」視窗中的「產生測試平台範本」命令建立的。請閱讀 VHDL 註釋,檢查「booth_mult_tf.vhd」檔案以加深理解。Aldec 8-bit 和 64-bit 實現的 Active-HDL 波形圖如下圖 4 和圖 5 所示。


圖 4 – 8-bit 實現的 Active-HDL 測試台輸出

圖 5 – 64-bit 實現的 Active-HDL 測試台輸出

設計軟體

Lattice Diamond 設計軟體 2.0.1 版用於開發 “booth_mult.vhd”,並結合 Synopsis(Synplify Pro for Lattice)和 Aldec(Active-HDL Lattice 版)的支援軟體。 Diamond 可作為獨立的開發環境,與其他綜合和模擬軟體搭配使用。

附加資訊

更多設計支援、產品教學、應用筆記、使用者指南和其他文檔,請訪問 Lattice 網站

附錄:下載

完整的 Lattice Diamond 專案可在此處下載。

booth_mult.vhd (4.7 KB)
booth_mult_tb.vhd (3.9 KB)