摘 要:通過對LBS控制器的控制信號、LBS總線讀寫操作時序、LBS狀態機進行分析,設計并實現了一個高效、可靠的LBS控制器來實現FPGA和PEX8311的通信系統,在PEX8311和FPGA接口中運行狀態正常,穩定性強,成功應用于某視頻采集卡、某PCIe數據采集卡等,基于FPGA設計的LBS控制器具有靈活性強、可編程能力強、適應性強等優點。
關鍵詞:FPGA; PCIe; PEX8311; LBS; 狀態機
中圖分類號:
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通用局部總線橋可在兩種標準間轉換協議,它可用于通訊線路卡、監視系統、工業控制、IP媒體服務器和醫療成像系統,以實現可升級的高帶寬互聯。采用根聯合體或終端點的PCI嵌入式系統設計可采用PEX8311橋芯片移植到PCIe。本文就是基于PEX8311和FPGA來實現PCIe標準1x傳輸。
1 系統介紹
FPGA和PEX8311之間通過LBS(LocalBus)來連接、發送和接收命令及數據,其中FPGA主要控制LBS的運行,本文通過設計一個高效、可靠的LBS控制器來實現FPGA和PEX8311的通信。如圖1所示。
本系統的控制的核心是LBS控制器,該控制器是通過FPGA采用VerilogHDL實現的,其優點是穩定性強、不會造成死機,避免了常規的PCI,PCIe板卡類經常死機的問題,其次是傳輸速率高,充分利用LBS的時序,減少無用的等待時間。
圖1 系統拓撲
FPGA采用Altera公司的Cyclone3系列的3C120款FPGA芯片。Cyclone3是功耗最低、成本最低的高性能FPGA產品,鑒于上述特點本設計采用它來實現PCIe的傳輸功能。
PEX8311是PLX公司的一款x1的PCI Express接口芯片,本地端總線頻率最高可達66 MHz,數據位寬為32 b。PEX8311有主模式、從模式和DMA三種數據傳輸模式,可靈活、方便地與各CPU,FPGA和ASIC無縫連接,實現高速傳輸。
2 LBS控制器設計
2.1 控制信號介紹
Hold信號:請求控制總線的信號,FPGA向PEX8311發出控制總線的請求。
Holda信號:PEX8311響應FPGA請求的信號。
LCLK信號:時鐘輸入信號。
ADS信號:地址選通信號。
BLAST信號:最后一個數據的同步信號。
LA[31:2]信號:地址線。
LD[31:0]信號:數據線。
LW/R信號:讀寫控制。
Ready信號:數據有效信號。
2.2 LBS總線讀寫操作時序介紹
LBS總線操作有單次讀寫和Burst讀寫方式,本設計中采用單次讀寫設計用來傳輸FPGA內部的寄存器讀寫控制,這些寄存器是用于配置各邏輯模塊的功能控制,通過CPU或軟件來實時控制;Burst讀寫方式主要用于大批量數據傳輸,本文中主要是傳輸高速的DDR數據,利用Burst傳輸方式可以實現高速自動大容量數據傳輸,充分利用LBS的傳輸帶寬,提高傳輸效率。
2.3 PEX8311芯片介紹
PEX8311芯片的LBS端具有32位數據總線寬度和66 MHz時鐘頻率,PEX8311支持三種LBS總線接口模式:C模式,J模式和M模式,可方便地與多種微處理器連接。接口模式由MODE0和MODE1兩管腳確定。本設計采用時序邏輯相對簡單的C模式,即非復用的地址/數據總線模式。PEX8311支持三種局部總線數據傳輸模式:單周期模式、四周期突發模式、連續突發模式。
DMA傳輸數據使傳輸任務從主控設備中解脫出來,由短且有效的傳輸描述符來承擔,讓主控設備可以有時間去處理其他事件。PEX8311有兩個DMA通道,可以同時處理兩側總線上要求的傳輸,免去外部設備的等待。另外,DMA傳輸可以與主模式和從模式傳輸同步操作,但后兩者比DMA傳輸優先級高。考慮到DMA傳輸有以上優點,本設計中PCI Express接口部分采用連續突發模式DMA塊傳輸模式,LBS總線接口采用C模式。
2.4 LBS狀態機設計
LBS共設計有4個狀態:IDLE,START,DO,BUSY。其狀態轉移圖如圖2所示。
IDLE:空閑狀態。
START:當ADS地址選通有效時進入此狀態,進行地址空間判斷。
DO:當地址空間有效,并且傳輸條件滿足時進入傳輸狀態,每個時鐘判斷條件,當條件滿足時繼續該狀態,當條件不滿足時,進入BUSY等待狀態,傳輸結束(BLAST有效)進入IDLE狀態。
BUSY:當數據沒準備好時,在BUSY狀態等待,當數據準備好后進入DO狀態,當超時后進入IDLE狀態,實時退出。
圖2 LBS狀態轉移圖
2.5 LBS狀態機工作流程
FPGA作為LBS的邏輯控制器,負責協調好與DDR_FIFO數據和PEX8311之間的時序關系。系統接收數據時,首先由驅動程序向PEX8311發送復位信號,通過LRESET復位LBS本地端的FPGA,清空FPGA內部DDR_FIFO內部數據,并將HF和FF標志置為無效,然后等待數據的輸入。FPGA讀入DDR數據后,首先將DDR數據寫入DDR_FIFO中,當DDR_FIFO中的數據達到半滿狀態時,HF標志位有效,通過FPGA向PEX8311發出DMA中斷請求。PC機響應中斷后,設置DMA傳輸模式,傳輸字節數及地址信號等。PEX8311通過LHOLD申請控制本地總線,此時FPGA發出的LHOLDA響應信號后獲得本地總線的控制權,并立即進入連續字節突發模式的Block DMA周期即由IDLE狀態到START狀態。FPGA在收到有效的LW/R讀信號和ADS地址選通信號后,進入DO狀態,同時發出Ready本地準備好應答信號,使能DDR_FIFO的讀允許REN和輸出允許OE。在傳輸最后一個數據時,PEX8311發出BLAST信號,FPGA配置DDR_FIFO讀使能和輸出使能無效,并取消Ready從而結束DMA周期。PC系統發送數據時,FPGA將計算機通過PCIe傳過來的LBS數據寫入PC_FIFO中,再輸出寫入到DDR中。
2.6 LBS狀態機核心編碼設計
按照上述4個狀態進行Verilog設計,經過仿真和上板調試,效果很好,下面是狀態機設計程序,仿真時序圖如圖3,圖4所示。
3 結 語
本文設計的LBS控制器應用在PEX8311和FPGA接口中運行狀態正常,穩定性強,已成功應用于某視頻采集卡、某PCIe數據采集卡,經過實踐證明,基于FPGA設計的LBS控制器具有靈活性強、可編程能力強、適應性強等優點,能迅速縮短產品上市時間、快速響應客戶需求,滿足市場需要。
參 考 文 獻
[1]王金明.VerilogHDL程序設計教程[M].北京:人民郵電出版社,2004.
[2]王齊.PCIe體系結構導讀[M]. 北京:機械工業出版社,2010.
[3]王傳新.FPGA設計基礎[M].北京:高等教育出版社,2007.
[4]王誠,吳繼華.Altera FPGA/CPLD設計[M].北京:人民郵電出版社,2005.
[5]沈輝,張萍.FPGA在PCI Express總線接口中的應用\\.現代電子技術,2010,33(14):109-111.
[6]李丹,賀占莊,李灝.PCI Express總線接口板的設計與實現\\.現代電子技術,2009,32(4):158-161.