基于FPGA的LBS控制器設計
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實現的,其優點是穩定性強、不會造成死機,避免了常規的PC I,PCIe板卡類經常死機的問題,其次是傳輸速率高,充分利用LBS的時序,減少無用的等待時間。
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模式,即非復用的地址/數據總線模式。PEX8 311支持三種局部總線數據傳輸模式:單周期模式、四周期突發模式、連續突發模式。
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.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控制器具有靈活性強、可編程能力強、適應性強等優點,能迅速縮短產品上市時間、快速響應客戶需求,滿足市場需要。
評論