国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA硬核的PCI Express實(shí)現(xiàn)

2014-02-10 02:56何春茂
機(jī)電工程技術(shù) 2014年10期
關(guān)鍵詞:高電平硬核時(shí)序

何春茂

(廣州銳達(dá)測控科技有限公司,廣東廣州 510385)

基于FPGA硬核的PCI Express實(shí)現(xiàn)

何春茂

(廣州銳達(dá)測控科技有限公司,廣東廣州 510385)

PCI Express速度快,性能穩(wěn)定,廣泛使用于計(jì)算機(jī)與外圍設(shè)備的通信。根據(jù)PC平臺的運(yùn)動(dòng)控制器要求,采用Altera公司的EP4CGX30的硬核,實(shí)現(xiàn)PC機(jī)與DSP之間的通信,通過FPGA內(nèi)部自帶的RAM,采用FIFO的方式,實(shí)現(xiàn)全雙工通信,滿足DSP與PC的通信要求。

FPGA;PCI Express;硬核

0 引言

目前,PC平臺的運(yùn)動(dòng)控制卡應(yīng)用上,大多采用了PCI的通信方式,如雷賽科技公司的MDC1380、MDC1410等,固高科技公司的GE-200-SV-PCI、GE-300-SG-PCI等。PCI總線時(shí)鐘頻率為33.3 MHz/66 MHz,最大數(shù)據(jù)傳輸速率為133 Mb/s,能滿足大多數(shù)PC平臺的運(yùn)動(dòng)控制器的通信需求。對于通信速度要求更快只需要采用PCI Express總線進(jìn)行通信。PCI Express總線是一種完全不同于過去PCI總線的一種全新總線規(guī)范,與PCI總線共享并行架構(gòu)相比,PCI Express總線是一種點(diǎn)對點(diǎn)串行連接的設(shè)備連接方式,點(diǎn)對點(diǎn)意味著每一個(gè)PCI Express設(shè)備都擁有自己獨(dú)立的數(shù)據(jù)連接,各個(gè)設(shè)備之間并發(fā)的數(shù)據(jù)傳輸互不影響,而對于過去PCI那種共享總線方式,PCI總線上只能有一個(gè)設(shè)備進(jìn)行通信,一旦PCI總線上掛接的設(shè)備增多,每個(gè)設(shè)備的實(shí)際傳輸速率就會下降,性能得不到保證。PCI Express總線有X1、X2、X4、X8、X16、X32通道規(guī)格?,F(xiàn)在已經(jīng)發(fā)展到了PCI-E 3.0。由于受限于FPGA器件的支持,本文使用了PCI-E 2.0規(guī)范。支持最大頻率為2.5 GHz,最大傳輸速度為512 Mb/s(雙工)。

1 硬件平臺

本文采用了Altera公司的Cyclone IV系列器件EP4CGX30F23,屬于低成本、低功耗FPGA。該器件有29 440個(gè)邏輯單元,1.08Mbits內(nèi)嵌Memory模塊,290個(gè)最大I/O接口。同時(shí),采用了Altera成熟的GX收發(fā)器技術(shù),具有出眾的抖動(dòng)性能和優(yōu)異的信號完整性。PCI-SIG兼容收發(fā)器型號支持多種串行協(xié)議,支持2.5 GHz的收發(fā)頻率。FPGA實(shí)現(xiàn)PCI Express通信、伺服驅(qū)動(dòng)器的控制及各信號的采集與輸出。

DSP采用的是TI公司的TMS320C6713,它是32位高速浮點(diǎn)型DSP,時(shí)鐘最高頻率為300 MHz,通過EMIF總線的方式和FPGA通信。DSP用來完成運(yùn)動(dòng)控制運(yùn)算,硬件如圖1所示。

圖1 硬件平臺

2 數(shù)據(jù)流程

