新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于FPGA的LBS控制器設(shè)計

        基于FPGA的LBS控制器設(shè)計

        作者: 時間:2017-06-05 來源:網(wǎng)絡(luò) 收藏

        0 引言

        PLX的一款橋芯片可將標準處理器、DSP和總線接口升級為PCI Express(PCIe)。單道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è)計可采用橋芯片移植到PCIe。本文就是基于PEX8311和來實現(xiàn)PCIe標準1x傳輸。

        本文引用地址:http://www.104case.com/article/201706/349120.htm

        1 系統(tǒng)介紹

        和PEX8311之間通過LBS(LocalBus)來連接、發(fā)送和接收命令及數(shù)據(jù),其中FPGA主要控制LBS的運行,本文通過設(shè)計一個高效、可靠的來實現(xiàn)FPGA和PEX8311的通信。如圖1所示。

        本系統(tǒng)的控制的核心是,該控制器是通過FPGA采用VerilogHDL實現(xiàn)的,其優(yōu)點是穩(wěn)定性強、不會造成死機,避免了常規(guī)的PC I,PCIe板卡類經(jīng)常死機的問題,其次是傳輸速率高,充分利用LBS的時序,減少無用的等待時間。

        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 設(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模式,即非復(fù)用的地址/數(shù)據(jù)總線模式。PEX8 311支持三種局部總線數(shù)據(jù)傳輸模式:單周期模式、四周期突發(fā)模式、連續(xù)突發(fā)模式。

        DMA傳輸數(shù)據(jù)使傳輸任務(wù)從主控設(shè)備中解脫出來,由短且有效的傳輸描述符來承擔(dān),讓主控設(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.5 LBS狀態(tài)機工作流程

        FPGA作為LBS的邏輯控制器,負責(zé)協(xié)調(diào)好與DDR_FIFO數(shù)據(jù)和PEX8311之間的時序關(guān)系。系統(tǒng)接收數(shù)據(jù)時,首先由驅(qū)動程序向PEX8311發(fā)送復(fù)位信號,通過LRESET復(fù)位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)客戶需求,滿足市場需要。



        關(guān)鍵詞: LBS控制器 PEX8311 FPGA

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 延边| 东阿县| 罗江县| 中宁县| 巴中市| 阳原县| 琼结县| 无极县| 福州市| 边坝县| 松桃| 兴隆县| 酒泉市| 太仆寺旗| 洪泽县| 连城县| 滦南县| 若尔盖县| 嫩江县| 古浪县| 南木林县| 专栏| 保山市| 建湖县| 德令哈市| 竹溪县| 昭苏县| 望江县| 双流县| 安远县| 合山市| 油尖旺区| 枝江市| 柳江县| 长阳| 柏乡县| 七台河市| 永修县| 闽侯县| 晋江市| 县级市|