本文詳細介紹了在Xilinx Virtex-6系列FPGA中使用MIG3.7 IP核實現高速率DDR3芯片控制的設計思想和設計方案。針對高速實時數字信號處理中大容量采樣數據通過DDR3存儲和讀取的應用背景,設計和實現了適用于該背景的控制狀態機,并對控制時序作了詳盡的分析。系統測試結果表明,該設計滿足大容量數據的高速率存儲和讀取要求。
一、引言
隨著軟件無線電[1]思想的提出和FPGA技術[2]的不斷發展,高速實時數字信號處理[3]已經成為FPGA的一個重要課題,高速的采樣頻率帶來的是大容量的存儲數據。在存儲芯片領域,DDR3以較低的功耗,較快的存儲速度,較高的存儲容量和較低的價格迅速占領市場;同時在繪制PCB板圖時,DDR2對信號完整性[4]的要求比較高,在很多地方都要求T型連接;而DDR3引入了write leveling的模塊[5],專門用于各個模塊間時鐘的對齊,因此可以采用菊花鏈的連接方式,大大方便了PCB互聯設計[6]。因此,在FPGA中使用DDR3進行大容量數據的存儲是一種趨勢。
本文基于Xilinx 公司的Virtex-6芯片,針對高速實時數字信號處理中大容量采樣數據通過DDR3存儲和讀取的應用背景,利用官方提供的IP核完成了用戶接口設計,并在該芯片上完成了驗證和實現。目前,該方案已經在某雷達系統的高速數據緩存中得到了應用。
二、系統模型
現假定背景是數字信號處理,由FPGA和DSP共同完成,FPGA主要完成數據的實時檢測和初步處理,同時負責采集和存儲原始數據。DSP主要負責信號的進一步處理。DSP的實時處理能力有限,那么就需要FPGA把感興趣時間段的數據存儲下來,再由DSP一包一包地從中讀取并進一步處理。其基本框圖如下:
?
圖1 系統背景框圖
在這里我們主要討論DDR3的控制,提取感興趣的模塊可以得到簡化的框圖:
?
圖2 DDR3用戶接口設計整體框圖
用戶接口設計是整個系統的核心,對整個系統進行調度和控制。當接收到DSP寫命令的時候,該設計開啟寫FIFO緩存功能,將對應數據按照MIG的時序要求寫入DDR3;當接收到DSP讀命令的時候,該設計按照要求產生對應的MIG讀時序,控制數據進入讀FIFO,進而完成后續操作。
三、MIG時序要求
Xilinx MIG v3.7 IP核的一般寫命令操作時序[7]如下圖所示:
?
圖3 MIG用戶接口的時序要求(突發長度為8)
由以上時序圖可以得到連續寫命令的控制要點:
1、 當app_rdy(DDR3核準備好信號)和app_en(DDR3核使能信號)同時拉高的時候, 寫命令和寫地址有效。
2、 當app_wdf_rdy(DDR3寫FIFO準備好信號)和app_wdf_en(DDR3寫FIFO使能信 號)同時拉高的時候,寫入數據有效。
3、 突發長度為8時每兩個控制周期對應一組突發數據,則每寫入兩個數據就要給出一個 app_wdf_end(幀尾信號)。
4、 寫命令與寫數據的操作時序要在兩個時鐘周期以內。
四、用戶接口設計及時序分析
由上面MIG操作時序要求提出基于等待的寫命令寫數據同時發送機制。這種方式有一個好處:數據基本不會留在DDR3的FIFO里面,這樣,就不用考慮app_wdf_rdy會拉低的情況,方便了寫數據的操作,提高了時鐘利用率。其基本思路如下圖所示:
?
圖4 基于MIG的用戶接口設計基本框圖
由上圖設計的狀態機所得的時序如下圖所示:
?
圖5 用戶設計時序圖
時刻①寫等待狀態,此時檢測到ADFIFO為空,因此保持寫等待狀態。
時刻②檢測到ADFIFO非空,于是讀使能拉高,下一個狀態為寫數據狀態。
時刻③已進入寫數據狀態,此時檢測adata_valid(ADFIFO數據有效信號),因為讀使能拉高到讀數據有效有一個時鐘的延時,因此當檢測到adata_valid有效再使得adfifo_rden(ADFIFO讀使能)拉低的話,讀使能已經有效了兩個時鐘了。此時并沒有檢測到ADFIFO數據有效信號,狀態不變繼續檢測。
時刻④檢測到讀數據有效,說明兩個時鐘周期的讀使能信號已經發出,于是讀使能拉低,同時拉高app_wdf_wren(DDR核寫使能信號),將對應數據發出。
因為有兩個時鐘的有效數據,時刻⑤adata_valid依然拉高,繼續寫入數據;此時檢測到brust_cnt(幀尾計數標志)為高,給出幀尾信號,同時app_en(核使能信號)拉高,準備發送寫命令,下一個狀態為寫命令狀態。
時刻⑥已進入寫命令狀態,這時app_en已經拉高,只要檢測到app_rdy(核準備好信號)拉高,說明對應地址的寫命令已經發出。時刻⑥檢測到app_rdy為低,狀態不變,繼續檢測。
經過連續幾個時鐘周期的等待后,時刻⑦檢測到app_rdy為高,說明對應地址的寫命令已經發出,地址自動加一,同時app_en信號拉低,再次進入寫等待狀態。
時刻①到時刻⑦詳細描述了當接受到DSP寫命令時用戶接口設計對各個端口的時序操作,可見與MIG要求時序相符。
讀命令的發送和寫命令的發送類似,也比較簡單,在此不再贅述。
五、結論
使用Xilinx公司生產的Virtex-6芯片進行驗證,采樣速率為1Ghz,采樣位寬為12位,擴展成16位后進行存儲,DDR3內部以1067M處理速度,32位的處理帶寬進行存儲,寫數據時從地址全0寫到地址全1,讀數據時也從地址全0讀到全1,經對比無誤,說明該控制器能夠較好地進行高速讀寫操作。
?
?
?
Virtex-6
DDR3
FPGA
高速實時數字信號處理
評論