??? 摘 要:采用DDR SDRAM作為被采集數(shù)據(jù)的存儲體,,研究了DDR SDRAM在高速數(shù)據(jù)采集系統(tǒng)中的應(yīng)用,分析了DDR SDRAM的工作模式,,給出了一種基于DDR SDRAM的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計框圖,,研究了高速,、大容量存儲體的設(shè)計方案。結(jié)合高速數(shù)據(jù)采集系統(tǒng)的設(shè)計要求,,重點研究了一種DDR SDRAM控制器的FPGA實現(xiàn)方法,,簡要介紹了控制器設(shè)計中各個模塊的功能,最后給出了讀/寫控制模塊對DDR SDRAM的讀操作仿真時序圖,。
??? 關(guān)鍵詞:數(shù)據(jù)采集; DDR SDRAM; 工作模式; 控制器
?
??? 實現(xiàn)數(shù)據(jù)的高速大容量存儲是數(shù)據(jù)采集系統(tǒng)中的一項關(guān)鍵技術(shù),。很多數(shù)據(jù)采集系統(tǒng),特別是應(yīng)用于圖像采集處理等領(lǐng)域的高速數(shù)據(jù)采集系統(tǒng),,都需要高速緩存大量的數(shù)據(jù),。DDR SDRAM由于速度快、容量大,、價格便宜,,能夠很好地滿足上述場合對大量數(shù)據(jù)緩存的需求,。雙倍速率同步動態(tài)隨機存儲器DDR SDRAM(Double Data Rate SDRAM),是在SDRAM的基礎(chǔ)上發(fā)展而來的,,能夠在時鐘上升沿和下降沿各傳輸一次數(shù)據(jù),,可以在與SDRAM相同的總線時鐘頻率下達到更高的數(shù)據(jù)傳輸率。
1 DDR SDRAM在高速數(shù)據(jù)采集系統(tǒng)中的應(yīng)用
??? 目前,,數(shù)據(jù)采集與處理的重點在于高速,、高精度、高存儲深度的數(shù)據(jù)采集系統(tǒng)的研究,。由于A/D轉(zhuǎn)換芯片及高性能FPGA芯片的出現(xiàn),,使得高速、高精度的數(shù)據(jù)處理得以實現(xiàn),,因而大批量,、高存儲深度的數(shù)據(jù)處理成為當前要解決的主要問題。圖1所示為一種基于CPCI總線的高速數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)框圖[1],。
?
??? 外部信號首先經(jīng)過模擬信號調(diào)理通道達到A/D芯片的輸入要求,,再通過A/D芯片將模擬信號轉(zhuǎn)換成數(shù)字信號送入FPGA進行處理。當處理器發(fā)出“寫命令”時,,將數(shù)字信號在FIFO內(nèi)部進行緩存再送入DDR SDRAM進行存儲,。考慮到寫入FIFO的時鐘速率大于讀取FIFO的時鐘速率會導(dǎo)致從A/D采樣過來的信號不能完整地存儲,,可采用數(shù)據(jù)分流的方式予以解決,。即把采入FPGA的數(shù)據(jù)流分成2路數(shù)據(jù)流,分別存入相應(yīng)的FIFO內(nèi),,再分別讀出送到DDR SDRAM存儲,,在存儲過程中通過DDR SDRAM的控制模塊和FPGA內(nèi)部自帶的IP核的配合完成。當處理器發(fā)出“讀命令”時,,在控制模塊的控制下將DDR SDRAM內(nèi)部數(shù)據(jù)讀回FPGA內(nèi)部,,再次通過FIFO進行緩存,然后送回處理器處理,。在整個數(shù)據(jù)處理過程中,,關(guān)鍵是對DDR SDRAM的存儲進行有效的控制,以保證有足夠的數(shù)據(jù)可進行分析處理,,從而重現(xiàn)信號特征,。
2 DDR SDRAM的工作模式
??? DDR SDRAM 支持的常用命令有7 種:空操作(NOP)、激活操作(Active),、突發(fā)讀(BurstRead),、突發(fā)寫(BurstWrite)、自動刷新(Autorefresh),、預(yù)充電(Precharge)以及模式寄存器配置(Mode Register Set),。所有的操作命令都是通過信號線RAS_N,、CAS_N、WE_N 共同控制來實現(xiàn)的,。在對DDR SDRAM 進行存取數(shù)據(jù)操作之前,,首先要對其初始化,即設(shè)置DDR SDRAM的普通模式寄存器和擴展模式寄存器,,確定DDR SDRAM 的工作方式,。這些設(shè)置包括突發(fā)長度,、突發(fā)類型,、CAS潛伏期和工作模式,以及擴展模式寄存器中對DDR SDRAM 內(nèi)部延遲鎖定回路(DLL)的使能與輸出驅(qū)動能力的設(shè)置[2],。
??? 初始化完成之后,,DDR SDRAM 便進入正常的工作狀態(tài),此時可對存儲器進行讀寫和刷新,。所謂DDR的雙倍速率結(jié)構(gòu),,即在數(shù)據(jù)隨路時鐘的上升沿和下升沿各發(fā)送一次數(shù)據(jù),這樣在一個時鐘周期內(nèi)可完成雙倍速率的數(shù)據(jù)傳輸,。圖2是“寫模式”下的工作時序圖,。對DDR SDRAM進行寫操作時,首先通過外部控制模塊(FPGA)對DDR送寫命令和操作地址,,然后第1個正確的數(shù)據(jù)將在數(shù)據(jù)選取脈沖DQS的上升沿進行存儲,,接下來的數(shù)據(jù)將在DQS的連續(xù)時鐘沿上進行存儲,根據(jù)DDR SDRAM的時序要求在“寫模式”下,,寫命令和隨路時鐘的第1個上升沿要有一個固定的時間間隔tDQSS,。
?
??? 對DDR SDRAM 的讀操作和寫操作是基于突發(fā)的,DDR SDRAM 提供的可編程讀/寫的突發(fā)長度為2,、4 或8,。數(shù)據(jù)的存取以一個激活命令(Active)開始,接著便是讀(BurstRead)或?qū)?Burst Write)命令,。與激活命令一起被觸發(fā)的地址位用來選擇將要存取的區(qū)和頁(或行),,與讀/寫命令一起被觸發(fā)的地址位用來選擇突發(fā)存取的起始列單元。讀命令被觸發(fā)后,,數(shù)據(jù)將在1.5~3 個時鐘周期之后出現(xiàn)在數(shù)據(jù)總線上,,這個延遲就是所謂的CAS 潛伏期。CAS 潛伏期的大小與SDRAM 的速度和存儲器的時鐘頻率有關(guān),。當要存取一個不同行的地址單元時,,需要通過一個預(yù)充電(Precharge)操作關(guān)閉當前行。自動刷新(Autorefresh)命令用來周期性地刷新DDR SDRAM,,以保持其內(nèi)部的數(shù)據(jù)不丟失[3],。
3 DDR SDRAM 控制器的設(shè)計
??? DDR SDRAM控制器的功能是初始化DDR SDRAM,;簡化DDR SDRAM復(fù)雜的讀/寫時序;將DDR SDRAM接口的雙時鐘沿數(shù)據(jù)轉(zhuǎn)換為單時鐘沿數(shù)據(jù),;產(chǎn)生周期性的刷新命令來維持DDR SDRAM內(nèi)的數(shù)據(jù)不丟失,。DDR SDRAM提供了多種命令,整個控制狀態(tài)機非常復(fù)雜,。但很多應(yīng)用場合中,,并不需要用到所有的命令,為了簡化設(shè)計,,同時兼顧盡可能多的應(yīng)用場合,,在控制器的設(shè)計中實現(xiàn)了如下幾種功能:DDR SDRAM初始化、可變長度突發(fā)讀/寫,、自動刷新功能,、預(yù)充電以及模式寄存器的重置。圖3為控制器整個狀態(tài)轉(zhuǎn)換圖[4],。
?
??? 根據(jù)圖3的狀態(tài)轉(zhuǎn)換關(guān)系,,DDR SDRAM控制器包含以下幾個模塊:時鐘生成模塊、初始化模塊,、刷新模塊,、讀/寫控制模塊以及地址生成模塊。圖4給出了控制器的結(jié)構(gòu)框圖,。
?
??? 時鐘模塊用來產(chǎn)生工作時鐘提供給整個DDR SDRAM控制器以及外部的存儲芯片,;初始化模塊完成DDR SDRAM初始化過程所需的各項操作,配置相應(yīng)的寄存器,,使得在初始化完成后,,DDR SDRAM能工作在所期望的模式;刷新模塊用來計數(shù),,定時向讀/寫控制模塊發(fā)送自動刷新請求,;讀/寫控制模塊用來控制數(shù)據(jù)在FIFO之內(nèi)讀/寫,并完成激活,、刷新,、預(yù)充電等命令;地址生成模塊用來提供各種操作所需的地址信息[5],。
??? 該控制器針對16?bit寬512 Mb的DDR SDRAM設(shè)計,,在Altera公司的Quartus II4.2環(huán)境中采用CycloneII系列的EP2C35來實現(xiàn),總共使用了729個邏輯單元,,占FPGA可編程邏輯資源的12%,,此外還使用了1個鎖相環(huán)(PLL)。設(shè)計中,,在Quartus II4.2環(huán)境中分別對以上各個組成模塊設(shè)計,,并進行了最后的時序仿真驗證,,使其滿足設(shè)計的要求。圖5給出了讀/寫控制模塊設(shè)計時的讀操作仿真時序圖,。
?
??? 其中clk是時鐘信號,,reset_all是復(fù)位信號,init_end是初始化完成標志,,ext_ref_cnte是輸出,,表示使能外部的刷新模塊,ref_req是外部刷新請求,,rd_req是外部讀請求,,cmd是響應(yīng)操作的命令代碼,rd_wr表示當前的狀態(tài)為讀還是寫,,fifo_wr_en是FIFO的寫使能,,表明讀操作的數(shù)據(jù)可以寫入到FIFO中。
??? 基于DDR SDRAM的高速數(shù)據(jù)采集系統(tǒng)在應(yīng)用中有很大的實際意義,,它提高了系統(tǒng)的可靠性和數(shù)據(jù)的存儲深度,在一定程度上有效地減小了電路的尺寸,。DDR SDRAM已經(jīng)被應(yīng)用于視頻采集,、內(nèi)存設(shè)計等多個領(lǐng)域,其關(guān)鍵技術(shù)是時序控制模塊的設(shè)計,。
??? 本文給出了一種通過FPGA實現(xiàn)對DDR SDRAM控制的方法,。設(shè)計中采用Altera公司的Cyclone系列FPGA,并充分利用片內(nèi)提供的鎖相環(huán),、DDR觸發(fā)器以及DQS延遲鏈等硬件資源,,占用的邏輯資源少。該設(shè)計可以很容易地移植到Altera公司的其他系列FPGA上,,經(jīng)過適當?shù)男薷倪€可以用來控制64位寬的DIMM型的DDR SDRAM,,因此可以更好地應(yīng)用在需求高速度、大容量存儲器的場合中,。
參考文獻
[1] 吳健軍,,初建朋,賴宗聲. 基于FPGA的DDR SDRAM控制器的實現(xiàn)[J]. 微計算機信息,,2006,,22(1-2):164-165.
[2]?李鶯. DDR SDRAM控制器的設(shè)計及FPGA實現(xiàn)[J]. 攀枝花學(xué)院學(xué)報,2007,24(6):33-37.
[3]?鄭佳,,李永亮,,李娜. 基于FPGA的DDR控制器的實現(xiàn)[J]. 無線電工程,2007,37(10):27-29.
[4]?劉瑰,,朱鴻宇. 通用DDR SDRAM控制器的設(shè)計?[J]. 微型機與應(yīng)用,2004(8):23-24.
[5]?薛林.高速PCI數(shù)據(jù)采集卡的設(shè)計與實現(xiàn)[D] . 南京:南京理工大學(xué),2006.