《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于WISHBONE總線的雙向PCI高速傳輸接口設(shè)計(jì)
基于WISHBONE總線的雙向PCI高速傳輸接口設(shè)計(jì)
2016年電子技術(shù)應(yīng)用第8期
梁 燁1,簡(jiǎn)獻(xiàn)忠1,肖兒良1,姜冠祥2,蔡留美2,鄭照平2
1.上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海200093;2.上海雄博精密儀器股份有限公司,上海200444
摘要: 針對(duì)目前設(shè)計(jì)的PCI卡存在傳輸速度慢、復(fù)雜度高和購(gòu)買(mǎi)PCI核價(jià)格昂貴的問(wèn)題,提出了一種基于WISHBONE總線的PCI接口雙向傳輸設(shè)計(jì)的新方案。系統(tǒng)采用開(kāi)源的WISHBONE總線的PCI接口的IP核,設(shè)計(jì)了基于Xilinx Aritx-7系列FPGA芯片的PCI接口卡,該卡兼容5 V和3.3 V電平;采用DMA(直接內(nèi)存存?。┓绞竭M(jìn)行高速數(shù)據(jù)傳輸。實(shí)驗(yàn)表明,設(shè)計(jì)的PCI接口運(yùn)行在主模式時(shí),數(shù)據(jù)傳輸速率可達(dá)65×32 Mb/s,傳輸速率明顯提升,且數(shù)據(jù)傳輸準(zhǔn)確穩(wěn)定, 達(dá)到了設(shè)計(jì)目的,為高速PCI接口設(shè)計(jì)提供了一種新的思路。
中圖分類(lèi)號(hào): TP311.1
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.08.018
中文引用格式: 梁燁,簡(jiǎn)獻(xiàn)忠,肖兒良,等. 基于WISHBONE總線的雙向PCI高速傳輸接口設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2016,42(8):77-79,83.
英文引用格式: Liang Ye,Jian Xianzhong,Xiao Erliang,et al. The bidirectional interface design of PCI high-speed transmission based on WISHBONE bus[J].Application of Electronic Technique,2016,42(8):77-79,83.
The bidirectional interface design of PCI high-speed transmission based on WISHBONE bus
Liang Ye1,Jian Xianzhong1,Xiao Erliang1,Jiang Guanxiang2,Cai Liumei2,Zheng Zhaoping2
1.School of Optical-Electrical and Computer Engineering,University of Shanghai for Sience and Technology, Shanghai 200093,China; 2.Shanghai Supore Instruments Co.,Ltd,Shanghai 200444,China
Abstract: The PCI existed the problems of low transmission speed, high complexity and PCI Core prices,a new design scheme of PCI bidirectional interface based on WISHBONE bus was presented in this paper. The system architecture used open source called PCI-WISHBONE IP core and implemented a PCI interface card based on Xilinx Artix-7 series FPGA chip, which is compatible with 3.3 V and 5 V voltage and is focused on a method of high speed data transmission using DMA. The experimental results confirm that data transmission rate can reach to 65?鄢32 Mbit/s when the PCI bus is run in the master mode,Transfer rate has been improved significantly with data transmission accuracy and stability. It provides a new sort of methods for the high-speed PCI interface design.
Key words : PCI interfaces;DMA;high-speed transmission;WISHBONE Bus

0 引言

  PCI總線是目前推出的一款高性能局部總線[1],能同時(shí)滿足高數(shù)據(jù)傳輸和高功率輸出,是中頻數(shù)據(jù)采集與處理模塊的理想總線接口[2]。PCI 局部總線不受制于處理器,為中央處理器及高速外圍設(shè)備提供了一座橋梁[3],用戶可將高速外設(shè)通過(guò)局部總線直接掛接到 CPU總線上,使其與之匹配,從而打破了數(shù)據(jù)傳輸?shù)钠款i,使高性能 CPU 的功能得以充分發(fā)揮。

  PCI總線接口的設(shè)計(jì)思路總體上可分為兩種方法,一是采用專(zhuān)門(mén)的接口芯片,二是采用可編程邏輯器件[4-5]。這兩種方法在不同角度皆有利弊。

  文獻(xiàn)[6]提出專(zhuān)用芯片可以將復(fù)雜的總線接口轉(zhuǎn)換為相對(duì)簡(jiǎn)單的用戶接口。用戶可集中精力于應(yīng)用設(shè)計(jì),而不是調(diào)試PCI接口。但這種方式造成了一定的資源浪費(fèi),缺少靈活性。為了解決這些弊端,文獻(xiàn)[7]提出采用Xilinx、Altera以及Atmel等公司的可編程邏輯器件IP核實(shí)現(xiàn)PCI總線接口。最常用的IP核是Altera公司的PCI MegaCore和Xilinx公司的PCI LogiCore,但采取這兩種IP核的費(fèi)用不菲,且主模式設(shè)計(jì)難度較高,讓大多數(shù)研究人員望而卻步。文獻(xiàn)[8]論述了PCI主橋的的應(yīng)用和WISHBONE片上總線技術(shù),提出了使用單片機(jī)和FPGA架構(gòu)實(shí)現(xiàn)基于PCI Bridge核的被動(dòng)模式的PCI系統(tǒng)。

  本文針對(duì)兩種方式的不足,在文獻(xiàn)[8]的基礎(chǔ)上,針對(duì)WISHBONE總線特點(diǎn)及國(guó)外開(kāi)放IP組織Open Cores網(wǎng)站免費(fèi)提供的開(kāi)源PCI-WISHBONE橋核,優(yōu)化該IP核主傳輸模塊狀態(tài)機(jī)程序,僅使用一片可編程邏輯器件嵌入用戶程序,將時(shí)鐘頻率提至66 MHz,首次實(shí)現(xiàn)了一種以高速DMA方式傳輸、主從共模的PCI接口設(shè)計(jì)。

