0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于PCI Expres總線實(shí)現(xiàn)DMA控制邏輯的設(shè)計(jì)

牽手一起夢 ? 來源:電子科技 ? 作者:李濤濤,燕一松, ? 2020-04-18 13:45 ? 次閱讀

隨著相控陣?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ù)存儲的要求。相比較而言,PCI Expres總線具有鮮明的技術(shù)優(yōu)勢,不僅完全兼容PCI總線,而且全面解決了PCI總線所面臨的帶寬、流量控制和數(shù)據(jù)傳送質(zhì)量方面問題,由于使用高速差分總線,時(shí)鐘頻率可以達(dá)到較高水平,其總線帶寬較PCI總線也有大幅度提升,目前X16的PCI Express峰值帶寬可以達(dá)到80 GT/s。PCI Express技術(shù)的逐步成熟,為高速數(shù)據(jù)數(shù)據(jù)傳輸提供了較好的解決方案。

1、 DMA控制邏輯設(shè)計(jì)

DMA控制邏輯設(shè)計(jì)如圖1所示,主要有PCIExpress Core、接收引擎、發(fā)送引擎、DMA控制狀態(tài)寄存器和中斷控制等關(guān)鍵模塊。

基于PCI Expres總線實(shí)現(xiàn)DMA控制邏輯的設(shè)計(jì)

1.1 PCI Express Core

主要特點(diǎn)如下:(1)符合PCI Express Base Specification 2.0規(guī)范。(2)支持X1、X2、X4或X8模式。(3)片上GTP/GTX收發(fā)器實(shí)現(xiàn)PHY。(4)具有訪問PCI Express配置空間和內(nèi)部配置的管理接口。(5)支持最大的有效載荷(128~4 096 Byte)。(6)可針對存儲器或I/O進(jìn)行配置的基地址寄存器(BAR)。

1.2 接收引擎

在PCI Express系統(tǒng)邏輯結(jié)構(gòu)中,接收引擎主要是在接口時(shí)鐘的控制下,按照基本TLP接收時(shí)序,解析存儲器讀寫請求并從TLP中提取所需信息并將其傳送到存儲器訪問控制器,存儲器訪問控制器處理存儲器寫TLP中寫入存儲器的數(shù)據(jù),并使用存儲器中的數(shù)據(jù)讀來響應(yīng)存儲器讀TLP;此外接受引擎主要還負(fù)責(zé)處理存儲器讀完成TLP,響應(yīng)板卡發(fā)起的DMA讀操作。

1.3 發(fā)送引擎

在PCI Express系統(tǒng)邏輯結(jié)構(gòu)中,發(fā)送引擎主要是在接口時(shí)鐘的控制下,按照基本TLP發(fā)送時(shí)序,為接收到的存儲器讀TLP生成完成包,生成該完成包所需的信息會由存儲控制器傳送到發(fā)送引擎;此外發(fā)送引擎還負(fù)責(zé)發(fā)起存儲器讀寫請求TLP,實(shí)現(xiàn)與PC之間數(shù)據(jù)的DMA讀寫。

1.4 DMA狀態(tài)控制寄存器

在PCI Express系統(tǒng)邏輯結(jié)構(gòu)中,DMA狀態(tài)控制寄存器主要是實(shí)現(xiàn)PCI Express Core與Root Complex之間數(shù)據(jù)的傳遞。Windows GUI軟件配置DMA控制狀態(tài)寄存器控制DMA操作。DMA控制狀態(tài)寄存器映射于PCI Express Memory BAR0空間,Windows GUI軟件通過Memory Write和Read周期訪問寄存器。Windows GUI軟件初始化DMA控制寄存器發(fā)起DMA傳輸,而通過狀態(tài)寄存器,以中斷方式通知Root Complex DMA傳輸完成。

1.5 中斷控制

當(dāng)DMA傳輸結(jié)束時(shí),為及時(shí)通知PC響應(yīng)并處理中斷,中斷控制部分使用核的配置層接口信號產(chǎn)生中斷。PCI Express支持兩種中斷:消息信號中斷(MSI)和傳統(tǒng)中斷(Legacy INT)。在PCI Express設(shè)備枚舉過程中,跟聯(lián)合體會根據(jù)自身對中斷支持的能力設(shè)置配置空間中的命令寄存器和消息信號中斷能力寄存器,來決定使用何種中斷。

2、 PCI Express Masfer DMA讀寫設(shè)計(jì)驗(yàn)證

2.1 DMA寫設(shè)計(jì)驗(yàn)證

數(shù)據(jù)流向:上行FIFO數(shù)據(jù)→PCI Express Master DMA Write→PC內(nèi)存→PC硬盤。

整個(gè)DMA寫過程如下:(1)復(fù)位FPGA邏輯,延時(shí)1 ms;去除FPGA邏輯,延時(shí)1 ms。(2)檢測硬件鏈路初始化。(3)開啟DMA寫完成中斷。(4)設(shè)置DMA寫目的地址寄存器,設(shè)置DMA寫傳輸長度寄存器。(5)啟動(dòng)DMA寫操作,選擇記錄路徑。(6)等待DMA寫完成中斷。(7)清除中斷,內(nèi)存數(shù)據(jù)轉(zhuǎn)到硬盤。(8)DMA寫是否結(jié)束,是則轉(zhuǎn)至步驟(9);否則轉(zhuǎn)至步驟(4)。(9)終止DMA寫,關(guān)閉DMA寫完成中斷,斷開記錄路徑。

下面給出從PCI Express Core到系統(tǒng)內(nèi)存的DMA寫時(shí)序,圖2是用ChipScope截取的時(shí)序圖。

基于Xilinx PCI Express Core的高速DMA讀寫設(shè)計(jì)

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信號有效,即啟動(dòng)DMA寫操作。此后PCI Express Core開始在發(fā)送事務(wù)接口上發(fā)送存儲器寫事物包,事物包的地址、大小已經(jīng)在DMA狀態(tài)控制寄存器中配置。

2.2 DMA讀設(shè)計(jì)驗(yàn)證

數(shù)據(jù)流向:PC硬盤→PC內(nèi)存→PCI Express Master DMA Read→下行FIFO數(shù)據(jù)。

整個(gè)DMA讀過程如下:(1)復(fù)位FPGA邏輯,延時(shí)1 ms;去除FPGA邏輯,延時(shí)1 ms。(2)檢測硬件鏈路初始化。(3)開啟DMA讀完成中斷。(4)設(shè)置DMA讀目的地址寄存器,設(shè)置DMA讀傳輸長度寄存器。(5)PC硬盤數(shù)據(jù)轉(zhuǎn)到內(nèi)存。(6)啟動(dòng)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)存到PCI Express Core的DMA讀時(shí)序,圖3是用ChipScope截取的時(shí)序圖。

基于Xilinx PCI Express Core的高速DMA讀寫設(shè)計(jì)

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讀地址和啟動(dòng)DMA讀操作。當(dāng)DMA讀操作啟動(dòng)后,核的發(fā)送事務(wù)接口上s_axis_tx_tvalid與s_axis_tx_tlast有效,發(fā)送存儲器讀請求包,當(dāng)PC收到PCI Express Core發(fā)出的存儲器讀請求包后會根據(jù)TLP中的信息回復(fù)相應(yīng)的Cpld完成包。根據(jù)PCIExpress總線規(guī)范中對PCI Express序的規(guī)定,允許接收事務(wù)接口在接收Cpld完成包的同時(shí)發(fā)送事務(wù)接口在發(fā)送存儲器讀請求包,見圖中T1~T2之間所示。

2.3 PCI Express中斷控制

當(dāng)DMA寫結(jié)束,即dma_wr_done或dma_rd_done其中之一有效時(shí),用戶應(yīng)該通過配置接口cfg_interrupt和cfg_interrupt_assert來提交中斷,當(dāng)核接收到有效中斷時(shí)將cfg_interrupt_rdy置為有效,表示中斷請求被接受。PC通過讀DMA中斷寄存器從而認(rèn)領(lǐng)中斷事務(wù),響應(yīng)處理中斷后清除中斷。用ChipScope捕獲的DMA讀寫完成中斷時(shí)序,如圖4所示。

基于Xilinx PCI Express Core的高速DMA讀寫設(shè)計(jì)

3、 系統(tǒng)性能測試

系統(tǒng)性能測試結(jié)果如表1所示。存儲器讀寫DMA數(shù)據(jù)有效帶寬測試為DMA啟動(dòng)到最后一個(gè)存儲器寫TLP或最后一個(gè)存儲器讀完成包,測試數(shù)據(jù)總量為8 GB。

基于Xilinx PCI Express Core的高速DMA讀寫設(shè)計(jì)

測試平臺:Xilinx ML605開發(fā)板(Virtex-6 FPGA);Windows7 64位操作系統(tǒng),Windriver驅(qū)動(dòng);PCIExpress鏈路寬度:X8,PCI Express Core版本:V2.5;MaxPayload Size:128 Bytes;Max Read Request Size:512 Byte;Root Complex Read Completion Boundary:64 Byte。

4 、結(jié)束語

研究了基于Xilinx PCI Express Core的高速DMA讀寫設(shè)計(jì),適用于現(xiàn)代雷達(dá)系統(tǒng)和高速數(shù)據(jù)采集系統(tǒng)的要求,并具有良好的移植和擴(kuò)展性。文中給出了DMA設(shè)計(jì)框圖,并對系統(tǒng)各部分進(jìn)行了分析。系統(tǒng)設(shè)計(jì)中主要研究了PCI Express Master DMA讀寫設(shè)計(jì)及中斷控制,并給出了DMA讀寫和中斷控制的采樣時(shí)序,通過系統(tǒng)性能測試數(shù)據(jù),可以看出本文所設(shè)計(jì)的基于Xilinx PCI Express Core的高速DMA讀寫可以滿足高速信號處理的要求。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5250

    瀏覽量

    119194
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7365

    瀏覽量

    163088
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2817

    瀏覽量

    87697
收藏 人收藏

    評論

    相關(guān)推薦

    PCI總線接口芯片9054及其應(yīng)用

    接口,本地總線時(shí)鐘可和PCI時(shí)鐘異步。PC9054內(nèi)部有6種可編程的FIFO,以實(shí)現(xiàn)零等待突發(fā)傳輸及本地總線PCI
    發(fā)表于 10-09 11:23

    基于IP核的PCI總線接口設(shè)計(jì)與實(shí)現(xiàn)

    的部分功能,造成了資源的浪費(fèi),同時(shí)接口芯片占用了板卡上的有限空間,給應(yīng)用設(shè)計(jì)帶來不便。(2)使用可編程邏輯器件實(shí)現(xiàn)PCI總線控制器,使用這種
    發(fā)表于 12-04 10:35

    PCI總線接口芯片9054及其應(yīng)用

    異步。PC9054內(nèi)部有6種可編程的FIFO,以實(shí)現(xiàn)零等待突發(fā)傳輸及本地總線PCI總線之間的異步操作;支持主模式、從模式、DMA傳輸方式,
    發(fā)表于 12-05 10:12

    基于PCI總線的CPLD實(shí)現(xiàn)

    實(shí)現(xiàn)突出的優(yōu)點(diǎn)就在于其靈活的可編程性,這使得硬件電路的升級只需改進(jìn)軟件就可實(shí)現(xiàn),大大提高了硬件平臺的通用性;此外CPLD內(nèi)部有豐富的邏輯資源,可將用戶控制
    發(fā)表于 05-29 05:00

    ISA總線的標(biāo)準(zhǔn)DMA技術(shù)在Linux中的實(shí)現(xiàn)

    數(shù)據(jù)傳輸是通過ISA總線控制芯片組中的兩個(gè)級聯(lián)8237 DMAC來實(shí)現(xiàn)的。這種DMA機(jī)制也稱為“標(biāo)準(zhǔn)DMA”(standard
    發(fā)表于 07-01 08:10

    總線接口控制PCI9052資料推薦

    PCI9052是美國PLX科技有限公司推出的一款PCI總線從屬接口芯片(但不具有DMA功能)。它可以提供高性能的從目標(biāo)PCI接口板卡與
    發(fā)表于 04-15 07:02

    PCI總線目標(biāo)控制器的設(shè)計(jì)

    本文在PCI2.2 總線規(guī)范的基礎(chǔ)上,給出了一種PCI 總線目標(biāo)控制器的設(shè)計(jì)方案。重點(diǎn)從控制
    發(fā)表于 12-12 16:58 ?33次下載

    PCI總線從設(shè)備控制器的設(shè)計(jì)與實(shí)現(xiàn)

    本文重點(diǎn)分析了PCI 總線設(shè)備控制器的設(shè)計(jì)方案。以PCI 總線協(xié)議的分析和理解為基礎(chǔ),對PCI
    發(fā)表于 01-13 16:57 ?49次下載

    利用S5935實(shí)現(xiàn)DMA傳輸?shù)难芯?/a>

    文中介紹了具有PCI總線主控功能的專用接口芯片——S5935的基本結(jié)構(gòu),闡述了它如何實(shí)現(xiàn)DMA控制器的功能,并給出了用于
    發(fā)表于 02-21 16:08 ?11次下載

    利用S5935實(shí)現(xiàn)DMA傳輸?shù)难芯?/a>

    文中介紹了具有PCI總線主控功能的專用接口芯片——S5935的基本結(jié)構(gòu),闡述了它如何實(shí)現(xiàn)DMA控制器的功能,并給出了用于
    發(fā)表于 07-22 17:41 ?18次下載

    基于PCI Express總線高速數(shù)據(jù)采集卡的設(shè)計(jì)與實(shí)現(xiàn)

    本文介紹一種基于PCI Express 總線的高速數(shù)據(jù)采集卡的設(shè)計(jì)方案及功能實(shí)現(xiàn)。給出系統(tǒng)的基本結(jié)構(gòu)及單元組成,重點(diǎn)闡述系統(tǒng)硬件設(shè)計(jì)的關(guān)鍵技術(shù)和本地總線
    發(fā)表于 09-22 08:15 ?62次下載

    PCI總線至UTOPIA接口控制的CPLD設(shè)計(jì)實(shí)現(xiàn)

    摘 要: 本文采用Altera的CPLD實(shí)現(xiàn)PCI總線至UTOPIA接口的邏輯轉(zhuǎn)換控制,為低成本實(shí)
    發(fā)表于 03-11 13:16 ?944次閱讀
    <b class='flag-5'>PCI</b><b class='flag-5'>總線</b>至UTOPIA接口<b class='flag-5'>控制</b>的CPLD設(shè)計(jì)<b class='flag-5'>實(shí)現(xiàn)</b>

    PCI Express總線介紹與光纖通道HBA卡DMA引擎的設(shè)計(jì)與實(shí)現(xiàn)

    本文基于Xilinx公司的PCI Express IP核,為光纖通道HBA卡成功設(shè)計(jì)并實(shí)現(xiàn)DMA引擎。
    發(fā)表于 10-11 11:09 ?8次下載
    <b class='flag-5'>PCI</b> Express<b class='flag-5'>總線</b>介紹與光纖通道HBA卡<b class='flag-5'>DMA</b>引擎的設(shè)計(jì)與<b class='flag-5'>實(shí)現(xiàn)</b>

    S5935如何實(shí)現(xiàn)DMA傳輸?shù)脑O(shè)計(jì)與研究

    文中介紹了具有PCI總線主控功能的專用接口芯片——S5935的基本結(jié)構(gòu),闡述了它如何實(shí)現(xiàn)DMA控制器的功能,并給出了用于
    發(fā)表于 12-06 11:02 ?1669次閱讀
    S5935如何<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>DMA</b>傳輸?shù)脑O(shè)計(jì)與研究

    基于PCI Core的鏈?zhǔn)?b class='flag-5'>DMA控制器設(shè)計(jì)

    介紹一種基于PCI總線的高效鏈?zhǔn)?b class='flag-5'>DMA控制器的設(shè)計(jì)與實(shí)現(xiàn),用于高速寬帶的計(jì)算機(jī)外設(shè)接口。利用Altera公司的
    發(fā)表于 12-06 13:56 ?3025次閱讀
    基于<b class='flag-5'>PCI</b> Core的鏈?zhǔn)?b class='flag-5'>DMA</b><b class='flag-5'>控制</b>器設(shè)計(jì)