基于FPGA的DMA讀寫設(shè)計(jì)及中斷控制_第1頁
基于FPGA的DMA讀寫設(shè)計(jì)及中斷控制_第2頁
基于FPGA的DMA讀寫設(shè)計(jì)及中斷控制_第3頁
基于FPGA的DMA讀寫設(shè)計(jì)及中斷控制_第4頁
基于FPGA的DMA讀寫設(shè)計(jì)及中斷控制_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

基于FPGA的DMA讀寫設(shè)計(jì)及中斷控制摘要:本設(shè)計(jì)在基于XilinxVirtex-6FPGA內(nèi)嵌PCIExpressCore的基礎(chǔ)上,實(shí)現(xiàn)了由PCIExpress板卡主動發(fā)起的DMA讀寫,可完成PC和PCIExpress板卡之間數(shù)據(jù)的高速傳輸。該設(shè)計(jì)已經(jīng)在Xilinx評估板ML605上完成調(diào)試驗(yàn)證,DMA寫內(nèi)存速度穩(wěn)定可達(dá)1520MB/s,滿足了高速存儲系統(tǒng)的要求。隨著相控陣?yán)走_(dá)、超寬帶雷達(dá)、數(shù)字陣列雷達(dá)相繼地出現(xiàn),雷達(dá)的回波數(shù)據(jù)量在不斷地增加,因此對高速采集和大容量數(shù)據(jù)傳輸提出了越來越高的要求。早期基于PCI總線的高速數(shù)據(jù)采集系統(tǒng)在帶寬、流量控制和數(shù)據(jù)傳送質(zhì)量上存在一定缺陷,在某種程度上并不能完全適應(yīng)高速大容量數(shù)據(jù)存儲的要求。相比較而言,PCIExpres總線具有鮮明的技術(shù)優(yōu)勢,不僅完全兼容PCI總線,而且全面解決了PCI總線所面臨的帶寬、流量控制和數(shù)據(jù)傳送質(zhì)量方面問題,由于使用高速差分總線,時鐘頻率可以達(dá)到較高水平,其總線帶寬較PCI總線也有大幅度提升,目前X16的PCIExpress峰值帶寬可以達(dá)到80GT/s。PCIExpress技術(shù)的逐步成熟,為高速數(shù)據(jù)數(shù)據(jù)傳輸提供了較好的解決方案。1DMA控制邏輯設(shè)計(jì)DMA控制邏輯設(shè)計(jì)如圖1所示,主要有PCIExpressCore、接收引擎、發(fā)送引擎、DMA控制狀態(tài)寄存器和中斷控制等關(guān)鍵模塊。

