




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、XilinxFPGA 內(nèi)部結(jié)構(gòu)深入分析作者:fpga001。論壇:芯片動(dòng)力(SocVista)。網(wǎng)頁地址:http: 的結(jié)構(gòu)請(qǐng)大家看到手冊(cè)的第1頁,這是IOB的review部分。IOblock是高手的領(lǐng)地,一般接觸FPGA第一年都不會(huì)太關(guān)心到這個(gè)部分。注意看,IOB有三個(gè)數(shù)據(jù)通道:輸入、輸出、三態(tài)控制。每個(gè)通道都有一對(duì)存儲(chǔ)器件,他們可以當(dāng)做寄存器或者鎖存起來使用,視乎你的設(shè)置。輸入通道有可編程的延遲模塊,可以確保holdtime為零。(這是在什么場(chǎng)合使用?請(qǐng)達(dá)人補(bǔ)充?。┝硗饪梢钥吹捷斎胼敵鐾ǖ蓝加型陚涞腄DR支持,這個(gè)在后面可以看到。所有圖都請(qǐng)參考PDF原文,這里就不再粘貼了。可編程輸入延遲看
2、到手冊(cè)第3頁,這個(gè)像兩根魚骨似的構(gòu)造就是輸入延遲了。輸入延遲一共16節(jié),每節(jié)250ps,所以總共的延遲在04ns之間。這個(gè)魚骨的構(gòu)造非常巧妙,前面8節(jié)直接級(jí)聯(lián),只有一個(gè)輸出。這樣8節(jié)以內(nèi)的調(diào)整就跳過這根長魚骨;而超過8節(jié)的調(diào)整就直接利用第一根魚骨,然后在后面的8節(jié)中進(jìn)行微調(diào)。調(diào)整的輸出分別供給IOB中的異步和同步單元,異步就是直接穿過IOB,同步則是經(jīng)由存儲(chǔ)單元流出IOB。異步單元精度較高,可以單節(jié)調(diào)整,所以精度為250ps;同步單元精度稍低,兩個(gè)節(jié)為單位調(diào)整,所以精度只有500ps。上述內(nèi)容看圖便知可編程輸入延遲的設(shè)置輸入延遲的設(shè)置只能在Image配置的時(shí)候建立, 在設(shè)備工作期間無法改變。
3、我想有兩種方法可以改變輸入延遲的設(shè)置:1 .通過延遲原語在代碼中設(shè)置;2 .通過FPGAeditor在P&R完成后在ngc文件中修改。存儲(chǔ)單元存儲(chǔ)單元可以配置為D觸發(fā)器,就是我們常說的FF,Xilinx稱之為FD;也可以配置為鎖存器,Xilinx稱之為LD。輸出和三態(tài)通路各有一對(duì)寄存器外加一個(gè)MUX。利用這種2+1的組合可以產(chǎn)生DDR操作,Xilinx稱之為ODDR2。每個(gè)存儲(chǔ)單元都有6個(gè)接口信號(hào):時(shí)鐘+時(shí)鐘時(shí)能,數(shù)據(jù)輸入+輸出,置位復(fù)位+翻轉(zhuǎn)輸入除了這些信號(hào),存儲(chǔ)單元還有一些屬性設(shè)置:- FF/Latch可以用來配置存儲(chǔ)單元的類型;- Sync/Async配置置位復(fù)位的方式;- SRHIGH
4、/SRLOW配置是置位(1)還是復(fù)位(0);INIT1/INIT0配置置位復(fù)位的初始值,一般置位(1)復(fù)位(0);DDRDDR 支持輸入、輸出、三態(tài)。這三個(gè)IOB通道都可以實(shí)現(xiàn)DDR支持。輸出和三態(tài)通道可以實(shí)現(xiàn)ODDR2原語,這個(gè)原語的實(shí)現(xiàn)原理可以參考p5的圖3.兩個(gè)相差180度的時(shí)鐘和兩路信號(hào)進(jìn)入一對(duì)寄存器并通過DDR專用MUX輸出,即可得到DDR數(shù)據(jù)輸出。實(shí)現(xiàn)相差180度,有兩種方法。一種是通過DCM直接產(chǎn)生這兩個(gè)信號(hào)。另外的方法是同一時(shí)鐘,但是連入寄存器的時(shí)鐘端口時(shí),一路取反。輸入通道則實(shí)現(xiàn)IDDR2原語。如果輸出、三態(tài)通路實(shí)現(xiàn)的是DDR的調(diào)制的話,這一路其實(shí)就是DDR的解調(diào),也就是1分
5、為2。當(dāng)然,這里需要提供兩路相差180度的時(shí)鐘。另外ODDR2還有一個(gè)重要用途,就是用于產(chǎn)生隨路時(shí)鐘。只要把兩路數(shù)據(jù)固定為1和0,這樣產(chǎn)生的DDR數(shù)據(jù)其實(shí)就是0/1交叉的時(shí)鐘信號(hào)了,這個(gè)一想就明白了吧。這樣做的好處是:數(shù)據(jù)和時(shí)鐘都經(jīng)過IOB寄存器處理,具有相同的延遲特性,從而實(shí)現(xiàn)了所謂的源同步級(jí)聯(lián)”重定時(shí)特性一一提高 DDRDDR 的性能在IDDR2和ODDR2的典型實(shí)現(xiàn)(圖4圖6)中,存在一個(gè)問題.以IDDR2為例,我們可以發(fā)現(xiàn),在經(jīng)典實(shí)現(xiàn)中,輸出的兩路數(shù)據(jù)分別與時(shí)鐘的兩個(gè)邊沿對(duì)齊。但是,強(qiáng)調(diào)一下,后端的系統(tǒng)中往往只有一個(gè)時(shí)鐘,工作在上升沿。那么對(duì)于下降沿對(duì)齊輸出的數(shù)據(jù),從下降沿開始到上升沿
6、被采樣,只有半個(gè)時(shí)鐘的余量來穩(wěn)定輸出并滿足setup。由于FPGA系統(tǒng)比較復(fù)雜從IOB出來的數(shù)據(jù)要進(jìn)入到下一個(gè)存儲(chǔ)單元可能會(huì)經(jīng)歷非常漫長的邏輯和路由延遲。要在半個(gè)時(shí)鐘內(nèi)完成,有很大的挑戰(zhàn)性,尤其是在高速系統(tǒng)中,往往有很大的困難。Spartan3E的解決辦法是,利用相鄰從屬IOB的存儲(chǔ)單元,對(duì)下降沿輸出的數(shù)據(jù)馬上做一次上升沿抽樣。由于兩個(gè)IOB相鄰,不存在復(fù)雜的邏輯和路由延遲,因此雖然余量也是半個(gè)時(shí)鐘,但一般情況下甚至高速系統(tǒng)下也可以成功實(shí)現(xiàn)。這樣數(shù)據(jù)就回到了上升沿時(shí)鐘域。到了上升沿時(shí)鐘域,則數(shù)據(jù)有一個(gè)時(shí)鐘的時(shí)間余量,處理起來就和普通的情況一樣了。以上是關(guān)于IDDR2的討論,對(duì)于ODDR2有著類
7、似的情況,大家可以自己理解一下。參考圖6圖7即可。想到一個(gè)資源守恒的公理,就是自然界普遍存在的tradeoff現(xiàn)象。如果添加一個(gè)寄存器抽樣, 則系統(tǒng)負(fù)擔(dān)降低; 反之如果想少使用資源, 不使用這個(gè)抽樣寄存器, 則全系統(tǒng)的負(fù)擔(dān)會(huì)提高。這個(gè)例子告訴我們兩個(gè)道理1 .tradeoff普遍存在2 .四兩可以撥千斤SelectIOSelectIO 信號(hào)標(biāo)準(zhǔn)S3E可以支持很多接口信號(hào)標(biāo)準(zhǔn),比如最常見的LVTTL、LVCMOS系歹U、PCI系歹U。此外,還支持差分信號(hào)標(biāo)準(zhǔn),典型的比如LVDS系列。要實(shí)現(xiàn)指定的信號(hào)標(biāo)準(zhǔn)有兩個(gè)必要條件:1 .內(nèi)在設(shè)置: 在UCF文件中對(duì)指定pin設(shè)置IOSTANDARD屬性, 這
8、樣FPGA會(huì)自動(dòng)切換指定IOB的信號(hào)標(biāo)準(zhǔn);2 .外在設(shè)置:每個(gè)信號(hào)標(biāo)準(zhǔn)都要求指定的Vcco(有些還要求指定的Vref),因此要在PCB板上提供相應(yīng)的Vcco支持。再來說說差分信號(hào),他的優(yōu)點(diǎn)是差分信號(hào)固有的噪聲消除特性來提高數(shù)據(jù)的可靠性,從而提高單路數(shù)據(jù)的傳輸速率。差分信號(hào)的命名有套規(guī)則,比如:IO_L43P_3和IO_L43N_3就表示Bank3里面第43對(duì)差分線的正負(fù)兩根線。差分信號(hào)的 terminationtermination差分信號(hào)一般傳輸速率較高,因此對(duì)信號(hào)的完整性有嚴(yán)格要求。方法之一就是使用termination來防止信號(hào)反射。為了減少用戶的外部負(fù)擔(dān),S3E實(shí)現(xiàn)了內(nèi)部的差分term
9、ination。使用方法就是在UCF中加入下列語句。INSTDIFF_TERM=;上拉下拉電阻pullup、pulldown的主要目的就是將懸空的管腳引導(dǎo)到確定的狀態(tài),避免未知的干擾。所以在懸空的管腳,確定輸入的管腳以及三態(tài)管腳上用的比較多。要修改管腳的pullup、pulldown、float屬性,可以在BitGen的時(shí)候從GenerateProgrammingFile的屬性中選擇保持電路三態(tài)信號(hào)在沒有驅(qū)動(dòng)的時(shí)候懸空,為了防止懸空,有一個(gè)保持電路可以幫助信號(hào)保持在前一邏輯狀態(tài)。具體使用方法-使用KEEPER屬性-使用KEEPER庫原語注意,如果使用了上下拉電阻,則該屬性被重置,因?yàn)閷?shí)現(xiàn)的功能
10、是類似的。差異是上下拉將懸空信號(hào)拉回確定值,而KEEPER是保持回前一邏輯值。電平轉(zhuǎn)換速率 SlewRateSlewRateSlewRate用于設(shè)置IOB輸出電平的切換速率。速率太低則很多接口時(shí)序得不到保障,因此有時(shí)候需要使用高速的切換速率。實(shí)現(xiàn)的方法就是加大驅(qū)動(dòng)電流,從2mA到16mA,每2mA有一個(gè)選擇。電流越大,當(dāng)然驅(qū)動(dòng)能力越強(qiáng),相應(yīng)的電平切換速率也更快。但是高速的切換會(huì)導(dǎo)致PCB電路的傳輸線效應(yīng),所以只要能滿足應(yīng)用,盡量采用低速的SlewRateBankBank 內(nèi)的 IOBIOB 組織S3E的四邊各有一個(gè)IOB的BanKo每個(gè)Bank可以有自己獨(dú)立的Vcco和Vref,所以一般的,每
11、個(gè)bank可以有自己獨(dú)立的電平標(biāo)準(zhǔn)。有些電平標(biāo)準(zhǔn)有相同的Vcco,則在該Bank內(nèi)可以支持多個(gè)電平標(biāo)準(zhǔn)。對(duì)于差分信號(hào),每個(gè)Bank都可以支持下面三個(gè)差分標(biāo)準(zhǔn)中的任意兩個(gè)-LVDS_25-MINI_LVDS_25-RSDS_25但是不能做到同時(shí)支持這三個(gè)標(biāo)準(zhǔn)BankBank 內(nèi)部電平標(biāo)準(zhǔn)的規(guī)則Vcco規(guī)則:- - 所有Vcco必須連接,即使不使用某個(gè)bank;- - 同屬于某個(gè)Bank的所有Vcco必須設(shè)置為相同的電平- - 所有Vcco必須和指定的電平標(biāo)準(zhǔn)電壓相符- - 如果某個(gè)bank沒有指定電平標(biāo)準(zhǔn),則將其連接到任意電平,比如2.5或者3.3VVref規(guī)則:(前提是該電平標(biāo)準(zhǔn)要求使用Vre
12、f)- - 所有Vref必須連接,即使不使用某個(gè)bank;- - 同屬于某個(gè)Bank的所有Vref必須設(shè)置為相同的電平- - 所有Vref必須和指定的電平標(biāo)準(zhǔn)電壓相符如果某個(gè)bank對(duì)應(yīng)的電平標(biāo)準(zhǔn)不需要Vref來偏置輸入切換門限,則該Vref管腳可以用做用戶IO或者輸入管腳。專用的輸入管腳專用輸入管腳一般用IP_Lxxx_x表示。對(duì)于專用輸入管腳,沒有差分termination。靜電保護(hù)在每個(gè)IO上都有靜電保護(hù),大家看文檔的圖1就明白了。在pad-Vcco之間有P-N偏置保護(hù)。在pad-GND之間有N-P偏置保護(hù)。在靜電過大的時(shí)候,通過這兩個(gè)保護(hù)二極管可以直接將電流泄洪到電源與地IOBIOB
13、的電源支持Vcco用于對(duì)驅(qū)動(dòng)輸出的支持。Vccint用于驅(qū)動(dòng)內(nèi)部邏輯。Vccaux是輔助電源,用于優(yōu)化FPGA性能(這個(gè)誰有補(bǔ)充?)在上電、配置、用戶模式下,IOIO 的行為分析- - 上電狀態(tài)首先,電源穩(wěn)定。Vcco、Vccint、Vccaux作為內(nèi)部主電復(fù)位電路”的必要電源輸入,必須達(dá)到穩(wěn)定狀態(tài)。這些基本電源穩(wěn)定了才能實(shí)現(xiàn)上電復(fù)位,芯片才能進(jìn)入配置狀態(tài)。其次,IO高阻上拉,切斷外部接口。HSWAP管腳被施加一個(gè)低電平。注意,這個(gè)低電平會(huì)維持到配置結(jié)束。這個(gè)低電平的作用是將用戶IO全部上拉。我想這樣做的目的是令所有IO進(jìn)入確定狀態(tài),避免對(duì)配置操作的干擾。最后,全局復(fù)位,切斷邊緣存儲(chǔ)通道。FP
14、GA內(nèi)部設(shè)置全局置位復(fù)位”,異步方式將所有IOB存儲(chǔ)單元清零- - 配置階段首先,確定配置模式。INIT_B高電平,并抽樣M0,M1,M2的值,據(jù)此確定配置模式。然后,下載數(shù)據(jù)到FPGA。注意,整個(gè)配置期間,IO繼續(xù)保持高阻上拉狀態(tài)。最后,釋放GSRo釋放全局GSR,IOB寄存器回到默認(rèn)的Low狀態(tài),除非設(shè)計(jì)中改變了SR輸入的極性,否則都是Low狀態(tài)。- - DesignOperationDesignOperation 階段首先,全局三態(tài)釋放,打通外部接口。GTS釋放,令所有IO都進(jìn)入活躍狀態(tài),未使用的IO則被弱下拉。通過在BitGen中設(shè)置屬性,可以修改GTS釋放后未使用IO的狀態(tài)設(shè)置,比如
15、上拉、下拉、懸空。其次,全局寫使能,打通內(nèi)部存儲(chǔ)通道。在一個(gè)時(shí)鐘后,GWE全局寫使能被釋放。這樣RAM和寄存器就都可以寫入了,也就是設(shè)計(jì)可以動(dòng)作起來了。注意,在該階段HSWAP釋放,所以他也可以被用作普通的GPIO?!旧厦娴倪@個(gè)內(nèi)容是寫到現(xiàn)在最重要的一部分,對(duì)于理解整個(gè) FPGA 的啟動(dòng)過程非常有幫助。】CLBCLB 概覽CLB是可配置邏輯塊的簡稱。這是FPGA整個(gè)矩形配置結(jié)構(gòu)中的基本單元。1CLB=2X2Slice1Slice=2(LUT+FF)+其他運(yùn)算、進(jìn)位、MUX資源每個(gè)CLB都是相同的,所以知道一個(gè)就知道了全部。接下來重點(diǎn)研究CLB。SliceSlice上面講到了一個(gè)CLB有2*2個(gè)
16、Slice。這個(gè)4個(gè)slice可以分成左右兩對(duì),我們來看他們的主要區(qū)別。左邊的是SLICE-M,帶有存儲(chǔ)增強(qiáng)功能(分布式存儲(chǔ)器,移位寄存器等)。右邊的是SLICE-L,沒有存儲(chǔ)增強(qiáng)功能。那么為什么左右不一樣呢?我認(rèn)為,提供SLICE-M的目的就是為了讓通用FPGA能夠?qū)Υ鎯?chǔ)應(yīng)用有更多支持。那為什么右邊的沒有存儲(chǔ)增強(qiáng)呢?最重要的原因是減小CLB右側(cè)的面積,從而降低整個(gè)芯片的價(jià)格成本。同時(shí),純粹的logic設(shè)計(jì)可以提供比混雜設(shè)計(jì)的SLICE-M更優(yōu)的性能。LogicCellLogicCell 的概念經(jīng)常有人混淆CLB和LC的概念。這里就給大家澄清一下。CLB就不用講了,就是上面說到的2*2slic
17、e陣列構(gòu)成的可配置邏輯塊。LC則比CLB要小多了。如果給個(gè)公式就是:LogicCell=1LUT+1FF(存儲(chǔ)單元)那么一個(gè)Slice等價(jià)于多少LC呢?看到后面的內(nèi)容你會(huì)知道,一個(gè)Slice里面有兩個(gè)LUT和兩個(gè)FF,但是除此之外,還有些運(yùn)算增強(qiáng)單元。所以Xilinx給出的S3E的slice等價(jià)LC個(gè)數(shù)為:2.25SliceSlice 結(jié)構(gòu)概覽終于講到Slice了。這個(gè)是研究FPGA的重中之重。接下來要分成若干小點(diǎn)分別講述,如果要觀察全部結(jié)構(gòu)則最好參考14頁的圖12.這個(gè)圖是Slice-M的結(jié)構(gòu)圖,注意里面的虛線部分是SliceM專有結(jié)構(gòu),在slice-L中并不存在。通過比較,SliceL的結(jié)
18、構(gòu)也就非常清晰了。邏輯通路與 bypassbypass 通路一個(gè)slice可以簡單分成上下兩部分,兩部分的結(jié)構(gòu)基本一致,有著近乎相同的元素。下半部分一般冠以前綴或者后綴“F;上半部分則冠以前綴或者后綴“G G。現(xiàn)在以F為例,來研究一下主要的數(shù)據(jù)通路。參考的圖片主要還是14頁的圖12,這個(gè)圖太經(jīng)典了。先來說明一下邏輯路徑,這個(gè)路徑必然經(jīng)過LUT,否則就不能成為邏輯路徑,而只能成為旁路路徑??偨Y(jié)一下,主要的邏輯路徑是5個(gè):大家有興趣的話,可以自己用筆標(biāo)示一下這些通路,非常清晰。如果要記憶的話,其實(shí)也很簡單,一是邏輯運(yùn)算后的直接輸出和寄存器輸出;二是加法、乘法的直接輸出和寄存器輸出;三是LUT4到L
19、UT5甚至更多級(jí)的運(yùn)算擴(kuò)展輸出。資料中還提到了旁路bypass通路,這個(gè)通路的特點(diǎn)是必然不經(jīng)過LUT,所以稱為旁路。旁路的應(yīng)用比較多,但是為了集中精力,這里不再展開,大家自己研究吧。LUTLUT 查找表LUT就是lookuptable的簡稱,可以稱為查找表。因?yàn)橐粋€(gè)邏輯運(yùn)算的與非門實(shí)現(xiàn)和ROM形式的查找表實(shí)現(xiàn)是完全等價(jià)的,這個(gè)在數(shù)電知識(shí)里學(xué)過的。在FPGA中,邏輯電路的實(shí)現(xiàn),主要就是依靠LUT。當(dāng)然在SliceM中,LUT的能力更強(qiáng),可以被配置成為DistributedRAM或者16位移位寄存器。此外,在Spartan3E中,所有的LUT都是LUT-4也就是4輸入的,但是他們可以擴(kuò)展為LUT-
20、5/6/7/8,方法就是我們接下來要介紹的wideMUXWideMultiplexersWideMultiplexers 構(gòu)造高階 LUTiLUTi 的神兵利器有了LUT4,如何實(shí)現(xiàn)LUT5?這個(gè)問題的答案其實(shí)很簡答。對(duì)于4位輸入的邏輯可以用LUT實(shí)現(xiàn),那么對(duì)于一個(gè)5位輸入的實(shí)現(xiàn),就可以這樣來做。首先假設(shè)第5比特為0,在這個(gè)前提下,5位邏輯就變成了4位邏輯,用一個(gè)LUT4(F)實(shí)現(xiàn)。然后假設(shè)第5比特為1,在這個(gè)前提下,5位邏輯也變成了4位邏輯,用另一個(gè)LUT4(G)實(shí)現(xiàn)。最后,我們把這兩個(gè)LUT4的輸出值用一個(gè)MUX連接,當(dāng)?shù)?比特為0,我們就選通F,為1則選通Go這樣通過整合兩個(gè)LUT4和一
21、個(gè)MUX,另外用第5比特作為選通信號(hào),我們得到了一個(gè)等價(jià)的LUT5。循環(huán)使用上述方法,我們可以進(jìn)一步得到LUT-6/7/8.可以發(fā)現(xiàn)這里非常重要的一個(gè)資源就是MUX,Spartan3E稱為widemultiplexero在一個(gè)Slice中,下半部分只提供F5MUX,也就是用于構(gòu)造LUT5的MUX。而在上半部分中則沒有F5MUX,因?yàn)橐粋€(gè)slice剛好兩個(gè)LUT4,有一個(gè)F5MUX就夠了。但是上半部分提供了一個(gè)FiMUX,這個(gè)i可以是6、7、8。這樣,上半部的FiMUX就為擴(kuò)展更大規(guī)模的LUT-i提供了物質(zhì)基礎(chǔ)。.5.從LUT輸出后,再通過X口,離開CLB從LUT輸出后再經(jīng)過從LU
22、T輸出后再經(jīng)過上述三種情況中,不從從LUT輸出后再經(jīng)過XOR運(yùn)算(加法或乘法應(yīng)用),再通過X口,離開CLBF5MUX(等價(jià)于LUT-5擴(kuò)展),在通過X口或者F5,離開CLBX口輸出,而是經(jīng)由FF輸出,通過XQ,離開CLBCYMUX,參與到加法運(yùn)算的進(jìn)位鏈中如果要細(xì)究一下哪些slice提供F6/7/8MUX,可以這樣來歸納。一個(gè)CLB中的下面兩個(gè)slice,只能提供F6MUX。上面的兩個(gè)slice中,SliceM提供F7MUX,SliceL提供F8MUX。另外,LUT作為4比特邏輯能夠?qū)崿F(xiàn)2:1MUX功能,因此借助wideMUX可以實(shí)現(xiàn)更高階的MUX。最后重點(diǎn)關(guān)注一下F5MUX中提高性能的一個(gè)細(xì)
23、節(jié)。F5MUX的選通輸出,如果要構(gòu)造LUT-6,就可以直接將輸出繞回本Slice的F6MUX。為此,F(xiàn)5MUX特意創(chuàng)建了兩個(gè)輸出口,一個(gè)輸出到CLB外,一個(gè)則利用本地反饋電路快速繞回到FiMUX進(jìn)行級(jí)聯(lián)。進(jìn)位與算術(shù)邏輯這是Slice結(jié)構(gòu)部分的高階知識(shí)。Slice的主角是LUT,他有個(gè)缺陷,就是比較適合完成普通的邏輯設(shè)計(jì),也就是單比特輸出的運(yùn)算。但是在設(shè)計(jì)中,大量用到算術(shù)邏輯,最常見的就是乘法和加法,這些運(yùn)算的特點(diǎn)就是多個(gè)輸出。比如帶進(jìn)位的1比特加法運(yùn)算,結(jié)果有兩個(gè)比特,一個(gè)是部分和,一個(gè)是進(jìn)位。如果用LUT來實(shí)現(xiàn)的話,這么一個(gè)簡單的運(yùn)算都至少需要兩個(gè)LUT來完成,非常浪費(fèi)。為了避免這種浪費(fèi),X
24、ilinx想出了妙計(jì), 就是在Slice中添加幾個(gè)簡單的XOR和AND門。 這些門數(shù)量極少, 但是畫龍點(diǎn)睛, 把算術(shù)邏輯激活了。比如上面的單比特加法,只使用一個(gè)LUT,然后搭配簡單的幾個(gè)門就搞定了,大大節(jié)省資源。我們看以參考經(jīng)典的圖12和圖20、21,我們發(fā)現(xiàn),支持算術(shù)邏輯的單元并不多。在slice的上下兩側(cè)各有這樣一套資源。每套資源都是一個(gè)三元組:AND、XOR、CYMUX。結(jié)合圖20、21,我們可以領(lǐng)悟到,這些資源其實(shí)就是為了實(shí)現(xiàn)部分和”運(yùn)算和部分積”運(yùn)算而實(shí)現(xiàn)的。從而構(gòu)造出一個(gè)完整的、高效的算術(shù)邏輯運(yùn)算通道。對(duì)于加法和乘法,產(chǎn)生部分和以及部分積是在橫向完成的,并且沒有積累,所以時(shí)序上沒有
25、問題。但是進(jìn)位鏈由于具有累積效應(yīng),因此必須有專門的針對(duì)性設(shè)計(jì)。我們可以看到Spartan3E里面就有這樣的一條進(jìn)位鏈自下往上,通過一堆級(jí)聯(lián)的MUX快速輸出。這個(gè)就是Xilinx的進(jìn)位鏈優(yōu)化電路。存儲(chǔ)單元存儲(chǔ)單元是通用的設(shè)計(jì),可以配置成為FF,也可以配置成為Latch。關(guān)于兩者的差異,請(qǐng)自己查閱手冊(cè)?;旧洗鎯?chǔ)單元的輸入數(shù)據(jù)來自兩個(gè)部分:1 .LUT組合邏輯輸出;2 .旁路數(shù)據(jù)一個(gè)存儲(chǔ)單元有12個(gè)輸入輸出口,當(dāng)然配置在不同的類型下,會(huì)使用到不同的接口。D-Q是輸入輸出數(shù)據(jù)信號(hào),我給他列成一對(duì);C-CE是時(shí)鐘和時(shí)鐘使能,也是一對(duì);G-GE是配置為latch時(shí)的門和門使能信號(hào),又是一對(duì);S-R是同步
26、set/reset信號(hào),兩者取反,所以等效于一個(gè)信號(hào);PRE-CLR是異步set/reset信號(hào),兩者取反,所以等效于一個(gè)信號(hào);SR-REV和S-R以及PRE-CLR是一個(gè)系列,只不過他們是CLB的輸入信號(hào),在Slice內(nèi)部,他們化身成了S-R以及PRE-CLR。注意SR是一個(gè)通用用法,你可以通過SRLOW和SRHIGH屬性來將其設(shè)置為SET用途還是Reset用途。提一下REV,這個(gè)信號(hào)和SR同時(shí)作用,當(dāng)他有效時(shí),set/reset的值就取反。感覺很全面,不過又感覺好無聊,盡整一些沒用的東西。分布式存儲(chǔ) DistributedRAMDistributedRAM一個(gè)SliceMLUT存儲(chǔ)16位數(shù)
27、據(jù)(RAM16)。通過多個(gè)LUT的組合,可以對(duì)寬度和深度進(jìn)行擴(kuò)展,比如16x4,32x2,64x1。要提高地址空間就需要有地址線的擴(kuò)展,LUT4只接收4位地址,擴(kuò)展的地址由BX、BY兩個(gè)旁路信號(hào)提供。有了這兩個(gè)信號(hào),地址就是6位的,深度就是64。寫操作是同步的,也就是和寫時(shí)鐘(SliceM的CLK)同步。讀操作則是異步的,隨時(shí)反映當(dāng)前讀地址的內(nèi)容。接下來重點(diǎn)研究一下SliceM如何構(gòu)造dualportRAM。這個(gè)非常巧妙。建議大家對(duì)照?qǐng)D12、23進(jìn)行研究。注意SliceM中上面的LUT可以同時(shí)讀寫,而下面的是只讀的。這和dualport的定義有關(guān),dualport是一側(cè)只讀、一側(cè)只寫,所以有一
28、個(gè)讀,來減小控制邏輯。由于在邏輯上只有一個(gè)存儲(chǔ)空間,所以兩塊LUT的內(nèi)容必須一致。這就要求所以寫操作必須同時(shí)反映到兩個(gè)LUT,要完成這一點(diǎn),必須令寫使能、寫地址、寫數(shù)據(jù)同時(shí)反映到兩個(gè)LUT。觀察圖12的兩個(gè)LUT的WS(寫使能)、WG-WF(寫地址)、D1(寫數(shù)據(jù))的級(jí)聯(lián)關(guān)系就明白了。好了,到此我們保證了寫操作的正確性和兩塊LUT的內(nèi)容一致性。那么讀操作怎么完成呢?我們觀察到,除了WG-WF,還有一個(gè)名為A4:1的地址總線。這個(gè)地址總線獨(dú)立于寫地址總線,從而確保了獨(dú)立的讀操作。然后讀出的數(shù)據(jù)由LUT的D端輸出。作為DualportRAM使用的時(shí)候,讀數(shù)據(jù)從下端LUT的D口輸出。最后,介紹一個(gè)使
29、用注意:1 .INIT屬性用于初始化RAM;LUT完全可以只2 .如果只要ROM功能,則SliceL也可以提供;3 .全局寫使能信號(hào)GWE在配置階段關(guān)閉,可以防止對(duì)RAM初始值的干擾;總之,通過上面的內(nèi)容我們明白了,SliceM和SliceL在存儲(chǔ)支持上的最大區(qū)別:- SliceL只能支持讀功能,比如ROM- SliceM則支持讀寫以及DualPort實(shí)現(xiàn),因此在讀寫地址獨(dú)立和輸入數(shù)據(jù)通道等方面做了增強(qiáng)移位寄存器-構(gòu)造Slice-M的LUT有個(gè)優(yōu)勢(shì),就是可以構(gòu)造16位的移位寄存器。由于一個(gè)SliceM內(nèi)有兩個(gè)LUT,所以可以級(jí)聯(lián)構(gòu)造32位寄存器。進(jìn)一步,一個(gè)CLB內(nèi)有上下兩個(gè)SliceM,可以
30、構(gòu)造64位的移位寄存器。事實(shí)上,以此類推,多個(gè)CLB可以進(jìn)一步構(gòu)造更長的移位寄存器。-例化要使用移位寄存器可以使用SRL16(ShiftRegisterLUT16bit),他有很多變種,可以構(gòu)造出多種形式的近似的移位寄存器。他的輸出有兩個(gè),一個(gè)是可尋址的輸出,這是可變長度的移位寄存器的輸出。另外一個(gè)名為MC15,是LUT中的最后一個(gè)比特,用于多個(gè)移位寄存器級(jí)聯(lián)時(shí)使用。因?yàn)榧?jí)聯(lián)的上級(jí)SR總是從最后一個(gè)比特連到下一個(gè)SR。移位寄存器有原語,好像是SSRL16,大家可以試用一下。在Xilinx的技術(shù)文檔中可以找到更多的SR形式。-不包括FF很多人疑惑,SR中是否有FF存在,其實(shí)圖25清楚的回答了這個(gè)
31、問題??梢钥吹絊R是完全由SliceM的LUT實(shí)現(xiàn)的,F(xiàn)F不在其內(nèi)。當(dāng)然可以在SR之外和FF連接,構(gòu)造更長的SR。BlockRAMBlockRAM 概覽在spartan3E系列中,每個(gè)FPGA基本有4-36個(gè)BRAM。每個(gè)這樣的BRAM都是DualPort的、可配置的18Kbit存儲(chǔ)器。為什么是18Kbit呢,可以這樣記憶,16K做數(shù)據(jù),2K做校驗(yàn)位。當(dāng)然你一定要放18K數(shù)據(jù)也是可以的,但是涉及初衷肯定是考慮了校驗(yàn)位的需要。所以以后如果使用小的內(nèi)存就用我們前面講過的Slice(LUT)分布式RAM。如果要大塊的,就不要麻煩了,直接例化BRAM。BRAM有幾種主要的可配置項(xiàng):- 初始值(比如可以
32、放啟動(dòng)軟件代碼)- 端口aspectratio,這個(gè)我會(huì)在后面介紹,簡單講就是輸入輸出數(shù)據(jù)長度的不對(duì)稱配置- 寫狀態(tài)下的數(shù)據(jù)輸出模式- 單端口雙端口配置BRAMBRAM 的片上位置BRAM和乘法器相鄰,兩者一起以12縱列的形式放在FPGA內(nèi)部。根據(jù)FPGA的大小,有些只有1歹U,有些有2列。每個(gè)BRAM都和一個(gè)18x18的乘法器相鄰。BRAM的A口上端16位和乘法器A口上端16位共享。BRAM的B口上端16位和乘法器B口上端16位共享。不知道這樣做的目的是什么,請(qǐng)大家補(bǔ)充BRAMBRAM 的端口結(jié)構(gòu)BRAM被配置為雙端口結(jié)構(gòu)。每個(gè)端口都有其獨(dú)立的數(shù)據(jù)、控制、時(shí)鐘總線。根據(jù)這個(gè)特點(diǎn),一個(gè)BRAM
33、可以有四種基本的讀寫數(shù)據(jù)通路:- 只從A端口讀和寫- 只從B端口讀和寫-A寫B(tài)讀-B寫A讀通過原語調(diào)用 BRAMBRAMBRAM的調(diào)用原語有兩種,一種是當(dāng)做dualport調(diào)用,一種是當(dāng)做singleport調(diào)用。當(dāng)dualport調(diào)用時(shí),使用原語RAMB16_Swa_Swb,例如-RAMB16_S9_S18:雙端口RAM,A端口寬度為9,B端口寬度為18當(dāng)singleport調(diào)用時(shí),使用原語RAMB16_Sw,例如-RAMB16_S18:單端口RAM,端口寬度為18BRAMBRAM 端口寬度比和很多人先入為主的印象不一樣,BRAM是支持靈活的端口寬度的。端口A和端口B相互獨(dú)立,兩者可以配置成
34、為不同的寬度。通過尋址單位(A/B端口各不相同)的適配,兩側(cè)都能實(shí)現(xiàn)正確尋址。比如一側(cè)寬,一側(cè)窄,則在窄的一側(cè)尋址時(shí),寬的數(shù)據(jù)被分割成窄的數(shù)據(jù)單元。相反的,在寬的一側(cè)尋址時(shí),窄的數(shù)據(jù)被合并成寬的數(shù)據(jù)單元。圖28非常經(jīng)典。建議大家反復(fù)欣賞。假設(shè)A端口寬度為36位,則一個(gè)36位數(shù)據(jù)(4個(gè)字節(jié),以及4個(gè)相應(yīng)校驗(yàn)位)只占1個(gè)尋址單元?,F(xiàn)在來對(duì)B端口寬度的各種情況進(jìn)行假設(shè):-36位:和A端口一樣,原來的36位仍然占用一個(gè)尋址單元-18位:原36位數(shù)據(jù)(含校驗(yàn)位)均勻的一分為二(2x2字節(jié)+2比特校驗(yàn)),占用2個(gè)尋址單元。-09位:原36位數(shù)據(jù)(含校驗(yàn)位)均勻的一分為四(4x1字節(jié)+1比特校驗(yàn)),占用4個(gè)
35、尋址單元。-04位:原36位數(shù)據(jù)的4比特校驗(yàn)位被丟棄,原數(shù)據(jù)分割為(8x4比特),占用8個(gè)尋址單元。-02位:原36位數(shù)據(jù)的4比特校驗(yàn)位被丟棄,原數(shù)據(jù)分割為(16x2比特),占用16個(gè)尋址單元。-01位:原36位數(shù)據(jù)的4比特校驗(yàn)位被丟棄,原數(shù)據(jù)分割為(32x1比特),占用32個(gè)尋址單元。注意:當(dāng)寬度小于8比特時(shí),因?yàn)樵瓉淼淖止?jié)校驗(yàn)無法繼承下來,所以校驗(yàn)信息被丟棄。BRAMBRAM 屬性定義-INITxx(INIT00INIT3F)初始化BRAM數(shù)據(jù)位,在配置階段載入,每個(gè)初始化字符串定義32個(gè)Hex值,總共16Kbit。(貌似有筆誤,INIT7F才符合)-INITPxx(INITP00INIT
36、P0F)初始化BRAM校驗(yàn)位,在配置階段載入,每個(gè)初始化字符串定義32個(gè)Hex值,總共2Kbit。-INIT(單端口)INITA/INITB(雙端口)數(shù)據(jù)輸出鎖存初始化,是一個(gè)和端口寬度匹配的Hex值。-SRVAL(單端口)SRVAL_A/SRVAL_B(雙端口)數(shù)據(jù)輸出鎖存同步重置,是一個(gè)和端口寬度匹配的Hex值,用于重置輸出鎖存值。-WRITE_MODE數(shù)據(jù)輸出鎖存行為(寫操作下):有先讀、先寫、不變,一共三種模式寫操作下的數(shù)據(jù)輸出鎖存行為這是緊接著上面的內(nèi)容寫的。在寫操作下,數(shù)據(jù)如何輸出,一般不怎么關(guān)心。但是在特殊的應(yīng)用下,設(shè)置不同的模式,可能可以提供到便利。我們只要大概理解就行了。- 先寫這種模式下,正在寫的數(shù)據(jù)穿腸而過,直接輸出。- 先讀這種模式下,寫地址處的原數(shù)據(jù)被讀出。用于保護(hù)原始數(shù)據(jù)非常有用。- 不變這種模式下,寫操作前的輸出數(shù)據(jù)被鎖存并持續(xù)輸出,整個(gè)寫操作期間都不改變。BRAM到此就結(jié)束了,想想真的沒有什么內(nèi)容。專用乘法器FPGA在數(shù)字信號(hào)處理方面比DSP的功能要弱。但是為了爭(zhēng)取更多用戶,F(xiàn)PGA也把DSP的核心一一專用乘法器帶入了芯片。一個(gè)典型的乘法器有著18X18=36的輸入輸出結(jié)構(gòu)。兩個(gè)輸入端口和一個(gè)輸出端口都有可選的寄存器,用于適配不同的應(yīng)用需求。調(diào)用乘
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 培訓(xùn)課件的互動(dòng)游戲
- 人類活動(dòng)與環(huán)境問題高中地理湘教版(2019)選擇性必修3
- 接受雙膦酸鹽治療患者拔牙圍手術(shù)期處理 專家共識(shí)
- 刑偵學(xué)考試試題及答案
- 腦機(jī)接口康復(fù)訓(xùn)練系統(tǒng)設(shè)備研發(fā)進(jìn)展與市場(chǎng)應(yīng)用前景
- 《白楊禮贊》教學(xué)課件
- 電商平臺(tái)安全管理體系與交易保障措施
- 新輔助治療兩周期后多參數(shù)MRI影像組學(xué)及Ki67的變化構(gòu)建pCR早期預(yù)測(cè)模型
- 農(nóng)業(yè)水價(jià)補(bǔ)貼管理辦法
- 監(jiān)獄生產(chǎn)收入管理辦法
- 北京八中分班數(shù)學(xué)試卷
- 培訓(xùn)課件:血糖監(jiān)測(cè)
- 康復(fù)醫(yī)學(xué)科關(guān)于無效中止康復(fù)訓(xùn)練的制度與流程
- 工傷保險(xiǎn)待遇申請(qǐng)表
- 甘肅省建筑安全員A證考試題庫及答案
- 【藝恩】JELLYCAT品牌洞察報(bào)告
- 2025年中考物理終極押題猜想(廣東省卷專用)(原卷版)
- DB36-T 2037-2024 地質(zhì)災(zāi)害治理工程施工監(jiān)理規(guī)范
- 《公路建設(shè)項(xiàng)目文件管理規(guī)程》
- 腰麻課件教學(xué)課件
- 2024年《治安管理處罰法》多項(xiàng)選擇題題庫及答案(共193題)
評(píng)論
0/150
提交評(píng)論