1 PCI總線與PCI-WISHBONE橋核

  1.1 PCI總線

  PCI總線是同步傳輸協(xié)議,所有PCI操作均同步于時(shí)鐘??偩€時(shí)鐘有33 MHz、66 MHz兩種頻率,位寬分為32 bit和64 bit兩種,最大傳輸速率為264 MB。系統(tǒng)中 PCI總線的最大帶寬可達(dá):66×106×32=2.112 Gb/s。

  重要的是,PCI可以支持一種名為線性突發(fā)的數(shù)據(jù)傳輸模式,可確??偩€不斷滿載數(shù)據(jù)。這種線性的或順序的尋址方式,意味著可以由一個(gè)地址起讀寫(xiě)大量數(shù)據(jù),然后每次只須將地址自動(dòng)加1,便可接收數(shù)據(jù)流內(nèi)下一個(gè)字節(jié)的數(shù)據(jù)。線性突發(fā)傳輸能更有效地動(dòng)用總線的頻帶寬傳輸數(shù)據(jù),減少無(wú)謂的尋址操作。同時(shí),PCI對(duì)總線主控及同步操作的支持有助于改善PCI的性能,即可將任何一個(gè)具有處理功能的外圍設(shè)備暫時(shí)接管總線,以加速執(zhí)行高吞吐量、高優(yōu)先次序的任務(wù)。PCI獨(dú)特的同步操作功能可確保CPU能與這些總線同步操作,毋須等待后者完成任務(wù)。

  1.2 PCI-WISHBONE橋核

  PCI-WISHBONE IP核提供了一個(gè)PCI總線和WISH-

  BONE總線之間的接口,兼容PCI 2.2協(xié)議,支持WISHBONE SoC互聯(lián)協(xié)議B版本。它適用于32位PCI 接口,包含獨(dú)立的主橋、從橋功能模塊,支持啟動(dòng)程序與目標(biāo)命令功能,例如存儲(chǔ)器讀寫(xiě)、I/O讀寫(xiě)、中斷應(yīng)答等操作。

  如圖1、圖2所示,PCI-WISHBONE橋核包括2個(gè)單元:PCI 主單元和從單元,每一個(gè)單元都擁有自己的一套功能支持橋接操作。例如圖1,PCI 主單元與WISHBONE主單元共同處理WISHBONE總線起動(dòng)的交易。首先,由WISHBONE從接口發(fā)起信號(hào)占用PCI總線,若PCI總線響應(yīng)成功,WISHBONE接口將傳輸數(shù)據(jù),地址以及命令經(jīng)由FIFO,通過(guò)PCI接口傳至PC機(jī)內(nèi)存空間。 圖2為PCI從模式機(jī)制,主要處理由上位機(jī)啟動(dòng)的事務(wù),同上述主模式基本一致,此處不再敘述。

