利用WinDriver實(shí)現鏈式DMA
摘要:PCI Express協(xié)議由于其高速串行、系統拓撲簡(jiǎn)單等特點(diǎn)被廣泛用于各種領(lǐng)域。Altera公司的Arria II GX FPGA內集成了支持鏈式DMA傳輸功能的PCI Express硬核,適應了PCI Express總線(xiàn)高速度的要求。文中利用Jungo公司的WinDriver軟件實(shí)現了鏈式DMA的上層應用設計。首先給出了鏈式DMA實(shí)現的基本過(guò)程,接著(zhù)分析了鏈式DMA數據傳輸需要處理的幾個(gè)問(wèn)題,給出了相應的解決辦法和策略。采用這些方法,保證了DAM數據傳輸的正確性,簡(jiǎn)化了底層FPGA應用邏輯的設計。
關(guān)鍵詞:鏈式DMA;WinDriver;PCI Express;端點(diǎn)存儲器
在計算機與外設的通訊過(guò)程中,DMA方式,即DirectMemory access(直接內存訪(fǎng)問(wèn)),由于無(wú)需計算機CPU的干預就可以在內存和外設之間傳輸數據,是一種高效的數據交換方式。因為對于高速的設備,如PCI Express接口的板卡設備,如果采用普通方式在存儲器和外設之間傳輸大量的數據將占用太多的CPU時(shí)間,嚴重影響系統的性能。而使用DMA方式則使傳輸數據的操作中CPU的涉及減小到最少。
要實(shí)現DMA的傳輸功能,在底層需要硬件本身具有這樣的功能模塊,即外設硬件可以主動(dòng)發(fā)起數據傳輸。在上層則需要驅動(dòng)與應用接口的配合。
文中給出如下的一種DMA傳輸方式的實(shí)現。硬件外設是基于A(yíng)ltera公司PCI Express硬核的FPGA加密卡,其與主機的接口采用是PCI Expre ss接口。上層則采用了Jungo公司的WinDriver軟件提供的驅動(dòng)和API接口。
1 鏈式DMA
PCI Express是用來(lái)互聯(lián)諸如計算機和通信平臺應用中外圍設備的第三代高性能I/O總線(xiàn)。與原有的PCI并行總線(xiàn)相比,它沒(méi)有大量的數據和控制線(xiàn),對于硬件電路設計者來(lái)說(shuō),省去了很多硬件設計工作。PCI Express的傳輸速度遠遠大于PCI總線(xiàn),PCI Express 1.1版本單個(gè)鏈路的單向吞吐量能達到250 MB/s。對于需要與主機進(jìn)行大容量傳輸的系統來(lái)說(shuō),該總線(xiàn)標準的優(yōu)勢是非常明顯的。Altera公司的Arria IICX系列器件內建PCI Express硬核,無(wú)需PHY和IP核,有利于節約FPGA資源,簡(jiǎn)化了PCI Express的接口設計。同時(shí)在用Quartus II軟件生成的基于PCI Express硬核的樣本工程中,集成了對DMA的支持功能,為進(jìn)一步的硬件產(chǎn)品開(kāi)發(fā)提供了基礎。
實(shí)際應用中,DMA的傳輸方式可分為兩種:簡(jiǎn)單DMA和鏈式DMA。簡(jiǎn)單DMA只需要主機告訴設備要傳輸數據的主機地址、設備地址和傳輸數據的長(cháng)度,然后啟動(dòng)DMA傳輸即可。但簡(jiǎn)單DMA每進(jìn)行一次傳輸,都要進(jìn)行上面的設置,效率較低。
在用Quartus II軟件的MegaWizard。Plug-In Manager工具生成的基于PCI Express硬核的樣本工程中,實(shí)現了一個(gè)32 KB的帶有字節寫(xiě)使能控制的雙端口RAM的端點(diǎn)存儲器,其讀寫(xiě)數據總線(xiàn)寬度均為128位;并且實(shí)現了鏈式DMA的傳輸功能。這是一種效率遠遠高于簡(jiǎn)單DMA的傳輸方式,它只需要1次啟動(dòng)操作,就可以完成多次DMA傳輸。具體實(shí)現的方法是:在主機端,需要開(kāi)辟一塊內存區域,用來(lái)存儲描述符表。所謂描述符表,是用來(lái)描述在主機與外設之間數據傳輸有關(guān)的地址與長(cháng)度信息的,它由一個(gè)表頭和多個(gè)描述符組成,其中每一個(gè)描述符對應一次DMA操作。用戶(hù)根據自己的需求填寫(xiě)該描述符表,如下表所示。
在上表中,偏移地址是指到描述符表內存區域開(kāi)始處的字節偏移地址。DMA長(cháng)度用來(lái)設置本描述符對應的DMA傳輸的長(cháng)度,是以32位雙字為單位的。主機地址用來(lái)指示數據在主機端存放的位置。設備地址用來(lái)指示數據在設備的端點(diǎn)存儲器中存放的位置??刂朴蛴脕?lái)控制在該描述符傳輸完成時(shí)設備是否更新描述符頭的EPLAST域。
存儲器相關(guān)文章:存儲器原理
評論