基于FPGA 的DDR SDRAM控制器在高速數(shù)據(jù)采集系統(tǒng)中
通過對DDR SDRAM 的讀時序的分析,將整個讀操作過程分解為7 個狀態(tài),每一個狀態(tài)都對應(yīng)著不同的命令(CMD)值,DDR 控制核通過對CMD 的譯碼完成對DDR SDRAM的操作。從整體的控制過程來看,讀操作流程如圖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 控制器的FPGA實現(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)。
評論