PCI Express體系結(jié)果分為四個(gè)層,分別為:物理層(Physical layer)、數(shù)據(jù)鏈路層(Link Lay?er)、處理層(Transaction Layer)、軟件層(Soft?ware Layer),其中,物理層、數(shù)據(jù)鏈路層及處理層已經(jīng)包含在硬核中,用戶要實(shí)現(xiàn)的就是軟件層。如圖2中的讀模塊和寫模塊。PC端發(fā)送數(shù)據(jù)下來時(shí),通過讀模塊,把接收到的數(shù)據(jù)放處FIFO,當(dāng)DSP通過EMIF總線檢測到FIFO內(nèi)部有數(shù)據(jù)時(shí),就可以從FIFO中讀出數(shù)據(jù)。當(dāng)DSP需要上傳數(shù)據(jù)時(shí),也通過EMIF總線把數(shù)據(jù)寫到FIFO,當(dāng)寫模塊檢測到FIFO有數(shù)據(jù)時(shí),就通過AVLON-ST TX總線把數(shù)據(jù)打包傳輸給硬核,完成數(shù)據(jù)的通信流程。如圖2所示。

圖2 數(shù)據(jù)流程

3 硬核使用

3.1 硬核的生成

在quartus工程內(nèi),點(diǎn)擊工具菜單下面Mega?wizard Plug-In Manager,選擇IP Compiler for PCI Express。在System Settings菜單下,選擇Hard IP For PCI Express,Lanes選擇通道,該器件最大支持x4通道,本文選擇x1,Port Type框內(nèi)選擇Na?tive EndPoint,作為終端設(shè)備。PC機(jī)輸入的差分參考時(shí)鐘Xcvr ref_clk選擇100 MHz,Application clock(應(yīng)用時(shí)鐘頻率)為125 MHz。點(diǎn)擊下一步進(jìn)入PCI resisters配置。在配置空間里,默認(rèn)選擇一個(gè)64-bit Prefetchable memory,也可以開通多個(gè)存儲空間或I/O空間。PCI Read-only Registers是PC端對目標(biāo)設(shè)備身份進(jìn)行識別寄存器,可以選擇默認(rèn),也可以更改。如圖4所示。點(diǎn)擊Next進(jìn)入PCI Capabilities設(shè)置,默認(rèn)四條MSI中斷線。后面的配置選擇默認(rèn)即可,最后點(diǎn)擊Finish,生成PCI Express硬核文件。

3.2 硬核關(guān)鍵信號說明

Avalon-ST RX組:即在讀模塊內(nèi)完成這個(gè)功能。時(shí)序如圖3[1]所示。在rx_st_sop高電平時(shí),即表讀時(shí)序開始,讀第一個(gè)數(shù)據(jù),開始讀取數(shù)據(jù),rx_st_eop高電平處讀取最后一個(gè)數(shù)據(jù),即完成數(shù)據(jù)讀取,rx_st_valid高電平表示數(shù)據(jù)有效。

圖3 Avalon-ST RX時(shí)序

Avalon-ST TX組:在寫模塊內(nèi)完成這個(gè)功能,時(shí)序如圖4[1]所示。在core_clk_out上升沿處,把tx_st_sop置高,并寫入第一個(gè)數(shù)據(jù),同時(shí)把tx_st_valid置高,中間數(shù)據(jù)在tx_st_valid置高時(shí)輸入有效,最后一個(gè)數(shù)據(jù)寫入并把tx_st_eop置高。完成一幀數(shù)據(jù)的發(fā)送。

圖4 Avalon-ST TX時(shí)序

Clock組 : 這 組 包 括 refclk、 pld_clk、core_clk_out、 pclk_in、 app_clk、 cal_blk_clk、clk250_out、clk500_out、fixedclk_serdes、recon?fig_clk等。其中refclk為輸入信號,與配置的ref_clk一至,由 PC端提供,core_clk_out、app_clk、clk250_out、clk500_out為硬核輸出時(shí)鐘,供應(yīng)用層使用,core_clk_out用于發(fā)送接收模塊, app_clk用 于 中斷 模 塊。 pld_clk由core_clk_out驅(qū)動(dòng),保持應(yīng)用層時(shí)鐘與硬核時(shí)鐘一至。pclk_in為仿真時(shí)鐘,連接到 refclk。cal_blk_clk為發(fā)送基準(zhǔn)時(shí)鐘,連接至core_clk_out。reconfig_clk,serdes、分別為固定的50 M、125 M時(shí)鐘,必須于外部時(shí)鐘驅(qū)動(dòng),可用PLL鎖相環(huán)產(chǎn)生50 M和125 M的時(shí)鐘來驅(qū)動(dòng)。

