《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 基于DDR SDRAM的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計

基于DDR SDRAM的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計

2009-06-23
作者:方慶山1,林春方2

??? 摘 要:采用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)隨機(jī)存儲器DDR SDRAM(Double Data Rate SDRAM),,是在SDRAM的基礎(chǔ)上發(fā)展而來的,,能夠在時鐘上升沿和下降沿各傳輸一次數(shù)據(jù),可以在與SDRAM相同的總線時鐘頻率下達(dá)到更高的數(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ù)處理成為當(dāng)前要解決的主要問題。圖1所示為一種基于CPCI總線的高速數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)框圖[1],。

?


??? 外部信號首先經(jīng)過模擬信號調(diào)理通道達(dá)到A/D芯片的輸入要求,,再通過A/D芯片將模擬信號轉(zhuǎn)換成數(shù)字信號送入FPGA進(jìn)行處理。當(dāng)處理器發(fā)出“寫命令”時,,將數(shù)字信號在FIFO內(nèi)部進(jìn)行緩存再送入DDR SDRAM進(jìn)行存儲,。考慮到寫入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核的配合完成。當(dāng)處理器發(fā)出“讀命令”時,,在控制模塊的控制下將DDR SDRAM內(nèi)部數(shù)據(jù)讀回FPGA內(nèi)部,,再次通過FIFO進(jìn)行緩存,然后送回處理器處理,。在整個數(shù)據(jù)處理過程中,,關(guān)鍵是對DDR SDRAM的存儲進(jìn)行有效的控制,以保證有足夠的數(shù)據(jù)可進(jìn)行分析處理,,從而重現(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 進(jìn)行存取數(shù)據(jù)操作之前,首先要對其初始化,,即設(shè)置DDR SDRAM的普通模式寄存器和擴(kuò)展模式寄存器,,確定DDR SDRAM 的工作方式。這些設(shè)置包括突發(fā)長度,、突發(fā)類型,、CAS潛伏期和工作模式,以及擴(kuò)展模式寄存器中對DDR SDRAM 內(nèi)部延遲鎖定回路(DLL)的使能與輸出驅(qū)動能力的設(shè)置[2],。
??? 初始化完成之后,,DDR SDRAM 便進(jìn)入正常的工作狀態(tài),,此時可對存儲器進(jìn)行讀寫和刷新。所謂DDR的雙倍速率結(jié)構(gòu),,即在數(shù)據(jù)隨路時鐘的上升沿和下升沿各發(fā)送一次數(shù)據(jù),,這樣在一個時鐘周期內(nèi)可完成雙倍速率的數(shù)據(jù)傳輸。圖2是“寫模式”下的工作時序圖,。對DDR SDRAM進(jìn)行寫操作時,,首先通過外部控制模塊(FPGA)對DDR送寫命令和操作地址,然后第1個正確的數(shù)據(jù)將在數(shù)據(jù)選取脈沖DQS的上升沿進(jìn)行存儲,,接下來的數(shù)據(jù)將在DQS的連續(xù)時鐘沿上進(jìn)行存儲,,根據(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),。當(dāng)要存取一個不同行的地址單元時,,需要通過一個預(yù)充電(Precharge)操作關(guān)閉當(dāng)前行。自動刷新(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)機(jī)非常復(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è)計,,并進(jìn)行了最后的時序仿真驗證,使其滿足設(shè)計的要求,。圖5給出了讀/寫控制模塊設(shè)計時的讀操作仿真時序圖,。

?


??? 其中clk是時鐘信號,reset_all是復(fù)位信號,,init_end是初始化完成標(biāo)志,,ext_ref_cnte是輸出,表示使能外部的刷新模塊,,ref_req是外部刷新請求,,rd_req是外部讀請求,cmd是響應(yīng)操作的命令代碼,rd_wr表示當(dāng)前的狀態(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)過適當(dāng)?shù)男薷倪€可以用來控制64位寬的DIMM型的DDR SDRAM,,因此可以更好地應(yīng)用在需求高速度,、大容量存儲器的場合中。

參考文獻(xiàn)
[1] 吳健軍,,初建朋,賴宗聲. 基于FPGA的DDR SDRAM控制器的實現(xiàn)[J]. 微計算機(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]. 微型機(jī)與應(yīng)用,2004(8):23-24.
[5]?薛林.高速PCI數(shù)據(jù)采集卡的設(shè)計與實現(xiàn)[D] . 南京:南京理工大學(xué),2006.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected],。