圖像 001.png

圖1  PCI主單元結(jié)構(gòu)

圖像 002.png

圖2  PCI從單元結(jié)構(gòu)

2 PCI高速傳輸接口設(shè)計(jì)

  2.1 硬件架構(gòu)設(shè)計(jì)

  本文設(shè)計(jì)的雙向高速數(shù)據(jù)傳輸系統(tǒng)基于FPGA平臺(tái),以開(kāi)源的PCI-WISHBONE軟核為核心搭建串行通信接口平臺(tái),使其成為PCI總線與用戶邏輯之間的橋梁,避開(kāi)復(fù)雜的PCI總線協(xié)議。其采用Xilinx公司的XC7A200T-2FFG1156 主芯片作為硬件核心,結(jié)合基于WinDriver的驅(qū)動(dòng)程序,采取規(guī)格為640×512的圖像作為模擬數(shù)據(jù)源,以乒乓方式輪流讀寫(xiě)主機(jī)內(nèi)存,實(shí)現(xiàn)了高速圖像數(shù)據(jù)的雙向傳輸。

  在硬件方面,根據(jù)PCI總線規(guī)范2.2版,當(dāng)PCI接口引腳M66EN是高電平時(shí),總線時(shí)鐘頻率可控制在33 MHz~66 MHz范圍內(nèi),反之為0~33 MHz。該模塊設(shè)計(jì)原理圖如圖3所示,用戶可使用跳線帽自由控制PCI總線時(shí)鐘頻率。當(dāng)引腳2與1相接時(shí),總線時(shí)鐘頻率高達(dá)66 MHz。

圖像 003.png

圖3  PCI總線時(shí)鐘模塊原理圖

  2.2 PCI-WISHBONE橋核主模式傳輸設(shè)計(jì)

  PCI-WISHBONE橋核內(nèi)置功能接口允許用戶端訪問(wèn)PCI總線,用戶可將其設(shè)計(jì)為主模式傳輸方式,設(shè)計(jì)方案如下:

  pci_constants、bus_commands和pci_user_constants是橋核可外部修改的3個(gè)配置文件。用戶可將其設(shè)置成客戶端應(yīng)用(Guest)與主端應(yīng)用(Host)。本文設(shè)計(jì)采用Guest模式,支持PCI總線的主機(jī)系統(tǒng)連接。在接通電源時(shí),該設(shè)備獨(dú)立軟件掃描主機(jī)系統(tǒng)中任何連接PCI插槽的設(shè)備,主機(jī)系統(tǒng)進(jìn)行配置周期,PCI橋和連接到主機(jī)系統(tǒng)的所有其他PCI設(shè)備在上電復(fù)位后響應(yīng)。下面的步驟必須以正確的順序來(lái)執(zhí)行,以確保適當(dāng)?shù)腜CI橋的操作:

  (1)配置所有PCI基地址寄存器。

  (2)啟用PCI主操作和響應(yīng)內(nèi)存與I/O空間的從操作。

  (3)配置合適的PCI配置空間Type00 Header寄存器。

  (4)前3個(gè)步驟完成后,所有的配置寄存器可以在PCI Image0地址范圍內(nèi)使用存儲(chǔ)器讀寫(xiě)命令進(jìn)行訪問(wèn)。而其它寄存器可配置合適的應(yīng)用。

  (5)當(dāng)配置好所有的PCI橋寄存器后,軟件便可以通過(guò)PCI從單元訪問(wèn)從設(shè)備或通過(guò)WISHBONE從接口啟用主設(shè)備來(lái)訪問(wèn)PCI總線。

  PCI-WISHBONE橋核采取中斷機(jī)制,能夠應(yīng)對(duì)不同的事件產(chǎn)生中斷,由中斷控制和中斷狀態(tài)寄存器控制中斷請(qǐng)求的產(chǎn)生。作為Guest橋時(shí),由PCI總線INTA#引腳產(chǎn)生中斷請(qǐng)求;而作為Host橋時(shí)則通過(guò)WISHBONE總線上INTA_O引腳發(fā)起中斷。中斷控制寄存器用于使能/禁止不同來(lái)源的中斷。中斷狀態(tài)寄存器用于確定中斷源,并清除中斷請(qǐng)求。

  2.3 DMA雙向傳輸狀態(tài)機(jī)優(yōu)化設(shè)計(jì)

  為了方便測(cè)試,本文使用Verilog語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)了一種規(guī)格為640×513的圖像數(shù)據(jù)源,該數(shù)據(jù)流以62.5 MHz的同步時(shí)鐘發(fā)送,由幀結(jié)束信號(hào)和圖像有效數(shù)據(jù)組成。其中單副圖像數(shù)據(jù)位寬為16,以列的形式傳輸,每幀圖像結(jié)尾增加幀結(jié)束信號(hào)標(biāo)志(第513行)。

  為了提高傳輸速率,驅(qū)動(dòng)程序需申請(qǐng)兩段可讀寫(xiě)內(nèi)存塊,將2個(gè)內(nèi)存首地址通過(guò)從模塊傳遞給FPGA,保存在寄存器中。同時(shí),當(dāng)驅(qū)動(dòng)程序檢測(cè)到PCI卡時(shí),給予合適的中斷、傳輸命令并及時(shí)回饋狀態(tài)信號(hào),這樣驅(qū)動(dòng)程序與FPGA完成交互。

  如圖4所示,根據(jù)傳輸流程定義4種狀態(tài),分別為開(kāi)始,讀操作,寫(xiě)操作以及重試。狀態(tài)機(jī)上電復(fù)位后處于Start狀態(tài),數(shù)據(jù)進(jìn)入PCI后,由狀態(tài)機(jī)分辨上位機(jī)的命令(Img_en)發(fā)起內(nèi)存讀寫(xiě)事務(wù)。此時(shí)由于PCI的傳輸速率(66 MHz)遠(yuǎn)大于圖像速率(62.5 MHz),需將數(shù)據(jù)暫存于FIFO中,等到上位機(jī)允許傳輸并緩存數(shù)據(jù)達(dá)到既定數(shù)量時(shí)(img_fifo_half),狀態(tài)機(jī)轉(zhuǎn)向讀寫(xiě)操作狀態(tài)。

