基于PCI 總線的多通道DMA傳輸_第1頁
基于PCI 總線的多通道DMA傳輸_第2頁
基于PCI 總線的多通道DMA傳輸_第3頁
基于PCI 總線的多通道DMA傳輸_第4頁
基于PCI 總線的多通道DMA傳輸_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、    基于PCI 總線的多通道DMA傳輸        劉海華 時間:2008年09月22日     字 體: 大 中 小        關(guān)鍵詞:<"cblue" " target='_blank'>輸入通道<"cblue" " target='_blan

2、k'>傳輸模式<"cblue" " target='_blank'>數(shù)據(jù)采集<"cblue" " target='_blank'>傳輸通道<"cblue" " target='_blank'>傳輸方式            ? 摘? 要:研究了基于PCI/cPCI總線的多通道DMA傳輸系統(tǒng),

3、分析了實現(xiàn)多個DMA<"cblue" " title="傳輸通道">傳輸通道的方法;以PCI9054為PCI主橋、個人計算機為開發(fā)環(huán)境,詳細分析了多通道<"cblue" " title="數(shù)據(jù)采集">數(shù)據(jù)采集卡中不同通道的訪問策略,給出了接口電路的實現(xiàn)結(jié)構(gòu),討論了不同DMA<"cblue" " title="傳輸方式">傳輸方式的性能和應(yīng)用環(huán)境。? 關(guān)鍵詞: PCI總線? DMA控制器? 突發(fā)傳輸? 數(shù)據(jù)采集?

4、 PCI/cPCI總線是一種獨立于CPU的局部總線,由于支持突發(fā)傳輸操作,其總線傳輸吞吐量為132MB/s(33bit,33MHz),已經(jīng)被廣泛應(yīng)用于個人計算機。但是,在x86結(jié)構(gòu)CPU的個人計算機下,由主CPU發(fā)起讀操作訪問PCI目標設(shè)備時,不能進行突發(fā)讀操作。這是由于個人計算機啟動時BIOS將PCI設(shè)備映射到非Cache存儲器中,會出現(xiàn)讀操作阻塞。對于突發(fā)寫操作,也存在同樣的問題。也就是說在PC環(huán)境下開發(fā)基于PCI的產(chǎn)品,PC機不支持突發(fā)傳輸。為了獲得高的數(shù)據(jù)傳輸量,就必須使用PCI主橋設(shè)計PC卡,并在DMA模式下操作。高傳輸性能的PCI總線主設(shè)備有很多,如PLX公司的PCI9054。本文

5、以多通道高速數(shù)據(jù)系統(tǒng)的設(shè)計為例,說明PCI9054實現(xiàn)多通道DMA傳輸?shù)膽?yīng)用。?1 PCI總線控制器的DMA傳輸? PCI9054集成了兩個互相獨立的DMA通道,每個通道都支持Block DMA和Scatter/Gather DMA。其中通道0還支持請求(Demand)DMA傳輸方式。由于PCI9054的兩個DMA通道都是由DMA控制器和專用的雙向FIFO組成,當(dāng)每個通道進行DMA傳輸時,它對于PCI總線和本地總線都是主設(shè)備。即DMA控制器將發(fā)起對本地總線和PCI總線操作,其過程如圖1所示。? 如果要求從本地空間傳輸數(shù)據(jù)到PCI空間,PCI9054首先對本地總線執(zhí)行讀操作。在本地總線上可能有其

6、它設(shè)備訪問本地總線,因此PCI9054需申請獲得本地總線訪問權(quán)。當(dāng)PCI9054獲得訪問權(quán)后,將本地數(shù)據(jù)讀入PCI9054的FIFO中。與此同時,PCI9054將向PCI總線仲裁器申請PCI總線訪問權(quán),將數(shù)據(jù)從FIFO寫到PCI總線空間。一旦DMA傳輸完成,PCI9054設(shè)定DMA“傳輸結(jié)束位”結(jié)束傳輸。如果設(shè)置中斷允許,PCI9054將根據(jù)設(shè)置向PCI總線或本地輸出中斷。同樣可將數(shù)據(jù)從PCI傳輸?shù)奖镜乜偩€空間。? 雖然PCI9054的雙獨立DMA通道提供了靈活的優(yōu)先方案,支持多種<"cblue" " title="傳輸模式">傳輸

