摘 要:通過對LBS控制器的控制信號、LBS總線讀寫操作時序、LBS狀態(tài)機進行分析,設(shè)計并實現(xiàn)了一個高效、可靠的LBS控制器來實現(xiàn)FPGA和PEX8311的通信系統(tǒng),在PEX8311和FPGA接口中運行狀態(tài)正常,穩(wěn)定性強,成功應(yīng)用于某視頻采集卡、某PCIe數(shù)據(jù)采集卡等,基于FPGA設(shè)計的LBS控制器具有靈活性強、可編程能力強、適應(yīng)性強等優(yōu)點。
關(guān)鍵詞:FPGA; PCIe; PEX8311; LBS; 狀態(tài)機
中圖分類號:
TN914-34
文獻標識碼:A
文章編號:1004-373X(2011)19
-0097
-03
Implementation of LBS Controller of PEX8311 Based on FPGA
LIU Duo
(College of Communication and Information Engineering, Xi’an University of Science and Technology, Xi’an 710054, China)
Abstract: Through analyzing the control signal of LBS controller, reading and writing operation sequence of LBS bus and LBS state machine, an efficient, reliable LBS controller is designed to achieve the communication between FPGA and PEX8311. It has high stability and normal state running in FPGA interface and PEX8311, which is successfully used in some video capture card and PCIe card. The FPGA-based LBS controller has features of flexibility, programmable ability, adaptability, etc.
Keywords: FPGA; PCIe; PEX8311; LBS; state machine
收稿日期:2011-04-20
0 引 言
PLX的一款橋芯片PEX8311可將標準處理器、DSP和FPGA總線接口升級為PCI Express(PCIe)。PEX8311單道PCIe至32位、66 MHz通用局部總線橋可在兩種標準間轉(zhuǎn)換協(xié)議,它可用于通訊線路卡、監(jiān)視系統(tǒng)、工業(yè)控制、IP媒體服務(wù)器和醫(yī)療成像系統(tǒng),以實現(xiàn)可升級的高帶寬互聯(lián)。采用根聯(lián)合體或終端點的PCI嵌入式系統(tǒng)設(shè)計可采用PEX8311橋芯片移植到PCIe。本文就是基于PEX8311和FPGA來實現(xiàn)PCIe標準1x傳輸。
1 系統(tǒng)介紹
FPGA和PEX8311之間通過LBS(LocalBus)來連接、發(fā)送和接收命令及數(shù)據(jù),其中FPGA主要控制LBS的運行,本文通過設(shè)計一個高效、可靠的LBS控制器來實現(xiàn)FPGA和PEX8311的通信。如圖1所示。
本系統(tǒng)的控制的核心是LBS控制器,該控制器是通過FPGA采用VerilogHDL實現(xiàn)的,其優(yōu)點是穩(wěn)定性強、不會造成死機,避免了常規(guī)的PCI,PCIe板卡類經(jīng)常死機的問題,其次是傳輸速率高,充分利用LBS的時序,減少無用的等待時間。
圖1 系統(tǒng)拓撲
FPGA采用Altera公司的Cyclone3系列的3C120款FPGA芯片。Cyclone3是功耗最低、成本最低的高性能FPGA產(chǎn)品,鑒于上述特點本設(shè)計采用它來實現(xiàn)PCIe的傳輸功能。
PEX8311是PLX公司的一款x1的PCI Express接口芯片,本地端總線頻率最高可達66 MHz,數(shù)據(jù)位寬為32 b。PEX8311有主模式、從模式和DMA三種數(shù)據(jù)傳輸模式,可靈活、方便地與各CPU,F(xiàn)PGA和ASIC無縫連接,實現(xiàn)高速傳輸。
2 LBS控制器設(shè)計
2.1 控制信號介紹
Hold信號:請求控制總線的信號,F(xiàn)PGA向PEX8311發(fā)出控制總線的請求。
Holda信號:PEX8311響應(yīng)FPGA請求的信號。
LCLK信號:時鐘輸入信號。
ADS信號:地址選通信號。
BLAST信號:最后一個數(shù)據(jù)的同步信號。
LA[31:2]信號:地址線。
LD[31:0]信號:數(shù)據(jù)線。
LW/R信號:讀寫控制。
Ready信號:數(shù)據(jù)有效信號。
2.2 LBS總線讀寫操作時序介紹
LBS總線操作有單次讀寫和Burst讀寫方式,本設(shè)計中采用單次讀寫設(shè)計用來傳輸FPGA內(nèi)部的寄存器讀寫控制,這些寄存器是用于配置各邏輯模塊的功能控制,通過CPU或軟件來實時控制;Burst讀寫方式主要用于大批量數(shù)據(jù)傳輸,本文中主要是傳輸高速的DDR數(shù)據(jù),利用Burst傳輸方式可以實現(xiàn)高速自動大容量數(shù)據(jù)傳輸,充分利用LBS的傳輸帶寬,提高傳輸效率。
2.3 PEX8311芯片介紹
PEX8311芯片的LBS端具有32位數(shù)據(jù)總線寬度和66 MHz時鐘頻率,PEX8311支持三種LBS總線接口模式:C模式,J模式和M模式,可方便地與多種微處理器連接。接口模式由MODE0和MODE1兩管腳確定。本設(shè)計采用時序邏輯相對簡單的C模式,即非復用的地址/數(shù)據(jù)總線模式。PEX8311支持三種局部總線數(shù)據(jù)傳輸模式:單周期模式、四周期突發(fā)模式、連續(xù)突發(fā)模式。
DMA傳輸數(shù)據(jù)使傳輸任務(wù)從主控設(shè)備中解脫出來,由短且有效的傳輸描述符來承擔,讓主控設(shè)備可以有時間去處理其他事件。PEX8311有兩個DMA通道,可以同時處理兩側(cè)總線上要求的傳輸,免去外部設(shè)備的等待。另外,DMA傳輸可以與主模式和從模式傳輸同步操作,但后兩者比DMA傳輸優(yōu)先級高??紤]到DMA傳輸有以上優(yōu)點,本設(shè)計中PCI Express接口部分采用連續(xù)突發(fā)模式DMA塊傳輸模式,LBS總線接口采用C模式。
2.4 LBS狀態(tài)機設(shè)計
LBS共設(shè)計有4個狀態(tài):IDLE,START,DO,BUSY。其狀態(tài)轉(zhuǎn)移圖如圖2所示。
IDLE:空閑狀態(tài)。
START:當ADS地址選通有效時進入此狀態(tài),進行地址空間判斷。
DO:當?shù)刂房臻g有效,并且傳輸條件滿足時進入傳輸狀態(tài),每個時鐘判斷條件,當條件滿足時繼續(xù)該狀態(tài),當條件不滿足時,進入BUSY等待狀態(tài),傳輸結(jié)束(BLAST有效)進入IDLE狀態(tài)。
BUSY:當數(shù)據(jù)沒準備好時,在BUSY狀態(tài)等待,當數(shù)據(jù)準備好后進入DO狀態(tài),當超時后進入IDLE狀態(tài),實時退出。
圖2 LBS狀態(tài)轉(zhuǎn)移圖
2.5 LBS狀態(tài)機工作流程
FPGA作為LBS的邏輯控制器,負責協(xié)調(diào)好與DDR_FIFO數(shù)據(jù)和PEX8311之間的時序關(guān)系。系統(tǒng)接收數(shù)據(jù)時,首先由驅(qū)動程序向PEX8311發(fā)送復位信號,通過LRESET復位LBS本地端的FPGA,清空FPGA內(nèi)部DDR_FIFO內(nèi)部數(shù)據(jù),并將HF和FF標志置為無效,然后等待數(shù)據(jù)的輸入。FPGA讀入DDR數(shù)據(jù)后,首先將DDR數(shù)據(jù)寫入DDR_FIFO中,當DDR_FIFO中的數(shù)據(jù)達到半滿狀態(tài)時,HF標志位有效,通過FPGA向PEX8311發(fā)出DMA中斷請求。PC機響應(yīng)中斷后,設(shè)置DMA傳輸模式,傳輸字節(jié)數(shù)及地址信號等。PEX8311通過LHOLD申請控制本地總線,此時FPGA發(fā)出的LHOLDA響應(yīng)信號后獲得本地總線的控制權(quán),并立即進入連續(xù)字節(jié)突發(fā)模式的Block DMA周期即由IDLE狀態(tài)到START狀態(tài)。FPGA在收到有效的LW/R讀信號和ADS地址選通信號后,進入DO狀態(tài),同時發(fā)出Ready本地準備好應(yīng)答信號,使能DDR_FIFO的讀允許REN和輸出允許OE。在傳輸最后一個數(shù)據(jù)時,PEX8311發(fā)出BLAST信號,F(xiàn)PGA配置DDR_FIFO讀使能和輸出使能無效,并取消Ready從而結(jié)束DMA周期。PC系統(tǒng)發(fā)送數(shù)據(jù)時,F(xiàn)PGA將計算機通過PCIe傳過來的LBS數(shù)據(jù)寫入PC_FIFO中,再輸出寫入到DDR中。
2.6 LBS狀態(tài)機核心編碼設(shè)計
按照上述4個狀態(tài)進行Verilog設(shè)計,經(jīng)過仿真和上板調(diào)試,效果很好,下面是狀態(tài)機設(shè)計程序,仿真時序圖如圖3,圖4所示。
3 結(jié) 語
本文設(shè)計的LBS控制器應(yīng)用在PEX8311和FPGA接口中運行狀態(tài)正常,穩(wěn)定性強,已成功應(yīng)用于某視頻采集卡、某PCIe數(shù)據(jù)采集卡,經(jīng)過實踐證明,基于FPGA設(shè)計的LBS控制器具有靈活性強、可編程能力強、適應(yīng)性強等優(yōu)點,能迅速縮短產(chǎn)品上市時間、快速響應(yīng)客戶需求,滿足市場需要。
參 考 文 獻
[1]王金明.VerilogHDL程序設(shè)計教程[M].北京:人民郵電出版社,2004.
[2]王齊.PCIe體系結(jié)構(gòu)導讀[M]. 北京:機械工業(yè)出版社,2010.
[3]王傳新.FPGA設(shè)計基礎(chǔ)[M].北京:高等教育出版社,2007.
[4]王誠,吳繼華.Altera FPGA/CPLD設(shè)計[M].北京:人民郵電出版社,2005.
[5]沈輝,張萍.FPGA在PCI Express總線接口中的應(yīng)用\\.現(xiàn)代電子技術(shù),2010,33(14):109-111.
[6]李丹,賀占莊,李灝.PCI Express總線接口板的設(shè)計與實現(xiàn)\\.現(xiàn)代電子技術(shù),2009,32(4):158-161.