楊 娟,胡 兵,沈翰寧
(桂林電子科技大學(xué),廣西 桂林 541004)
無(wú)線通信系統(tǒng)數(shù)據(jù)傳輸方式多種多樣,不同網(wǎng)絡(luò)的傳輸協(xié)議也各有不同,這些傳輸方式以及傳輸協(xié)議的區(qū)別導(dǎo)致了數(shù)據(jù)傳輸速率存在著較大差異。這種差異將會(huì)導(dǎo)致通信系統(tǒng)接收端各路數(shù)據(jù)間的相互干擾,產(chǎn)生數(shù)據(jù)處理失真等問(wèn)題。同時(shí)數(shù)據(jù)在無(wú)線信道中傳輸由于傳輸路徑的差異,多徑干擾也是不可避免的。通常解決這一系列問(wèn)題的方法是在射頻接收端的各個(gè)節(jié)點(diǎn)采用模擬延時(shí)器,對(duì)數(shù)據(jù)速率進(jìn)行適配,以達(dá)到同步接收,減小數(shù)據(jù)處理的失真。但是模擬延時(shí)器具有數(shù)據(jù)處理速度慢,精度低,工程造價(jià)高,且很難隨時(shí)調(diào)整等缺陷。
針對(duì)模擬延時(shí)器存在的問(wèn)題,本文提出了一種新型的射頻延時(shí)器,它采用模數(shù)結(jié)合數(shù)字處理的方式對(duì)射頻接收數(shù)據(jù)進(jìn)行時(shí)延調(diào)整。測(cè)試結(jié)果表明,系統(tǒng)數(shù)據(jù)處理速度快,精度最高可以達(dá)到納秒級(jí),且能夠隨時(shí)通過(guò)可編程模塊對(duì)射頻延時(shí)器進(jìn)行調(diào)整,以實(shí)現(xiàn)射頻接收端對(duì)各種網(wǎng)絡(luò)數(shù)據(jù)的同步接收。
該系統(tǒng)可編程模塊采用SDRAM(同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器)作為存儲(chǔ)主體,所選用的SDRAM芯片數(shù)據(jù)處理速率最高可達(dá)133 Mbit/s,能夠?qū)?shù)據(jù)進(jìn)行高速讀寫(xiě)操作。
射頻延時(shí)器結(jié)構(gòu)如圖1所示。
圖1 射頻延時(shí)器結(jié)構(gòu)圖
射頻延時(shí)器的結(jié)構(gòu)如下:包括上下變頻濾波模塊,中頻增益控制模塊,可編程模塊,高速模數(shù)及數(shù)模轉(zhuǎn)換模塊。參考時(shí)鐘與鎖相環(huán)模塊組成標(biāo)準(zhǔn)鎖相環(huán)電路產(chǎn)生本振信號(hào)?;鶞?zhǔn)時(shí)間為t0的射頻接收信號(hào)FM接入下變頻濾波模塊,輸入信號(hào)在這里與本振信號(hào)進(jìn)行1次或多次混頻,通過(guò)濾波取出信號(hào)邊帶,下變頻濾波模塊連接中頻增益控制模塊,中頻增益控制模塊是用于消除傳輸鏈路的信號(hào)不穩(wěn)定的影響,得到信號(hào)功率恒定的中頻信號(hào)。中頻增益控制模塊連接著高速模數(shù)轉(zhuǎn)換模塊,將中頻信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)fm,輸入可編程模塊??删幊棠K將數(shù)據(jù)通過(guò)緩存送入SDRAM存儲(chǔ),并根據(jù)程序設(shè)定的延時(shí)Δt將信號(hào)轉(zhuǎn)換為fm+Δt,可編程模塊將延時(shí)后的數(shù)據(jù)與高速數(shù)模轉(zhuǎn)換器相連接,產(chǎn)生基帶模擬信號(hào),經(jīng)過(guò)上變頻變成中頻信號(hào)。中頻信號(hào)在頻域上與延時(shí)前中頻信號(hào)保持一致,但是時(shí)域上已經(jīng)產(chǎn)生了延時(shí),將此中頻信號(hào)通過(guò)上變頻濾波模塊,經(jīng)過(guò)一次或多次混頻,通過(guò)濾波取出邊帶,形成經(jīng)過(guò)延時(shí)后的射頻信號(hào)FM/(t0+Δt),如果設(shè)備固有延時(shí)是Δta,延時(shí)后的最終射頻信號(hào)為FM/(t0+Δt+Δta),從而完成了射頻信號(hào)的延時(shí)調(diào)整。
通信系統(tǒng)接收端數(shù)據(jù)由于傳輸鏈路的差異和多徑干擾的影響,各接收節(jié)點(diǎn)的傳輸時(shí)延也不相同,此時(shí)假設(shè)各接收節(jié)點(diǎn)接收數(shù)據(jù)時(shí)延,分別為 t1,t2,t3,…,tm,各節(jié)點(diǎn)射頻接收信號(hào)分別為FM/(t1+t0),F(xiàn)M/(t2+t0),F(xiàn)M/(t3+t0),…,F(xiàn)M/(tm+t0)。t0為基準(zhǔn)時(shí)間,tn大于等于接收時(shí)延的最大值。各接收端節(jié)點(diǎn)信號(hào)通過(guò)射頻延時(shí)器以后,附加時(shí)延分別為 tn-t1,tn-t2,tn-t3,…,tn-tm,各節(jié)點(diǎn)最終得到的信號(hào)都為FM/(tn+t0),經(jīng)延時(shí)調(diào)整后,接收端實(shí)現(xiàn)信號(hào)的同步接收。
可編程模塊結(jié)構(gòu)如下:包括SDRAM,SDRAM控制器,射頻延時(shí)器主控制器模塊,接收/發(fā)射端FIFO讀寫(xiě)控制模塊,接收/發(fā)射端FIFO緩存模塊等??删幊棠K采用分層狀態(tài)機(jī)的設(shè)計(jì)模式,實(shí)現(xiàn)主狀態(tài)機(jī)與具體操作控制狀態(tài)機(jī)的分離,對(duì)數(shù)據(jù)進(jìn)行高效的讀寫(xiě)操作,結(jié)構(gòu)清晰,降低了系統(tǒng)設(shè)計(jì)的復(fù)雜性,也使程序具有更高的通用性和可讀性。射頻延時(shí)器可編程模塊系統(tǒng)狀態(tài)跳轉(zhuǎn)如圖2所示。
圖2 射頻延時(shí)器可編程模塊系統(tǒng)狀態(tài)跳轉(zhuǎn)圖
系統(tǒng)上電后開(kāi)始工作,主控制器跳轉(zhuǎn)到初始化模式,SDRAM控制器接收初始化命令分別對(duì)SDRAM的各種參數(shù)進(jìn)行設(shè)置。初始化完畢以后,主控制器模塊跳轉(zhuǎn)到寫(xiě)模式,進(jìn)入寫(xiě)模式后,地址計(jì)算模塊,將根據(jù)用戶寫(xiě)入的延時(shí),對(duì)SDRAM初始寫(xiě)地址進(jìn)行計(jì)算,并向接收端FIFO讀寫(xiě)控制模塊發(fā)送命令,使接收端FIFO開(kāi)始接收數(shù)據(jù)。當(dāng)接收端FIFO讀寫(xiě)控制模塊,返回響應(yīng)信號(hào)時(shí),主控制器模塊對(duì)SDRAM控制器發(fā)送寫(xiě)命令,SDRAM控制器將FIFO傳入的數(shù)據(jù)以突發(fā)模式寫(xiě)入SDRAM中。完成一次突發(fā)寫(xiě)以后,主控制器跳轉(zhuǎn)至讀模式,SDRAM控制器從SDRAM首地址開(kāi)始將數(shù)據(jù)以突發(fā)讀模式讀出,并將數(shù)據(jù)打入發(fā)送端FIFO中。完成這一系列的操作后,主控制器又跳轉(zhuǎn)至寫(xiě)模式,并判斷接收機(jī)FIFO是否發(fā)出響應(yīng)信號(hào),如果檢測(cè)到該信號(hào),主控制器對(duì)SDRAM控制器發(fā)出寫(xiě)命令,否則主控制器將跳轉(zhuǎn)至空閑模式繼續(xù)等待響應(yīng)信號(hào),如此反復(fù)對(duì)數(shù)據(jù)進(jìn)行讀寫(xiě)操做。
接收端FIFO讀寫(xiě)控制模塊接收到主控制器發(fā)送的標(biāo)志位以后,F(xiàn)IFO開(kāi)始工作,這個(gè)標(biāo)志位將與AD采樣數(shù)據(jù)的使能信號(hào)同時(shí)作用成為接收端FIFO的寫(xiě)使能信號(hào)。收到寫(xiě)使能信號(hào)的接收端FIFO讀寫(xiě)控制模塊將跳轉(zhuǎn)至寫(xiě)狀態(tài),當(dāng)讀寫(xiě)地址狀態(tài)滿足條件,讀寫(xiě)控制模塊跳轉(zhuǎn)至讀狀態(tài),將數(shù)據(jù)存入SDRAM中,完成讀進(jìn)程后,讀寫(xiě)控制模塊判斷是否收到主控制模塊發(fā)送的刷新標(biāo)志位,如果有則進(jìn)入等待狀態(tài),直至刷新標(biāo)志位復(fù)位,否則再次進(jìn)入寫(xiě)狀態(tài),完成前端數(shù)據(jù)的接收。
發(fā)送端的讀寫(xiě)控制模塊的實(shí)現(xiàn)相對(duì)簡(jiǎn)單,F(xiàn)IFO的寫(xiě)使能由前端接收數(shù)據(jù)使能提供,控制模塊將保持緩存處于半滿狀態(tài),否則當(dāng)接收數(shù)據(jù)使能較為密集時(shí),SDRAM正處于刷新進(jìn)程中,此時(shí)有可能導(dǎo)致發(fā)送端FIFO輸出端口讀空。
SDRAM控制器的實(shí)現(xiàn)是該設(shè)計(jì)的另一個(gè)主要部分,SDRAM控制器主要包括命令監(jiān)控,命令譯碼以及數(shù)據(jù)傳遞等幾部分,SDRAM控制器根據(jù)接收到的命令,將數(shù)據(jù)、地址分別送入相應(yīng)模塊進(jìn)行處理。
2.2.1 SDRAM的結(jié)構(gòu)和工作原理
該設(shè)計(jì)采用MT48LC64M4A2芯片,容量為256 Mbyte,最高工作頻率為133 MHz,包含16位數(shù)據(jù)總線,4個(gè)L-bank(Logic bank),每個(gè)L-bank的行地址尋址范圍為8 k,存儲(chǔ)單元內(nèi)可存放4 bit,8 bit,16 bit三種位寬的數(shù)據(jù),此設(shè)計(jì)所采用的是16 bit位寬存儲(chǔ)數(shù)據(jù),行地址尋址范圍為512。
SDRAM內(nèi)部是一個(gè)存儲(chǔ)陣列,結(jié)構(gòu)類(lèi)似一個(gè)表格,指定了表格的行和列就能夠確定指定的單元格的地址。每個(gè)存儲(chǔ)單元是由三極管和電容組成的,電容充電實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ),同時(shí)放電也會(huì)導(dǎo)致數(shù)據(jù)的丟失,因此需要隔一段固定時(shí)間對(duì)SDRAM進(jìn)行預(yù)刷新操作,MT48LC64M4A2芯片需要在64 ms內(nèi)實(shí)現(xiàn)8192次預(yù)刷新以保證數(shù)據(jù)不丟失。SDRAM的地址是分時(shí)復(fù)用的,在不同時(shí)間段內(nèi)分別送出行地址(A[12:0]范圍:0~8 k),列地址(A[8:0]范圍:0~256)。MT48LC64M4A2芯片54個(gè)引腳包括以下重要的控制信號(hào)引腳:寫(xiě)使能信號(hào)WE;行地址選通脈沖RAS;列地址選通脈沖CAS;L-bank選擇信號(hào)BA0,BA1;掩碼DQM;地址信號(hào) A[12:0];數(shù)據(jù)信號(hào) DQ[15:0][3]。
2.2.2 SDRAM控制器的實(shí)現(xiàn)
SDRAM控制器由時(shí)鐘模塊、命令監(jiān)控模塊、命令譯碼模塊、數(shù)據(jù)傳遞模塊等幾部分組成,支持1,2,4,8和全頁(yè)突發(fā)等突發(fā)模式。SDRAM狀態(tài)轉(zhuǎn)移如圖3所示。
圖3 SDRAM狀態(tài)轉(zhuǎn)移圖
系統(tǒng)上電后對(duì)SDRAM進(jìn)行初始化,等待100 μs獲得穩(wěn)定的電源和時(shí)鐘,然后對(duì)所有L-bank進(jìn)行預(yù)充電以及預(yù)刷新命令。最后通過(guò)LMR命令向模式寄存器中寫(xiě)入0x033,以支持8 bit突發(fā)長(zhǎng)度的讀寫(xiě)操作。
系統(tǒng)完成初始化以后,進(jìn)入idle狀態(tài),等待刷新命令、寫(xiě)命令、讀命令的到來(lái)。主控制器根據(jù)需要,向SDRAM控制器發(fā)出各種操作命令,命令優(yōu)先級(jí)為正在執(zhí)行的命令最高,其次為預(yù)刷新命令,然后是其他命令。根據(jù)這種優(yōu)先級(jí)機(jī)制能有效地減少命令沖突,提高SDRAM的工作效率[4]。
讀寫(xiě)操作是SDRAM要進(jìn)行的主要操作,該設(shè)計(jì)所采用的是8 bit突發(fā)讀寫(xiě)模式,當(dāng)接收FIFO接收到8個(gè)AD采樣數(shù)據(jù)以后,主控制器向SDRAM控制器發(fā)起突發(fā)寫(xiě)命令,開(kāi)始執(zhí)行寫(xiě)進(jìn)程,發(fā)送ACTIVE命令,激活要操作單元的行,發(fā)送寫(xiě)命令同時(shí)激活相應(yīng)列,ACTIVE命令和寫(xiě)命令之間要等待tRCD時(shí)間,寫(xiě)命令發(fā)起的初始地址由主控制模塊生成,用戶在PC機(jī)界面上輸入要延時(shí)的數(shù)據(jù)個(gè)數(shù),主控制器根據(jù)這個(gè)長(zhǎng)度自動(dòng)計(jì)算出初始寫(xiě)地址,由SDRAM讀寫(xiě)地址差來(lái)實(shí)現(xiàn)讀寫(xiě)數(shù)據(jù)的延時(shí)。
當(dāng)寫(xiě)進(jìn)程執(zhí)行完畢以后,控制器跳轉(zhuǎn)至讀進(jìn)程,與寫(xiě)進(jìn)程類(lèi)似,在ACTIVE命令之后發(fā)起讀命令,數(shù)據(jù)將在CAS Latency個(gè)周期后出現(xiàn)在數(shù)據(jù)總線上。關(guān)閉當(dāng)前使用的行,有兩種方式:一種是發(fā)起precharge命令,一種是發(fā)起burst terminate命令。當(dāng)需要對(duì)同一個(gè)bank中的不同行進(jìn)行操作的時(shí)候,需要發(fā)起precharge命令,來(lái)關(guān)閉當(dāng)前使用行。
需要注意的是,當(dāng)操作行地址和突發(fā)長(zhǎng)度設(shè)定以后,以突發(fā)長(zhǎng)度個(gè)列組成一個(gè)模塊,這個(gè)操作模塊的設(shè)定由地址線A[8:3]完成,地址線A[2:0]指定讀寫(xiě)操作在這個(gè)模塊中的初始列地址,讀或?qū)懖僮鞫紝⒃谶@個(gè)模塊中執(zhí)行,直到指定下一次操作的具體地址。
在Altera公司的開(kāi)發(fā)工具quartusII環(huán)境下完成了射頻延時(shí)器可編程模塊的設(shè)計(jì),可編程模塊采用的是Altera公司的Cyclone III EP3C120F484C8的FPGA芯片和Micron公司的MT48LC64M4A2芯片,系統(tǒng)在搭建的硬件平臺(tái)上進(jìn)行測(cè)試。軟件測(cè)試結(jié)果如圖4所示。
圖4 測(cè)試結(jié)果
圖4中,datain為射頻延時(shí)器A/D變換后的射頻接收數(shù)據(jù),dataout為經(jīng)可編程模塊后的輸出數(shù)據(jù);delay為延時(shí)數(shù)據(jù)個(gè)數(shù),可以看出,當(dāng)延時(shí)數(shù)設(shè)為408,數(shù)據(jù)在經(jīng)過(guò)延時(shí)器控制后,相對(duì)于沒(méi)有延時(shí)(delay為0)的情況,數(shù)據(jù)延時(shí)了408個(gè)數(shù)據(jù),實(shí)現(xiàn)對(duì)數(shù)據(jù)的延時(shí)調(diào)整。
測(cè)試結(jié)果表明,SDRAM的高速處理速率能夠滿足高速實(shí)時(shí)處理數(shù)據(jù)的要求,射頻延時(shí)器數(shù)據(jù)延時(shí)精度最高可達(dá)納秒級(jí),從而保證設(shè)計(jì)穩(wěn)定可靠,符合設(shè)計(jì)要求,射頻延時(shí)器的設(shè)計(jì)和實(shí)現(xiàn)有效地降低了因傳輸速率不同和多徑干擾所造成的數(shù)據(jù)間相互干擾,避免了因此而造成的數(shù)據(jù)處理失真等問(wèn)題。
[1]PARK J H,LEE D W,LM H S,et al.A 3.3V 133MHz 32Mb synchronous mask ROM[C]//Proc.ISSCC 1998.San Francisco:IEEE Press,1998:338-339,460.
[2]任廣輝,李寶,王剛毅.基于SDRAM的大容量FIFO突發(fā)緩存及數(shù)據(jù)存儲(chǔ)方法:中國(guó),200810064901.1[P].2008.
[3]趙冠男.基于FPGA的內(nèi)存控制器的設(shè)計(jì)與應(yīng)用[D].太原:太原理工大學(xué),2010.
[4]趙傳猛,高巖,張蓉.一種簡(jiǎn)單的SDRAM控制器的實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2010,38(8):197-200.
[5]高子旺,顧美康.一種基于FPGA的低復(fù)雜度SDRAM控制器實(shí)現(xiàn)方法[J]. 計(jì)算機(jī)與數(shù)字工程,2010,38(1):194-196.
[6]孫睿.基于SDRAM基本結(jié)構(gòu)、操作及相關(guān)時(shí)序參數(shù)的研究[J].中國(guó)集成電路,2010,129(2):56-60.