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

          新聞中心

          EEPW首頁 > 模擬技術 > 設計應用 > 基于PCI總線模塊的多路串行數據采集系統(tǒng)

          基于PCI總線模塊的多路串行數據采集系統(tǒng)

          作者: 時間:2012-04-12 來源:網絡 收藏

          O 引言

            目前市面上有多種卡,但其應用都具有一定的局限性,不可能完全滿足用戶的需求。本文介紹的卡可應用于某視頻圖像采集系統(tǒng)中,數據源發(fā)送同步數據,然后經過卡傳入上位機用以進行后續(xù)分析。上位機向外寫控制字并轉換后以異步方式輸出。用以控制視頻圖像的采集。本系統(tǒng)將接口邏輯和其他用戶邏輯集成于一片FPGA中,因而大大節(jié)省了資源,便于進行串口擴展及其他功能的添加,性能良好,用途廣泛。

            1 總線

            總線是一種高性能的局部總線,具有32位可升級到64位的、獨立于CPU的總線結構。工作頻率為33/66 MHz,最高傳送速度可達132 MB/s(32位、33 MHz)或528 MB/s(64位、66 MHz)。

            PCI總線定義了Memory(存儲器)空間、I/O(輸入/輸出)空間和配置空間3種地址空間,并具有兩種工作模式:其中主模式下的PCI設備具有總線控制權,可以實現DMA傳輸;而被主設備控制進行通信的稱為從模式(TARGET)。

            1.1 PCI總線的配置空間

            所有的PCI設備都必須實現配置空間,該空間分為首部區(qū)和設備有關區(qū)。首部區(qū)中的強制性寄存器有:供應商代碼(Vendor ID)寄存器用于標明設備制造商),設備代碼(Device ID)寄存器(用于指明特定的設備,它由供應商分配),版本識別(Revision ID)寄存器,首部類型(He-ader Type)寄存器和類別寄存器(Class Code)。以上五個寄存器均可用于PCI總線上設備的識別。另外,首部區(qū)中還有兩種必須實現的寄存器:其中命令寄存器用于存放PCI命令,而設備狀態(tài)寄存器則用于記錄PCI的狀態(tài)信息。

            操作系統(tǒng)在啟動時應判斷系統(tǒng)中有多少存儲器、以及I/O設備需要多少地址空間,然后建立統(tǒng)一的地址映射關系,這時的PCI設備需要用到基地址寄存器。另外,若要實現中斷,還必須設置中斷引腳(Interrupt Pin)寄存器和中斷線(Interrupt Line)寄存器。

            1.2 PCI總線的中斷機制

            PCI總線的硬件中斷方式分為邊沿觸發(fā)和電平觸發(fā),PCI設備為低電平觸發(fā)(level-sensitive)。PCI總線上有4條中斷請求信號線:INTA #、INTB#、INTC#、INTD#,中斷引腳寄存器的值01H~04H分別對應4條中斷線,單功能PCI設備只能使用INTA#。此外,使用了中斷引腳的設備還必須實現中斷線寄存器。POST例程(加電自檢測程序)在進行系統(tǒng)初始化和配置時還要將中斷線信息寫入該寄存器。PCI總線中斷是可以共享的,這一方面解決了中斷資源緊張的問題,但另一方面也會給PCI中斷的實現帶來麻煩。

            2 系統(tǒng)硬件實現

            2.1 PCI配置寄存器的設置

            Altera公司的PCI編譯器(PCI Compiler)提供有使用Altera器件實現PCI接口設計的完全解決方案。其中包括4種PCI接口兆核函數(PCI IP)及相關測試平臺。

            通過PCI編譯器的IP工具臺或直接編輯生成的兆核函數頭文件可以設置并修改PCI的配置空間信息,本系統(tǒng)的主要配置信息如下:

            



          上一頁 1 2 3 4 下一頁

          關鍵詞: PCI 總線模塊 多路 串行 數據采集

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();