圖像 005.png

圖4  主模塊狀態(tài)機(jī)示意圖

  在Read/Write狀態(tài)下,對(duì)應(yīng)的地址和數(shù)據(jù)將傳給wbm_adr_o 和wbm_dat_o信號(hào)線,傳輸完畢后進(jìn)入Retry狀態(tài)。當(dāng)主橋同PCI總線握手后,通過(guò)WISHBONE總線回饋給狀態(tài)機(jī)信號(hào)(wbs_ack_o, wbs_err_o, wbs_rty_o,分別表示傳輸成功、錯(cuò)誤和重試),從而繼續(xù)發(fā)起下一次事務(wù)或重復(fù)本次事務(wù)直至本幅圖像傳輸完畢。

  當(dāng)檢測(cè)到圖像幀結(jié)束標(biāo)志時(shí),預(yù)示著該幅圖像傳輸即將完畢,此時(shí)FPGA會(huì)產(chǎn)生一個(gè)高位信號(hào)傳至PCI接口中的INTA#引腳(中斷引腳)通知上位機(jī)。一方面驅(qū)動(dòng)程序以電平檢測(cè)方式分辨出該信號(hào),迅速清除中斷并讀取內(nèi)存空間,保存數(shù)據(jù)或顯示圖像;另一方面主模塊切換內(nèi)存首地址,進(jìn)行下一幅圖像傳輸。乒乓傳輸方式的采用,不僅提高了傳輸速率,更給驅(qū)動(dòng)程序保留處理時(shí)間。

