新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Spartan-3A 的 DDR 2 接口數(shù)據(jù)采集

Spartan-3A 的 DDR 2 接口數(shù)據(jù)采集

作者: 時間:2009-01-09 來源:網(wǎng)絡(luò) 收藏

1 引言

2(Double Data Rate2)SDRAM是由JEDEC(電子設(shè)備工程聯(lián)合委員會)制定的新生代內(nèi)存技術(shù)標(biāo)準(zhǔn),它與上一代內(nèi)存技術(shù)標(biāo)準(zhǔn)最大的不同:雖然采用時鐘的上升/下降沿同時傳輸數(shù)據(jù)的基本方式,但2卻擁有2倍的DDR預(yù)讀取能力(即4位預(yù)存取技術(shù))。此外,DDR2還增加ODT(內(nèi)建核心終結(jié)電阻器)功能,內(nèi)建合適的終結(jié)電阻,避免了以往因片外連接大片終結(jié)電阻帶來的制板成本增加。

基于的SDRAM控制器,以高可靠性、強(qiáng)可移植性、易于集成的特點(diǎn),逐漸取代以往的專用控制器而成為主流解決方案。本文采用Xilinx公司的Spartan-3A系列和Hynix公司的DDR2 SDRAM器件HY5PS121621實(shí)現(xiàn)DDR2控制器的設(shè)計(jì)。

2 與DDR2存儲器

圖1所示為DDR2與FPGA的外圍連接圖,DDR2的信號線分為:時鐘信號線CK/CK ;數(shù)據(jù)信號線Data/DQS/DM;地址信號線Address/BA1/BA0;命令信號線RAS/CAS/WE;控制信號線CS/CKE/ODT。FPGA除與DDR2的所有信號線相連外,還引出外部環(huán)回信號線(圖中虛線所示),此信號輸出送至輸入輸出模塊(IOB),以補(bǔ)償FPGA與存儲器之間的IOB、器件和跡線的延遲。



差分時鐘線CK/CK為DDR2數(shù)據(jù)傳輸提供時鐘,在CK的上升沿和下降沿均有數(shù)據(jù)被觸發(fā);雙向差分線DQS/DQS看作數(shù)據(jù)的同步信號,寫入時由控制器發(fā)出,讀取時由DDR2產(chǎn)生DQS向控制器發(fā)送,它與讀數(shù)據(jù)邊沿對齊而與寫數(shù)據(jù)中心對齊。DN為數(shù)據(jù)信號屏蔽位在突發(fā)寫傳輸時屏蔽不存儲的數(shù)據(jù);RAS/CAS/WE作為命令信號線向DDR2發(fā)出讀取、寫人、刷新或預(yù)充電命令;片內(nèi)終結(jié)信號線ODT控制是否需要DDR2進(jìn)行片內(nèi)終結(jié)。
3 DDR2控制器的設(shè)計(jì)原理

基于FPGA的DDR2控制器設(shè)計(jì)是由時鐘生成模塊、存儲控制模塊和讀寫數(shù)據(jù)模塊組成如圖2所示。



控制器中所有模塊時鐘均來自于時鐘生成模塊,它由數(shù)字時鐘管理器(DCM)控制,輸出90°、180°和270°時鐘。該模塊還包含延遲校準(zhǔn)監(jiān)視器,用于校準(zhǔn)讀取數(shù)據(jù)(DQ)對讀取數(shù)據(jù)選通脈沖(DQS)的延遲,以便讀取數(shù)據(jù)選通脈沖邊沿能夠正確對齊DQ有效窗口的中間位置。
讀寫數(shù)據(jù)接口模塊是整個控制器設(shè)計(jì)的關(guān)鍵,它負(fù)責(zé)將用戶寫入的數(shù)據(jù)DQ和DOS按照DDR2 SDRAM時序要求發(fā)送給DDR2,DDR2在DQS的每一個時鐘沿采集寫數(shù)據(jù)。在讀取數(shù)據(jù)時,DDR2 SDRAM將DQS和相關(guān)數(shù)據(jù)發(fā)送到與DQ對齊邊沿的FPGA。FPGA將接收到的DQS信號經(jīng)過延遲校準(zhǔn),作為內(nèi)部存儲讀數(shù)據(jù)的FIFO的寫時鐘。FPGA為DDR2的每個數(shù)據(jù)位配置一對讀寫異步的FIFO,每個數(shù)據(jù)位都輸入到上升沿(FIFO0)和下降沿(FIFO1)的FIFO中,實(shí)現(xiàn)原理如圖3所示。



