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