1.1PCIExpressCore主要特點(diǎn)如下:(1)符合PCIExpressBaseSpecification2.0規(guī)范。(2)支持X1、X2、X4或X8模式。(3)片上GTP/GTX收發(fā)器實(shí)現(xiàn)PHY。(4)具有訪問PCIExpress配置空間和內(nèi)部配置的管理接口。(5)支持最大的有效載荷(128~4096Byte)。(6)可針對存儲器或I/O進(jìn)行配置的基地址寄存器(BAR)。1.2接收引擎在PCIExpress系統(tǒng)邏輯結(jié)構(gòu)中,接收引擎主要是在接口時鐘的控制下,按照基本TLP接收時序,解析存儲器讀寫請求并從TLP中提取所需信息并將其傳送到存儲器訪問控制器,存儲器訪問控制器處理存儲器寫TLP中寫入存儲器的數(shù)據(jù),并使用存儲器中的數(shù)據(jù)讀來響應(yīng)存儲器讀TLP;此外接受引擎主要還負(fù)責(zé)處理存儲器讀完成TLP,響應(yīng)板卡發(fā)起的DMA讀操作。1.3發(fā)送引擎在PCIExpress系統(tǒng)邏輯結(jié)構(gòu)中,發(fā)送引擎主要是在接口時鐘的控制下,按照基本TLP發(fā)送時序,為接收到的存儲器讀TLP生成完成包,生成該完成包所需的信息會由存儲控制器傳送到發(fā)送引擎;此外發(fā)送引擎還負(fù)責(zé)發(fā)起存儲器讀寫請求TLP,實(shí)現(xiàn)與PC之間數(shù)據(jù)的DMA讀寫。1.4DMA狀態(tài)控制寄存器在PCIExpress系統(tǒng)邏輯結(jié)構(gòu)中,DMA狀態(tài)控制寄存器主要是實(shí)現(xiàn)PCIExpressCore與RootComplex之間數(shù)據(jù)的傳遞。WindowsGUI軟件配置DMA控制狀態(tài)寄存器控制DMA操作。DMA控制狀態(tài)寄存器映射于PCIExpressMemoryBAR0空間,WindowsGUI軟件通過MemoryWrite和Read周期訪問寄存器。WindowsGUI軟件初始化DMA控制寄存器發(fā)起DMA傳輸,而通過狀態(tài)寄存器,以中斷方式通知RootComplexDMA傳輸完成。1.5中斷控制當(dāng)DMA傳輸結(jié)束時,為及時通知PC響應(yīng)并處理中斷,中斷控制部分使用核的配置層接口信號產(chǎn)生中斷。PCIExpress支持兩種中斷:消息信號中斷(MSI)和傳統(tǒng)中斷(LegacyINT)。在PCIExpress設(shè)備枚舉過程中,跟聯(lián)合體會根據(jù)自身對中斷支持的能力設(shè)置配置空間中的命令寄存器和消息信號中斷能力寄存器,來決定使用何種中斷。2PCIExpressMasferDMA讀寫設(shè)計(jì)驗(yàn)證2.1DMA寫設(shè)計(jì)驗(yàn)證數(shù)據(jù)流向:上行FIFO數(shù)據(jù)→PCIExpressMasterDMAWrite→PC內(nèi)存→PC硬盤。整個DMA寫過程如下:(1)復(fù)位FPGA邏輯,延時1ms;去除FPGA邏輯,延時1ms。(2)檢測硬件鏈路初始化。(3)開啟DMA寫完成中斷。(4)設(shè)置DMA寫目的地址寄存器,設(shè)置DMA寫傳輸長度寄存器。(5)啟動DMA寫操作,選擇記錄路徑。(6)等待DMA寫完成中斷。(7)清除中斷,內(nèi)存數(shù)據(jù)轉(zhuǎn)到硬盤。(8)DMA寫是否結(jié)束,是則轉(zhuǎn)至步驟(9);否則轉(zhuǎn)至步驟(4)。(9)終止DMA寫,關(guān)閉DMA寫完成中斷,斷開記錄路徑。下面給出從PCIExpressCore到系統(tǒng)內(nèi)存的DMA寫時序,圖2是用ChipScope截取的時序圖。T0~T1之間核接收事務(wù)接口上m_axis_rx_tvalid與m_axis_rx_tlast共同有效了8次,即執(zhí)行了8次PIO內(nèi)存讀寫操作。其中第6次為PIO讀操作,相應(yīng)的發(fā)送事務(wù)接口上s_axis_tx_tvalid與s_axis_tx_tlast有效,產(chǎn)生Cpld完成包以回應(yīng)PIO讀操作。從圖中可以看出,DMA狀態(tài)控制寄存器配置完成后,dma_wr_start信號有效,即啟動DMA寫操作。此后PCIExpressCore開始在發(fā)送事務(wù)接口上發(fā)送存儲器寫事物包,事物包的地址、大小已經(jīng)在DMA狀態(tài)控制寄存器中配置。2.2DMA讀設(shè)計(jì)驗(yàn)證數(shù)據(jù)流向:PC硬盤→PC內(nèi)存→PCIExpressMasterDMARead→下行FIFO數(shù)據(jù)。整個DMA讀過程如下:(1)復(fù)位FPGA邏輯,延時1ms;去除FPGA邏輯,延時1ms。(2)檢測硬件鏈路初始化。(3)開啟DMA讀完成中斷。(4)設(shè)置DMA讀目的地址寄存器,設(shè)置DMA讀傳輸長度寄存器。(5)PC硬盤數(shù)據(jù)轉(zhuǎn)到內(nèi)存。(6)啟動DMA讀操作,選擇回放路徑。(7)等待DMA讀完成中斷。(8)清除中斷,硬盤數(shù)據(jù)轉(zhuǎn)到內(nèi)存。(9)DMA讀是否結(jié)束,是則轉(zhuǎn)至步驟(10);否則轉(zhuǎn)至步驟(4)。(10)終止DMA讀,關(guān)閉DMA讀完成中斷,斷開回放路徑。下面給出從系統(tǒng)內(nèi)存到PCIExpressCore的DMA讀時序,圖3是用ChipScope截取的時序圖。T1~T2之間核接收事務(wù)接口上m_axis_rx_tvalid與m_axis_rx_tlast共同有效了3次。此處需要說明的是DMA讀操作在配置完寄存器后需要先從PC硬盤將數(shù)據(jù)轉(zhuǎn)到內(nèi)存開辟的數(shù)據(jù)緩沖區(qū),此后才能開始DMA讀操作,故T1~T2之間核接收事務(wù)接口上m_axis_rx_tvalid與m_axis_rx_tlast有效為配置DMA讀地址和啟動DMA讀操作。當(dāng)DMA讀操作啟動后,核的發(fā)送事務(wù)接口上s_axis_tx_tvalid與s_axis_tx_tlast有效,發(fā)送存儲器讀請求包,當(dāng)PC收到PCIExpressCore發(fā)出的存儲器讀請求包后會根據(jù)TLP中的信息回復(fù)相應(yīng)的Cpld完成包。根據(jù)PCIExpress總線規(guī)范中對PCIExpress序的規(guī)定,允許接收事務(wù)接口在接收Cpld完成包的同時發(fā)送事務(wù)接口在發(fā)送存儲器讀請求包,見圖中T1~T2之間所示。2.3PCIExpress中斷控制當(dāng)DMA寫結(jié)束,即dma_wr_done或dma_rd_done其中之一有效時,用戶應(yīng)該通過配置接口cfg_interrupt和cfg_interrupt_assert來提交中斷,當(dāng)核接收到有效中斷時將cfg_interrupt_rdy置為有效,表示中斷請求被接受。PC通過讀DMA中斷寄存器從而認(rèn)領(lǐng)中斷事務(wù),響應(yīng)處理中斷后清除中斷。用ChipScope捕獲的DMA讀寫完成中斷時序,如圖4所示。3系統(tǒng)性能測試系統(tǒng)性能測試結(jié)果如表1所示。存儲器讀寫DMA數(shù)據(jù)有效帶寬測試為DMA啟動到最后一個存儲器寫TLP或最后一個存儲器讀完成包,測試數(shù)據(jù)總量為8GB。測試平臺:XilinxML605開發(fā)板(Virtex-6FPGA);Windows764位操作系統(tǒng),Windriver驅(qū)動;PCIExpress鏈路寬度:X8,PCIExpressCore版本:V2.5;MaxPayloadSize:128Bytes;MaxReadRequestSize:512Byte;RootComplexReadCompletionBoundary:64Byte。4結(jié)束語研究了基于XilinxPCIExpressCore的高速DMA讀寫設(shè)計(jì),適用于現(xiàn)代雷

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論