7、模式,但在很多實際應(yīng)用中需多個DMA傳輸通道,必須根據(jù)不同應(yīng)用采用不同的策略。?2 基于塊傳輸模式的多通道數(shù)據(jù)采集系統(tǒng)設(shè)計? 塊傳輸是一種相對簡單的DMA傳輸模式。其操作是將本地總線存儲器中的數(shù)據(jù)傳輸?shù)紿OST內(nèi)存中,或?qū)OST內(nèi)存中的數(shù)據(jù)傳輸?shù)奖镜乜偩€上的存儲空間。在傳輸之前,HOST處理器設(shè)置DMA寄存器中本地和PCI空間起始地址、傳輸字節(jié)數(shù)、傳輸方向,然后HOST處理器設(shè)置DMA開始位,啟動DMA并按配置的信息傳輸。? 四通道數(shù)據(jù)采集系統(tǒng)如圖2所示。系統(tǒng)由4個<"cblue" " title="輸入通道">輸入通道、4個FI

8、FO以及實現(xiàn)接口控制邏輯的CPLD組成。由于系統(tǒng)有4個輸入通道,而PCI9054只有二個DMA通道,不能滿足輸入通道數(shù)的需要,為此必須進行處理。設(shè)計的關(guān)鍵是建立一個所有輸入共用的DMA傳輸通道。然而,一個DMA通道只有一個本地空間和一個PCI空間,因此必須將不同通道的地址空間映射到DMA傳輸通道的地址空間中,從而識別每次傳輸數(shù)據(jù)的輸入通道。圖3給出了不同通道地址空間的映射關(guān)系。當(dāng)數(shù)據(jù)從本地地址空間傳輸?shù)絇CI地址空間時,首先將輸入通道的地址空間映射到本地的DMA訪問空間,DMA控制器將數(shù)據(jù)傳輸?shù)紻MA訪問的PCI空間,然后將PCI空間中的數(shù)據(jù)轉(zhuǎn)移到每個通道所對應(yīng)的內(nèi)存空間。? 輸入通道的存儲空

9、間映射到DMA本地訪問空間是基于DMA訪問的。當(dāng)DMA控制器訪問本地空間時,訪問的地址對4個通道而言是一樣的,必須給出對不同本地空間的訪問策略。訪問策略可有多種選擇,如優(yōu)先訪問、排隊訪問、循環(huán)訪問等。圖4給出循環(huán)訪問策略,并在CPLD中實現(xiàn)。其狀態(tài)變化為:? STATE0STATE1STATE2STATE3STATE0? STATEx表示對本地空間x的操作狀態(tài)。當(dāng)輸入通道FIFOx的請求傳輸信號FLAGx有效,狀態(tài)機將停留在STATEx狀態(tài),等待DMA控制器的訪問。當(dāng)計算機啟動DMA通道時,產(chǎn)生通道選擇信號CSx,訪問本地空間FIFOx。當(dāng)DMA傳輸結(jié)束后,信號CSx無效,狀態(tài)轉(zhuǎn)為下一個狀態(tài)。

10、如果在下一個狀態(tài)沒有檢測到請求信號,狀態(tài)將轉(zhuǎn)移到該狀態(tài)的下一個狀態(tài),直到檢測到請求信號FLAGx有效時,狀態(tài)機才停留在STATEx狀態(tài),等待DMA控制器訪問。? DMA控制器訪問依賴于數(shù)據(jù)采集通道的請求傳輸信號FLAGx。如果數(shù)據(jù)采集通道啟動,將向相應(yīng)通道的FIFO中輸入數(shù)據(jù),一旦FIFO中的數(shù)據(jù)達到某種程度,設(shè)置請求傳輸信號。該信號將從本地中斷信號LINT#輸入并路由到PCI總線上,計算機將接收并響應(yīng)中斷。其中斷響應(yīng)程序流程如圖5所示。計算機讀PCI9054內(nèi)部中斷狀態(tài)寄存器,檢測為本地中斷,從CPLD中設(shè)置的狀態(tài)寄存器讀取通道狀態(tài)。然后啟動DMA控制器。當(dāng)數(shù)據(jù)傳輸結(jié)束后,PCI9054同樣

11、產(chǎn)生PCI中斷,讀PCI9054內(nèi)部中斷狀態(tài)寄存器,檢測為DMA傳輸結(jié)束,這時查詢通道狀態(tài)寄存器的值,決定傳輸數(shù)據(jù)的通道,并對數(shù)據(jù)作相應(yīng)的處理,其處理方式依賴于不同的應(yīng)用需要。? 如果應(yīng)用中需要有選擇性地傳輸輸入通道數(shù)據(jù),假設(shè)選擇通道0、1、3,這時只須對CPLD中設(shè)置的屏蔽寄存器寫數(shù)據(jù)初始化,即可屏蔽輸入通道2。? 在該設(shè)計中存在一個問題:對于一次DMA傳輸,計算機需要響應(yīng)兩次中斷,這將增加計算機的處理事務(wù)。為此,可以采用PCI9054的DMA通道的請求傳輸方式。利用輸入通道的請求傳輸標示信號產(chǎn)生DMA請求信號DREQ0#,從而啟動DMA傳輸,并產(chǎn)生DACK0#響應(yīng)信號。當(dāng)數(shù)據(jù)傳輸結(jié)束后,計

