摘 要:SDRAM是一種大容量、高速度的動態(tài)存儲器,在電子設計領(lǐng)域應用很廣泛。本文介紹了在雷達光柵顯示系統(tǒng)中,應用SDRAM作為視頻存儲器時,采用FPGA實現(xiàn)控制電路的過程。<!--摘要CH(結(jié)束)←-->
<!--→關(guān)鍵CH(開始)--> 關(guān)鍵詞:SDRAM;FPGA;雷達光柵顯示;視頻存儲器
<!--關(guān)鍵EN(結(jié)束)←-->1 引 言
SDRAM的特點是大容量和高速度。其單片容量可達256 Mb或更高,工作速度可達100~200 MHz以上,但是其控制方式比EDO/FPDRAM復雜得多。目前,許多嵌入式設備的大容量存儲器都采用SDRAM來實現(xiàn)。在設計中采用SDRAM存儲器時,大多都是用專用芯片完成其控制電路。但是,當我們對SDRAM存儲器進行特殊應用時,就需要自己設計控制電路了。
我們知道,顯示器在顯示文字或圖形時,顯示器在幀頻、行頻、彩色視頻信號的控制下,控制電子束順序地從上到下,從左到右逐行掃描。而這些顯示控制信號是由顯示控制器產(chǎn)生。在雷達光柵顯示系統(tǒng)中,顯示幀緩沖存儲器(VRAM)存儲雷達的實時信號。而在顯示器的每個行周期的逆程時,需要把下一行的顯示數(shù)據(jù)從顯示幀緩沖存儲器(VRAM)中取出,寫到一個行緩沖存儲器中去。在行周期的正程時,這個行緩沖存儲器中的顯示數(shù)據(jù)在顯示時鐘的同步下,順序讀出,送到視頻形成電路(RAMDAC)形成顯示視頻信號,同時配合幀頻、行頻,這樣顯示器就能顯示出雷達信號了。
在雷達光柵顯示系統(tǒng)的通常設計中,采用專用的雙口VRAM實現(xiàn)顯示幀緩沖存儲器。這種專用的雙口VRAM內(nèi)部具備串行存取存儲器,因此實現(xiàn)系統(tǒng)比較簡單。但是缺點是工作速度和容量都比較低,影響系統(tǒng)的性能指標。在本文的雷達光柵顯示系統(tǒng)設計中,嘗試采用SDRAM存儲器作為顯示幀緩沖存儲器,采用FPGA 器件完成SDRAM的控制電路。下面介紹具體的實現(xiàn)過程。
2 SDRAM簡介
SDRAM具有多種工作模式,內(nèi)部操作是一個復雜的狀態(tài)機。SDRAM器件的管腳分為以下幾類:
。1)控制信號 包括片選,時鐘,時鐘使能,行列地址選擇,讀寫選擇,數(shù)據(jù)有效。
。2)地址 時分復用管腳,根據(jù)行列地址選擇管腳,控制輸入的地址為行地址或列地址。
(3)數(shù)據(jù) 雙向管腳。
SDRAM的所有操作都同步于時鐘。根據(jù)時鐘上升沿時控制管腳和地址輸入的狀態(tài),可以產(chǎn)生多種輸入命令[1]:
(1)模式寄存器設置命令;
(2)激活命令;
(3)預充命令;
(4)讀命令;
(5)寫命令;
(6)帶預充的讀命令;
(7)帶預充的寫命令;
(8)自動刷新命令;另外還有空操作命令。
根據(jù)輸入命令,SDRAM狀態(tài)在內(nèi)部狀態(tài)間轉(zhuǎn)移。

另外,SDRAM器件還有掉電狀態(tài),時鐘中止等工作狀態(tài),使用較少,在此不做介紹。
3 設計實現(xiàn)
根據(jù)雷達光柵顯示系統(tǒng)的要求,顯示幀緩沖存儲器采用雙片1 M×16 b(HY57V161610)的SDRAM芯片構(gòu)成32 b的數(shù)據(jù)寬度。在該設計中,設定SDRAM的工作時鐘為66 MHz,這已經(jīng)足以滿足顯示系統(tǒng)的要求了。
3.1 SDRAM的初始化
在電源正常之后,首先必須提供給SDRAM芯片穩(wěn)定的工作時鐘至少200μs。圖2是SDRAM的初始化時序圖[1,3]。圖中,首先t1時刻發(fā)出所有塊預充命令,在tRP時間后才能發(fā)出下一條命令。在t2時刻發(fā)出自動刷新命令,在tRC時間后才能發(fā)出下一條命令。自動刷新命令必須至少8個。最后,在t4時刻發(fā)出模式寄存器設置命令設置工作模式,此時地址線上輸入的就是控制代碼。同樣,在tMRD時間后才能發(fā)出下一條命令。本設計中,時鐘周期為15 ns,器件的tRP為20 ns,tRC為20 ns。因此tRP=2CLK,tRC=5CLK,tMRD固定為2CLK。因此,t1時刻到t2時刻是2周期延遲,t2時刻到t3時刻是5周期延遲,而在t4時刻2周期之后,才能發(fā)出下一條命令。
在電路設計上,采用監(jiān)控芯片MAX705產(chǎn)生復位信號,所有的控制電路都在復位信號正常后工作。該復位信號可以保證至少60 ms,滿足200μs的要求。了解了初始化時序之后,由FPGA設計產(chǎn)生這種時序就比較簡單了。

