洪偉 錢倩云



相控陣面各通道原始幅度和相位的一致性難以保證,必須進(jìn)行幅相校正。本文提出了一種基于DDR3存儲器的相控陣面幅相補(bǔ)償單元設(shè)計,以FPGA作為控制核心,實現(xiàn)邏輯控制、讀寫控制、存儲器控制等功能,詳細(xì)介紹了硬件設(shè)計、軟件流程設(shè)計和數(shù)據(jù)存儲設(shè)計,給出了完整的設(shè)計方案。性能測試結(jié)果表明本設(shè)計具有快速查詢、大容量存儲的優(yōu)點(diǎn),設(shè)計同時兼顧小型化、易移植、方便擴(kuò)展等需求。
【關(guān)鍵詞】幅相補(bǔ)償單元 DDR3 相控陣
相控陣面具有快速改變波束指向和波束形狀的能力,在軍事和通信等領(lǐng)域得到了廣泛的應(yīng)用。相控陣面要求每個通道信號的幅度和相位穩(wěn)定、一致和可控,否則會對波束形成產(chǎn)生不利的影響,但在實際系統(tǒng)中,由于元器件性能的差異、設(shè)備加工裝配精度的差異以及設(shè)備工作頻率和環(huán)境的差異,導(dǎo)致了相控陣面各通道原始幅度和相位的一致性難以保證,因此相控陣面必須進(jìn)行幅相校正,并用校正數(shù)據(jù)對波控碼進(jìn)行修正,相控陣面的波控系統(tǒng)用修正后的波控碼進(jìn)行布相。大型寬帶相控陣面工作頻帶寬、工作模式多,幅相補(bǔ)償數(shù)據(jù)量大,需要大容量高性能的幅相補(bǔ)償單元。針對此應(yīng)用,本文提出了一種基于DDR3的相控陣面幅相補(bǔ)償單元設(shè)計。
1 設(shè)計方案
幅相補(bǔ)償單元主要由邏輯控制器、讀控制器、寫控制器、存儲控制器、DDR3控制器和DDR3存儲器組成,幅相補(bǔ)償單元組成框圖如圖1所示。
幅相補(bǔ)償單元的控制器全部在FPGA中實現(xiàn)。邏輯控制器根據(jù)幅相補(bǔ)償單元的輸入信號產(chǎn)生控制邏輯,啟動讀寫操作,同時實現(xiàn)幅相補(bǔ)償單元外部數(shù)據(jù)與內(nèi)部數(shù)據(jù)的交互。讀控制器在邏輯控制器的控制下產(chǎn)生讀命令、讀地址和讀控制時序并將讀取的數(shù)據(jù)傳遞給邏輯控制器,幅相補(bǔ)償單元的查詢操作主要由讀控制器完成。寫控制器在邏輯控制器的控制下產(chǎn)生寫命令、寫地址和寫控制時序并將經(jīng)邏輯控制器輸入的外部數(shù)據(jù)寫入DDR3存儲器,幅相補(bǔ)償單元的初始化操作主要由寫控制器完成。存儲控制器在一組讀、寫控制器與多組DDR3控制器之間實現(xiàn)接口轉(zhuǎn)換和數(shù)據(jù)緩存功能。DDR3控制器實現(xiàn)對DDR3存儲器的底層操作。
DDR3存儲器是一種大容量高速存儲器件,有著非常高的讀寫速度,其數(shù)據(jù)接口一般為8位或者16位。DDR3存儲器的讀寫操作是基于突發(fā)的,即從一個選定的地址單元開始,連續(xù)存取己設(shè)置長度的地址單元,該長度就是所謂的突發(fā)長度(Burst Length)。DDR3存儲器提供的可編程的讀或?qū)懙耐话l(fā)長度為4或8。由于DDR3存儲器的預(yù)取為8位,所以不管突發(fā)長度設(shè)置為4還是8,一次操作的執(zhí)行時間是相同的,因此實際操作突發(fā)長度設(shè)置為8,8位數(shù)據(jù)接口的器件一次讀操作返回64位數(shù)據(jù),16位數(shù)據(jù)接口的器件一次讀操作返回128位數(shù)據(jù)。相控陣面幅相補(bǔ)償單元按照通道順序查詢補(bǔ)償值,一個通道一個狀態(tài)的幅相補(bǔ)償值通常不超過16位,所以8位數(shù)據(jù)接口的器件就可以滿足幅相補(bǔ)償單元設(shè)計需要并占用較少的資源,同樣通過多片DDR3存儲器拼接實現(xiàn)更大數(shù)據(jù)位寬從而提高存取帶寬的常規(guī)方法并不能提高幅相補(bǔ)償單元的性能,因此本設(shè)計使用多控制器獨(dú)立工作的方式,每片8位DDR3存儲器對應(yīng)一個DDR3控制器,在提高存儲容量的同時提高了性能。
2 工程設(shè)計
2.1 硬件設(shè)計
本設(shè)計FPGA選擇賽靈思公司的XC7K325T,DDR3存儲器選擇鎂光公司的MT41J512M8,整個電路工作頻率高,時序要求復(fù)雜,必須多方面精心設(shè)計才能獲得盡可能最佳的信號完整性和時序裕量以保證穩(wěn)定可靠運(yùn)行。DDR3存儲器電路及其與FPGA的連接是硬件設(shè)計的重點(diǎn),本文對其設(shè)計進(jìn)行詳細(xì)說明。
XC7K325T的IO Bank分為HR Bank和HP Bank兩種,HR Bank具有更寬的工作電壓范圍,HP Bank具有更高的工作性能,HRBank和HP Bank都可以用于連接DDR3存儲器,但是為了獲得更好的性能和設(shè)計裕量,本設(shè)計使用HP Bank連接DDR3存儲器并且一片DDR3存儲器獨(dú)占一個HP Bank。時鐘信號CK按照差分阻抗80Q布線并在終端并聯(lián)80Q匹配電阻,數(shù)據(jù)信號DQS按照差分阻抗80Q布線,數(shù)據(jù)信號DQ[7:0]和DM按照單端40Q阻抗布線,地址和控制信號按照單端40Q阻抗布線并在終端串聯(lián)40Ω匹配電阻并上拉至VTT。數(shù)據(jù)信號DQ[7:0]和DM參考DQS做等長設(shè)計,實際按照±3 0mil布線,地址和控制信號參考時鐘信號CK做等長設(shè)計,實際按照±1OOmil布線,差分信號CK和DQS內(nèi)部按照±1Omil等長布線。數(shù)據(jù)信號使用單獨(dú)布線層布線,通過參考平面與其它信號隔離,時鐘信號、地址和控制信號共用兩個布線層布線。DDR3存儲器電源分為VDDQ和VDD兩組,電壓均為1.5V,為了簡化設(shè)計使用一組電源供電,但是每組分別濾波并在每個電源引腳使用O.1uF和O.O1uF電容組合濾波。FPGA IOBank電壓與DDR3存儲器電源電壓保持一致并使用同一組電源供電,同樣在電源引腳使用O.1uF和O.O1uF電容組合濾波。DDR3存儲器電源電流隨操作模式變化很大,在靠近FPGA一側(cè)和DDR3存儲器一側(cè)各放置lOOuF大電容。FGPA的IO Bank和DDR3存儲器需要的參考電壓Vref通過VDDQ經(jīng)過電阻分壓得到并在每個Vref引腳使用O.luF和O.OluF電容組合濾波。
2.2 軟件流程設(shè)計
初始化操作和查詢操作是幅相補(bǔ)償單元的兩個主要操作,初始化操作是將相控陣面通過測試并整理得到的補(bǔ)償表數(shù)據(jù)寫入幅相補(bǔ)償單元,通常在加電后執(zhí)行,查詢操作是以相控陣面的工作狀態(tài)和通道的原始波控碼為地址讀取補(bǔ)償值,在工作時頻繁執(zhí)行。系統(tǒng)復(fù)位后幅相補(bǔ)償單元處于空閑狀態(tài),通過設(shè)置命令碼觸發(fā)幅相補(bǔ)償單元啟動操作,幅相補(bǔ)償單元軟件工作流程如圖2所示。
初始化命令啟動初始化操作,邏輯控制器通過激活寫控制器設(shè)置幅相補(bǔ)償單元進(jìn)入寫模式,寫控制器根據(jù)狀態(tài)碼計算補(bǔ)償表起始地址,然后將接收到的表數(shù)據(jù)和當(dāng)前地址一同發(fā)送給存儲控制器,每發(fā)送64bit數(shù)據(jù),地址遞增8,如果地址超過當(dāng)前補(bǔ)償表預(yù)設(shè)空間則本次初始化操作結(jié)束,返回空閑狀態(tài),等待下一個命令,否則繼續(xù)接收數(shù)據(jù)并寫入存儲器。查詢命令啟動查詢操作,查詢操作輸入和輸出部分獨(dú)立運(yùn)行。邏輯控制器通過激活讀控制器設(shè)置幅相補(bǔ)償單元進(jìn)入讀模式,讀控制器根據(jù)狀態(tài)碼計算補(bǔ)償表起始地址,然后接收1個通道的波控碼并根據(jù)起始地址、狀態(tài)碼和波控碼計算本次查詢地址并將地址發(fā)送給存儲控制器,如果所有通道查詢地址都已經(jīng)發(fā)送完則輸入操作結(jié)束,等待輸出操作完成。邏輯控制器在激活讀控制器的同時啟動輸出操作,讀取讀控制器返回的查詢結(jié)果并截取有效數(shù)據(jù)輸出,如果所有通道補(bǔ)償值都輸出完則本次查詢操作結(jié)束,返回空閑狀態(tài),等待下一個命令,否則繼續(xù)讀取查詢結(jié)果并輸出。
2.3 數(shù)據(jù)存儲設(shè)計
DDR3存儲器按照Bank、Row、Column的結(jié)構(gòu)管理數(shù)據(jù),每片DDR3存儲器有8個Bank。應(yīng)用模式不同,DDR3接口效率差異非常大。讀取操作時先根據(jù)Bank地址和Row地址將一行數(shù)據(jù)全部讀取到緩存中,然后根據(jù)Column地址選擇欲讀取數(shù)據(jù)輸出,當(dāng)連續(xù)兩次讀取數(shù)據(jù)在同- Bank的不同行時,需要先執(zhí)行預(yù)沖操作,然后再執(zhí)行讀取操作,兩次操作之間有較大延時,當(dāng)連續(xù)兩次讀取數(shù)據(jù)在不同Bank中時,兩次操作可以同時執(zhí)行。因此,根據(jù)幅相補(bǔ)償單元工作模式和補(bǔ)償數(shù)據(jù)特點(diǎn)設(shè)計數(shù)據(jù)的存儲結(jié)構(gòu),使幅相補(bǔ)償單元始終工作于方式二,可以獲得更高的效率。
幅相補(bǔ)償單元的數(shù)據(jù)存儲結(jié)構(gòu)分為表、通道和狀態(tài)三級。表是按照相控陣面工作模式劃分的,例如發(fā)射補(bǔ)償表和接收補(bǔ)償表,每個表又劃分為若干個通道,每個通道占用一段連續(xù)的存儲空間,用來存儲相控陣面一個通道全部狀態(tài)的校正數(shù)據(jù),狀態(tài)是最小的存儲單元,每個狀態(tài)對應(yīng)一個補(bǔ)償值,根據(jù)補(bǔ)償表的不同,一個狀態(tài)通常占用1個字節(jié)或2個字節(jié)存儲空間。幅相補(bǔ)償單元的數(shù)據(jù)存儲結(jié)構(gòu)如圖3所示。
兩片存儲器構(gòu)成了一個整的存儲空間,該存儲空間劃分為若干個表,每個表同時占用兩片存儲器。表里的通道在兩片存儲器之間交替排列,序號為奇數(shù)的通道位于存儲器1,序號為偶數(shù)的通道位于存儲器2,查詢操作時兩片存儲器交替工作,突破了DDR3存儲器連續(xù)激活間隔時間的限制,提高了執(zhí)行效率。同一個存儲器里的通道按照Bank順序排列,以存儲器l為例,通道1的起始地址是第一個Bank的起始地址Ox00000000,通道3的起始地址是第二個bank的起始地址Ox04000000,以此類推,通道15的起始地址是最后一個Bank的起始OxlCOOOOOO,通道17又回到第一個Bank,排在通道1之后,起始地址為通道1起始地址加通道長度,以此類推,依次排列,直至最后一個通道,如此排列,存儲器始終處于8個Bank輪流操作狀態(tài),減少了操作間隔時間,提高了操作速度。
3 性能測試
設(shè)計完成后通過時序仿真對設(shè)計性能進(jìn)行了驗證,以64個通道為例的時序驗證如圖4所示。CLK 200MHz是系統(tǒng)工作時鐘,頻率200MHz,VALID CMD_ ADDR Ml和VALID_ CMD_ ADDR M2分別是給DDR3控制器1和DDR3控制器2的地址和命令使能信號,高電平有效,每個正脈沖表示啟動一個通道查詢操作,VALID READ Ml和VALIDREAD M2分別是給DDR3控制器1和DDR3控制器2的讀取使能信號,高電平有效,每個正脈沖表示完成一個通道查詢操作。幅相補(bǔ)償單元的所有控制器以200MHz系統(tǒng)時鐘運(yùn)行,兩個DDR3控制器交替運(yùn)行,單個DDR3控制器執(zhí)行通道查詢操作頻率為100MHz,即每1Ons啟動一次通道查詢操作,操作完成初始延時為220ns,之后按照操作啟動順序每lOns完成一次操作,64個通道總的查詢時間為540ns(220ns+320ns)。
4 結(jié)論
本文設(shè)計的相控陣面幅相補(bǔ)償單元實現(xiàn)了對大容量幅相補(bǔ)償數(shù)據(jù)的快速查詢,具有小型、高速、容易移植和擴(kuò)展方便的特點(diǎn),可以靈活地與不同相控陣面的波控系統(tǒng)集成,滿足陣面級或子陣級幅相補(bǔ)償應(yīng)用。
參考文獻(xiàn)
[1]張光義,趙玉潔,相控陣?yán)走_(dá)技術(shù)[M].北京:電子工業(yè)出版社,2006.
[2] JEDEC.DDR3存儲器Specification [S].2012.JESD79-3F.
[3]殷曄,李麗斯,常路等,基于FPGA的DDR3存儲控制的設(shè)計與驗證[J],計算機(jī)測量與控制,2015,23 (03): 969-971.
[4]孟曉東.基于FPGA的DDR3控制器設(shè)計與驗證[D],國防科學(xué)技術(shù)大學(xué),2012.