高速數字記錄系統(tǒng)中光纖下載卡的邏輯設計
數據記錄及下載系統(tǒng)
如圖1所示,雷達信號預處理機將采樣到的信號進行一系列處理工作,最后形成一路或多路的光纖數據,送交外面的兩個分支。一個分支是送交雷達信號處理機,進行真正的雷達信號實時分析處理。這個分支我們不關心。另一個分支是通過RocketIO傳送至一塊或多塊數據記錄板。
圖1 數據記錄及下載系統(tǒng)框圖
數據記錄在現場進行,存儲到記錄設備后,有兩個用途,一是回放,即回放到雷達信號處理機中,復現進入時的情景;另一種是下載,即下載到本地微機上,對數據進行檢查和處理。下載過程一般在實驗室進行,下載方式有兩種,一種是網絡下載,另一種是光纖下載。
網絡下載的缺點是速度慢,受網絡帶寬和芯片處理能力的限制,其傳輸速率一般為30~60Mb/s。優(yōu)點是不需要額外的設備,只要設備支持網絡通信即可。本地微機作為主控機,控制下載并存放下載的數據。
光纖下載是將記錄設備的光口和專用的光纖下載卡互連,數據傳輸至光纖下載卡后,然后通過PCI總線轉存至主機硬盤上。光纖下載的優(yōu)點是下載速度快,采用Xilinx FPGA提供的高速串行鏈路IP核RocketIO,其下載速度可以達到2.5Gb/s,去掉開銷也能達到2Gb/s,即250Mb/s,比網絡下載提高了近一個數量級。缺點是普通微機沒有光口,需要額外的光纖下載設備,插入本地微機,和記錄設備對接,完成光纖下載。如圖1中的粗黑的光纖和64位/66M的PCI總線就是供光纖下載之用。
光纖下載卡結構
圖2為光纖下載卡結構圖。如圖2所示,光纖下載設備的和核心為一塊Xilinx的V2 pro系列FPGA,其外圍有兩組DDR,用于數據的緩存。為了和外部交換板的光口互連,還有一個光模塊。下載設備的另一端通過PCI總線和主機相連,主機可以是X86處理器或PPC處理器。
圖2 光纖下載卡結構
可見下載設備的硬件結構比較簡潔,其復雜之處在于FPGA內部的邏輯的控制。在FPGA設計中,除需要例化MGT核,PCI核外還要設計控制邏輯進行數據傳輸的控制。
數據傳輸一般來說有三種方式,包括程序直接控制方式、中斷控制方式和DMA方式。
程序直接控制方式就是由用戶進程來直接控制內存或CPU和外圍設備之間的數據傳送。它的優(yōu)點是控制簡單,缺點是CPU和外圍設備只能串行工作,CPU的大部分工作時間浪費在對外部數據的讀取過程中,其利用率很低。
中斷控制方式是外圍設備收到數據后,向CPU發(fā)送中斷。CPU收到中斷后,再控制數據在其內存和外圍設備之間的傳輸。它的優(yōu)點是大大提高了CPU的利用率且能支持多道程序和設備的并行操作。它的缺點是由于數據緩沖寄存器比較小,如果中斷次數較多,仍然會占用大量CPU時間。在外圍設備較多時,由于中斷次數的急劇增加,可能造成CPU無法響應中斷而出現中斷丟失的現象。如果外圍設備速度比較快,可能會出現CPU來不及從數據緩沖寄存器中取走數據而丟失數據的情況。
DMA方式是在外圍設備和內存之間開辟直接的數據交換通路進行數據傳送。外圍設備通過通用總線直接訪問內存,將其收到的數據寫入內存或將要發(fā)送的數據讀出內存。上述操作完成后,再通過中斷的方式通知CPU,由CPU進行后繼的處理。它的優(yōu)點是除了在數據塊傳送開始時需要CPU的啟動指令,在整個數據塊傳送結束時需要發(fā)中斷通知CPU進行中斷處理之外,不需要CPU的干涉。
可見,下載設備和微機之間通過主DMA方式進行通信,可以大大的提高數據傳輸速率。66MHz/64位寬的PCI總線在理想情況下可以提供近500Mb/s的傳輸速率,可以比較容易的達到250Mb/s的光纖下載速度,所以下載的瓶頸在于硬盤的讀寫速度。普通硬盤的平均讀寫速度在60Mb/s,采用4個盤一組的陣列盤,差不多可以達到60×4=240Mb/s的速度。
由上述數據可以看出,采用64位的PCI總線,用主DMA方式進行數據傳輸,下載的最大速度將大于200Mb/s。
FPGA邏輯內部結構???
邏輯總體結構圖如圖3所示,數據流方向為:串行的光纖數據首先進入ATM(Aurora Transmit Module)模塊,由ATM模塊內部的Xilinx RocketIo核將串行數據轉換成并行32位數據。并行數據經過FIFO進行緩存后,進入PING64模塊。Pin64模塊內部邏輯產生主DMA時序,并將FIFO數據送上內部總線。Pcim_lc將內部總線信號轉換成PCI總線信號并送出去。各個模塊的功能具體如下。
圖3 FPGA內部結構圖
● Pcim_lc模塊為Xilinx提供的PCI64位的軟核;
● Ping64模塊包括和PCI64軟核的接口以及主DMA處理邏輯;
● ATM為和光纖輸入的接口模塊,采用Xilinx提高的Aurora協(xié)議對數據進行控制,ATM只需提高用戶邏輯和Aurora的接口即可;
● CRM為時鐘和復位信號產生模塊。
ATM模塊和ping64模塊之間接口為標準FIFO接口,設置此FIFO的目的有兩個:一是時鐘域轉換,外部輸入的主時鐘為125MHz,而RocketIO采用32位模式,在2.5Gb/s的速率下,邏輯的主工作時鐘為62.5MHz。而ping64模塊采用PCI總線提供的PCI66MHz時鐘。兩者時鐘不在同一個時鐘域,所以用異步FIFO將時鐘域隔離。二是數據的緩存。根據FIFO的almost full信號產生反壓信號,送交RocketIO,使對端收到反壓信號后,停止發(fā)送數據。
所用Xilinx的RocketIO核其實為aurora 核,這是一個雙向串行數據通信鏈路控制器,能將反壓信號隨數據一起發(fā)往對端。其接口相對簡單,有兩種模式,一種是幀模式,另一種是流模式,可以根據應用靈活選擇。在本項目中采用的是幀模式。
主DMA處理的軟硬件流程
在DMA處理中,采用內存乒乓操作來提高系統(tǒng)的吞吐量。軟件中的驅動采用Windriver開發(fā),其工作主要分三部分。
1? 初始化,包括申請內存,配置DMA列表,配置DMA相關寄存器,啟動邏輯開始工作。
2? 中斷處理函數。在此函數中,屏蔽中斷,并啟動DPC處理。
3? DPC(延遲過程調用),根據邏輯提供的狀態(tài)標識,將相應的內存塊的數據搬移至硬盤中,然后取消中斷屏蔽,復位狀態(tài)標識,使系統(tǒng)可以接收下一個中斷。
數據的搬移不在中斷處理函數中完成,是由于中斷處理函數具有較高的優(yōu)先級,如果將耗時的數據搬移放在這里進行,會明顯降低系統(tǒng)的響應時間。而DPC的優(yōu)先級在所有的外部中斷之下,不會因此而降低對其他外部中斷的響應速度。
主DMA邏輯的主要工作是讀取驅動配置的DMA列表,根據列表中的內存地址和長度,對內存進行主DMA寫操作。操作完成后,通過置位狀態(tài)標識,通知驅動來讀取數據。狀態(tài)機轉移如圖4所示。
圖4 DMA主狀態(tài)機轉移圖
● IDLE狀態(tài):在此狀態(tài)下,等待軟件的使能信號。使能信號有效則進入JUDGE狀態(tài),否則等待。
● JUDGE狀態(tài):在此狀態(tài)下,判斷乒乓標志。根據乒乓標志決定本次處理應該選擇哪一個內存塊。
● RD_TBL狀態(tài): 發(fā)出讀DMA列表的地址信息。然后進行GET_TBL狀態(tài)接收列表數據。
● GET_TBL狀態(tài):在此狀態(tài)下,讀取DMA列表數據,并將列表中的內存地址和長度信息寫入相應的寄存器中。然后進入REQ狀態(tài)。
● REQ狀態(tài):在此狀態(tài)下,對異步FIFO的空信號進行判斷。如果非空,則進入PROCESS狀態(tài),否則在REQ狀態(tài)等待。
● PROCESS狀態(tài):在此狀態(tài)下,進行數據傳輸。由于PCI主DMA對burst長度有限制,當傳輸完預定長度的數據后,首先對本次長度進行判斷。如果未完則進入REQ狀態(tài)等待,否則判斷本列表是否最后一個列表。如果是,則進行IDLE狀態(tài)。否則進入RD_TBL狀態(tài)讀取下一條DMA列表表項的數據,繼續(xù)處理。
評論
查看更多