亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA的PCIE總線接口設(shè)計(jì)

        2014-05-21 10:02:07張銳曹彥榮
        新媒體研究 2014年7期

        張銳+曹彥榮

        摘 要 PCI Express總線是一種點(diǎn)對(duì)點(diǎn)串行連接的設(shè)備連接,每個(gè)設(shè)備都擁有自己獨(dú)立的數(shù)據(jù)連接,各個(gè)設(shè)備之間并發(fā)的數(shù)據(jù)傳輸互不影響,因此具有很高的傳輸速率。本設(shè)計(jì)使用Xilinx公司FPGA提供的PCIe IP硬核實(shí)現(xiàn)PCIe接口,并針對(duì)其高帶寬的優(yōu)勢(shì),實(shí)現(xiàn)了PCIe總線的Brust數(shù)據(jù)傳輸方案,并經(jīng)過實(shí)際傳輸驗(yàn)證,表明該設(shè)計(jì)方案可以滿足傳輸帶寬的要求。

        關(guān)鍵詞 PCIE;FPGA;Burst讀寫

        中圖分類號(hào):TP274 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-7597(2014)07-0029-03

        PCI Express總線是一種完全不同于過去PCI總線的一種全新總線規(guī)范,與PCI總線共享并行架構(gòu)相比,PCI Express總線是一種點(diǎn)對(duì)點(diǎn)串行連接的設(shè)備連接方式,點(diǎn)對(duì)點(diǎn)意味著每一個(gè)PCI Express設(shè)備都擁有自己獨(dú)立的數(shù)據(jù)連接,各個(gè)設(shè)備之間并發(fā)的數(shù)據(jù)傳輸互不影響,而對(duì)于過去PCI那種共享總線方式,PCI總線上只能有一個(gè)設(shè)備進(jìn)行通信,一旦PCI總線上掛接的設(shè)備增多,每個(gè)設(shè)備的實(shí)際傳輸速率就會(huì)下降,性能得不到保證。PCI Express總線利用串行連接特點(diǎn),能輕松的將數(shù)據(jù)傳輸速度提到一個(gè)很高的頻率,遠(yuǎn)遠(yuǎn)超出PCI總線的傳輸速率。

        PCI Express是一種復(fù)雜的協(xié)議,它的實(shí)現(xiàn)可以采用專用的協(xié)議芯片,但是缺乏靈活性和可配置性,限制了系統(tǒng)整體性能。另一種方式是采用FPGA邏輯來實(shí)現(xiàn),PCIE IP硬核一般只實(shí)現(xiàn)PCIE的物理層和數(shù)據(jù)鏈路層的協(xié)議,設(shè)計(jì)者可以在IP硬核基礎(chǔ)上完成PCIE的TLP(數(shù)據(jù)傳輸層)和應(yīng)用層協(xié)議,雖然開發(fā)過程較復(fù)雜,但可根據(jù)應(yīng)用需要進(jìn)行靈活的配置,具有良好的可移植性,能更好的發(fā)揮PCIE高帶寬的優(yōu)勢(shì)。

        Xilinx公司的Virtex 5系列FPGA芯片內(nèi)嵌PCI Express Endpoint Block硬核,為實(shí)現(xiàn)單片可配置PCI Expres總線解決方案提供了可能。本文在研究PCI Express 接口協(xié)議和PCI Express Endpoint Block硬核的基礎(chǔ)上,使用Virtex5 LX330T FPGA芯片設(shè)計(jì)PCI Express接口硬件電路,實(shí)現(xiàn)PCI Express數(shù)據(jù)傳輸。

        1 PCIE接口Burst讀寫設(shè)計(jì)

        1)FPGA內(nèi)置PCIe硬核特點(diǎn)。在接口電路中,PCI Express物理層和數(shù)據(jù)鏈路層的電路采用Xilinx公司的PCI Express Endpoint Block plus v1.9硬核端點(diǎn)模塊實(shí)現(xiàn),能夠有效完成接口物理層和數(shù)據(jù)鏈路層的數(shù)據(jù)處理功能,提供給上層一個(gè)事務(wù)層數(shù)據(jù)接口。

        圖1 設(shè)計(jì)流程圖

        上層電路主要由4部分電路構(gòu)成,分別是核配置與輔助控制模塊、數(shù)據(jù)發(fā)送控制器、數(shù)據(jù)接收控制器、BAR地址空間管理,如圖1所示,最終通過BAR地址空間與用戶邏輯進(jìn)行交互。

        各個(gè)部分的作用如下。

        ①Endpoint for PCIe:FPGA內(nèi)的硬核,對(duì)外負(fù)責(zé)與其他PCIe設(shè)備協(xié)議通信對(duì)內(nèi)與TX、RX模塊進(jìn)行64bit并行與高速串行的轉(zhuǎn)換。

        ②PIO_TO_CTRL:PCIe核配置與輔助控制。

        ③EP_RX:負(fù)責(zé)主機(jī)單字讀寫FPGA的狀態(tài)機(jī)實(shí)現(xiàn)和Burst模式下寫操作的數(shù)據(jù)接收。

        ④EP_TX:負(fù)責(zé)主機(jī)單字讀FPGA的狀態(tài)機(jī)實(shí)現(xiàn)和Burst模式下讀操作的數(shù)據(jù)發(fā)送。

        ⑤EP_MEM:映射為PCIe空間的幾個(gè)BAR地址空間,將電子盤控制寄存器映射到閃存陣列主控,將數(shù)據(jù)區(qū)映射到雙口數(shù)據(jù)緩沖區(qū)控制器。

        由于PCIe核只支持單字訪問的模式,所以需要修改數(shù)據(jù)接收控制器EP_RX、數(shù)據(jù)發(fā)送控制器EP_TX、BAR地址空間管理模塊EP_MEM,實(shí)現(xiàn)對(duì)Burst訪問模式的支持。

        2)TLP數(shù)據(jù)包結(jié)構(gòu)。當(dāng)處理器或者其他PCIe設(shè)備訪問PCIe設(shè)備時(shí),所傳送的數(shù)據(jù)報(bào)文首先通過事務(wù)層被封裝為一個(gè)或者多個(gè)TLP數(shù)據(jù)包,之后才能通過PCIe總線的各個(gè)層次發(fā)送出去。TLP的基本格式如圖2所示。

        圖2 TLP的基本格式

        一個(gè)完整的TLP由1個(gè)或者多個(gè)TLP前綴、TLP頭、數(shù)據(jù)有效負(fù)載和摘要組成。在整個(gè)數(shù)據(jù)報(bào)文中,只有TLP頭和數(shù)據(jù)有效負(fù)載需要由用戶邏輯代碼來完成,其他部分都是PCIe核自動(dòng)生成的。

        TLP頭是TLP最重要的標(biāo)志,包含了當(dāng)前TLP的總線事物類型、路由信息等一系列信息。本文主要涉及到存儲(chǔ)器寫和存儲(chǔ)器讀事務(wù)。對(duì)于32bit地址空間的存儲(chǔ)器讀寫請(qǐng)求,其TLP頭格式如圖3所示,硬核同時(shí)也支持64bit地址空間的操作。請(qǐng)求者通過填寫TLP頭內(nèi)的正確信息以及地址并且將數(shù)據(jù)放在TLP頭的后面發(fā)送給接收者,接收者便會(huì)解析包內(nèi)的信息將正

        圖3 存儲(chǔ)器讀寫請(qǐng)求報(bào)文頭格式

        確的數(shù)據(jù)放到自己的地址空間中。

        對(duì)于存儲(chǔ)器寫請(qǐng)求,EP_RX控制器接收到TLP頭和數(shù)據(jù)之后,只需要通過EP_MEM模塊將數(shù)據(jù)存入寄存器或者雙口緩沖區(qū)中

        即可。

        對(duì)于存儲(chǔ)器讀請(qǐng)求,EP_RX控制器接收讀請(qǐng)求之后,需要啟動(dòng)EP_TX控制器將應(yīng)答數(shù)據(jù)組織在TLP完成報(bào)文中,完成讀操作。完成報(bào)文的頭格式如圖4所示。

        圖4 完成報(bào)文頭格式

        3)Burst寫操作的設(shè)計(jì)與實(shí)現(xiàn)。PCIe硬核的PIO模塊本身已經(jīng)支持32bit地址空間的單字存儲(chǔ)器讀寫請(qǐng)求、64bit地址空間的單字存儲(chǔ)器讀寫請(qǐng)求和IO讀寫請(qǐng)求。本設(shè)計(jì)主要完成對(duì)32bit地址空間Burst方式的存儲(chǔ)器讀寫請(qǐng)求的支持。同時(shí),考慮到實(shí)際應(yīng)用中DMA控制器一般只支持?jǐn)?shù)據(jù)8字節(jié)對(duì)齊的情況,所以本設(shè)計(jì)也只支持?jǐn)?shù)據(jù)8字節(jié)對(duì)齊的Burst讀寫訪問。

        對(duì)于存儲(chǔ)器寫請(qǐng)求,實(shí)現(xiàn)的主要方法是EP_RX將接收的TLP頭中各個(gè)字段正確解析,并區(qū)分是單字寫和Burst寫,確定寫操作的數(shù)據(jù)長(zhǎng)度,如果是單字寫,就將接下來的64位數(shù)據(jù)存入寄存器或者雙口緩沖區(qū)中;如果是Burst寫,就將數(shù)據(jù)按照64位寫入雙口緩沖區(qū)中,每個(gè)時(shí)鐘周期,地址自動(dòng)增加,直到數(shù)據(jù)全部寫入雙口緩沖區(qū)中。EP_RX控制器的狀態(tài)機(jī)如圖5所示。endprint

        圖5 EP_RX控制器狀態(tài)機(jī)

        圖6 EP_TX控制器狀態(tài)機(jī)

        4)Burst讀操作的設(shè)計(jì)與實(shí)現(xiàn)。對(duì)于存儲(chǔ)器讀請(qǐng)求,EP_RX控制器對(duì)接收到的TLP進(jìn)行解析,將請(qǐng)求數(shù)據(jù)的起始地址和長(zhǎng)度發(fā)送給EP_TX控制器,然后啟動(dòng)EP_TX完成數(shù)據(jù)傳遞。EP_RX控制器的狀態(tài)機(jī)如圖6所示。

        在PCIe總線中,一個(gè)存儲(chǔ)器讀請(qǐng)求TLP可能收到目標(biāo)設(shè)備發(fā)出的多個(gè)完成報(bào)文后,才能完成一次存儲(chǔ)器讀操作。因?yàn)樵赑CIe總線中,一個(gè)存儲(chǔ)器讀請(qǐng)求最多可以請(qǐng)求4KB大小的數(shù)據(jù)報(bào)文,而目標(biāo)設(shè)備可能會(huì)使用多個(gè)存儲(chǔ)器讀完成TLP才能將數(shù)據(jù)傳遞完畢。

        在PCIe設(shè)備的配置空間中,Link Control寄存器的RCB(Read Completion Boundary)位決定了讀完成報(bào)文的邊界,本文設(shè)計(jì)為64B。當(dāng)讀請(qǐng)求跨越了RCB邊界時(shí),需要分多個(gè)完成報(bào)文才能將數(shù)據(jù)傳遞完畢。

        EP_TX收到完全請(qǐng)求,判斷是不帶有效載荷的完成報(bào)文,還是帶有效載荷的完成報(bào)文。如果是需要帶有效載荷,并且長(zhǎng)度大于4個(gè)字節(jié)的情況就啟動(dòng)Burst讀周期。

        Burst讀周期先進(jìn)行合法性檢查,對(duì)于起始地址或者請(qǐng)求長(zhǎng)度不是8字節(jié)對(duì)齊的請(qǐng)求視為無效請(qǐng)求,不予響應(yīng)。

        對(duì)于合法讀請(qǐng)求,EP_TX控制器按RCB邊界進(jìn)行完成周期拆分,具體的算法流程如圖7所示。

        ①對(duì)于數(shù)據(jù)同一個(gè)RCB邊界之內(nèi)的讀請(qǐng)求,第一個(gè)周期完成所有數(shù)據(jù)傳遞。

        ②對(duì)于數(shù)據(jù)跨RCB邊界的讀請(qǐng)求,按RCB區(qū)段劃分讀寫周期,先完成第一個(gè)周期,使得剩余數(shù)據(jù)的起始地址按64字節(jié)對(duì)齊;接下來每個(gè)周期傳遞64字節(jié),直到數(shù)據(jù)傳遞結(jié)束;最后一個(gè)周期可能不滿64字節(jié)。

        圖7 讀完成的拆分算法

        2 結(jié)果與驗(yàn)證

        在完成FPGA的程序編寫后,用Modlesim仿真環(huán)境對(duì)程序進(jìn)行仿真。用VHDL實(shí)現(xiàn)TestBench作為激勵(lì)加載單元對(duì)EP_RX和EP_TX控制器進(jìn)行功能仿真驗(yàn)證。在實(shí)踐中進(jìn)一步使用ChipScrop抓圖,主要分析由通過EP_RX和EP_TX控制器產(chǎn)生的PCIe總線傳輸信號(hào)時(shí)序是否滿足要求。

        圖8捕獲了Burst的寫過程,由波形可以看出,EP_RX控制器正確解析Burst寫數(shù)據(jù)報(bào)文,并成功寫入雙口緩沖區(qū)中。

        圖8 Burst寫時(shí)序

        讀操作的過程相對(duì)復(fù)雜,圖9捕獲了Burst讀過程,EP_RX控制器接收到讀請(qǐng)求后啟動(dòng)EP_TX控制器,EP_TX控制器將主機(jī)端發(fā)起的一個(gè)存儲(chǔ)器讀請(qǐng)求分成多個(gè)存儲(chǔ)器讀完成報(bào)文進(jìn)行數(shù)據(jù)傳輸。

        圖9 Burst讀時(shí)序

        經(jīng)實(shí)驗(yàn)測(cè)試,如表1所示,采用Burst方式的數(shù)據(jù)傳輸,速度明顯提高,有效提高了大容量存儲(chǔ)系統(tǒng)的傳輸帶寬。

        參考文獻(xiàn)

        [1]PCI Express Base Spec ification, 1. 0a ed[S].PC I SIG,2003.

        [2]Xilinx.LogiCORE? Endpoint v3.6 for PCI Express User Guide[M].October 10,2007.

        [3]馬鳴錦,朱劍冰.PCI、PCI-X和PCI Express的原理及體系結(jié)構(gòu)[M].北京:清華大學(xué)出版社,2007.

        [4]李木國(guó),黃影,劉于之.基于FPGA的PCIe總線接口的DMA傳輸設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2013(01).

        [5]沈輝,張萍.FPGA在PCI Express總線接口中的應(yīng)用[J].現(xiàn)代電子技術(shù),2010(14).

        [6]汪精華,胡善清.基于FPGA實(shí)現(xiàn)的PCIE協(xié)議的DMA讀寫模塊[J].微計(jì)算信息,2010,26(10).

        作者簡(jiǎn)介

        張銳(1982-),女,陜西西安人,工程師,研究生,研究方向:計(jì)算機(jī)硬件設(shè)計(jì)。endprint

        久久久亚洲av午夜精品| 久久久精品2019免费观看| 黄色毛片视频免费| 日韩精品一区二区亚洲av性色| 久久精品国产9久久综合| 午夜福利不卡无码视频| 高跟丝袜一区二区三区| 亚洲国产91高清在线| 18禁止看的免费污网站| 免费人成年激情视频在线观看 | 日本特黄特色特爽大片| 日本丶国产丶欧美色综合| 欧美视频第一页| 午夜国产小视频在线观看黄| 色偷偷亚洲精品一区二区| 一区二区三区视频亚洲| 韩国三级大全久久网站| av无码久久久久久不卡网站| 在线免费观看韩国a视频| 冲田杏梨av天堂一区二区三区| 亚洲国产成人va在线观看天堂| 人妻 丝袜美腿 中文字幕| 日韩无套内射视频6| 亚洲国产成a人v在线观看| 人妻中文字幕一区二区视频| 日韩av精品视频在线观看| 18禁黄久久久aaa片| 国产a级午夜毛片| 大又黄又粗又爽少妇毛片| 亚洲中文字幕乱码第一页| 最近2019年好看中文字幕视频| 欧美成aⅴ人高清免费| 中文字幕一区二区区免| 一区二区和激情视频| 人妻少妇不满足中文字幕| 欧美人妻日韩精品| 少妇又紧又色又爽又刺| 欧美男生射精高潮视频网站| 亚洲熟妇丰满大屁股熟妇| 视频二区 无码中出| 美丽的小蜜桃在线观看|