Reset組:這組包括crst、npor、srst。crst為同步配置復(fù)位,高電平有效,可由pcie_rstn(pcie插槽復(fù)位引腳)和local_rstn(硬件復(fù)位引腳)邏輯與之后再取反得到的信號來驅(qū)動(dòng)。npor為異步上電復(fù)位,低電平有效,可local_rstn來驅(qū)動(dòng)。Srst為同步數(shù)據(jù)通路復(fù)位,高電平有效,可由lo?cal_rstn取反后來驅(qū)動(dòng)。

Interrupt組。這組由上層中斷應(yīng)用模塊來驅(qū)動(dòng)??僧a(chǎn)生MSI Interrupts和Legacy Interrupt二種中斷。其中MSI Interrupts如圖5[1]所示。在app_mis_req高電平下,寫入app_mis_tc和 pp_msi_num,當(dāng)硬核承認(rèn)信號app_msi_ack為高時(shí),將產(chǎn)生一個(gè)MSI報(bào)文向處理器申請中斷,完成MSI中斷操作。

圖5 MSI Interrupt

Legacy Interrupt操作時(shí)序如圖6[1]所示。將app_int_sts信號置高,然后等待app_int_ack變高,即產(chǎn)生一個(gè)Assert_INTA信息報(bào)文向處理器申請中斷。

圖6 Legacy Interrupt

其他信號組用戶可以根據(jù)需要進(jìn)行選擇使用。

4 PCI Express通信報(bào)文

PCI Express硬核已經(jīng)生成了數(shù)據(jù)鏈路層和處理層,用戶只需要完成應(yīng)用層,即完成接收、發(fā)送及中斷等模塊。PCI Express通信報(bào)文有內(nèi)存讀、內(nèi)存寫、配置讀、配置寫、I/O讀、I/O寫、信息、完成等報(bào)文。而作為終端設(shè)備,接收到PC端發(fā)送的內(nèi)存讀報(bào)文后,需要返回完成報(bào)文,當(dāng)收到內(nèi)存寫報(bào)文時(shí),則無需返回報(bào)文。報(bào)文是按一定格式進(jìn)行填充或讀取,其中內(nèi)存讀報(bào)文格式如圖7[2]所示。

圖7 讀內(nèi)存報(bào)文

其中,TC字段定義報(bào)文的傳送類型,TD位表示TLP中的TLP Digest是否有效,EP位表示當(dāng)前TLP中的數(shù)據(jù)是否有效,Attr定義報(bào)文的模型,Length為報(bào)文的有效負(fù)載,即需要讀取的雙字(DW)個(gè)數(shù),Requestor ID設(shè)備的總線號(Bus Num?ber)、設(shè)備號(Device Number)和功能號(Function Number)組成,Tag由八位組成,決定了發(fā)送端能夠暫存256個(gè)同類型的TLP,Last BE表示最后一個(gè)數(shù)據(jù)是否有效,F(xiàn)irst BE表示第一個(gè)數(shù)據(jù)是否有效。應(yīng)用層需要根據(jù)Length及Address,使用完成報(bào)文返回相應(yīng)的數(shù)據(jù),完成報(bào)文格式如圖8[3]。

圖8 完成報(bào)文

其中,Completer ID也是由設(shè)備的總線號、設(shè)備號和功能號組成,該字段內(nèi)容保存在地址為OxF的傳輸層配置寄存器內(nèi),可以通過tl_cfg_ctl總線來讀取該值,本文生成的PCI Express硬核得到的Completer ID是0X0200。Status字段保存當(dāng)前完成報(bào)文的完成狀態(tài)。Byte Count字段記錄源設(shè)備還需要從目標(biāo)設(shè)備中,獲得多少字節(jié)的數(shù)據(jù)就能完成全部數(shù)據(jù)傳遞,當(dāng)前TLP中的有效負(fù)載也被Byte Count字段統(tǒng)計(jì)在內(nèi)。Low Address字段存放在存儲器讀完成TLP中第一個(gè)數(shù)據(jù)所對應(yīng)地址的最低位,對應(yīng)內(nèi)存讀報(bào)文中Address[6:0]。Byte12開始,填入內(nèi)存數(shù)據(jù)。