12、算機響應(yīng)中斷,讀輸入通道狀態(tài)寄存器,判斷傳輸?shù)接嬎銠C中數(shù)據(jù)的輸入通道。?3 基于Scatter/Gather傳輸模式的多通道數(shù)據(jù)采集系統(tǒng)設(shè)計? Scatter/Gather(或S/G)DMA傳輸模式是PCI9054的另外一種傳輸模式。其基本方法是將本地總線上或PCI總線上分散的數(shù)據(jù)塊一次性地通過DMA傳輸方式傳輸?shù)絇CI存儲空間或本地存儲空間,不需要多次啟動DMA控制器。數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)如圖2所示,空間映射如圖3。PCI9054的S/G傳輸模式其實是利用PCI9054內(nèi)部的DMA傳輸通道,建立了一個虛擬的DMA傳輸,并使用描述模塊建立一個傳輸鏈,將不同位置上的數(shù)據(jù)塊傳輸連接起來。該描述模塊包括

13、PCI和Local的起始地址、傳輸字節(jié)數(shù)、傳輸方向和下一個描述模塊的地址。該模塊由HOST處理器在HOST存儲器中建立。然后HOST或本地處理器設(shè)置S/G模式;在PCI9054描述指針寄存器中建立開始描述塊地址。? 當(dāng)本地總線請求傳輸信號有效時,產(chǎn)生PCI中斷INTA#,PC響應(yīng)中斷,設(shè)置DMA控制器控制位啟動傳輸,其傳輸過程如圖6所示。PCI9054根據(jù)開始描述塊地址裝載第一個描述塊并傳輸該空間的數(shù)據(jù)。當(dāng)?shù)谝粔K數(shù)據(jù)傳輸結(jié)束后,檢測描述鏈結(jié)束位。如果沒有設(shè)置,表明不是最后的塊傳輸,指定下一個描述模塊的位置,并繼續(xù)裝載描述塊和傳輸數(shù)據(jù),如此重復(fù)直至檢測到描述鏈結(jié)束位被設(shè)置。當(dāng)檢測到鏈結(jié)束狀態(tài)位時

14、,表明PCI9054沒有下一個數(shù)據(jù)塊傳輸,設(shè)置DMA傳輸結(jié)束狀態(tài)位,表明數(shù)據(jù)傳輸結(jié)束。? 對于多通道數(shù)據(jù)采集應(yīng)用,假設(shè)每個輸入通道數(shù)據(jù)采集的速率一樣,那么輸入到每個通道中FIFO的數(shù)據(jù)是一樣的速率。當(dāng) FIFO中的數(shù)據(jù)達到一定程度時,產(chǎn)生中斷請求傳輸,計算機響應(yīng)中斷,進行上述操作。由此可見每次啟動DMA傳輸,將4個數(shù)據(jù)采集通道的數(shù)據(jù)一次傳輸?shù)接嬎銠C內(nèi)存的不同空間中。當(dāng)然,如果只需傳輸4個通道中的幾個,如只傳輸通道1、2、4的數(shù)據(jù),那么只用修改塊傳輸描述塊中的參數(shù),重新建立塊傳輸鏈,只傳輸輸入通道1、2、4的數(shù)據(jù),從而屏蔽了輸入通道3。? 該傳輸方式相對塊傳輸模式而言,不用進行4次DMA啟動,減少訪問的開銷,同時不需要設(shè)計復(fù)雜的接口電路。由于S/G模式對多塊數(shù)據(jù)傳輸是統(tǒng)一進行的,要求輸入通道的數(shù)據(jù)輸入速率一致,或有相對穩(wěn)定的關(guān)系,使每個塊傳輸?shù)拇笮∠鄬Ψ€(wěn)定。當(dāng)然每個通道的采樣速率可能不一致,并隨時需要調(diào)整,這樣就需要相應(yīng)地修改描述塊的參數(shù),使S/G模式操作變得較復(fù)雜。塊傳輸模式可以根據(jù)每個通道各自請求的傳輸狀態(tài)進行傳輸,表現(xiàn)出應(yīng)用的靈活性。? 該設(shè)計雖然只是針對多通道數(shù)據(jù)采集

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論