要知道的分布式算法

要知道的分佈式算法


分佈式算法(distributed arithmetic,DA)是一種以實現乘法運算為目的的運算方法。它與傳統實現乘法運算的不同之處在於:執行部分積運算的先後順序不同。簡單地說,分佈式算法在完成乘加功能時時通過將各輸入數據每一對應位產生的部分積預先進行相加形成相應部分積,然後再對各部分積進行累加形成最終結果;而傳統算法是等到所以乘積產生之後再進行相加來完成乘加運算的。與傳統算法相比,分佈式算法可以極大地減少硬件電路規模,很容易實現流水線處理,提高電路的執行速度。

分佈式算法(distributed arithmetic,DA)是一項重要的FPGA技術, 被廣泛運用於計算機的乘法運算中。該算法將乘法運算轉換成加法以及移位運算,能夠高速完成大量的乘法運算,極大地提高了芯片的使用效率。 為了方便分析,將濾波器表達式改為:

要知道的分佈式算法

假設h(n)都是已知常數,x(n)是變量。無符號數x(n)的表達式為:

要知道的分佈式算法

式中: 表示第n個採樣值,b表示x(n)的第b位,則y可以表示為:

要知道的分佈式算法

變換求和次序,重新求和得:

要知道的分佈式算法

化簡成如下形式:

要知道的分佈式算法

式中:xb(n) 表示第n個數據的第b位。由於x(n)為有限位數據,且xb(n)的取值為[0,1],故 有2^N種不同的取值,又因為已知,所以可以通過查表的方法來實現f(h(n,xb(n)))。再通過相應的二次冪加權並累加,就可得到內積y的結果。

要知道的分佈式算法

實現框圖如下:

要知道的分佈式算法

圖中a為傳統算法,b為分佈式DA算法。

根據DA算法原理,可以實現FIR濾波器。濾波器係數可由matlab求得,然後根據濾波器輸入數據位寬,對係數進行合適的放大,在實現過程中對累加值進行右移,最終得到濾波器的輸出。


要知道的分佈式算法

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


分享到:


相關文章: