基于FPGA的LBS控制器設(shè)計(jì)
0 引言
PLX的一款橋芯片PEX8311可將標(biāo)準(zhǔn)處理器、DSP和FPGA總線接口升級(jí)為PCI Express(PCIe)。PEX8311單道PCIe至32位、66 MHz通用局部總線橋可在兩種標(biāo)準(zhǔn)間轉(zhuǎn)換協(xié)議,它可用于通訊線路卡、監(jiān)視系統(tǒng)、工業(yè)控制、IP媒體服務(wù)器和醫(yī)療成像系統(tǒng),以實(shí)現(xiàn)可升級(jí)的高帶寬互聯(lián)。采用根聯(lián)合體或終端點(diǎn)的PCI嵌入式系統(tǒng)設(shè)計(jì)可采用PEX8311橋芯片移植到PCIe。本文就是基于PEX8311和FPGA來(lái)實(shí)現(xiàn)PCIe標(biāo)準(zhǔn)1x傳輸。
1 系統(tǒng)介紹
FPGA和PEX8311之間通過(guò)LBS(LocalBus)來(lái)連接、發(fā)送和接收命令及數(shù)據(jù),其中FPGA主要控制LBS的運(yùn)行,本文通過(guò)設(shè)計(jì)一個(gè)高效、可靠的LBS控制器來(lái)實(shí)現(xiàn)FPGA和PEX8311的通信。如圖1所示。
本系統(tǒng)的控制的核心是LBS控制器,該控制器是通過(guò)FPGA采用VerilogHDL實(shí)現(xiàn)的,其優(yōu)點(diǎn)是穩(wěn)定性強(qiáng)、不會(huì)造成死機(jī),避免了常規(guī)的PC I,PCIe板卡類(lèi)經(jīng)常死機(jī)的問(wèn)題,其次是傳輸速率高,充分利用LBS的時(shí)序,減少無(wú)用的等待時(shí)間。
FPGA采用Altera公司的Cyclone3系列的3C120款FPGA芯片。Cyclone3是功耗最低、成本最低的高性能FPGA產(chǎn)品,鑒于上述特點(diǎn)本設(shè)計(jì)采用它來(lái)實(shí)現(xiàn)PCIe的傳輸功能。
PEX8311是PLX公司的一款x1的PCI Express接口芯片,本地端總線頻率最高可達(dá)66 MHz,數(shù)據(jù)位寬為32 b。PEX8311有主模式、從模式和DMA三種數(shù)據(jù)傳輸模式,可靈活、方便地與各CPU,F(xiàn)PGA和ASIC無(wú)縫連接,實(shí)現(xiàn)高速傳輸。
2 LBS控制器設(shè)計(jì)
2.1 控制信號(hào)介紹
Hold信號(hào):請(qǐng)求控制總線的信號(hào),F(xiàn)PGA向PEX8311發(fā)出控制總線的請(qǐng)求。
Holda信號(hào):PEX8311響應(yīng)FPGA請(qǐng)求的信號(hào)。
LCLK信號(hào):時(shí)鐘輸入信號(hào)。
ADS信號(hào):地址選通信號(hào)。
BLAST信號(hào):最后一個(gè)數(shù)據(jù)的同步信號(hào)。
LA[31:2]信號(hào):地址線。
LD[31:0]信號(hào):數(shù)據(jù)線。
LW/R信號(hào):讀寫(xiě)控制。
Ready信號(hào):數(shù)據(jù)有效信號(hào)。
2.2 LBS總線讀寫(xiě)操作時(shí)序介紹
LBS總線操作有單次讀寫(xiě)和Burst讀寫(xiě)方式,本設(shè)計(jì)中采用單次讀寫(xiě)設(shè)計(jì)用來(lái)傳輸FPGA內(nèi)部的寄存器讀寫(xiě)控制,這些寄存器是用于配置各邏輯模塊的功能控制,通過(guò)CPU或軟件來(lái)實(shí)時(shí)控制;Burst讀寫(xiě)方式主要用于大批量數(shù)據(jù)傳輸,本文中主要是傳輸高速的DDR數(shù)據(jù),利用Burst傳輸方式可以實(shí)現(xiàn)高速自動(dòng)大容量數(shù)據(jù)傳輸,充分利用LBS的傳輸帶寬,提高傳輸效率。
2.3 PEX8311芯片介紹
PEX8311芯片的LBS端具有32位數(shù)據(jù)總線寬度和66 MHz時(shí)鐘頻率,PEX8311支持三種LBS總線接口模式:C模式,J模式和M模式,可方便地與多種微處理器連接。接口模式由MODE0和MODE1兩管腳確定。本設(shè)計(jì)采用時(shí)序邏輯相對(duì)簡(jiǎn)單的C模式,即非復(fù)用的地址/數(shù)據(jù)總線模式。PEX8 311支持三種局部總線數(shù)據(jù)傳輸模式:?jiǎn)沃芷谀J?、四周期突發(fā)模式、連續(xù)突發(fā)模式。
DMA傳輸數(shù)據(jù)使傳輸任務(wù)從主控設(shè)備中解脫出來(lái),由短且有效的傳輸描述符來(lái)承擔(dān),讓主控設(shè)備可以有時(shí)間去處理其他事件。PEX8311有兩個(gè)DMA通道,可以同時(shí)處理兩側(cè)總線上要求的傳輸,免去外部設(shè)備的等待。另外,DMA傳輸可以與主模式和從模式傳輸同步操作,但后兩者比DMA傳輸優(yōu)先級(jí)高??紤]到DMA傳輸有以上優(yōu)點(diǎn),本設(shè)計(jì)中PCI Express接口部分采用連續(xù)突發(fā)模式DMA塊傳輸模式,LBS總線接口采用C模式。
2.4 LBS狀態(tài)機(jī)設(shè)計(jì)
LBS共設(shè)計(jì)有4個(gè)狀態(tài):IDLE,START,DO,BUSY。其狀態(tài)轉(zhuǎn)移圖如圖2所示。
IDLE:空閑狀態(tài)。
START:當(dāng)ADS地址選通有效時(shí)進(jìn)入此狀態(tài),進(jìn)行地址空間判斷。
DO:當(dāng)?shù)刂房臻g有效,并且傳輸條件滿(mǎn)足時(shí)進(jìn)入傳輸狀態(tài),每個(gè)時(shí)鐘判斷條件,當(dāng)條件滿(mǎn)足時(shí)繼續(xù)該狀態(tài),當(dāng)條件不滿(mǎn)足時(shí),進(jìn)入BUSY等待狀態(tài),傳輸結(jié)束(BLAST有效)進(jìn)入IDLE狀態(tài)。
BUSY:當(dāng)數(shù)據(jù)沒(méi)準(zhǔn)備好時(shí),在BUSY狀態(tài)等待,當(dāng)數(shù)據(jù)準(zhǔn)備好后進(jìn)入DO狀態(tài),當(dāng)超時(shí)后進(jìn)入IDLE狀態(tài),實(shí)時(shí)退出。
2.5 LBS狀態(tài)機(jī)工作流程
FPGA作為L(zhǎng)BS的邏輯控制器,負(fù)責(zé)協(xié)調(diào)好與DDR_FIFO數(shù)據(jù)和PEX8311之間的時(shí)序關(guān)系。系統(tǒng)接收數(shù)據(jù)時(shí),首先由驅(qū)動(dòng)程序向PEX8311發(fā)送復(fù)位信號(hào),通過(guò)LRESET復(fù)位LBS本地端的FPGA,清空FPGA內(nèi)部DDR_FIFO內(nèi)部數(shù)據(jù),并將HF和FF標(biāo)志置為無(wú)效,然后等待數(shù)據(jù)的輸入。FPGA讀入DDR數(shù)據(jù)后,首先將DDR數(shù)據(jù)寫(xiě)入DDR_FIFO中,當(dāng)DDR_FIFO中的數(shù)據(jù)達(dá)到半滿(mǎn)狀態(tài)時(shí),HF標(biāo)志位有效,通過(guò)FPGA向PEX8311發(fā)出DMA中斷請(qǐng)求。PC機(jī)響應(yīng)中斷后,設(shè)置DMA傳輸模式,傳輸字節(jié)數(shù)及地址信號(hào)等。PEX8311通過(guò)LHOLD申請(qǐng)控制本地總線,此時(shí)FPGA發(fā)出的LHOLDA響應(yīng)信號(hào)后獲得本地總線的控制權(quán),并立即進(jìn)入連續(xù)字節(jié)突發(fā)模式的Block DMA周期即由IDLE狀態(tài)到START狀態(tài)。FPGA在收到有效的LW/R讀信號(hào)和ADS地址選通信號(hào)后,進(jìn)入DO狀態(tài),同時(shí)發(fā)出Ready本地準(zhǔn)備好應(yīng)答信號(hào),使能DDR_FIFO的讀允許REN和輸出允許OE。在傳輸最后一個(gè)數(shù)據(jù)時(shí),PEX8311發(fā)出BLAST信號(hào),F(xiàn)PGA配置DDR_FIFO讀使能和輸出使能無(wú)效,并取消Ready從而結(jié)束DMA周期。PC系統(tǒng)發(fā)送數(shù)據(jù)時(shí),F(xiàn)PGA將計(jì)算機(jī)通過(guò)PCIe傳過(guò)來(lái)的LBS數(shù)據(jù)寫(xiě)入PC_FIFO中,再輸出寫(xiě)入到DDR中。
2.6 LBS狀態(tài)機(jī)核心編碼設(shè)計(jì)
按照上述4個(gè)狀態(tài)進(jìn)行Verilog設(shè)計(jì),經(jīng)過(guò)仿真和上板調(diào)試,效果很好,下面是狀態(tài)機(jī)設(shè)計(jì)程序,仿真時(shí)序圖如圖3,圖4所示。
3 結(jié)語(yǔ)
本文設(shè)計(jì)的LBS控制器應(yīng)用在PEX8311和FPGA接口中運(yùn)行狀態(tài)正常,穩(wěn)定性強(qiáng),已成功應(yīng)用于某視頻采集卡、某PCIe數(shù)據(jù)采集卡,經(jīng)過(guò)實(shí)踐證明,基于FPGA設(shè)計(jì)的LBS控制器具有靈活性強(qiáng)、可編程能力強(qiáng)、適應(yīng)性強(qiáng)等優(yōu)點(diǎn),能迅速縮短產(chǎn)品上市時(shí)間、快速響應(yīng)客戶(hù)需求,滿(mǎn)足市場(chǎng)需要。
評(píng)論