??? 摘? 要: 針對目前多通道數據采集系統的局限,以EP1K50系列的FPGA為核心控制模塊, AD7656為模數轉化芯片實現了精度為16位、最大采集速率為250 kS/s的同步模擬信號采集系統,采用Flash存儲采集到的數據,且可以通過PC104總線將數據傳輸到上位機。給出了系統的電路設計、關鍵模塊邏輯圖以及軟件流程圖。?
??? 關鍵詞: 同步數據采集; AD7656; 現場可編程門陣列
?
??? 數據采集系統是工業控制等測控系統中不可或缺的組成部分,是影響測控系統精度等性能指標的關鍵因素之一。常用數據采集方案是以微處理器為核心控制多個通道的信號采集、預處理、存儲和傳輸,即用軟件實現數據的采集,這在一定程度上限制了數據采集的速度、效率及時序控制的精確性,同時一般的數據采集系統沒有數據處理模塊,不便于在某些環境下工作。本文研究的數據采集系統應用在某特定型號IC設備上,系統要求完成對6路信號的高速高精度同步采集,以滿足大約1h采集數據的存儲以及傳輸。鑒于FPGA功能強大、邏輯速度快、電路設計簡單、便于開發等優點,故采用FPGA為核心來控制ADC和Flash。?
1系統總體設計?
??? 本文設計的數據采集處理系統可分為A/D轉換部分、數據存儲處理部分以及整個電路的控制部分,如圖1所示。其中控制部分為最重要的環節。?
?
?
??? 該系統可以實現數據的采集、存儲以及傳輸功能。系統通過PC104總線接到上位機時,上位機通過PC104總線給控制元件FPGA開始采集的命令,FPGA先將Flash存儲器復位,再給A/D轉換器開始采集數據的命令,可將最多6路的同步最大頻率不超過250 kS/s的信號進行A/D轉換,采集到的數字信號經過FPGA的處理后存儲到Flash存儲器中。當采集完成時,將存儲器內的數據通過PC104總線傳輸到上位機,便于處理、回訪和保存。整個采集、存儲和傳輸過程由FPGA控制完成。?
2 主要元器件?
??? 數據采集芯片采用ADI公司的AD7656, AD7656為6通道16-bit逐次逼近型、低功耗、最大采集速率為250 kS/s的A/D轉換芯片[1]。FPGA選用Altera公司的EP1K50系列[2]。存儲元件NAND Flash采用AMD公司的AM29LV256M。?
3 電路設計方案?
??? 電路的設計方案包括FPGA外部電路的設計、FPGA的內部程序設計以及電路電源的設計等。FPGA的外部電路主要是與ADC、Flash、PC104總線的連接。?
3.1 電路整體設計圖?
??? AD7656在并行接口狀態下,基于FPGA的外圍電路連接,如圖2所示。?
?
?
??? 其中的DVCC和AVCC分別是數字電壓端和模擬電壓端,它們在接入前要經過1個如圖2所示的去耦電路,每個供電電壓輸入引腳都要連接1個去耦電路,該電路由1只10 μF和1只100 nF的電容器組成。VDD、VSS和VDRIVE同樣要連接去耦電路。當PC104總線提供的外部時鐘信號SYSCLK經過分頻后加到AD7656和FPGA上,在啟動數據采集之前,先初始化。啟動6通道同步采集,采集到的數據進入FPGA的FIFO緩存器,經過FPGA的處理。通過模擬的頻率、寫控制信號等,將數據存入NOR Flash進行暫存,當PC104總線啟動讀命令時,便可以將 Flash中的數據經過FPGA讀入上位機內。?
3.2 FPGA的設計?
??? EP1K50QC208是ACEX1K系列的FPGA,可定義管腳124個。FPGA采用全局頻率20 MHz,其需要定義的主要控制端口如表1所示。 ?
?
?
??? FPGA的設計分全局控制和局部控制。全局控制主要是FPGA接收來自PC104總線的各種信號,包括時鐘信號、讀寫信號等進行全局控制,系統是由晶振器提供給FPGA一個20 MHz的頻率,在FPGA內部經過分頻使用;局部控制包括ADC、Flash、PC104總線3個單元的控制。?
3.2.1? FPGA對ADC控制的設計?
??? FPGA對ADC的控制電路連接如圖3所示。通過程序啟動AD7656的CONVSTA/B/C和BUSY,當BUSY為1時,ADC開始進行數據采集。經過3μs完成一次數據采集后,BUSY為0,依次讀取6個通道上的數據,將數據通過IO_D0~IO_D15讀入FPGA的FIFO緩存器。
?
?
3.2.2? FPGA與Flash連接設計?
??? 設計中要將AM29LV256的管腳BYTE置為1,選用16位的模式。如圖4所示,當FIFO完成一次存儲,程序就檢查RY/BY,如RY/BY=1,啟動CE片使能、WE寫使能,將數據寫入Flash中,寫入一次,地址逐次遞增。地址由Flash進行分配。當上位機要求讀取Flash中某一地址段的數據時,啟動OE使能,讀時序產生器用于產生讀Flash時的時序,由于讀Flash的時序是固定的,只有地址是變化的,所以它接收地址產生器輸出的地址,產生相應的讀時序。讀時序由狀態機來控制,每次讀完一頁后復位,繼續讀下一頁。數據讀到尾時,整個讀狀態控制器復位,重新從數據的頭開始讀。將數據先讀入FPGA中,進行編碼,再通過FPGA定義的端口,經PC104總線存入上位機。?
?
?
3.2.3? FPGA與PC104總線的連接?
??? FPGA與PC104總線的連接如圖5所示,SD[0...15]為16位雙向數據總線,SA[1...23]為地址總線,IOR和IOW為I/O讀寫信號,XAEN 是允許DMA控制地址總線、數據總線和讀寫命令線進行DMA傳輸以及對存儲器和I/O設備的讀寫。PC104總線有嚴格的時序標準,在總線操作過程中,FPGA必須設計正確、標準的時序邏輯。PCI04總線的中斷請求信號IRQ=HINT取“非”,因為PC104設置為上升沿中斷。外部I/0準備好信號IORDY在地址選通有效過程中接HPI口的HRDY信號,地址選通無效時置為高阻態。?
?
?
??? EP1K50QC208芯片所需要的2.5 V和3.3 V電源由外部的5 V電壓經過電源電路獲得,電源電路設計如圖6所示。
?
?
??? FPGA要實現對整個電路的控制,必須通過VHDL語言編寫程序[4]。程序設計的流程圖如圖7所示。
?
?
??? 本文提出了一種基于FPGA控制的6通道同步數據采集處理系統。詳細說明了電路、FPGA與ADC、Flash以及PC104總線連接及邏輯設計。經過測試和仿真,該采集系統各通道高速數據流能夠正確采集和存儲,工作穩定,達到了設計期望的6通道、16位有效數位的同步數據采集。?
參考文獻?
[1]?Analog Devices.250 ks/s, 6-Channel, simultaneous sampling, bipolar 16-/14-/12-Bit D7656/AD7657/AD7658?data sheet. 2006.?
[2] Altera. ACEX 1K programmable logic device family data?sheet.2001.?
[3] 周潤京,圖雅,張麗敏.基于Quartus Ⅱ的FPGA/CPLD數字系統設計實例[M].北京:電子工業出版社,2007.?
[4] 王誠,吳繼華,范麗珍,等. Altera FPGA/CPLD設計(基礎篇)[M].北京:人民郵電出版社,2005.