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

**URL:** <https://forum.digikey.com/t/pld-radix-4-verilog/56799>\
**Category:** 產品技術提示\
**Tags:** lattice-semiconductor\
**Created:** [June 26, 2025, 5:36am UTC](https://forum.digikey.com/t/pld-radix-4-verilog/56799 "2025-06-26T05:36:22Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kevin\_6462](https://sea2.discourse-cdn.com/digikey/user_avatar/forum.digikey.com/kevin_6462/32/8856_2.png) [@Kevin\_6462](https://forum.digikey.com/u/Kevin_6462)\
**Post date:** [June 26, 2025, 5:36am UTC](https://forum.digikey.com/t/pld-radix-4-verilog/56799/1 "2025-06-26T05:36:22Z")

</div>

[邏輯主頁](https://forum.digikey.com/t/topic/47590)

# 特點

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

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

# 介紹

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

 ![image](https://global.discourse-cdn.com/digikey/original/3X/e/b/ebdd03d227e89db8d2819d7fa82ae30fd431e8c7.jpeg)  
**圖 1** – Radix-4 布斯 FSM 狀態圖

# 背景

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

 ![image](https://global.discourse-cdn.com/digikey/original/3X/2/b/2b28f6c6105c9229c41f28aae901874fc062917d.png)

 ![image](https://global.discourse-cdn.com/digikey/original/3X/d/a/daa889cc66eec1e27dcaacf48df7e88bfe3cc935.jpeg)  
**圖 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 上的基準測試頻率為 157MHz，而 18-bit 乘法器可以運作在 140MHz。

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

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

 ![image](https://global.discourse-cdn.com/digikey/original/3X/2/7/274f3538eada76ac16765574a5304340c5ed7ea5.png)

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

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

 ![image](https://global.discourse-cdn.com/digikey/original/3X/9/f/9f38181129cd19bfc9096ffbfd90f6d6a1612b27.jpeg)  
**圖 4** – 8-bit 實現的 Active-HDL 測試台輸出

 ![image](https://global.discourse-cdn.com/digikey/original/3X/e/6/e6554f22442a358cfd268ad86bea865812c71457.jpeg)

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

# 設計軟體

Lattice Diamond 設計軟體 2.0.1 版用於開發 “booth\_mult.v”，並結合 Synopsis（Synplify Pro for Lattice）和 Aldec（Active-HDL Lattice 版）的支援軟體。 Diamond 可作為獨立的開發環境，與其他綜合和模擬軟體搭配使用。

# 附加資訊

更多設計支援、產品教學、應用筆記、使用者指南和其他文檔，請訪問 [Lattice 網站](https://www.latticesemi.com/Support.aspx?source=topnav.)。

# 附錄：下載

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

[Booth\_mult.v](https://forum.digikey.com/uploads/short-url/xnqm1kLKXAOWoh8bP75jo31qj02.v) (5.0 KB)  
[Booth\_mult\_tf.v](https://forum.digikey.com/uploads/short-url/wrilBRYdYU3BH6lj2E78cmLQxWY.v) (7.1 KB)