3.2 SDRAM的讀寫時序設計
在SDRAM芯片初始化完成之后,就進入正常工作狀態(tài)。SDRAM芯片在正常的讀寫操作[1,3]時,如果SDRAM芯片行地址不發(fā)生變化,那么可以滿足每時鐘周期進行一次讀寫的高速操作;但是當SDRAM芯片行地址發(fā)生變化時,就必須返回到預充狀態(tài)。圖3是一個完整的讀改寫時序。圖中所示的是Burst Length=1,CASLatency=2的情況。

在本設計中,雷達信號的一次顯示分辨率為1 024×1 024,而光柵顯示器的顯示分辨率為1 280×1 024。把每個掃描行的前1 024個點稱作一次顯示正程,而把每個掃描行的后256個點以及行消隱期稱作一次顯示逆程。
在一次顯示正程時,需要把雷達信號的數(shù)字視頻更新到幀緩沖存儲器(VRAM)中去,每一個視頻點的更新都必須進行一次讀、修改、寫操作。此時,必須判斷本次讀寫操作的行地址與上一次操作時是否相同。如果行地址改變,則首先在t1時刻發(fā)出預充命令,在延遲tRP=2CLK的時間后,即t2時刻發(fā)出行激活命46令,此時地址線上同時應該給出相應的行地址。在延遲tRCD=20 ns,即2CLK時間后的t3時刻,發(fā)出存儲器讀命令,此時地址線上同時應該給出相應的列地址。隨后,在CL=2CLK時間后,即t4時刻數(shù)據(jù)線上就讀出了相應的存儲器數(shù)據(jù)。經(jīng)過處理后,在t5時刻重新寫入到存儲器中去,同樣地址線上應該給出相應的列地址。
如果行地址相同,則只需要發(fā)出列地址進行讀寫,也就是說,從t3時刻開始就行了。進一步地,如果列地址也相同,則只需要發(fā)出寫操作命令,而數(shù)據(jù)采用上一次操作的數(shù)據(jù)進行處理后寫入,也就是只用發(fā)出t5時刻的寫操作命令就行了。
在用FPGA實現(xiàn)時,由于需要多次判斷,因此設計比較復雜。但是這樣做可以節(jié)省許多時間,提高效率。
3.3 顯示刷新
在本設計中,一次顯示逆程時,進行一次顯示刷新操作。此時,也就是把幀緩沖存儲器中的雷達視頻信息通過高速的SDRAM全頁突發(fā)讀操作,讀出并存儲到FPGA中的SRAM行緩存中。在一次顯示正程時,在顯示時鐘的同步下,依次輸出SRAM行緩存中的視頻數(shù)據(jù)到顯示控制器的視頻形成電路(RAMDAC)形成復合視頻。
此時,需要用到SDRAM的全頁突發(fā)操作模式[1]。
該操作模式是SDRAM的一種特殊操作模式。用FPGA設計時序時,首先在t1時刻發(fā)出預充命令,在延遲tRP=2CLK的時間后,即t2時刻發(fā)出模式寄存器設置命令,此時地址線上同時應該給出全頁突發(fā)模式的控制代碼。在延遲tMRD=2CLK時間后的t3時刻,發(fā)出行激活命令,同時地址線上給出行地址。在延遲tRCD=2CLK時間后的t4時刻,發(fā)出存儲器讀命令,同時地址線上給出全頁突發(fā)操作的起始列地址。隨后,在CL=2CLK時間后,即從t5時刻開始,數(shù)據(jù)線上每時鐘周期就連續(xù)輸出相應的存儲器數(shù)據(jù)。最大可以輸出SDRAM芯片存儲陣列中該行的全部數(shù)據(jù)。本設計中只需讀出128個數(shù)據(jù)就可以了,即從t5時刻到t10時刻。由于CL=2CLK,因此必須提前2周期,即t8時刻就發(fā)出突發(fā)停止命令。
數(shù)據(jù)讀取操作完成之后,必須把SDRAM的全頁操作模式重新設置到以前的狀態(tài),因此重復t1時刻到t2時刻,在t11時刻發(fā)出預充命令,在t12時刻發(fā)出模式寄存器設置命令,在2CLK之后,即t13時刻才可以發(fā)出新的操作命令。
在用FPGA設計時序時,這部分的控制邏輯是比較復雜的。不僅要產(chǎn)生正確的時序,還必須高速接收數(shù)據(jù),這種高速SRAM的最方便的選擇就是用FPGA的內(nèi)置存儲器實現(xiàn)。
3.4 顯示余輝設計
雷達光柵掃描顯示的特點就是可以形成人工余輝。在本設計中,余輝時序也是采用全頁突發(fā)操作模式來完成,和顯示刷新時序類似,所不同的是發(fā)出的是全頁寫命令,寫入的余輝數(shù)據(jù)是把SRAM行緩存中的數(shù)據(jù)經(jīng)過一定的余輝衰減算法處理后得到的。實際設計時序時,在圖4中t10時刻和t11時刻之間插入一個全頁突發(fā)寫操作就可以了。





