寫在前面
本文是本系列的第三篇,本文主要介紹FPGA常用運(yùn)算模塊-乘加器,xilinx提供了相關(guān)的IP以便于用戶進(jìn)行開發(fā)使用。
乘加器
乘加器核提供使用DSP片的乘加實(shí)現(xiàn)。它執(zhí)行兩個(gè)操作數(shù)的乘法,并將全精度乘積加(或減)到第三個(gè)操作數(shù),執(zhí)行P = C +/- A * B的操作。乘加器模塊對有符號(hào)或無符號(hào)數(shù)據(jù)進(jìn)行操作。該模塊可以流水線化。支持二補(bǔ)符號(hào)和無符號(hào)操作。支持從1到52位無符號(hào)或2到53位有符號(hào)的乘數(shù)輸入和從1到105位無符號(hào)或2到106位有符號(hào)的加減操作數(shù)輸入??蛇x時(shí)鐘啟用和同步清除。
乘加器IP在許多配置中比單獨(dú)的乘和加操作更有效,因?yàn)樗褂肈SP48原語。可以在許多應(yīng)用程序中使用這個(gè)IP,特別是那些基于多項(xiàng)式算法的應(yīng)用程序,如FIR和IIR實(shí)現(xiàn)。
IP核圖示以及端口介紹
操作指南
流水操作
乘法器核心考慮了兩種不同的延遲路徑;一個(gè)是從A和B輸入到P輸出,另一個(gè)是從C/PCIN輸入到P輸出。這些延遲被定義為A:B - P延遲和C - P延遲。
這些延遲只能采用兩個(gè)值:0 表示無延遲或 -1 表示最大/最佳延遲。 如果這兩個(gè)延遲中的任何一個(gè)指定為 -1,則它們都被視為 -1; 對于完全組合的設(shè)計(jì),兩者都必須設(shè)置為 0。
級(jí)聯(lián)的PCIN端口的使用也會(huì)影響延遲。
不用級(jí)聯(lián)輸入:
使用級(jí)聯(lián)輸入:
下圖顯示了乘加器的內(nèi)部結(jié)構(gòu),在內(nèi)部相當(dāng)于引用了一個(gè)乘法器和一個(gè)加減法器。從該結(jié)構(gòu)中可以清楚的看出,A:B - P 延時(shí)和C - P延時(shí)路徑。
數(shù)據(jù)調(diào)整
當(dāng)傳遞給IP輸入時(shí),所有輸入都是右對齊的。必須設(shè)置輸入的正確 LSB 或 MSB 填充或符號(hào)擴(kuò)展(相當(dāng)于二進(jìn)制小數(shù)點(diǎn))。
在乘法加法器中,乘法器輸出沒有截?cái)嗷蛏崛耄贿@是一個(gè)完整的精確結(jié)果。 C 輸入被添加到乘積中。下面的例子實(shí)現(xiàn)了切片操作的功能。切片選取輸出的0到11位。
向量相乘的例子
圖3-4(單DSP片實(shí)現(xiàn))和圖3-5(多DSP片實(shí)現(xiàn))實(shí)現(xiàn)了一個(gè)簡單的矢量乘法。在3-4圖中,如果使用單DSP片實(shí)現(xiàn)向量相乘,則按照該圖示連接進(jìn)行實(shí)現(xiàn)。采用級(jí)聯(lián)操作,將級(jí)聯(lián)是輸入輸出相互連接。此時(shí)不能進(jìn)行設(shè)置C的輸入。
在3-5圖中,如果使用多DSP片實(shí)現(xiàn),則按照該圖示連接進(jìn)行實(shí)現(xiàn)。此時(shí)可以進(jìn)行設(shè)置C的輸入,級(jí)聯(lián)操作通過連接P和C端相互連接。
乘加器IP配置
在乘加器IP配置界面,可以對輸入輸出的位寬進(jìn)行配置,以及相關(guān)IP的配置。
A/B Input Width :設(shè)置端口A或者B輸入的寬度。有效的范圍是1 ~ 52無符號(hào)和2 ~ 53有符號(hào)。默認(rèn)值為18。該值在IP中自動(dòng)設(shè)置,可以手動(dòng)設(shè)置。
C Input Width :設(shè)置端口C(加/減操作數(shù))輸入的寬度。有效的范圍是1到105無符號(hào)和2到106有符號(hào)。默認(rèn)值為48。該值在IP中自動(dòng)設(shè)置,可以手動(dòng)設(shè)置。
A/B/C Input Type :設(shè)置端口A、B 、C數(shù)據(jù)的類型。0表示有符號(hào),1表示無符號(hào)。默認(rèn)值為0。該值在IP中自動(dòng)設(shè)置,可以手動(dòng)設(shè)置。
Output MSB / Output LSB :設(shè)置輸出的切片位寬范圍。
Use PCIN :當(dāng)該參數(shù)設(shè)置為1時(shí),使用PCIN 端口。 PCIN 端口是 加法器/減法器操作數(shù)的級(jí)聯(lián)輸入端口。設(shè)置為0時(shí),PCIN 端口為 忽略。設(shè)置為 1 時(shí),C 輸入寬度限制為 48 位。
Sync Control CE Priority :此參數(shù)控制 SCLR和CE信號(hào)的優(yōu)先級(jí)當(dāng)該信號(hào)為0時(shí),Sync Control CE Priority。當(dāng)該信號(hào)為1時(shí),SCLR 僅在 CE 為高電平時(shí)有效。這默認(rèn)值為0。
A:B - P Latency : A、B端口到輸出端口P的時(shí)延。取值如下: -1, 0。默認(rèn)值為-1。
C - P Latency :從 C 或 PCIN 端口到輸出端口 P 的延遲。取值如下: -1, 0。默認(rèn)值為-1。
References
PG192