新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 一種高速數據采集卡的設計與實現

        一種高速數據采集卡的設計與實現

        作者: 時間:2011-03-16 來源:網絡 收藏

        4 CPLD在數據卡中的應用
        CPLD作為整個數據過程的控制核心,負責地址譯碼、多路開關選通、A/D轉換啟動、將轉換結果寫入FIFO以及兩片FIFO之間的切換等一系列操作。它的三個功能模塊分別為:地址譯碼模塊、多路開關控制模塊、A/D采樣及FIFO控制模塊。
        4.1 地址譯碼模塊
        該模塊實現了CPLD內部與PC/104總線的接口單元。本數據卡是作為PC/104的標準外設進行工作的。PC/104規定,外設的操作地址為A[9:0],在系統軟件設計中要防止地址沖突。PC/104中使用A0~A9地址位來表示I/O端口地址,即可有1 024個口地址,前512個供系統板使用,后512個供擴充插槽使用,當A9=O時表示系統板上的口地址;當A9=1時表示擴充插槽接口卡上的口地址。因此本數據采集板的基地址由A[9:4]來確定,偏移地址由地址線的A[3:O]確定,選擇該地址就意味著相應的操作,CPLD對地址進行譯碼后就產生相應的控制。在Qu-artusⅡ上設計的地址譯碼模塊原理圖程序如圖4所示。

        地址譯碼的工作過程為:在撥碼開關上手工設基地址,在CPLD內部劃出一片74LS688地址比較器,比較CPU發出的基地址與手工設定的基地址是否一致,若不一致,則地址譯碼電路不工作,進而整個數據采集板都不工作;若一致,則74LS688輸出低電平,使得偏移地址譯碼電路中的4-16譯碼器74LS154正常工作,在IOR,IOW信號的作用下產生各種控制信號,使數據采集板正常工作。
        4.2 多路開關控制模塊
        該模塊實現了對八選一多路選擇開關ADG508A的選通控制。通過控制使能引腳EN以及CH0~CH2引腳,可對多路開關的輸入通道進行可編程選擇。PC/104CPU通過地址譯碼選中CSWE[2],并寫入數據D0~D7,就可以選擇不同的通道導通。在QuartusⅡ上設計的多路開關控制模塊原理圖程序如圖5所示。

        d.JPG


        4.3 A/D采樣及FIFO控制模塊
        該模塊主要負責A/D芯片的轉換時序,實現對A/D采樣的合理控制,同時將轉換數據存入FIFO中,并且控制著兩片FIFO的輪流存儲,實現大量數據的采集。PC/104CPU通過地址譯碼選中CSWE[O],寫入數據D0~D7,將與門inst15打開,輸出端ENCODE1輸出100 MHz的時鐘信號,PWRDWN1端輸出為低電平,啟動A/D轉換,同時,與門inst14被打開,WCLK1端輸出100 MHz時鐘,將轉換后的數據存入FIFO(1)中。選中CSRD[0],寫人數據D0~D7,將與門inst21打開,OE2端輸出低電平,使CY7C4261(2)輸出使能,RCLK2端輸出100 MHz的時鐘信號,將數據讀出。當FIFO(1)存儲滿時,CPLD控制由FIFO(2)來進行存儲,同時將FIFO(1)中的數據讀出;當FIFO(2)存儲滿時,轉由FIFO(1)進行存儲,同時將FIFO(2)中數據讀出。如此反復,直至預定的延時時間止,實現了兩片FIFO的輪流存儲和讀取,進而達到了采集大量數據的目的。另外,在每次采樣及向FIFO中存儲數據之前,都要求選通CSWE[5]或CSWE[6]將FIFO芯片復位,使其讀指針和寫指針都指向第一個物理存儲地址。在QuartusⅡ上設計的A/D采樣及FIFO控制模塊原理圖程序如圖6所示。

        e.JPG


        CPLD硬件控制邏輯設計的關鍵是分析各個器件的工作時序和采樣保持時間,A/D轉換時間以及數據存入FIFO的時間等。在設計的時序處理進程中,要根據CPLD的工作頻率計算各個等待周期,等器件準備好以后才能進行下一個處理。

        5 結語
        采用CPLD和FIFO器件設計了一種基于PC/104總線的采集卡,它可以作為PC/104總線標準模件使用。該采集板上的大部分控制邏輯被集成到CPLD芯片中,大大減少了擴展卡上的器件數量,同時降低了系統成本,提高了系統的可靠性。該數據采集板非常適合搭建高密度、小體積的便攜式測試設備,可廣泛應用于武器控制系統的測試等多種場合,對控制系統的模擬量信號進行快速、實時的數據采集和分析。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 安岳县| 富源县| 连南| 宁国市| 定结县| 苗栗县| 西充县| 利辛县| 辉县市| 民乐县| 丰台区| 福清市| 汤原县| 富裕县| 博白县| 新邵县| 宜黄县| 密山市| 池州市| 肃南| 香港 | 舞阳县| 临洮县| 高州市| 景洪市| 星子县| 酉阳| 山西省| 西贡区| 揭阳市| 大同市| 平南县| 靖江市| 巴青县| 宜城市| 若尔盖县| 宁城县| 平远县| 建水县| 镇原县| 庆阳市|