<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          2.1 的讀操作流程

          通過對 的讀時序的分析,將整個讀操作過程分解為7 個狀態(tài),每一個狀態(tài)都對應(yīng)著不同的命令(CMD)值, 控制核通過對CMD 的譯碼完成對DDR 的操作。從整體的控制過程來看,讀操作流程如圖2 所示。其中實線表示的是讀操作的控制流程,虛線表示的讀操作的狀態(tài)轉(zhuǎn)換流程??刂屏鞒痰膶崿F(xiàn)依賴于內(nèi)部狀態(tài)轉(zhuǎn)換產(chǎn)生的控制信號。實現(xiàn)各狀態(tài)之間切換的控制信號主要有命令應(yīng)答信號CMDACK,外部控制信號RDREQ 以及程序內(nèi)部的計數(shù)器Count_READ。當系統(tǒng)的主狀態(tài)機進入到讀數(shù)據(jù)狀態(tài)時,控制信號CBE=“010”;內(nèi)部的狀態(tài)機進入到讀狀態(tài)。讀流程中另一個重要的信號為RDREQ,它是由后端的緩存(FIFO)產(chǎn)生的,當緩存中數(shù)據(jù)容量低于設(shè)定值時,信號RDREQ 被置高,讀狀態(tài)由PRE_NOP 進入READA,發(fā)起一次讀操作,完成8 個數(shù)據(jù)的傳送。程序內(nèi)部的計數(shù)器Count_READ 保證控制核在經(jīng)過設(shè)定的CAS 潛伏期后從數(shù)據(jù)總線上讀取數(shù)據(jù)。

          3 DDR SDRAM 控制器的實現(xiàn)

          3.1 控制電路主狀態(tài)機設(shè)計

          主狀態(tài)機用于控制整個數(shù)據(jù)采集系統(tǒng)的工作流程。各功能模塊的配合,命令的發(fā)送,數(shù)據(jù)的采集、存儲和傳輸都需要狀態(tài)機來協(xié)調(diào)并嚴格控制時序關(guān)系。其狀態(tài)轉(zhuǎn)換圖如圖4 所示。控制器上電或復(fù)位時進入IDLE 狀態(tài),其中LA 和LD 分別為PCI 局部總線的地址線和數(shù)據(jù)線,上位機的發(fā)送的命令通過PCI 總線及接口芯片傳送到PCI 局部總線,其中地址線的變化將引起狀態(tài)機內(nèi)部的狀態(tài)轉(zhuǎn)換,狀態(tài)轉(zhuǎn)換的同時,相應(yīng)的配置字將出現(xiàn)在數(shù)據(jù)線上。配置完參數(shù)之后,轉(zhuǎn)態(tài)機進入等待數(shù)據(jù)狀態(tài)(WAIT_DATA),當觸發(fā)信號滿足要求之后(TRG=‘1’),自動進入到保存數(shù)據(jù)狀態(tài)(SAVE_DATA),在此狀態(tài)下,控制程序開始進行數(shù)據(jù)采集。指定存儲深度的數(shù)據(jù)采集完成后,主狀態(tài)機自動進入等待讀數(shù)據(jù)狀態(tài),在接受到地址線上的狀態(tài)轉(zhuǎn)換命令后,分別進入讀取A 通道和B 通道數(shù)據(jù)的狀態(tài)。數(shù)據(jù)讀完之后,上位機發(fā)送命令使狀態(tài)返回到IDLE 狀態(tài)。



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

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();