Virtex-6中的BRAM(Block RAM)模塊、DSP 模塊XtremeDSP
BRAM(Block RAM)模塊

Virtex-6中嵌入BRAM,大大拓展了FPGA的應(yīng)用范圍和應(yīng)用的靈活性。BRAM可被配置為單端口RAM、雙端口RAM、內(nèi)容地址存儲(chǔ)器(CAM)以及FIFO等常用存儲(chǔ)結(jié)構(gòu)。
Virtex-6中的BRAM是雙端口RAM,每個(gè)BRAM存儲(chǔ)36Kbit數(shù)據(jù),支持寫和讀同步操作,兩個(gè)端口對(duì)稱且完全獨(dú)立,共享存儲(chǔ)的數(shù)據(jù),可以改變每個(gè)端口的位寬和深度。36Kbit可配置成64K×1(和相鄰36Kbit BRAM級(jí)聯(lián))、32K×1、16K×2、8K×4、4K×9、2K×18、1K×36或512×72的簡(jiǎn)單雙口RAM;每個(gè)18Kbit的BRAM也可配置成16K×1、8K×2、4K×4、2K×9、1K×18或512×36的簡(jiǎn)單雙口RAM。存儲(chǔ)器內(nèi)容可在配置比特流時(shí)設(shè)置。BRAM在寫操作過(guò)程中,它的輸出數(shù)據(jù)可以編程設(shè)置,或者是保持輸出數(shù)據(jù)不變,或者反映正在寫入的新數(shù)據(jù),或者是正在被覆蓋的舊數(shù)據(jù)。
一、 雙端口RAM和單端口RAM
全雙口36Kb BRAM有36Kb的存儲(chǔ)空間和兩個(gè)獨(dú)立的訪問(wèn)口:A口和B口。類似地,每個(gè)18Kbit RAM包含一個(gè)18Kbit存儲(chǔ)空間和2個(gè)全獨(dú)立的訪問(wèn)口:A口和B口。結(jié)構(gòu)是全對(duì)稱的,數(shù)據(jù)可以寫入其中的一個(gè)口或者兩個(gè),也可以從一個(gè)或者兩個(gè)口讀出。寫操作是同步的,每個(gè)口有自己?jiǎn)为?dú)的地址、數(shù)據(jù)輸入、數(shù)據(jù)輸出、時(shí)鐘、時(shí)鐘允許和寫允許信號(hào)。讀操作也是同步的,并需要一個(gè)時(shí)鐘邊沿。
需要注意的是,當(dāng)兩個(gè)端口同時(shí)對(duì)同一個(gè)地址進(jìn)行操作的時(shí)候,由于雙端口RAM內(nèi)部沒(méi)有專門的監(jiān)控邏輯,因此需要用戶自己控制兩個(gè)時(shí)鐘,以避免沖突。兩個(gè)端口同時(shí)對(duì)同一個(gè)地址的寫操作雖然不會(huì)損壞該物理空間,但可能導(dǎo)致數(shù)據(jù)錯(cuò)誤。
雙端口RAM和單端口RAM的原語(yǔ)如表5-10所示,可在HDL代碼中直接例化。
二、 FIFO
Virtex-6的BRAM中的專用邏輯讓用戶能夠輕松地實(shí)現(xiàn)同步或異步FIFO。這樣就不必為計(jì)數(shù)器、比較器或狀態(tài)標(biāo)記的生成使用其他CLB邏輯。
Virtex-6中,F(xiàn)IFO 可配置成18Kbit 和36Kbit 存儲(chǔ)空間,對(duì)于18Kbit 的FIFO,支持4K ×4、2K×9、1K×18 和512×36;對(duì)于36Kbit 的FIFO,支持8K×4、4K×9、2K×18、1K×36 和512×72。
三、 ECC 內(nèi)置糾錯(cuò)
當(dāng)使用Virtex-6 中的RAMB36E1(SPP 模式)或者36Kbit FIFO(FIFO36E1)時(shí),可以使能其中的ECC 糾錯(cuò)功能。ECC 占用72 位寬,其中64 位數(shù)據(jù),8 位漢明碼,它可以產(chǎn)生漢明位并糾正輸出的數(shù)據(jù)錯(cuò)誤,但不會(huì)糾正存儲(chǔ)器內(nèi)容。另外,它還可以輸出錯(cuò)誤位置的地址。
在寫操作過(guò)程生成八個(gè)保護(hù)位(ECCPARITY),與64 位數(shù)據(jù)一起存到存儲(chǔ)器中。這些ECCPARITY 位在每次讀操作過(guò)程中用來(lái)糾正任意單位元錯(cuò)誤或檢測(cè)(但不糾正)任意雙位元錯(cuò)誤。
在讀操作過(guò)程中,72 位數(shù)據(jù)從存儲(chǔ)器讀出并饋入ECC 解碼器。ECC 解碼器生成兩個(gè)輸出狀態(tài)(SBITERR 和DBITERR),用來(lái)指示三種可能的讀操作結(jié)果:無(wú)錯(cuò)誤、已糾正單位元錯(cuò)誤、檢測(cè)到雙位元錯(cuò)誤等。在標(biāo)準(zhǔn)ECC 模式下,讀操作不糾正存儲(chǔ)器陣列中的錯(cuò)誤,僅僅將已經(jīng)糾正的數(shù)據(jù)送到DO。為了改善FMAX,可以將由DO_REG 屬性控制的可選寄存器用于數(shù)據(jù)輸出(DO)、SBITERR 和DBITERR。
Virtex-6 中的ECC 還增加了一個(gè)新的功能,能回讀當(dāng)前數(shù)據(jù)輸出對(duì)應(yīng)的存儲(chǔ)地址,支持修復(fù)錯(cuò)位的數(shù)據(jù)位或者將該地址設(shè)置成無(wú)效。
Virtex-6 BRAM 模塊的詳細(xì)資料請(qǐng)參考《Virtex-6 BRAM 用戶手冊(cè)》。
點(diǎn)擊打開(kāi)鏈接
DSP 模塊XtremeDSP
為了適應(yīng)越來(lái)越復(fù)雜的DSP運(yùn)算,Virtex-6中嵌入了功能更強(qiáng)大的DSP48E1 SLICE,簡(jiǎn)化的DSP48E1模塊如圖5-16所示。
DSP48E1兼容Virtex-5的DSP48E,而且在兩方面有所增強(qiáng)。
圖5-16為簡(jiǎn)化的DSP48E1模塊框圖,從圖中可以看出,算術(shù)部分包含一個(gè)25位預(yù)加器、一個(gè)25×18二進(jìn)制補(bǔ)碼乘法器、3個(gè)48位的多路復(fù)用器,跟隨一個(gè)48位符號(hào)可擴(kuò)展的加法器/減法器/累加器或者2輸入邏輯單元。如果使用了2輸入邏輯單元,則此乘法器不能再被使用。
DSP48E1的數(shù)據(jù)和控制輸入連接到算術(shù)和邏輯部分。A和B輸入通道上有兩級(jí)流水線寄存器;D和AD(AD為預(yù)加器內(nèi)的中間寄存器)輸入通道上有一級(jí)流水線寄存器。其他數(shù)據(jù)和控制輸入通道也有一級(jí)流水線寄存器。最高操作頻率可達(dá)600MHz。
大部分情況下,加法器/減法器/邏輯單元的輸出是其輸入的函數(shù)。輸入由MUX、進(jìn)位選擇邏輯和乘法器陣列驅(qū)動(dòng)。對(duì)應(yīng)公式如下所示。
Adder/Sub輸出= (Z ± (X + Y + CIN))或(-Z + (X + Y + CIN) –1)
DSP48E1的內(nèi)部結(jié)構(gòu)如圖5-17所示,主要由以下幾部分組成。
一、 輸入端口
(1) 輸入端口A、B、C和D。
每個(gè)DSP48 SLICE有4個(gè)輸入數(shù)據(jù)口A、B、C和D,A口30位寬,B口18位寬,C口48位寬,D口25位寬。A口、D口和預(yù)加器的邏輯如圖5-18所示;B口邏輯如圖5-19所示。A口的25位和B口18位數(shù)據(jù)是25位×18位乘法器輸入。每個(gè)DSP48E1能完成乘加、乘減等操作。A口和B口可以合并跳過(guò)乘法器作為多路選擇器X的輸入。
A口和B口可以合并成48位寬的數(shù)據(jù)和48位寬的C口一起實(shí)現(xiàn)48位的加法/減法。
DSP48E1 SLICE提供了兩個(gè)級(jí)聯(lián)數(shù)據(jù)輸入通道(ACIN和BCIN),提供了相鄰DSP48E1 SLICE之間的級(jí)聯(lián)輸入數(shù)據(jù)流。級(jí)聯(lián)路徑ACIN為30位寬,BCIN為18位寬。A、B、ACIN和BCIN數(shù)據(jù)通路上有0、1或2級(jí)流水線。數(shù)據(jù)端口寄存器可以通過(guò)延時(shí)提高時(shí)鐘頻率。屬性AREG和BREG用于設(shè)置A口和B口的流水線級(jí)數(shù)。屬性ACASCREG和BCASCREG用于設(shè)置ACOUT口和BCOUT口級(jí)聯(lián)流水線級(jí)數(shù)。DSP48E1通過(guò)控制多路選擇器的控制位設(shè)置數(shù)據(jù)流的通路、寄存器和級(jí)聯(lián)輸入。
INMODE[3:0]是DSP48E1里新增的控制位,這些位控制A和D輸入寄存器與預(yù)加器的函數(shù)。
48位的C口作為Y和Z多路選擇器的輸入,實(shí)現(xiàn)加法、減法、三輸入加/減和邏輯函數(shù)。C輸入也連到模式識(shí)別器上,實(shí)現(xiàn)函數(shù)取舍。
(2) OPMODE、ALUMODE和CARRYINSEL端口邏輯。
OPMODE、ALUMODE和CARRYINSEL端口邏輯支持輸入控制信號(hào)的直通或者寄存器輸入。通過(guò)多路選擇器的配置位可以選擇直通或通過(guò)寄存器。OPMODE、ALUMODE和CARRYINSEL端口邏輯如圖5-20所示。
(3) X、Y和Z多路選擇器。
OPMODE提供了動(dòng)態(tài)改變DSP48E1功能的方法,OPMODE的控制位對(duì)應(yīng)X、Y和Z多路選擇器的輸出。這3個(gè)多路選擇器的輸出成為后面加/減器的三個(gè)操作數(shù)。
(4) ALUMODE輸入。
4位ALUMODE控制第二級(jí)加/減/邏輯單元的行為,如表5-11所示。
(5) 進(jìn)位輸入邏輯。
Virtex-6器件中進(jìn)位輸入邏輯是3位CARRYINSEL信號(hào)的函數(shù)。輸入邏輯見(jiàn)圖5-21。所有可能的進(jìn)位輸入在X、Y和Z多路選擇器之前“會(huì)合”。
二、 輸出端口
除ACOUT和BCOUT外的所有輸出端口通過(guò)RSTP復(fù)位,CEP使能。ACOUT和BCOUT分別通過(guò)RSTA和RSTB復(fù)位。DSP48E1輸出邏輯如圖5-22所示。
(1) 輸出端口P。
DSP48E1有一個(gè)48位輸出端口P,這個(gè)輸出口能通過(guò)PCOUT通路連接(級(jí)聯(lián))相鄰的DSP48E1 SLICE。PCOUT連接到相鄰DSP48E的Z多路選擇器的輸入口(PCIN)。該通路提供兩個(gè)相鄰DSP48E1的輸出級(jí)聯(lián)通路。
(2) CARRYCASCOUT和CARRYOUT口。
DSP48E1 SLICE的進(jìn)位輸出為4位寬,通過(guò)CARRYOUT輸出到FPGA邏輯。CARRYOUT信號(hào)通過(guò)CARRYCASCOUT和相鄰DSP48E1 SLICE級(jí)聯(lián)。實(shí)現(xiàn)更大的加法、減法、累加、乘累加函數(shù)。
(3) MULTSIGNOUT端口邏輯。
乘法器輸出的最高位通過(guò)MULTSIGNOUT口級(jí)聯(lián)到下一個(gè)DSP48E1 SLICE,僅用于擴(kuò)展96位的MACC。
(4) PATTERNDETECT和PATTERNBDETECT端口邏輯。
DSP48E1 SLICE的輸出增加了一個(gè)序列檢測(cè)器,用于檢測(cè)P總線是否和指定序列匹配,或者是否和指定序列的取反值相匹配。
(5) 上溢和下溢端口邏輯。
DSP48E1 SLICE利用模式檢測(cè)器檢測(cè)P[N](N從1到46)是否有溢出,當(dāng)有上溢或下溢發(fā)生時(shí),DSP48E1輸出OVERFLOW和UNDERFLOW信號(hào)。
三、 算術(shù)功能
(1) 預(yù)加器。
Virtex-6 FPGA DSP模塊結(jié)構(gòu)上的又一改變是在A寄存器路徑上增加了一個(gè)預(yù)加器,實(shí)現(xiàn)預(yù)加或預(yù)減等操作。
(2) 乘法器。
Virtex-6 FPGA DSP模塊內(nèi)包含一個(gè)二進(jìn)制補(bǔ)碼乘法器,如圖5-23所示。二進(jìn)制補(bǔ)碼乘法器的一個(gè)輸入為25位的二進(jìn)制補(bǔ)碼,另一個(gè)為18位的二進(jìn)制補(bǔ)碼,產(chǎn)生43位結(jié)果輸出。乘法器86位輸出包含兩個(gè)43位部分乘積。乘法器和算法支持17位操作數(shù)右移,以對(duì)準(zhǔn)寬乘法器的部分乘積(并行或順序乘法)。級(jí)聯(lián)通路作為Z多路選擇器的輸入,可以和相鄰DSP48E1 SLICE的加法器/減法器相連。
將輸入操作數(shù)的最高位設(shè)置成0,則乘法器就能實(shí)現(xiàn)無(wú)符號(hào)算術(shù)。
寄存器MREG是乘法器的輸出可選流水線。
(3) 加法器/減法器/邏輯單元。
加法器/減法器/邏輯單元的輸出是控制信號(hào)和輸入數(shù)據(jù)的函數(shù),加法器/減法器的輸入由OPMODE和CARRYINSEL控制。ALUMODE設(shè)置加法器/減法器實(shí)現(xiàn)的功能。因此OPMODE、ALUMODE和CARRYINSEL信號(hào)一起設(shè)置加法器/減法器或邏輯單元實(shí)現(xiàn)的功能。
(4) 2輸入邏輯單元。
通過(guò)OPMODE和ALUMODE的設(shè)置,可以在三輸入加法/減法/邏輯單元的第二級(jí)實(shí)現(xiàn)邏輯函數(shù)。2輸入邏輯單元配置如表5-12所示。
分析DSP48E1結(jié)構(gòu)后,可以理解,DSP48E1不需要使用通用可編程邏輯構(gòu)造資源,可支持將多個(gè)DSP48E1邏輯片連接起來(lái)完成更寬輸入的數(shù)字功能、DSP濾波器和復(fù)雜算法。這可以帶來(lái)更低的功耗、更高的性能和更高的芯片資源使用效率。
Xilinx工具提供了便捷的DSP48的使用工具,用戶可以在HDL中例化原語(yǔ),或者調(diào)用CoreGen配置所需參數(shù),設(shè)置相應(yīng)功能,工具會(huì)自動(dòng)配置OPMODE及內(nèi)部寄存器。
FPGA
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。