文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.08.018
中文引用格式: 梁燁,簡獻忠,,肖兒良,等. 基于WISHBONE總線的雙向PCI高速傳輸接口設(shè)計[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.
0 引言
PCI總線是目前推出的一款高性能局部總線[1],能同時滿足高數(shù)據(jù)傳輸和高功率輸出,,是中頻數(shù)據(jù)采集與處理模塊的理想總線接口[2],。PCI 局部總線不受制于處理器,為中央處理器及高速外圍設(shè)備提供了一座橋梁[3],,用戶可將高速外設(shè)通過局部總線直接掛接到 CPU總線上,,使其與之匹配,從而打破了數(shù)據(jù)傳輸?shù)钠款i,,使高性能 CPU 的功能得以充分發(fā)揮,。
PCI總線接口的設(shè)計思路總體上可分為兩種方法,一是采用專門的接口芯片,,二是采用可編程邏輯器件[4-5],。這兩種方法在不同角度皆有利弊。
文獻[6]提出專用芯片可以將復(fù)雜的總線接口轉(zhuǎn)換為相對簡單的用戶接口,。用戶可集中精力于應(yīng)用設(shè)計,,而不是調(diào)試PCI接口。但這種方式造成了一定的資源浪費,,缺少靈活性,。為了解決這些弊端,文獻[7]提出采用Xilinx、Altera以及Atmel等公司的可編程邏輯器件IP核實現(xiàn)PCI總線接口,。最常用的IP核是Altera公司的PCI MegaCore和Xilinx公司的PCI LogiCore,,但采取這兩種IP核的費用不菲,且主模式設(shè)計難度較高,,讓大多數(shù)研究人員望而卻步,。文獻[8]論述了PCI主橋的的應(yīng)用和WISHBONE片上總線技術(shù),提出了使用單片機和FPGA架構(gòu)實現(xiàn)基于PCI Bridge核的被動模式的PCI系統(tǒng),。
本文針對兩種方式的不足,,在文獻[8]的基礎(chǔ)上,針對WISHBONE總線特點及國外開放IP組織Open Cores網(wǎng)站免費提供的開源PCI-WISHBONE橋核,,優(yōu)化該IP核主傳輸模塊狀態(tài)機程序,,僅使用一片可編程邏輯器件嵌入用戶程序,將時鐘頻率提至66 MHz,,首次實現(xiàn)了一種以高速DMA方式傳輸,、主從共模的PCI接口設(shè)計。
1 PCI總線與PCI-WISHBONE橋核
1.1 PCI總線
PCI總線是同步傳輸協(xié)議,,所有PCI操作均同步于時鐘,。總線時鐘有33 MHz,、66 MHz兩種頻率,,位寬分為32 bit和64 bit兩種,最大傳輸速率為264 MB,。系統(tǒng)中 PCI總線的最大帶寬可達:66×106×32=2.112 Gb/s,。
重要的是,PCI可以支持一種名為線性突發(fā)的數(shù)據(jù)傳輸模式,,可確??偩€不斷滿載數(shù)據(jù)。這種線性的或順序的尋址方式,,意味著可以由一個地址起讀寫大量數(shù)據(jù),,然后每次只須將地址自動加1,便可接收數(shù)據(jù)流內(nèi)下一個字節(jié)的數(shù)據(jù),。線性突發(fā)傳輸能更有效地動用總線的頻帶寬傳輸數(shù)據(jù),,減少無謂的尋址操作。同時,,PCI對總線主控及同步操作的支持有助于改善PCI的性能,,即可將任何一個具有處理功能的外圍設(shè)備暫時接管總線,以加速執(zhí)行高吞吐量,、高優(yōu)先次序的任務(wù),。PCI獨特的同步操作功能可確保CPU能與這些總線同步操作,,毋須等待后者完成任務(wù),。
1.2 PCI-WISHBONE橋核
PCI-WISHBONE IP核提供了一個PCI總線和WISH-
BONE總線之間的接口,,兼容PCI 2.2協(xié)議,支持WISHBONE SoC互聯(lián)協(xié)議B版本,。它適用于32位PCI 接口,,包含獨立的主橋、從橋功能模塊,,支持啟動程序與目標命令功能,,例如存儲器讀寫、I/O讀寫,、中斷應(yīng)答等操作,。
如圖1、圖2所示,,PCI-WISHBONE橋核包括2個單元:PCI 主單元和從單元,,每一個單元都擁有自己的一套功能支持橋接操作。例如圖1,,PCI 主單元與WISHBONE主單元共同處理WISHBONE總線起動的交易,。首先,由WISHBONE從接口發(fā)起信號占用PCI總線,,若PCI總線響應(yīng)成功,,WISHBONE接口將傳輸數(shù)據(jù),地址以及命令經(jīng)由FIFO,,通過PCI接口傳至PC機內(nèi)存空間,。 圖2為PCI從模式機制,主要處理由上位機啟動的事務(wù),,同上述主模式基本一致,,此處不再敘述。
圖1 PCI主單元結(jié)構(gòu)
圖2 PCI從單元結(jié)構(gòu)
2 PCI高速傳輸接口設(shè)計
2.1 硬件架構(gòu)設(shè)計
本文設(shè)計的雙向高速數(shù)據(jù)傳輸系統(tǒng)基于FPGA平臺,,以開源的PCI-WISHBONE軟核為核心搭建串行通信接口平臺,,使其成為PCI總線與用戶邏輯之間的橋梁,避開復(fù)雜的PCI總線協(xié)議,。其采用Xilinx公司的XC7A200T-2FFG1156 主芯片作為硬件核心,,結(jié)合基于WinDriver的驅(qū)動程序,采取規(guī)格為640×512的圖像作為模擬數(shù)據(jù)源,,以乒乓方式輪流讀寫主機內(nèi)存,,實現(xiàn)了高速圖像數(shù)據(jù)的雙向傳輸。
在硬件方面,,根據(jù)PCI總線規(guī)范2.2版,,當PCI接口引腳M66EN是高電平時,,總線時鐘頻率可控制在33 MHz~66 MHz范圍內(nèi),反之為0~33 MHz,。該模塊設(shè)計原理圖如圖3所示,,用戶可使用跳線帽自由控制PCI總線時鐘頻率。當引腳2與1相接時,,總線時鐘頻率高達66 MHz,。
圖3 PCI總線時鐘模塊原理圖
2.2 PCI-WISHBONE橋核主模式傳輸設(shè)計
PCI-WISHBONE橋核內(nèi)置功能接口允許用戶端訪問PCI總線,用戶可將其設(shè)計為主模式傳輸方式,,設(shè)計方案如下:
pci_constants,、bus_commands和pci_user_constants是橋核可外部修改的3個配置文件。用戶可將其設(shè)置成客戶端應(yīng)用(Guest)與主端應(yīng)用(Host),。本文設(shè)計采用Guest模式,,支持PCI總線的主機系統(tǒng)連接。在接通電源時,,該設(shè)備獨立軟件掃描主機系統(tǒng)中任何連接PCI插槽的設(shè)備,,主機系統(tǒng)進行配置周期,PCI橋和連接到主機系統(tǒng)的所有其他PCI設(shè)備在上電復(fù)位后響應(yīng),。下面的步驟必須以正確的順序來執(zhí)行,,以確保適當?shù)腜CI橋的操作:
(1)配置所有PCI基地址寄存器。
(2)啟用PCI主操作和響應(yīng)內(nèi)存與I/O空間的從操作,。
(3)配置合適的PCI配置空間Type00 Header寄存器,。
(4)前3個步驟完成后,所有的配置寄存器可以在PCI Image0地址范圍內(nèi)使用存儲器讀寫命令進行訪問,。而其它寄存器可配置合適的應(yīng)用,。
(5)當配置好所有的PCI橋寄存器后,軟件便可以通過PCI從單元訪問從設(shè)備或通過WISHBONE從接口啟用主設(shè)備來訪問PCI總線,。
PCI-WISHBONE橋核采取中斷機制,,能夠應(yīng)對不同的事件產(chǎn)生中斷,由中斷控制和中斷狀態(tài)寄存器控制中斷請求的產(chǎn)生,。作為Guest橋時,,由PCI總線INTA#引腳產(chǎn)生中斷請求;而作為Host橋時則通過WISHBONE總線上INTA_O引腳發(fā)起中斷,。中斷控制寄存器用于使能/禁止不同來源的中斷,。中斷狀態(tài)寄存器用于確定中斷源,并清除中斷請求,。
2.3 DMA雙向傳輸狀態(tài)機優(yōu)化設(shè)計
為了方便測試,,本文使用Verilog語言設(shè)計實現(xiàn)了一種規(guī)格為640×513的圖像數(shù)據(jù)源,該數(shù)據(jù)流以62.5 MHz的同步時鐘發(fā)送,,由幀結(jié)束信號和圖像有效數(shù)據(jù)組成,。其中單副圖像數(shù)據(jù)位寬為16,,以列的形式傳輸,每幀圖像結(jié)尾增加幀結(jié)束信號標志(第513行),。
為了提高傳輸速率,,驅(qū)動程序需申請兩段可讀寫內(nèi)存塊,將2個內(nèi)存首地址通過從模塊傳遞給FPGA,,保存在寄存器中,。同時,當驅(qū)動程序檢測到PCI卡時,,給予合適的中斷、傳輸命令并及時回饋狀態(tài)信號,,這樣驅(qū)動程序與FPGA完成交互,。
如圖4所示,根據(jù)傳輸流程定義4種狀態(tài),,分別為開始,,讀操作,寫操作以及重試,。狀態(tài)機上電復(fù)位后處于Start狀態(tài),,數(shù)據(jù)進入PCI后,由狀態(tài)機分辨上位機的命令(Img_en)發(fā)起內(nèi)存讀寫事務(wù),。此時由于PCI的傳輸速率(66 MHz)遠大于圖像速率(62.5 MHz),,需將數(shù)據(jù)暫存于FIFO中,等到上位機允許傳輸并緩存數(shù)據(jù)達到既定數(shù)量時(img_fifo_half),,狀態(tài)機轉(zhuǎn)向讀寫操作狀態(tài),。
圖4 主模塊狀態(tài)機示意圖
在Read/Write狀態(tài)下,對應(yīng)的地址和數(shù)據(jù)將傳給wbm_adr_o 和wbm_dat_o信號線,,傳輸完畢后進入Retry狀態(tài),。當主橋同PCI總線握手后,通過WISHBONE總線回饋給狀態(tài)機信號(wbs_ack_o, wbs_err_o, wbs_rty_o,,分別表示傳輸成功,、錯誤和重試),從而繼續(xù)發(fā)起下一次事務(wù)或重復(fù)本次事務(wù)直至本幅圖像傳輸完畢,。
當檢測到圖像幀結(jié)束標志時,,預(yù)示著該幅圖像傳輸即將完畢,此時FPGA會產(chǎn)生一個高位信號傳至PCI接口中的INTA#引腳(中斷引腳)通知上位機,。一方面驅(qū)動程序以電平檢測方式分辨出該信號,,迅速清除中斷并讀取內(nèi)存空間,保存數(shù)據(jù)或顯示圖像,;另一方面主模塊切換內(nèi)存首地址,,進行下一幅圖像傳輸,。乒乓傳輸方式的采用,不僅提高了傳輸速率,,更給驅(qū)動程序保留處理時間,。
3 實驗驗證
PCI傳輸系統(tǒng)程序主要包括模擬源和PCI傳輸模塊,均使用Xilinx公司的ISE14.4軟件進行開發(fā),,硬件仿真軟件ISIM進行仿真,。數(shù)據(jù)處理方面可將16位的模擬源數(shù)據(jù)(img_in[15:0])與累加的內(nèi)存地址進行拼接處理后分別送入PCI主模塊中(wbm_adr_o[31:0]和wbm_dat_o[31:0])。
Xilinx公司7系列FPGA芯片的基本邏輯單元稱為CLB,,每個CLB包含2個Slices,,每個Slices由8個寄存器(Registers)和4個6輸入的查找表(LUTs)組成。該PCI傳輸接口設(shè)計FPGA資源使用率如表1所示,,寄存器,、查找表使用率皆在1%~2%之間,被占用的Slice總數(shù)約占總數(shù)5%左右,,而觸發(fā)器使用數(shù)量為1 713,,約占總數(shù)的34%。
表1結(jié)果表明,,本設(shè)計能有效降低FPGA內(nèi)部硬件資源使用率,,在各種資源利用之間達到一種平衡,從而最大限度地發(fā)揮器件的功能,。
系統(tǒng)搭建如圖5所示,,驅(qū)動程序在Windows XP操作系統(tǒng)中實現(xiàn)。由于該項目設(shè)計了單獨的PCB板作為模擬源輸入,,每行數(shù)據(jù)為0000-027F數(shù)據(jù),,經(jīng)過PCI采集后將傳輸結(jié)果以灰度圖像形式展現(xiàn),每行數(shù)據(jù)由黑到白,,與輸入的模擬數(shù)據(jù)源相對應(yīng),。經(jīng)過多次的驗證,該系統(tǒng)PCI時鐘可達66 MHz,,數(shù)據(jù)穩(wěn)定,,符合設(shè)計標準。
圖5 PCI系統(tǒng)框架圖
4 結(jié)論
雙向PCI傳輸接口采用國外網(wǎng)站Open Cores開源的PCI-WISHBONE橋核設(shè)計了DMA雙向高速傳輸接口,,并實現(xiàn)了以FPGA為主處理器,、主機為從處理器的圖像傳輸系統(tǒng)。該接口卡目前已應(yīng)用到三維免模板磨邊機系統(tǒng)中,,進行高速數(shù)據(jù)傳輸,。實驗發(fā)現(xiàn),設(shè)計的PCI接口卡具有傳輸速率高,、配置靈活,、簡便,、可移植性強等特點,滿足項目高速傳輸數(shù)據(jù)的需要,。
參考文獻
[1] 田小林.基于FPGA的PCI總線接口設(shè)計[J].今日電子,,2004(6):60-62.
[2] 楊軍.基于IP CORE的PCI接口設(shè)計及在數(shù)字中頻采集與處理模塊中的應(yīng)用[D].成都:電子科技大學(xué),2009.
[3] 蘇治國.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實現(xiàn)PCI總線目標接口[J].測控技術(shù),2002(1):45-47.
[7] 鄒戧祁.PCI總線的實現(xiàn)方案及其實例[J].電子工程師,,1997(7):7-8.
[8] 徐江豐.基于WISHBONE片上總線的PCI Bridge核的研究和應(yīng)用[J].電子設(shè)計工程,,2005(4):23-26.
[9] WISHBONE Soc Architecture Specification , Revision B.1[EB/OL].http://www.silicore.net.