高速大容量數據采集板卡的SDRAM控制器設計
發布時間:2007/8/15 0:00:00 訪問次數:835
引言
高速數據采集具有系統數據吞吐率高的特點,要求系統在短時間內能夠傳輸并存儲采集結果。因此,采集數據的快速存儲能力和容量是制約加快系統速度和容許采集時間的主要因素之一。通常用于數據采集系統的存儲器有先進先出存儲器(FIFO)、雙端口RAM以及靜態RAM等,但是容量小,已經不能滿足高速數據采集系統的需求。目前市場上的SDRAM和DDR SDRAM具有工作頻率高、容量大、功耗低的特點,數據線位寬可以達到64bit,完全適用于高速數據采集系統。但是SDRAM控制相對復雜,而且需要定時刷新,是系統設計的一個技術難點。
本文設計的100MHz單通道AD9432高速大容量數據采集板卡,選擇大容量SDRAM作為采集數據存儲器。其中,自行設計的SDRAM控制器,采用了猝發讀寫操作模式,充分發揮猝發讀寫的高速高效率特性,實現對采集數據的高速存儲。
SDRAM控制器設計與仿真
SDRAM控制器的設計
SDRAM控制器的設計有多種方案,一種是采用市場上的專用SDRAM接口芯片,這種控制器接口固定,訪問容量有限,與A/D采樣電路連接時,需要設計一個接口轉換電路,滿足專用芯片的接口時序;另一種是采用帶有SDRAM接口的DSP,例如TMS320C6000系列,但是容量有限,不易擴展,而且這種方式通常要求對采集數據進行預處理;還有一種是基于FPGA的SDRAM控制器,目前FPGA的技術比較成熟,編程方便,設計靈活,便于構造大容量的SDRAM存儲器,但是控制器需要根據系統技術要求進行設計。在本文的高速數據采集卡設計中,采用大容量FPGA設計SDRAM控制器。
基于FPGA的SDRAM控制器工作原理
SDRAM控制器是高速數據采集卡存儲單元的核心,控制板卡數據流。工作原理參見圖1。采集數據先送入A/D數據緩存器,由SDRAM控制器讀出并寫入大容量SDRAM存儲器。當A/D轉換結束后,板卡修改狀態標志或者發出中斷請求,主機發出讀取命令,SDRAM控制器切換工作狀態,把數據從SDRAM中取出,寫入輸出緩存器,由主機通過總線接口將結果讀到系統中。其中,SDRAM控制器負責對SDRAM的定時刷新。SDRAM控制器根據設計,可以對SDRAM執行猝發讀寫、刷新等12種命令,完成對數據的訪問。
SDRAM的控制命令組合
SDRAM的控制是根據時鐘上升沿時刻控制信號的不同組合實現的。控制SDRAM的基本操作包括:初始化、刷新、塊激活、讀寫訪問、預充電等。
基于FPGA的SDRAM控制器設計
整個SDRAM電路包括一片FPGA和多片SDRAM。FPGA內部集成了SDRAM控制器、ADC接口、總線控制接口和3個FIFO。其中,2個FIFO組成乒乓A/D數據緩存器,另一個FIFO作為輸出緩存器,FIFO的深度和SDRAM頁長度一致。在板卡設計中,根據需求對SDRAM控制操作進行了簡化,設計了初始化、自動刷新、塊激活、猝發讀寫、預充電等六種操作,具體狀態機設計如圖2所示。系統上電初始化并發出復位信號,SDRAM控制器進入初始化狀態,對SDRAM進行刷新和模式設置,其中猝發長度設為“full page”,然后進入空閑狀態,等待命令。當主機啟動A/D轉換,ADC接口將采集數據依次寫入A/D數據緩存器,當其中一個FIFO滿,SDRAM控制器進入猝發寫狀態,發出塊激活和猝發寫命令,將A/D數據緩存器中的數據讀出并寫入SDRAM當前頁,一頁數據寫操作后,發出塊預充電命令,關閉所有數據塊,退出猝發寫狀態。當SDRAM控制器接到主機的讀數命令時,轉入猝發讀狀態,先后發出塊激活和猝發讀命令,把SDRAM一頁的數據讀出并寫入輸出緩存器,并用滿信號作為中斷信號向PCI總線發出申請,通知主機讀取數據。每當刷新計時器計數滿,狀態機轉到刷新狀態,完成對SDRAM的刷新。
在編程實現SDRAM控制器中,應該根據設計需求,選擇合適的控制命令組合,保證工程實現方案簡單、可靠,并方便調試。在設計中應該注意:
1. 每啟動一次SDRAM的讀/寫操作,都需要經過激活一個塊(鎖行地址)、鎖列地址(讀寫命令)等幾個過程,所以從發出地址到真正訪問一個地址空間需要4~6個時鐘周期。因此,SDRAM在非猝發模式時訪問效率非常低,不適合高速電路應用。在本電路設計中,SDRAM的設置工作模式為猝發訪問,充分發揮了SDRAM高速高效特點。
2. 復位之后,SDRAM控制器自動進入初始化狀態。根據SDRAM初始化的要求,設置一個計數器,首先等待至少200ms,不做任何操作,然后產生一個Precharge All Banks命令,接著是兩個刷新命令,最后設置工作模式寄存器。完成這些初始化操作之后,SDRAM控制器進入空閑狀態,這時才可以對SDRAM進行正常的操作。否則,SDRAM將處于一種不確定狀態,無法保證操作的正確性。
3. SDRAM有多種刷新模式,Self Refresh通常工作于所有數據塊處于空閑的狀態,功耗低,但是會使內部時鐘和所有輸入緩沖無效,且控制復雜。Auto Refresh由定時器產生,易于控制。因此一般選擇Auto Refresh模式。通常設計一個計數器以計算時間間隔,達到刷新周期時,產生刷新信號,實現刷新時序。SDRAM要求在刷新之前所有的塊都處于空閑狀態,但實際應用中,有可能從任意一個狀態進入刷新狀態,因此不能保證所有的塊都處于
引言
高速數據采集具有系統數據吞吐率高的特點,要求系統在短時間內能夠傳輸并存儲采集結果。因此,采集數據的快速存儲能力和容量是制約加快系統速度和容許采集時間的主要因素之一。通常用于數據采集系統的存儲器有先進先出存儲器(FIFO)、雙端口RAM以及靜態RAM等,但是容量小,已經不能滿足高速數據采集系統的需求。目前市場上的SDRAM和DDR SDRAM具有工作頻率高、容量大、功耗低的特點,數據線位寬可以達到64bit,完全適用于高速數據采集系統。但是SDRAM控制相對復雜,而且需要定時刷新,是系統設計的一個技術難點。
本文設計的100MHz單通道AD9432高速大容量數據采集板卡,選擇大容量SDRAM作為采集數據存儲器。其中,自行設計的SDRAM控制器,采用了猝發讀寫操作模式,充分發揮猝發讀寫的高速高效率特性,實現對采集數據的高速存儲。
SDRAM控制器設計與仿真
SDRAM控制器的設計
SDRAM控制器的設計有多種方案,一種是采用市場上的專用SDRAM接口芯片,這種控制器接口固定,訪問容量有限,與A/D采樣電路連接時,需要設計一個接口轉換電路,滿足專用芯片的接口時序;另一種是采用帶有SDRAM接口的DSP,例如TMS320C6000系列,但是容量有限,不易擴展,而且這種方式通常要求對采集數據進行預處理;還有一種是基于FPGA的SDRAM控制器,目前FPGA的技術比較成熟,編程方便,設計靈活,便于構造大容量的SDRAM存儲器,但是控制器需要根據系統技術要求進行設計。在本文的高速數據采集卡設計中,采用大容量FPGA設計SDRAM控制器。
基于FPGA的SDRAM控制器工作原理
SDRAM控制器是高速數據采集卡存儲單元的核心,控制板卡數據流。工作原理參見圖1。采集數據先送入A/D數據緩存器,由SDRAM控制器讀出并寫入大容量SDRAM存儲器。當A/D轉換結束后,板卡修改狀態標志或者發出中斷請求,主機發出讀取命令,SDRAM控制器切換工作狀態,把數據從SDRAM中取出,寫入輸出緩存器,由主機通過總線接口將結果讀到系統中。其中,SDRAM控制器負責對SDRAM的定時刷新。SDRAM控制器根據設計,可以對SDRAM執行猝發讀寫、刷新等12種命令,完成對數據的訪問。
SDRAM的控制命令組合
SDRAM的控制是根據時鐘上升沿時刻控制信號的不同組合實現的。控制SDRAM的基本操作包括:初始化、刷新、塊激活、讀寫訪問、預充電等。
基于FPGA的SDRAM控制器設計
整個SDRAM電路包括一片FPGA和多片SDRAM。FPGA內部集成了SDRAM控制器、ADC接口、總線控制接口和3個FIFO。其中,2個FIFO組成乒乓A/D數據緩存器,另一個FIFO作為輸出緩存器,FIFO的深度和SDRAM頁長度一致。在板卡設計中,根據需求對SDRAM控制操作進行了簡化,設計了初始化、自動刷新、塊激活、猝發讀寫、預充電等六種操作,具體狀態機設計如圖2所示。系統上電初始化并發出復位信號,SDRAM控制器進入初始化狀態,對SDRAM進行刷新和模式設置,其中猝發長度設為“full page”,然后進入空閑狀態,等待命令。當主機啟動A/D轉換,ADC接口將采集數據依次寫入A/D數據緩存器,當其中一個FIFO滿,SDRAM控制器進入猝發寫狀態,發出塊激活和猝發寫命令,將A/D數據緩存器中的數據讀出并寫入SDRAM當前頁,一頁數據寫操作后,發出塊預充電命令,關閉所有數據塊,退出猝發寫狀態。當SDRAM控制器接到主機的讀數命令時,轉入猝發讀狀態,先后發出塊激活和猝發讀命令,把SDRAM一頁的數據讀出并寫入輸出緩存器,并用滿信號作為中斷信號向PCI總線發出申請,通知主機讀取數據。每當刷新計時器計數滿,狀態機轉到刷新狀態,完成對SDRAM的刷新。
在編程實現SDRAM控制器中,應該根據設計需求,選擇合適的控制命令組合,保證工程實現方案簡單、可靠,并方便調試。在設計中應該注意:
1. 每啟動一次SDRAM的讀/寫操作,都需要經過激活一個塊(鎖行地址)、鎖列地址(讀寫命令)等幾個過程,所以從發出地址到真正訪問一個地址空間需要4~6個時鐘周期。因此,SDRAM在非猝發模式時訪問效率非常低,不適合高速電路應用。在本電路設計中,SDRAM的設置工作模式為猝發訪問,充分發揮了SDRAM高速高效特點。
2. 復位之后,SDRAM控制器自動進入初始化狀態。根據SDRAM初始化的要求,設置一個計數器,首先等待至少200ms,不做任何操作,然后產生一個Precharge All Banks命令,接著是兩個刷新命令,最后設置工作模式寄存器。完成這些初始化操作之后,SDRAM控制器進入空閑狀態,這時才可以對SDRAM進行正常的操作。否則,SDRAM將處于一種不確定狀態,無法保證操作的正確性。
3. SDRAM有多種刷新模式,Self Refresh通常工作于所有數據塊處于空閑的狀態,功耗低,但是會使內部時鐘和所有輸入緩沖無效,且控制復雜。Auto Refresh由定時器產生,易于控制。因此一般選擇Auto Refresh模式。通常設計一個計數器以計算時間間隔,達到刷新周期時,產生刷新信號,實現刷新時序。SDRAM要求在刷新之前所有的塊都處于空閑狀態,但實際應用中,有可能從任意一個狀態進入刷新狀態,因此不能保證所有的塊都處于
上一篇:硬盤常見故障的處理(3)
上一篇:杜比技術概況:數字音頻編碼