FPGA乘法器的簡單用法

FPGA乘法器的簡單用法


在做項目的過程中,經常遇到乘法計算,乘法器的設計就尤為重要。乘法器決定了最終電路功能能否實現,資源使用量多少以及時序性能優劣等。

乘法計算中,通常會使用 “*” 或者設計乘法器實現。

設計乘法器時,通常使用加法樹乘法器,實現流程圖如下:

FPGA乘法器的簡單用法

如上圖a[3:0]與b[3:0]乘法器設計,與分佈式算法類似,a*b乘法計算設計如下:a*b[0]<<0 + a*b[1]<<1 + a*b[2]<<2 + a*b[3]<<3,通過移位和加法運算實現最終功能。結構框圖如上。

FPGA乘法器的簡單用法

設計中,上述邏輯存在大量組合邏輯,延時大,當時序要求不高的情況下,可以使用,當時序要求很高時,此電路會產生時序違規。要想提高電路時序性能,需要在x、y、z三處選一處、兩處或者三處加入觸發器流水邏輯,提高電路時序性能,但其結果會使輸出延遲幾個時鐘週期,設計時應該考慮這一情況。

當使用 “*” 做乘法運算時,一般綜合工具都會直接調用FPGA片上集成的硬核乘法器,而不再使用邏輯單元搭建乘法器。設計結構圖如下:

FPGA乘法器的簡單用法

上圖為利用FPGA片上乘法器實現最終乘法。為了提高時序性能,可在w處加入寄存器流水線。

上述設計速度明顯優於第一種設計,但會消耗大量的片上硬核乘法器。

上述兩種設計各有其優勢,在使用中請根據實際設計電路採用合理的方案。

在前述文章中,設計FFT和IFFT,乘法設計採用第二種方案,提高電路速度。如果採用第一種方案,將會增加流水線程度,增大FFT以及IFFT的計算週期。

而在簡單和低速的乘法計算中使用第一種方案是一種比較良好的選擇。


FPGA乘法器的簡單用法

原文地址:卿萃科技FPGA極客空間 微信公眾號


分享到:


相關文章: