楊亞濤,張松濤,李子臣,2,張明舵,曹廣燦
(1. 北京電子科技學(xué)院通信工程系 北京 豐臺(tái)區(qū) 100070;2. 北京印刷學(xué)院教務(wù)處 北京 大興區(qū) 102600)
基于Zynq平臺(tái)PCIE高速數(shù)據(jù)接口的設(shè)計(jì)與實(shí)現(xiàn)
楊亞濤1,張松濤1,李子臣1,2,張明舵1,曹廣燦1
(1. 北京電子科技學(xué)院通信工程系 北京 豐臺(tái)區(qū) 100070;2. 北京印刷學(xué)院教務(wù)處 北京 大興區(qū) 102600)
為有效利用PCIE接口的優(yōu)異傳輸性能,便于外設(shè)與主機(jī)進(jìn)行高速通信,該文基于Xilinx公司Zynq系列芯片,設(shè)計(jì)實(shí)現(xiàn)了多通道、高速度的PCIE接口。利用Zynq-7000系列芯片的FPGA+ARM架構(gòu),在PCIE2.0硬核的基礎(chǔ)上設(shè)計(jì)了DMA硬核控制器、設(shè)備驅(qū)動(dòng)和應(yīng)用程序。經(jīng)測(cè)試,在PCIE×1通道和單邏輯通道時(shí),傳輸速度能達(dá)到3.36 Gbps,相比現(xiàn)有設(shè)計(jì)提升近20%。方案設(shè)計(jì)完備,具有較強(qiáng)擴(kuò)展性,為設(shè)計(jì)基于PCIE接口的外接設(shè)備提供了重要參考,具有廣闊應(yīng)用前景。
ARM; DMA; FPGA; 硬件設(shè)計(jì); PCIE
作為第三代總線和接口標(biāo)準(zhǔn),PCIE(PCI Express)的目的是取代作為第二代總線標(biāo)準(zhǔn)的PCI總線,并在物理結(jié)構(gòu)、帶寬和服務(wù)質(zhì)量3個(gè)方面做出了較大的改進(jìn)和革新。與PCI總線相比,PCIE總線具有以下特點(diǎn)[1-2]:1) 采用差分串行傳輸方式,一條PCIE通道(PCIE×1)由兩對(duì)差分信號(hào)線來(lái)實(shí)現(xiàn)發(fā)送和接收;2) 具有很好的靈活性,可以根據(jù)實(shí)際需要配置成×1,×2,×4,×8,×16和×32通道模式;3) 采用點(diǎn)到點(diǎn)連接,提高數(shù)據(jù)傳輸率,保證設(shè)備的帶寬;4) 以數(shù)據(jù)包的形式傳輸,保證數(shù)據(jù)傳輸?shù)耐暾院涂煽啃浴?/p>
鑒于其優(yōu)異的傳輸性能,圍繞PCIE接口的設(shè)計(jì)方案不斷被提出。文獻(xiàn)[3]提出了一種高吞吐量和低延時(shí)的PCIE接口設(shè)計(jì)方案,用于安全云存儲(chǔ)的場(chǎng)景中,不過(guò)方案是基于PCIE1.1規(guī)范設(shè)計(jì)的,不符合當(dāng)前PCIE2.0或PCIE3.0規(guī)范的趨勢(shì);文獻(xiàn)[4]提出了一種應(yīng)用于吉字節(jié)數(shù)據(jù)傳輸?shù)腄MA-PCIE架構(gòu)方案,雖然數(shù)據(jù)傳輸速率較高,但方案描述簡(jiǎn)單,無(wú)法表征設(shè)計(jì)的完整性,參考性較差;文獻(xiàn)[5]在文獻(xiàn)[4]的方案上進(jìn)行了擴(kuò)充說(shuō)明,給出了多種模式下的設(shè)計(jì)思路和測(cè)試結(jié)果,但可擴(kuò)展性和移植行較差,不便二次開(kāi)發(fā)。鑒于現(xiàn)有方案的這些問(wèn)題,本文以Xilinx公司Zynq-7000系列全可編程片上系統(tǒng)為設(shè)計(jì)平臺(tái),基于PCIE2.0的IP核,利用其ARM+FPGA的新型架構(gòu),設(shè)計(jì)實(shí)現(xiàn)PCIE高速數(shù)據(jù)傳輸接口。
Zynq-7000系列基于Xilinx全可編程片上系統(tǒng)架構(gòu)設(shè)計(jì),包括以雙核ARM CortexTM-A9處理器為核心的PS(processing system)部分和28 nm工藝的PL(programmable logic)部 分 。 Zynq-7000 All Programmable SoC平臺(tái)的功能框圖[6]如圖1所示。
PS部分在每一個(gè)Zynq-7000芯片中都是一樣的,包括4個(gè)主要模塊:應(yīng)用處理單元(application processor unit, APU)、存儲(chǔ)器接口(memory interfaces)、I/O外設(shè)接口(I/O peripherals, IOP)、內(nèi)部互聯(lián)模塊(central interconnect)。
PL的本質(zhì)就是Xilinx FPGA(Artix-7或Kintex-7),主要特征包括:可配置邏輯塊(configurable logic blocks,CLB)、36 kB BRAM、數(shù)字信號(hào)處理單元(DSP blocks)、可配置I/O接口(programmable I/O blocks)、低電壓串行收發(fā)器、集成PCI Express模塊、12-bit模數(shù)轉(zhuǎn)換器(XADC)、PL配置模塊。
Zynq-7000系列的亮點(diǎn)在于它包含了完整的ARM處理子系統(tǒng)[7]。子系統(tǒng)包含了雙核的ARM CortexTM-A9處理器,集成了內(nèi)存控制器和大量的外設(shè),使CortexTM-A9的核在Zynq-7000中可以完全獨(dú)立于可編程邏輯單元。另外,F(xiàn)PGA部分與ARM處理單元緊密結(jié)合,有超過(guò)3 000個(gè)內(nèi)部互聯(lián),連接資源非常豐富,可提供100 Gb/s以上的內(nèi)部帶寬[8]。在I/O接口方面,F(xiàn)PGA的優(yōu)點(diǎn)是I/O可以充分自定義,并集成了高速串行口(multi gigabit transceiver , MGT)和模數(shù)轉(zhuǎn)換器(XADC)。這樣優(yōu)異的性能,使Zynq-7000系列芯片成為眾多高性能設(shè)計(jì)的選擇,為方案提供了可擴(kuò)展性和配置性[9]。
圖1 Zynq-7000全可編程片上系統(tǒng)總覽
基于以XC7Z030芯片為核心的硬件板卡來(lái)設(shè)計(jì)和驗(yàn)證本文提出的解決方案。板卡設(shè)計(jì)了PCIE物理接口,用于連接到計(jì)算機(jī)主板上的PCIE插槽。主機(jī)采用Ubuntu操作系統(tǒng),在此基礎(chǔ)上設(shè)計(jì)和編寫(xiě)PCIE接口設(shè)備驅(qū)動(dòng)程序和應(yīng)用程序,以測(cè)試和驗(yàn)證PCIE接口的通信、速率、多通道是否正常等。圖2為整個(gè)設(shè)計(jì)的硬件連接方案。
在PL部分,PCIE硬核與直接內(nèi)存訪問(wèn)(direct memory access, DMA)硬核控制器協(xié)同工作,用來(lái)訪問(wèn)系統(tǒng)中的存儲(chǔ)空間和配置空間;在PS部分,ARM CortexTM-A9處理器與DDR協(xié)同工作,用來(lái)緩存處理器與PCIE硬核的交互數(shù)據(jù)。DMA控制器的讀/寫(xiě)操作完成后,將中斷信號(hào)告知ARM CortexTM-A9處理器。整體設(shè)計(jì)的數(shù)據(jù)和指令流程如圖3所示。
圖2 總體方案硬件連接框圖
圖3 整體設(shè)計(jì)方案數(shù)據(jù)流向
3.1 FPGA邏輯部分設(shè)計(jì)與實(shí)現(xiàn)
FPGA邏輯部分的設(shè)計(jì)基于PCIE硬核實(shí)現(xiàn)。PCIE硬核實(shí)現(xiàn)了PCIE總線的物理層、數(shù)據(jù)鏈路層、配置管理層的協(xié)議,上層提供一個(gè)事務(wù)層接口,用戶通過(guò)該接口完成應(yīng)用邏輯,實(shí)現(xiàn)對(duì)PCIE設(shè)備的控制與訪問(wèn)[10]。
為確保設(shè)計(jì)的正確性和高效率,F(xiàn)PGA邏輯部分采用Xilinx公司在Vivado2014.4中提供的IP核,主要包括ZYNQ7 processing system、axi_master_pcie_v 1.0、AXI Interconnect、axi_slave_reg_cfg_v1.0,同時(shí)輔以Processor System Reset、AXI BRAM Controller、Block Memory Generator等IP核模塊,一起實(shí)現(xiàn)PCIE硬核邏輯與處理系統(tǒng)(PS)、PCIE物理接口的連接和通信。
PCIE總線串行傳輸?shù)奶匦允峭ㄟ^(guò)報(bào)文的形式進(jìn)行數(shù)據(jù)傳輸,每個(gè)數(shù)據(jù)報(bào)文在PCIE的事務(wù)層被封裝成一個(gè)或者多個(gè)事務(wù)處理層數(shù)據(jù)包(transcation layer packet, TLP),PCIE設(shè)備之間則通過(guò)這些數(shù)據(jù)包進(jìn)行通信。由于TLP中包含TLP前綴、TLP頭以及TLP摘要等信息,因此,當(dāng)設(shè)備在進(jìn)行單次數(shù)據(jù)傳輸(每個(gè)報(bào)文數(shù)據(jù)負(fù)載長(zhǎng)度為1)時(shí)PCIE總線的性能優(yōu)勢(shì)并不明顯,其傳輸速度甚至還不如PCI總線。為了得到更高的傳輸效率,在使用PCIE總線進(jìn)行數(shù)據(jù)傳輸時(shí)往往需要使用DMA的傳輸方式[11]。
設(shè)計(jì)采用DMA方式,用于訪問(wèn)計(jì)算機(jī)系統(tǒng)中的存儲(chǔ)器空間和配置空間。該方式在實(shí)現(xiàn)高速外部設(shè)備和主存儲(chǔ)器直接之間的數(shù)據(jù)交互時(shí),不需要CPU的直接參與。使用這種方式可以減少CPU的占用率,大大提高數(shù)據(jù)吞吐率和系統(tǒng)性能。DMA方式又分為兩種類型:一種稱為系統(tǒng)DMA(system DMA)方式,該方式通過(guò)系統(tǒng)主板上的DMA控制器來(lái)控制總線的數(shù)據(jù)傳輸,支持這種方式的系統(tǒng)和設(shè)備很少,因此并不常用;另一種方式稱為總線主控DMA(bus master DMA),這種方式由接口卡上的邏輯電路完成DMA控制器,實(shí)現(xiàn)數(shù)據(jù)的傳輸。設(shè)計(jì)采用的即是總線主控DMA方式,其基本步驟如下:1) 軟件向DMA控制器寫(xiě)入內(nèi)存?zhèn)鬏斒椎刂贰?shù)據(jù)傳輸長(zhǎng)度、讀/寫(xiě)使能標(biāo)志等信息,之后等待DMA控制器的指令;2) DMA控制器根據(jù)接收到的信息生成相應(yīng)的讀/寫(xiě)請(qǐng)求。如果是讀請(qǐng)求,則向根聯(lián)合體(root complex, RC)發(fā)送存儲(chǔ)器讀請(qǐng)求TLP,RC根據(jù)讀請(qǐng)求中的內(nèi)存起始地址和數(shù)據(jù)大小,讀出內(nèi)存數(shù)據(jù),組成讀完成TLP返回DMA控制器;如果是寫(xiě)請(qǐng)求,向RC發(fā)送存儲(chǔ)器寫(xiě)請(qǐng)求TLP,將數(shù)據(jù)寫(xiě)入內(nèi)存的預(yù)定空間;3) DMA控制器的讀/寫(xiě)操作完成后,通過(guò)中斷機(jī)制告知軟件,軟件將讀/寫(xiě)使能標(biāo)志清零[5][11]。DMA讀/寫(xiě)流程如圖4和圖5所示。
DMA控制器與軟件之間的狀態(tài)/控制信息的交換通過(guò)特定的寄存器完成,這些寄存器處于基地址寄存器(base address register, BAR)所存儲(chǔ)的基地址空間的范圍內(nèi)。通過(guò)讀寫(xiě)這些寄存器的值,DMA控制器和軟件可以判斷對(duì)方的狀態(tài),以此決定下一步的動(dòng)作。
圖5 DMA寫(xiě)流程
3.2 ARM處理器部分功能實(shí)現(xiàn)
鑒于Zynq芯片ARM+FPGA的新型架構(gòu),方案特使用ARM處理器來(lái)進(jìn)行Zynq內(nèi)部指令和數(shù)據(jù)的調(diào)度和處理,以充分利用芯片的優(yōu)異性能,同時(shí)滿足處理敏感數(shù)據(jù)的安全需求。ARM CortexTM-A9 CPU使用Xilinx公司提供的專用嵌入式操作系統(tǒng),此部分的準(zhǔn)備工作在本文中不再詳述。
ARM CortexTM-A9處理器中運(yùn)行了嵌入式Linux操作系統(tǒng),將用于數(shù)據(jù)存儲(chǔ)的DDR模塊識(shí)別為處理器的外接設(shè)備,但需要對(duì)應(yīng)的驅(qū)動(dòng)才能正常工作,故需要編寫(xiě)DDR驅(qū)動(dòng)程序。DDR作為PCIE硬核和ARM處理器的共用數(shù)據(jù)存儲(chǔ)空間,對(duì)兩部分來(lái)說(shuō)是透明的,既能接收來(lái)自FPGA的控制命令和數(shù)據(jù)存取請(qǐng)求,又能將地址映射到ARM處理器的寄存器中,作為嵌入式系統(tǒng)的外接設(shè)備使用。
驅(qū)動(dòng)程序的編寫(xiě)主要包括以下幾個(gè)部分:
設(shè)備初始化:static int pcie_ddr_a9_ device_init (struct pcie_ddr_a9_dev_t *p device);
file_operation結(jié)構(gòu)在字符設(shè)備驅(qū)動(dòng)程序中占有重要地位,它的成員函數(shù)提供了驅(qū)動(dòng)程序與操作系統(tǒng)內(nèi)核的接口。file_operation結(jié)構(gòu)定義如下:
對(duì)上述函數(shù)的調(diào)用分別如下所示:
使用這些函數(shù)基本完成了驅(qū)動(dòng)的功能,達(dá)到了操作系統(tǒng)對(duì)DDR讀寫(xiě)控制的目的。
3.3 Linux系統(tǒng)下驅(qū)動(dòng)程序和應(yīng)用程序設(shè)計(jì)與實(shí)現(xiàn)
在開(kāi)源的Linux系統(tǒng)環(huán)境下,設(shè)計(jì)驅(qū)動(dòng)程序和應(yīng)用程序來(lái)完成計(jì)算機(jī)主機(jī)和PCIE接口設(shè)備的數(shù)據(jù)傳輸[12]。在應(yīng)用程序中定義單邏輯和多邏輯通道。采用單邏輯通道,可以減少采用多邏輯通道時(shí)切換和調(diào)度帶來(lái)的時(shí)間損耗;設(shè)計(jì)多邏輯通道,可以確保不同類型的任務(wù)通過(guò)不同邏輯通道傳輸,提高了事務(wù)處理效率和傳輸速率。
驅(qū)動(dòng)程序的編寫(xiě)主要包含以下幾個(gè)部分:
設(shè)備號(hào)的獲?。?/p>
Static const struct pci_device_id ids[]= { {PCI _DEVICE(0x10EF,0x7030) },{0 } }
設(shè)備初始化:cdev_init(&ape->cdev, &alt_fops); ape-cdev.owner=THIS_MODULE;
注冊(cè)字符設(shè)備到系統(tǒng):rc=cdev_add(&ape->cdev,ape->devno, DEV_NUM);
If(rc<0){
printk(KERN_ALERT “PCIE APE EP: cdev add error ”);
goto err_add_cder;
} printk(KERN_DEBUG “probe()successful. ”);
注銷字符設(shè)備:cdev_del(&ape->cdev)
釋放字符設(shè)備:unregister_chrdev_region (ape ->devno, DEV_NUM)
file_operation結(jié)構(gòu)定義如下:
struct file_operation alt_fops={
owner: THIS_MODULE, read: alt_read, write: alt_write, poll: alt_poll, open: alt_open, release: alt_release}
對(duì)讀寫(xiě)函數(shù)等的調(diào)用分別如下:static ssize_t alt_read( ); static ssize_t alt_write( ); static unsigned int alt_poll( ); static int alt_open( ); static int alt_release( )。
驅(qū)動(dòng)申請(qǐng)中斷:request_irq(irq_line, altpciechdma_irs,IRQF_SHARED,ape->devname,(void*)ape);
驅(qū)動(dòng)釋放中斷:free_irq (ape->irq_line, (void*) ape);
以上這些部分完成了驅(qū)動(dòng)程序的主要功能。
應(yīng)用程序完成對(duì)設(shè)備進(jìn)行多次讀寫(xiě)和測(cè)試讀寫(xiě)速度的功能,主要功能代碼如下所示:打開(kāi)設(shè)備:fd=open(“dev/pcie0_0”,0_RDWR);獲取當(dāng)前時(shí)間:gettimeofday(&otv, NULL);向設(shè)備寫(xiě)入數(shù)據(jù):ret=write(fd, src, data_size);從設(shè)備讀出數(shù)據(jù):read_num=read(fd, ack, read_sum);
比較讀寫(xiě)數(shù)據(jù)是否一致:ret=memcmp(src, ack, read_sum);
計(jì)算讀寫(xiě)數(shù)據(jù)量(字節(jié)):wsum+=data_size; rsum+=read_num;
獲取讀寫(xiě)完成后的當(dāng)前時(shí)間:gettimeofday (&ntv, NULL);
計(jì)算和輸出讀寫(xiě)時(shí)間:printf(“write_speed =%fKBps ”,(1000.0*wsum/((ntv.tv_sec*1000.0-
otv.tv_sec * 10 0 0.0)+(ntv.tv_usec- otv.tv_usec) / 10 00.0))/1024);
printf(“read_speed=%fKBps ”,(1000.0*rsum/ ((ntv.tv_sec*1000.0-otv.tv_sec*1000.0)+(ntv.tv_usec-o tv.tv_use c)/1000.0))/1024);
PCIE接口的讀寫(xiě)速度就是通過(guò)上面一系列的函數(shù)和運(yùn)算得到的。
測(cè)試環(huán)境及條件:1) 裝載Ubuntu操作系統(tǒng)的臺(tái)式機(jī);2) 功能完備的提供PCIE接口的硬件板卡,并插裝到臺(tái)式機(jī)主板的PCIE插槽上;3) 嵌入式Linux內(nèi)核、文件操作系統(tǒng)、設(shè)備樹(shù)等文件完備,確保硬件板卡上的Zynq芯片能正常啟動(dòng);4) 驅(qū)動(dòng)程序及應(yīng)用程序正確編譯和安裝。
測(cè)試步驟及測(cè)試項(xiàng)目:1) 加載驅(qū)動(dòng);2) 執(zhí)行測(cè)試程序,分別測(cè)試單通道和多通道(邏輯)時(shí)的數(shù)據(jù)傳輸速率。
測(cè)試結(jié)果比較對(duì)象:理論上PCIE2.0(×1)支持5.0 GTps/Lane的傳輸速度,但由于采用8b/10b編碼方式以及數(shù)據(jù)包頭和控制數(shù)據(jù)包的占用,有效數(shù)據(jù)速率會(huì)低于理論值的80%,即不會(huì)達(dá)到4 Gbps/Lane (512 MBps/Lane)。
如圖3所示,測(cè)試數(shù)據(jù)流向的數(shù)據(jù)傳輸速度,得到的一些典型值如表1所示。
表1 整體方案數(shù)據(jù)傳輸速度測(cè)試結(jié)果
表1中所說(shuō)的通道,指的是應(yīng)用程序中定義的邏輯通道,用于不同應(yīng)用模塊與PCIE物理接口的通信。邏輯通道0和1即是四個(gè)邏輯通道中的兩個(gè)。測(cè)試時(shí),數(shù)據(jù)讀寫(xiě)循環(huán)1 000次計(jì)算一次傳輸速度,以保證數(shù)據(jù)的可靠性;不斷增加每次寫(xiě)入接口的數(shù)據(jù)塊的數(shù)量,觀測(cè)其對(duì)傳輸速度的影響;對(duì)數(shù)據(jù)進(jìn)行分包處理,以每包1.5 K,即1 536 Byte的大小傳輸數(shù)據(jù)。由測(cè)試結(jié)果可以看出,在進(jìn)行大包數(shù)據(jù)的讀寫(xiě)時(shí),傳輸速度不斷提高,逐漸靠近512 MBps,可見(jiàn)提高單次傳輸數(shù)據(jù)量的大小,可有效提高接口通路的利用率。在采用PCIE×1物理通道情況下,單次傳輸?shù)臄?shù)據(jù)量較小時(shí),單邏輯通道和四邏輯通道的傳輸速率各有高低。但在傳輸?shù)臄?shù)據(jù)量較大時(shí),單邏輯通道速率明顯高于多邏輯通道(多線程和多進(jìn)程)速率,原因在于省去了多邏輯通道傳輸時(shí)的調(diào)度和控制過(guò)程。
由文獻(xiàn)[4-5]給出的公式可知,接口通路的數(shù)據(jù)吞吐量,在協(xié)議開(kāi)銷、有效載荷等基本一致的情況下,與物理通道的數(shù)量成正比,因此在相同工作模式下,比較×1物理通道的傳輸速度即能得到多物理通道傳輸性能的優(yōu)劣。
圖6 4個(gè)設(shè)計(jì)方案的接口通路傳輸速度對(duì)比
就典型值(PCIE×1物理通道和單邏輯通道時(shí))431 MB/s(約3.36 Gbps)而言,相較于文獻(xiàn)[11]和文獻(xiàn)[13-14]中給出的測(cè)試結(jié)果,提高近20%。圖6為4個(gè)設(shè)計(jì)方案的接口通路傳輸速度測(cè)試結(jié)果對(duì)比。
文獻(xiàn)[11]給出了接口通路在4-Lane、讀寫(xiě)數(shù)據(jù)包大小在8 KB時(shí)的傳輸速度,與該條件比較,本設(shè)計(jì)傳輸速度有25%以上的提升;文獻(xiàn)[13]給出了傳輸系統(tǒng)的最高傳輸速率,在相同工作模式下對(duì)比本設(shè)計(jì)有18%左右的提升;與文獻(xiàn)[14]給出的測(cè)試數(shù)據(jù)相比,本設(shè)計(jì)有21%左右的提升。同樣,在多物理通道時(shí),本設(shè)計(jì)依然有著較好的傳輸速度。
對(duì)于在應(yīng)用時(shí)選擇單邏輯通道還是多邏輯通道的問(wèn)題,應(yīng)依據(jù)實(shí)際需求做出判斷,在傳輸速度和要求多模塊同時(shí)工作兩個(gè)因素中權(quán)衡。
為有效利用PCIE接口的高速傳輸性能,使用ARM+FPGA架構(gòu)芯片Zynq-7000系列,設(shè)計(jì)實(shí)現(xiàn)了多通道PCIE高速傳輸接口。通過(guò)設(shè)計(jì)DMA硬核控制器、PCIE總線驅(qū)動(dòng)、DDR驅(qū)動(dòng)以及應(yīng)用測(cè)試程序,完整實(shí)現(xiàn)了PCIE接口通路。該方案更具可擴(kuò)展性和應(yīng)用前景,傳輸速度能達(dá)到3.36 Gbps,相比現(xiàn)有設(shè)計(jì)提升近20%,為設(shè)計(jì)基于PCIE接口的其他應(yīng)用奠定了基礎(chǔ)。下一步,將對(duì)設(shè)計(jì)進(jìn)行優(yōu)化,通過(guò)降低協(xié)議開(kāi)銷、優(yōu)化數(shù)據(jù)調(diào)度方式等措施來(lái)進(jìn)一步提高接口傳輸速率。
[1] PCI-SIG. PCI Express base specification revision 2.1[M]. Beaverton, USA: [s.n.], 2009.
[2] 鄒晨, 高云. 基于FPGA的PCIe總線DMA傳輸?shù)脑O(shè)計(jì)與實(shí)現(xiàn)[J]. 電光與控制, 2015, 7: 84-88. ZOU Chen, GAO Yun. Design and implementation of DMA transmission with PCIe bus based on FPGA[J]. Electronics Optics & Control, 2015, 7: 84-88.
[3] CHEN Yong-zhen, WANG Yi , HA Ya-jun. sAES: a high thro-ughput and low latency secure cloud storage with pipelined DMA based PCIe interface[C]//2013 International Conference on Field-Programmable Technology (FPT). Kyoto, Japan: IEEE, 2013: 374-377.
[4] ROTA L, CASELLE M, CHILINGARYAN S, et al. A new DMA PCIe architecture for gigabyte data transmission[C]//2014 19th IEEE NPSS Real Time Conference (RT). Nara, Japan: IEEE, 2014: 1-2.
[5] ROTA L, CASELLE M, CHILINGARYAN S, et al. A PCIe DMA arc-hitecture for multi-gigabyte per second data transmission[J]. IEEE Transactions on Nuclear Science, 2015, 62(3): 972-976.
[6] HAN Tai-Lin, CAI Hua, LIU Guang-wen, et al. The face detection and location system based on Zynq[C]//2014 11th International Conference on Fuzzy Systems and Knowledge Discovery (FSKD). Xiamen, China: IEEE, 2014: 835-839.
[7] ROLAND D, LUKAS S. Towards evolvable syste- ms based on the Xilinx Zynq platform[C]//2013 IEEE International Conference on Evolvable Systems (ICES). Singapore: IEEE, 2013: 89-95.
[8] JOAO S, VALERY S, IOULIIA S. Comparison of on-chip communications in Zynq-7000 all programmable systems-on-chip[J]. IEEE Embedded System Letters, 2015, 7(1): 31-34.
[9] SANTHOSH K R, OSCAR P, JAVIRE A M, et al. An energy efficient hybrid FPGA-GPU based embedded platform to accelerate face recognition applica-tion[C]//2015 IEEE COOL Chips XVIII. Yokohama, Japan: IEEE, 2015: 1-3.
[10] 許峰. 基于Virtex-6的PCI Express高速采集卡設(shè)計(jì)[J]. 現(xiàn)代電子技術(shù), 2012, 16: 79-81, 85. XU Feng. Design of PCI Express high-speed acquisition card base on virtex-6[J]. Modern Electronics Technique, 2012, 16: 79-81, 85.
[11] KAVIANIPOUR H, MUSCHTER S, BOHM C. High performance FPGA-based DMA interface for PCIe[J]. IEEE Transactions on Nuclear Science, 2014, 61(2): 745-749.
[12] BOUGIOUKOU E, NTALLA A, PALLI A, et al. Prototyping and performance evaluation of a dynamically adaptable block device driver for PCIe-based SSDs[C]// 2014 25th IEEE International Symposium on Rapid System Prototyping (RSP 2014). New Delhi: IEEE, 2014: 51-57.
[13] 高俊, 楊燦美, 杜學(xué)亮. 基于PCIe總線的多路實(shí)時(shí)傳輸系統(tǒng)設(shè)計(jì)[J]. 電子技術(shù)應(yīng)用, 2015, 2: 65-67, 71. GAO Jun, YANG Can-mei, DU Xue-liang. Design of multi-channel real-time transmission system based on PCIe bus[J]. Applica-tion of Electronic Technique, 2015, 2: 65-67, 71.
[14] AN W, JIN X, DU X, et al. A flexible FPGA-to-FPGA communication system[C]//2016 18th International Conference on Advanced Communication Technology (ICACT2016). Pyeongchang: IEEE, 2016: 586-591.
編 輯 葉 芳
Design and Implementation for High Speed Data Transfer Interface of PCI Express Based on Zynq Platform
YANG Ya-tao1, ZHANG Song-tao1, LI Zi-chen1,2, ZHANG Ming-duo1, and CAO Guang-can1
(1. Department of Communication Engineering, Beijing Electronic Science & Technology Fengtai Beijing 100070; 2. Office of Educational Administration, Beijing Graphic Communication Daxin Beijing 102600)
In order to use the excellent transmission performance of peripheral component interconnect express (PCIE) interface to carry out high-speed communication between peripherals and the host effectively, a multi-channel and high-speed PCIE interface scheme is designed based on Zynq family chip of Xilinx. The DMA hardcore controller, device driver and application program are designed on the basis of PCI express 2.0 hardcore using the FPGA+ARM architecture of Zynq-7000 platform. Test results show that the transfer rate in our project almost can reach 3.3 Gbps in PCIE×1 lane and single logical channel, which increases about 20% compared with the traditional existing designs. Our scheme owns higher expansibility and wide application prospect, it is an important design reference for external equipment and PCIE interface.
ARM; DMA; FPGA; hardware design; PCI express
TP391
A
10.3969/j.issn.1001-0548.2017.03.008
2016 ? 01 ? 24;
2016 ? 06 ? 19
國(guó)家自然科學(xué)基金(61370188);中央高校基本科研業(yè)務(wù)費(fèi)專項(xiàng)資金(2017XK01)
楊亞濤(1978-),男,博士,副教授,主要從事寬帶密碼通信和網(wǎng)絡(luò)安全方面的研究.