<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于PC104(Plus)總線的數(shù)據(jù)接收存儲(chǔ)顯示系統(tǒng)設(shè)計(jì)

          基于PC104(Plus)總線的數(shù)據(jù)接收存儲(chǔ)顯示系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2011-03-28 來源:網(wǎng)絡(luò) 收藏

          摘要:提出了一種雙通道大容量數(shù)據(jù)接收存儲(chǔ)顯示系統(tǒng)的實(shí)現(xiàn)方案。闡述了以PLX9054為核心、以異步FIFO為數(shù)據(jù)緩沖通道的104()接口電路的設(shè)計(jì)方法,同時(shí)給出了FPGA控制邏輯設(shè)計(jì)與Linux系統(tǒng)下基于Qt/Embedded和Framebuffer工控機(jī)存儲(chǔ)顯示程序的實(shí)現(xiàn)方法。
          關(guān)鍵詞:104();Qt/Embedded;Framebuffer;實(shí)時(shí)存儲(chǔ);同步顯示;工控機(jī)

          0 引言
          在現(xiàn)代數(shù)字信號(hào)處理領(lǐng)域,對(duì)于大容量高速數(shù)據(jù)的存儲(chǔ)和顯示是進(jìn)行后續(xù)相關(guān)處理的基礎(chǔ),也是信息處理系統(tǒng)的關(guān)鍵組成部分。隨著數(shù)字視頻視覺技術(shù)和視頻采集技術(shù)的發(fā)展,很多應(yīng)用場合都需要對(duì)接收到的模擬數(shù)據(jù)進(jìn)行模數(shù)轉(zhuǎn)換,然后再進(jìn)行數(shù)據(jù)的實(shí)時(shí)存儲(chǔ)和同步顯示。為此,本文介紹了對(duì)模數(shù)轉(zhuǎn)換后的數(shù)字信號(hào)所進(jìn)行的處理,提出了一種基于104 ()的雙通道大容量高速數(shù)據(jù)的接收、存儲(chǔ)和顯示系統(tǒng)的設(shè)計(jì)方法。該系統(tǒng)通過FPGA-PC104(Plus)接口對(duì)數(shù)據(jù)進(jìn)行接收和預(yù)處理,再通過FIFO數(shù)據(jù)傳輸通道來上傳數(shù)據(jù),最后由工控機(jī)的軟件來實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)存儲(chǔ)和同步顯示。其中工控機(jī)軟件采用Linux(2.6內(nèi)核)下Qt/Embedded的GUI來設(shè)計(jì),并用Framebuffer的顯示技術(shù)來提供良好的人機(jī)界面交互和快速的存儲(chǔ)顯示操作。

          1 系統(tǒng)結(jié)構(gòu)
          本系統(tǒng)由數(shù)據(jù)接收模塊、FPGA控制模塊和工控機(jī)顯示存儲(chǔ)模塊組成,其系統(tǒng)結(jié)構(gòu)如圖1所示。圖中的FPGA選用Xilinx Spartan3系列的XC3S2000F456,其最大用戶IO為333個(gè),系統(tǒng)門達(dá)到200萬門,并內(nèi)置576KB的RAM塊;FIFO選用IDT公司的IDT72V36110,該芯片容量為512KB,可支持36位輸入、輸出數(shù)據(jù),最高工作頻率可達(dá)166MHz;另外,PLX9054是PLX公司的橋接芯片,它支持多種工作模式,本系統(tǒng)采用C模式。在該模式下的DMA傳輸時(shí),PLX9054對(duì)PC104(Plus)和本地總線都是主控制器;工控機(jī)選用Senbo公司的LX-3072PC/104 CPU模塊,該模塊搭載的AMD Geode LX800 CPU,其工作頻率高達(dá)500MHz,遵從PC/104+標(biāo)準(zhǔn),并提供有PC104(Plus)總線,同時(shí)集成了PS/2、RT、IDE、USB2.0和10M/100M網(wǎng)口等接口,而且功耗低,可靠性高,可廣泛適用于數(shù)據(jù)采集、通信等領(lǐng)域。為了保證系統(tǒng)的實(shí)時(shí)性和穩(wěn)定性,本工控機(jī)上運(yùn)行的是Linux操作系統(tǒng)。

          本文引用地址:http://www.ex-cimer.com/article/202466.htm

          a.JPG


          數(shù)據(jù)接收模塊的兩路輸入通道分別連向FPGA的IO端口,在FPGA模塊的控制下,兩路輸入數(shù)據(jù)同時(shí)分別進(jìn)入各自的FIFO進(jìn)行緩存。為了避免PLX9054控制本地端時(shí)的總線競爭以及簡化時(shí)序設(shè)計(jì),可將兩片F(xiàn)IFO的輸出端復(fù)用,且經(jīng)由FPGA的IO端口連向PLX9054的本地?cái)?shù)據(jù)端,進(jìn)而在FIFO產(chǎn)生相應(yīng)狀態(tài)響應(yīng)的時(shí)候,由FPGA控制模塊向PLX9054發(fā)出讀取FIFO的中斷請求,PLX9054在響應(yīng)中斷后,即將數(shù)據(jù)以DMA的方式經(jīng)由PC104(Plus)總線上傳至上位機(jī),上位機(jī)通過PCI驅(qū)動(dòng)讀取DMA傳輸?shù)臄?shù)據(jù),然后進(jìn)行數(shù)據(jù)分析,再分別進(jìn)行存儲(chǔ)和顯示。

          2 系統(tǒng)設(shè)計(jì)
          2.1 數(shù)據(jù)接收模塊設(shè)計(jì)
          本系統(tǒng)中的數(shù)據(jù)接收模塊采用J18型37針視頻通信接口,該接口協(xié)議可根據(jù)實(shí)際需求自行定義,但最大為32位。由于輸入數(shù)據(jù)為高速數(shù)字信號(hào),因此,為防止輸入FPGA的信號(hào)產(chǎn)生過沖,可在視頻通信接口的后端對(duì)32位數(shù)據(jù)分別進(jìn)行RC端接,并串聯(lián)33Ω的電阻和0.01μF的電容。
          2.2 FPGA控制模塊設(shè)計(jì)
          本系統(tǒng)的數(shù)據(jù)傳送采用DMA結(jié)合中斷的方式。該方式不僅能保證數(shù)據(jù)傳輸?shù)乃俾剩夷芴岣呦到y(tǒng)的工作效率。接收高速數(shù)據(jù)時(shí),要使用緩沖區(qū)對(duì)數(shù)據(jù)進(jìn)行緩存,但是,如果等緩沖區(qū)全部存滿以后再進(jìn)行DMA傳輸,那么,在數(shù)據(jù)流速率比較高的時(shí)候,就會(huì)造成數(shù)據(jù)的丟失。因此,在FIFO半滿時(shí)就必須進(jìn)行數(shù)據(jù)的DMA傳輸,這樣可使工控機(jī)從FIFO讀取數(shù)據(jù)和FPGA從外部接收數(shù)據(jù)能同時(shí)進(jìn)行。
          FPGA控制模塊是本系統(tǒng)的硬件核心,其主要功能是完成系統(tǒng)復(fù)位,接收數(shù)據(jù)進(jìn)行緩存,控制讀取兩個(gè)FIFO數(shù)據(jù)的邏輯順序,并控制DMA傳輸。FPGA控制模塊電路如圖2所示。

          b.JPG


          在圖2電路中,為了保證FPGA與FIFO同步工作,應(yīng)將兩片F(xiàn)IFO的各自讀寫時(shí)鐘連接在一起,且分別由FPGA輸入到時(shí)鐘驅(qū)動(dòng)芯片以后獲得。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: Plus PC 總線

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();