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