新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA 的DDR SDRAM控制器在高速數(shù)據(jù)采集系統(tǒng)中

基于FPGA 的DDR SDRAM控制器在高速數(shù)據(jù)采集系統(tǒng)中

作者: 時(shí)間:2012-11-05 來源:網(wǎng)絡(luò) 收藏

3.2 各模塊結(jié)構(gòu)圖

系統(tǒng)的頂層文件DATA_SAMPLE 的結(jié)構(gòu)如圖5 所示, 內(nèi)置的主要有前端緩存模塊DATATO_RAM、后端緩存模塊TO_LD 和 的控制模塊。從數(shù)據(jù)流程上看,前端緩存將雙路AD 采集到的數(shù)據(jù)合并成64 位,當(dāng)緩存中的數(shù)據(jù)達(dá)到設(shè)定的存儲(chǔ)深度時(shí),控制模塊在100MHz 的時(shí)鐘下將數(shù)據(jù)讀出,并將64 位數(shù)據(jù)拆分成32 位分別存儲(chǔ)到兩片 SDRAM 中。進(jìn)入到讀狀態(tài)時(shí),控制模塊同時(shí)從兩片DDR SDRAM 中讀出32位的數(shù)據(jù),根據(jù)用戶所選擇的數(shù)據(jù)通道,控制邏輯將相應(yīng)的數(shù)據(jù)送入后端緩存中,后端緩存再將數(shù)據(jù)拆分成16 位,通過PCI 局部總線傳送到上位機(jī)中。從控制流程上看,DATATO_RAM和TO_LD 中都設(shè)置了數(shù)據(jù)計(jì)數(shù)器,當(dāng)DATATO_RAM 中存儲(chǔ)的數(shù)據(jù)量超過設(shè)定值時(shí),讀使能RDEN 有效,控制模塊從緩存中一次讀走4 個(gè)數(shù)據(jù)。后端緩存的控制方式與此類似。

控制模塊SDRAM 由兩部分組成,其結(jié)構(gòu)如圖6 所示。其中ADDR 為地址產(chǎn)生模塊,給控制核ddr_sdram 提供數(shù)據(jù)操作的行地址和列地址??刂坪薲dr_sdram 完成的功能包括將內(nèi)部狀態(tài)轉(zhuǎn)換產(chǎn)生的CMD 控制命令譯碼成DDR SDRAM 所能實(shí)現(xiàn)的各種操作并實(shí)現(xiàn)以雙倍的速率與DDR SDRAM 進(jìn)行數(shù)據(jù)交換的接口。ddr_sdram 的結(jié)構(gòu)框圖如圖7 所示。

控制核ddr_sdram 采用自頂而下模塊化的設(shè)計(jì)方法,由4 個(gè)模塊構(gòu)成:ddr_sdram 頂層模塊、控制接口模塊、命令模塊和數(shù)據(jù)路徑模塊。ddr_sdram 頂層模塊初始化并把其余三個(gè)模塊有機(jī)地結(jié)合起來;控制接口模塊接收CMD 命令和相關(guān)存儲(chǔ)器地址,對(duì)命令進(jìn)行譯碼并將請(qǐng)求發(fā)送給命令模塊;命令模塊接收從控制接口模塊譯碼后的命令和地址,產(chǎn)生相應(yīng)的命令給DDR SDRAM;數(shù)據(jù)路徑模塊在讀命令READA 和寫命令WRITEA 期間處理數(shù)據(jù)交換??刂平涌谀K包含1 個(gè)命令譯碼器和1 個(gè)16 位的刷新減計(jì)數(shù)器及相應(yīng)的控制電路。 命令譯碼器譯碼并將譯碼后的命令及相應(yīng)的地址轉(zhuǎn)送給命令模塊。減計(jì)數(shù)器和相應(yīng)的控制電路用來產(chǎn)生刷新命令給命令模塊。其值就是由LOAD_REG2 命令寫入到REG2 中的值。當(dāng)計(jì)數(shù)器減到0 時(shí),控制接口模塊就向命令模塊發(fā)Request 并一直保持到命令模塊發(fā)Ack 來響應(yīng)該請(qǐng)求。一旦控制接口模塊接收到Ack,減計(jì)數(shù)器就會(huì)重新寫入REG2 中的值。命令模塊由1 個(gè)簡單的仲裁器、命令發(fā)生器及命令時(shí)序器組成。它接收從控制接口模塊來的譯碼后的命令,同時(shí)接收刷新控制邏輯發(fā)來的刷新請(qǐng)求命令并產(chǎn)生正確的命令給DDR SDRAM。仲裁器在控制接口發(fā)來的命令和刷新控制邏輯發(fā)來的刷新請(qǐng)求命令之間進(jìn)行仲裁。刷新請(qǐng)求命令的優(yōu)先級(jí)高于控制接口來的命令。

在仲裁器收到命令譯碼器發(fā)來的命令后,該命令就傳送到命令發(fā)生器,命令時(shí)序器即用3 個(gè)移位寄存器產(chǎn)生正確的命令時(shí)序后發(fā)給DDR SDRAM。1 個(gè)移位寄存器用來控制激活命令時(shí)序,1 個(gè)用來控制READA 和WRITEA命令,1 個(gè)用來計(jì)時(shí)操作命令的持續(xù)時(shí)間,為仲裁器確定最后的請(qǐng)求操作是否完成。數(shù)據(jù)路徑模塊提供了DDR SDRAM 到 的數(shù)據(jù)通道。在和DDR SDRAM 接口的一方,數(shù)據(jù)路徑模塊將從DDR SDRAM 過來的數(shù)據(jù)總線寬度翻倍,并在200MHz 的時(shí)鐘頻率接收DDR SDRAM 在100MHz 時(shí)鐘的上下沿送出的數(shù)據(jù)。在和 接口的一方,數(shù)據(jù)路徑模塊將從FPGA 送來的數(shù)據(jù)寬度減半并以2 倍的速率送給DDR SDRAM。4 系統(tǒng)實(shí)現(xiàn)的功能及結(jié)果分析邏輯分析儀SignalTap II 是Quartus II 軟件中集成的一個(gè)內(nèi)部邏輯分析軟件,使用它可以觀察本設(shè)計(jì)的內(nèi)部信號(hào)波形。在系統(tǒng)的軟件設(shè)計(jì)和仿真完成之后,將編譯后的文件下載到系統(tǒng)的硬件中,對(duì)DDR SDRAM 的狀態(tài)轉(zhuǎn)移和讀寫流程中各個(gè)信號(hào)進(jìn)行了實(shí)時(shí)的采集與顯示。

如圖8 所示,是讀數(shù)據(jù)時(shí)嵌入式邏輯分析儀采集到的波形圖。第9 行到第15行的信號(hào)顯示的是讀流程中各狀態(tài)之間的切換過程。讀命令發(fā)出之后,經(jīng)過CAS 潛伏期,DDR SDRAM 突發(fā)傳輸8 個(gè)數(shù)據(jù),并產(chǎn)生選通信號(hào)DQS??刂破髟谧x到數(shù)據(jù)線DQ 上的數(shù)據(jù)后,將數(shù)據(jù)寬度加倍,傳送到后端緩存中。



關(guān)鍵詞: SDRAM FPGA DDR 控制器

評(píng)論


相關(guān)推薦

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

關(guān)閉