存儲控制模塊用于產(chǎn)生DDR2所需的地址和命令信號。DDR2在正常的讀寫操作前要初始化,因此需向DDR2發(fā)送初始化命令,待初始化完成后才能發(fā)送讀寫命令。對DDR2 SDRAM的讀寫訪問為突發(fā)模式。突發(fā)寫操作需向DDR2提供寫命令(User_command)、寫數(shù)據(jù)(User_input_data)和寫地址(User_address)信號,在最后一個寫地址發(fā)送突發(fā)操作完成信號(User_burst_done),并保持2個時鐘周期有效下終止寫操作,突發(fā)寫時序如圖4所示。突發(fā)讀操作需向DDR2提供讀命令(User_comm-and)和讀地址(User-address),在最后一讀地址發(fā)送突發(fā)完成信號(User-burst_done),并保持2個周期有效下終止讀操作,突發(fā)讀時序如圖5所示。


4 DDR2控制器的設(shè)計(jì)及應(yīng)用

為了縮短開發(fā)周期,采用Xilinx的MIG軟件工具直接生成DDR2控制器設(shè)計(jì)模塊,包括HDL代碼和約束文件。用戶可在MIG的GUI圖形界面選擇對應(yīng)模板、總線寬度和速度級別,并設(shè)置CAS延遲、突發(fā)長度、引腳分配等關(guān)鍵參數(shù)。如果設(shè)計(jì)者所選器件與MIG所列模板不相符,可在代碼生成后靈活修改代碼,達(dá)到系統(tǒng)要求。代碼添加到工程前需硬件驗(yàn)證,采用MIG自動生成的測試模塊進(jìn)行驗(yàn)證。該模塊向存儲器發(fā)出一系列的寫入命令和讀取命令,并對寫入數(shù)據(jù)和讀回?cái)?shù)據(jù)進(jìn)行比較,通過比較信號(led_error)驗(yàn)證控制器的正確與否。用ChipScope抓取的讀數(shù)據(jù)和相關(guān)控制信號時序分別如圖6和圖7所示,讀寫比較信號(led_error)在檢測到讀寫數(shù)據(jù)相等時輸出'0'電平。

在硬件驗(yàn)證通過后,把控制器代碼導(dǎo)入到系統(tǒng)工程中,設(shè)計(jì)者只需輸入相應(yīng)命令(包括讀、寫和初始化命令),控制器模塊將自動產(chǎn)生命令和控制信號并按照DDR2的時序要求送至DDR2,命令發(fā)送完畢提供給用戶一個命令應(yīng)答信號(User_cmd_ack),設(shè)計(jì)者根據(jù)這一信號判斷是否可以發(fā)送下一個命令。至于自動刷新、激活和預(yù)充電命令則由控制器自動完成,無需用戶干涉。

5 結(jié)束語

通過MIG工具輔助設(shè)計(jì),實(shí)現(xiàn)500 M/s帶寬的DDR2接口,占用FPGA資源分別為15%IOB資源,17%邏輯Slice資源和2個DCM。在FPGA中實(shí)現(xiàn)DDR2控制器,節(jié)省功耗和空間,并縮短系統(tǒng)開發(fā)周期,滿足大多數(shù)低成本系統(tǒng)設(shè)計(jì)要求。



關(guān)鍵詞: DDR FPGA 接口 數(shù)據(jù)采集

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