3 實(shí)驗(yàn)驗(yàn)證

  PCI傳輸系統(tǒng)程序主要包括模擬源和PCI傳輸模塊,均使用Xilinx公司的ISE14.4軟件進(jìn)行開(kāi)發(fā),硬件仿真軟件ISIM進(jìn)行仿真。數(shù)據(jù)處理方面可將16位的模擬源數(shù)據(jù)(img_in[15:0])與累加的內(nèi)存地址進(jìn)行拼接處理后分別送入PCI主模塊中(wbm_adr_o[31:0]和wbm_dat_o[31:0])。

  Xilinx公司7系列FPGA芯片的基本邏輯單元稱(chēng)為CLB,每個(gè)CLB包含2個(gè)Slices,每個(gè)Slices由8個(gè)寄存器(Registers)和4個(gè)6輸入的查找表(LUTs)組成。該P(yáng)CI傳輸接口設(shè)計(jì)FPGA資源使用率如表1所示,寄存器、查找表使用率皆在1%~2%之間,被占用的Slice總數(shù)約占總數(shù)5%左右,而觸發(fā)器使用數(shù)量為1 713,約占總數(shù)的34%。

圖像 007.png

  表1結(jié)果表明,本設(shè)計(jì)能有效降低FPGA內(nèi)部硬件資源使用率,在各種資源利用之間達(dá)到一種平衡,從而最大限度地發(fā)揮器件的功能。

  系統(tǒng)搭建如圖5所示,驅(qū)動(dòng)程序在Windows XP操作系統(tǒng)中實(shí)現(xiàn)。由于該項(xiàng)目設(shè)計(jì)了單獨(dú)的PCB板作為模擬源輸入,每行數(shù)據(jù)為0000-027F數(shù)據(jù),經(jīng)過(guò)PCI采集后將傳輸結(jié)果以灰度圖像形式展現(xiàn),每行數(shù)據(jù)由黑到白,與輸入的模擬數(shù)據(jù)源相對(duì)應(yīng)。經(jīng)過(guò)多次的驗(yàn)證,該系統(tǒng)PCI時(shí)鐘可達(dá)66 MHz,數(shù)據(jù)穩(wěn)定,符合設(shè)計(jì)標(biāo)準(zhǔn)。

圖像 006.png

圖5  PCI系統(tǒng)框架圖

4 結(jié)論

  雙向PCI傳輸接口采用國(guó)外網(wǎng)站Open Cores開(kāi)源的PCI-WISHBONE橋核設(shè)計(jì)了DMA雙向高速傳輸接口,并實(shí)現(xiàn)了以FPGA為主處理器、主機(jī)為從處理器的圖像傳輸系統(tǒng)。該接口卡目前已應(yīng)用到三維免模板磨邊機(jī)系統(tǒng)中,進(jìn)行高速數(shù)據(jù)傳輸。實(shí)驗(yàn)發(fā)現(xiàn),設(shè)計(jì)的PCI接口卡具有傳輸速率高、配置靈活、簡(jiǎn)便、可移植性強(qiáng)等特點(diǎn),滿足項(xiàng)目高速傳輸數(shù)據(jù)的需要。

  參考文獻(xiàn)

  [1] 田小林.基于FPGA的PCI總線接口設(shè)計(jì)[J].今日電子,2004(6):60-62.

  [2] 楊軍.基于IP CORE的PCI接口設(shè)計(jì)及在數(shù)字中頻采集與處理模塊中的應(yīng)用[D].成都:電子科技大學(xué),2009.

  [3] 蘇治國(guó).PCI總線接口芯片PCI9052及其應(yīng)用[J].世界產(chǎn)品與技術(shù),2002(5):36-37.

  [4] HUANG J.Design of online pipeline ultrasonic data acquisition and storage system based on PCI Bus[C].Applied Mechanics and Materials.Trans Tech Publications,2014,651:2296-2300.

  [5] Yu Hongsong.Design of general-purpose video image process system based on Compact-PCI bus and FPGA+DSP structure[J].Chinese Journal of Liquid Crystal & Displays,2015,30(2).

  [6] 曾哲昱.用CPLD實(shí)現(xiàn)PCI總線目標(biāo)接口[J].測(cè)控技術(shù),2002(1):45-47.

  [7] 鄒戧祁.PCI總線的實(shí)現(xiàn)方案及其實(shí)例[J].電子工程師,1997(7):7-8.

  [8] 徐江豐.基于WISHBONE片上總線的PCI Bridge核的研究和應(yīng)用[J].電子設(shè)計(jì)工程,2005(4):23-26.

  [9] WISHBONE Soc Architecture Specification , Revision B.1[EB/OL].http://www.silicore.net.

  


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。