圖9 PCI Express硬核發(fā)送數(shù)據(jù)

圖10 PCI Express硬核接收數(shù)據(jù)

5 PCI Express通信調(diào)試及結(jié)果

完成代碼設(shè)計(jì),編譯之后,把應(yīng)用程序加載到FPGA配置芯片,把卡插入電腦PCI Express插槽,開機(jī)后,打開Driver Wizard調(diào)試軟件,可以看到有個(gè)Altera-device的PCI設(shè)備,雙擊BARO,進(jìn)入BAR0讀寫操作框。根據(jù)數(shù)據(jù)流程模塊,DSP向FPGA發(fā)送FIFO寫處一個(gè)0x78574632的數(shù)據(jù)后,當(dāng)FIFO有數(shù)據(jù)時(shí),使用Driver Wizard讀該地址數(shù)據(jù),進(jìn)而觸發(fā)數(shù)據(jù)發(fā)送模塊,使用Quartus II自帶的SignalTap II Logic Analyzer可以看到發(fā)送的時(shí)序,如圖9所示。Driver Wizard信息框內(nèi)提示讀到的數(shù)據(jù)。

在Driver Wizard讀寫框內(nèi),向地址0X64寫數(shù)據(jù)0x87654321。在FPGA端 , SignalTap II Logic Analyzer顯示接收到數(shù)據(jù)0x87654321,如圖10所示。

6 結(jié)論

采用PCI Express方式實(shí)現(xiàn)PC機(jī)與DSP之間的通信,具有較快的通信速率,完全滿足實(shí)時(shí)通信要求。采用PCI Express硬核,能夠縮短開發(fā)周期,提高了產(chǎn)品的可靠性和穩(wěn)定性。

[1]IP Compiler for PCI Express User Guide[EB/OL].www. altera.com.cn.

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

[3]楊子元,包啟亮,王旭,等.基于PCIE/104總線的高速數(shù)據(jù)接口設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2011,34(14):75-78.

Implementation of PCI Express Based on FPGA Hardcore

HE Chun-mao
(Guangzhou Ruida measurement and Control Technology Co.,Ltd,Guangzhou510385,China)

Because the PCI Express fast,stable performance,it is widely used in computer and peripheral equipment communication. According to the motion controller PC platform,using Altera's EP4CGX30 hardcore,realized communication between PC and DSP,through the FPGA internal RAM,adopt FIFO mode,implemented full duplex communication,to meet the requirements of communication between DSP and PC.

FPGA;PCI Express;hardcore

TP393

:A

:1009-9492(2014)10-0081-04

10.3969/j.issn.1009-9492.2014.10.022

何春茂,男,1980年生,江西石城人,碩士。研究領(lǐng)域:工業(yè)自動(dòng)控制及檢測。己發(fā)表論文2篇。

(編輯:向 飛)

2014-04-29

猜你喜歡
高電平硬核時(shí)序
一種基于FPGA的PWM防錯(cuò)輸出控制電路
基于Sentinel-2時(shí)序NDVI的麥冬識別研究
硬核爺爺煉成記
“硬核”舉措下的暖心舉動(dòng)
用“三個(gè)最嚴(yán)”彰顯“硬核”擔(dān)當(dāng)
陜西制造需要“硬核”
TS-03C全固態(tài)PDM中波發(fā)射機(jī)開關(guān)機(jī)控制電路原理及故障分析
基于FPGA 的時(shí)序信號光纖傳輸系統(tǒng)
DM 50KW中波廣播發(fā)射機(jī)欠推動(dòng)故障分析
一種毫米波放大器時(shí)序直流電源的設(shè)計(jì)
鄱阳县| 湖口县| 泸州市| 平江县| 铅山县| 平安县| 上饶县| 河曲县| 丹寨县| 海门市| 澄城县| 滨海县| 隆昌县| 沁水县| 孙吴县| 枣庄市| 内黄县| 兴海县| 玉田县| 建平县| 漳平市| 宁津县| 诏安县| 普陀区| 清河县| 南开区| 格尔木市| 水城县| 虹口区| 香格里拉县| 德钦县| 桦川县| 德江县| 微博| 德庆县| 永济市| 江西省| 临颍县| 沾化县| 垦利县| 田林县|