FPGA中DSP資源是寶貴的且有限,我們?cè)谟?jì)算大位寬的指數(shù)、復(fù)數(shù)乘法、累加、累乘等運(yùn)算時(shí)都會(huì)用到DSP資源,如果我們不了解底層的DSP特性,很多設(shè)計(jì)可能都無法進(jìn)行。邏輯綜合往往是不可控的,為了能夠充分利用DSP資源,我們需要對(duì)DSP48E1有所了解。
1.DSP48E1介紹
DSP48E1是7系列的最小計(jì)算單元,DSP資源,支持許多獨(dú)立的功能,其基本功能如下所示
DSP48E1簡(jiǎn)易模型
包括:
? 帶有D寄存器的25位預(yù)加法器
? 25*18二進(jìn)制乘法
? 48位累加
? 三輸入加法
其他的一些功能還包括桶形移位、寬總線多路復(fù)用、幅度比較器、按位邏輯功能和寬計(jì)數(shù)器等。
每個(gè)DSP48E1都有一個(gè)雙輸入乘法器,接著是3個(gè)數(shù)據(jù)通路的多路復(fù)用器和一個(gè)三輸入的(加法器/減法器/累加器)
DSP48E1內(nèi)部詳細(xì)資源
一種典型的使用是A,B輸入相乘后與C輸入相加或減;當(dāng)不使用第一級(jí)的乘法器的時(shí)候,兩組48位輸入可以實(shí)現(xiàn)按位操作的邏輯功能。
A和B的數(shù)據(jù)輸入可以選擇直接輸入或者寄存一級(jí)、兩級(jí)輸入,如下所示
DSP48E1輸入分層視圖
其他的數(shù)據(jù)和控制輸入可是選擇寄存一級(jí)輸入,這樣的輸入選擇有助于構(gòu)建多種類型,高流水化的DSP應(yīng)用。
2. DSP48E1使用
(1)DSP原語使用的每個(gè)端口及位寬如下所示:
①表示的數(shù)據(jù)通道,運(yùn)算數(shù)據(jù)的輸入。
②寄存器配置通道,我們可以通過配置這些寄存器,實(shí)現(xiàn)不同的功能,比 如加法、減法、乘累加,累減等。
③數(shù)據(jù)輸入寄存器使能通道,在數(shù)據(jù)輸入的時(shí)候可以選擇寄存一級(jí)或者兩 級(jí)(兩級(jí)僅限A和B)。
④配置寄存器使能通道。
⑤復(fù)位信號(hào),寄存器的復(fù)位端口。
⑥、⑦和⑧表示的是級(jí)聯(lián)通道,其中CIN表示級(jí)聯(lián)的輸入,COUT表示級(jí)聯(lián) 的輸出。
⑨模式檢測(cè)輸出,模式檢測(cè)用于檢測(cè)P總線是否與指定的模式或者模式的 補(bǔ)碼完全匹配,如果加法器的輸出與設(shè)置的模式匹配,則PATTERNDETECT (PD)將變高,如果與設(shè)置的補(bǔ)碼匹配,則PATTERNBDETECT(PBD)將變高,其 使用邏輯如下
模式檢測(cè)邏輯
OVERFLOW和UNDERFLOW是與模式檢測(cè)一起使用時(shí)的溢出指示標(biāo)志。
(2)DSP的使用主要通過三個(gè)寄存器來進(jìn)行控制和改變相應(yīng)的運(yùn)算。
?INMODE 控制預(yù)加器,A,B,D寄存器的輸入;(5bit)
?OPMODE 控制X,Y,Z選擇器的輸入;(7bit)
?ALUMODE邏輯控制選擇單元;(4bit)
我們通過構(gòu)建一個(gè)乘累加器來介紹DSP的使用以及寄存器的配置。
實(shí)現(xiàn)的乘累加完成如下功能,即SUM = SUM + A * B ;SUM也就是DSP中的P輸出。
明確了運(yùn)算表達(dá)式,然后我們需要對(duì)三個(gè)寄存器進(jìn)行設(shè)置:
①乘法器的兩個(gè)輸入分別為A和B,我們選擇A端口和B的數(shù)據(jù)相乘的時(shí)候,只使用A的[24:0]位參與運(yùn)算,具體介紹可以見Xinlinx文檔ug479(P30),這里我們把數(shù)據(jù)通過第二個(gè)寄存器輸出到乘法器,INMODE設(shè)置為5’b00000。
圖片居中使用:
②多路復(fù)用器需要指明參與ALU運(yùn)算模塊的數(shù)據(jù),根據(jù)運(yùn)算功能,我們選擇乘法器的輸出和P輸出作為信號(hào)的輸入,OPMODE設(shè)置為7’b010_0001。
③在最后的運(yùn)算中我們選擇加法運(yùn)算。ALUMODE設(shè)置為4’b0000。即P=Z+X+Y+CIN其中Z=P,X=M,Y=0,CIN=0,M=A*B。所以P=P+A*B。
(3)相應(yīng)的配置設(shè)置好之后,例化DSP48E1的原語,原語的調(diào)用可以見Xinlinx文檔ug768(P120),然后建立Vivado工程,測(cè)試如下
通過仿真得到了正確的乘累加結(jié)果
需要注意的是:在計(jì)算乘法時(shí),M寄存器必須是打開的,多路復(fù)用器Z的輸入通過P寄存器,因此輸出至少滯后2個(gè)時(shí)鐘周期,這里通過A2和B2寄存器輸入,故延遲了4個(gè)時(shí)鐘周期輸出結(jié)果。
3. DSP48E1注意事項(xiàng)
? 使用有符號(hào)數(shù)進(jìn)行數(shù)據(jù)的處理。
? 盡量使用流水進(jìn)行數(shù)字信號(hào)的處理。
?當(dāng)數(shù)字的處理位寬較小時(shí),盡量使用邏輯進(jìn)行數(shù)據(jù)處理
?級(jí)聯(lián)使用DSP的時(shí)候請(qǐng)盡量使用專用布線資源。
?合理的去復(fù)用DSP資源。
?在DSP不使用的時(shí)候,通過USE_MULT將乘法器關(guān)閉以降低功耗。
編輯:hfy
-
dsp
+關(guān)注
關(guān)注
552文章
7959瀏覽量
347932 -
寄存器
+關(guān)注
關(guān)注
31文章
5294瀏覽量
119820 -
Xilinx
+關(guān)注
關(guān)注
71文章
2155瀏覽量
120853 -
多路復(fù)用器
+關(guān)注
關(guān)注
9文章
868瀏覽量
65263 -
乘法器
+關(guān)注
關(guān)注
8文章
204瀏覽量
36941
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論