[摘 要] 在微機對數據的處理當中,數據采集是很重要的一部分,以前的數據采集都是通過DSP或單片機來實現。本文提出了基于PCI總線,用FPGA來作為整個數據采集部分的核心的數據采集卡的設計。該設計充分利用了PCI總線的高速傳輸和FPGA靈活強大的編程控制能力。從而保證了數據傳輸的速度,簡化了電路。實驗表明,該設計為數據采集卡的設計提供了一種在硬件上更加簡單的方法。
[關鍵詞] PCI 數據采集 FPGA
一、引言
隨著信息技術的發展,基于微處理器的數字信號處理在測控、通訊、雷達等各個領域得到廣泛的應用。數據的采集成為重要的一個環節。對于各種各樣的數據采集系統,利用PCI總線實現的數據采集卡有許多其他總線(如ISA)所沒有的優點,如高速、熱插拔、自動配置等。數據采集的控制部分由近年來發展迅速的可編程邏輯器件FPGA來設計,其時鐘頻率高,內部延時小,全部控制邏輯由硬件完成,速度快、效率高。
二、硬件設計
論文設計的數據采集卡是基于PCI總線,采用ALTERA公司的EP1C6Q240實現PCI協議和對整個采集過程的控制。其硬件設計如圖1所示
本設計利用可編程邏輯器件FPGA的強大編程功能來實現PCI接口協議和數據采集控制器,同時利用EP1C6Q240中的雙口RAM實現數據的暫存,可以有效簡化電路設計。該電路板上電路還包括一些信號條理電路,其主要功能是對輸入的模擬信號進行放大、濾波、隔離、衰減、多路復用等一系列處理,使調理以后的信號滿足AD的采樣數據采集控制器要求。
1.FPGA器件
系統所選用的EP1C6Q240這種Cyclone系列的FPGA器件具有以下優點:
(1)采用240個引腳的FPQF封裝形式,能提供185個IO用戶引腳和5 980個邏輯單元。具有20個4 608位的RAM存儲區,最高可支持200MHz的數據傳輸。每個存儲區均包括單口或雙口RAM、ROM、FIFO等各類存儲器件,并支持8位、16位、32位、36位等數據存儲類型。
(2)片上的鎖相環電路可以提供輸入時鐘的1分~32分頻或倍頻。
(3)可使用Altera的Nios軟核和豐富的IP庫,快速實現完整的可編程(SOPC)。
(4)多功能的IO結構支持差分和單端輸入,并與3.3V、32位、66MHz的PCI局部總線兼容。
2.A/D轉換電路
ADS5220是TI產品線中的一款新型?高精度?寬動態范圍?流水線型ADC·它具有12位有效分辨率,工作電壓范圍及邏輯電平為3.3V,與PCI接口相兼容?該器件內部含有參考電壓,可最大限度的減少外圍器件。由于采用了流水線結構,采集速度有很大提高,采集速度最高可達40MSPS。
三、FPGA實現的功能
本設計中FPGA實現五方面的功能:
一是FPGA邏輯運算模塊。用來接收其他各部分的數據,并按照程序中設定的方案對所收到的數據進行相應的分析和處理。包括:對從MCU接收來的數據指令進行分析,并按其指令要求進行相應操作;接收A/D采樣來的數據,對數據進行各種處理,如求其有效值等;接收來自數字量的各種信息數據,按設定的模式對其進行判斷處理,并負責按接收的CPU指令輸出相應的數字量。
二是PCI內核模塊,是系統設計的核心部分,它建立與上位機通信,以及與其他控制模塊的數據交換。
三是用于數據暫存的雙口RAM,當寫入控制信號到達時,根據當前寫入地址控制字向相應單元寫入數據輸入總線上的內容,并在讀出控制信號到達時,根據讀出地址控制字從相應單元讀出內容,送到數據輸出總線。
四是雙口RAM控制模塊,當啟動寫入地址控制信號到達時,把當前的寫入地址加1,加滿之后清零并重新開始,同時,當啟動讀出地址控制信號到達時,對當前讀出地址加1,加滿之后清零并重新開始。
五是A/D控制單元。主要負責控制外部A/D芯片和多路開關的選通時序,以及實現對A/D采樣過程的合理控制。因為,在FPGA芯片內部,不像在MCU內部那樣有豐富的外設控制資源供用戶使用,要用FPGA來控制A/D采樣過程的動作,必須用軟件來模擬實現各種A/D控制資源。利用這些自設定的A/D控制管理資源,配以合理的軟件控制時序,才能保證采樣過程的順利進行。
六是數字量監測控制單元。負責所有要監視和控制的數字量的狀態數據的采集和控制命令的輸出。這一部分也需要用軟件來模擬實現各種對數字量的管理控制,只有配備較完備的外設控制管理單元,整個數字量的管理控制才能正確地進行。
四、基于FPGA的PCI內核設計
在PCI內核的設計中,核心設計有時序控制和配置空間兩部分。時序控制保證了板卡能按正常的PCI時序工作,配置空間部分保證了板卡的即插即用功能。
1.PCI接口配置空間
當計算機第一個上電時,配置軟件必須掃描在系統中的不同總線(PCI和其他),確定什么設備存在和他們有什么配置要求。這個過程常常指的是:掃描總線、激活總線、檢查總線、發現過程、總線枚舉。
執行PCI總線掃描的程序常稱為PCI總線枚舉。而為了實現這一過程,就必須提供256字節的配置空間結構,并實現PCI規范定義的一組寄存器。PCI總線標準規定的配置空間總長度為256個字節,配置信息按一定的順序和大小依次存放。前64個字節配置空間稱為頭標區,是任何PCI兼容設備都應實現的空間。頭標區的功能主要是用于識別設備,定義主機訪問PCI板卡的方式(是I/O訪問還是MEM訪問、中斷號等)。其余的192個字節空間稱為本地配置空間 因卡而異,主要定義卡上局部總線的特性、本地空間基地址及范圍等。因PCI規范的通用性,所以每一塊PCI總線擴展板卡都只是實現配置空間的一個子集。一般的PCI配置空間的結構如表1所示:
2.PCI接口狀態機
在時序控制程序中采用狀態機模型來實現不同時序的轉換。各種命令、數據交換、控制均在狀態機的管理下進行工作。PCI總線上的信號是并行工作的,因此,對應每個狀態必須明確其執行的任務。這些任務要用VHDL的進程語句來描述所發生的事件。本設計中的狀態機共使用了8種狀態如圖2所示。
本系統接到復位信號后對系統進行復位,然后轉入空閑狀態(此狀態DEVSEL#、TRDY#和STOP#以及其他輸出信號為高阻態)。
在IDLE狀態下當檢測到FRAME變低、IDSEFL為高,且PCI_CBE上命令是config_read或config_write時,狀態轉移到CONFIG_WAIT;如果FRAME變低、且PCI_CBE上命令是IO_read或IO_write或memory_read或memory_write時,狀態轉移到RDWR_WAIT,否則繼續IDLE狀態。
在CONFIG狀態下,如果檢測到IRDY為0,表示主機要求完成當前操作,狀態轉移到BACKOFF;否則繼續CONFIG狀態,直到IRDY為0為止。
在READ_WAIT狀態下,如果檢測到用戶端需要ABORT,則下一狀態轉到ABORT狀態。如果用戶端需要STOP當前傳輸或者FRAME變為高電平,則下一狀態轉移到LAST_RDWR狀態;如果FRAME還保持為低,則轉到RDWR狀態。
在RDWR狀態下如果檢測到用戶端需要ABORT,則下一狀態轉到ABORT狀態;如果用戶端需要STOP當前傳輸.則下一狀態轉移到LAST_RDWR狀態;如果FRAME還保持為低,則轉保持RDWR狀態;如果FRAME還變為高電平,則轉到BACKOFF狀態。
五、結論
本文介紹了用PCI和FPGA結合實現的高速數據采集卡,利用了PCI總線高速的傳輸特性,同時配合以FPGA強大的編程控制功能,簡化了硬件設計。本系統用VHDL語言來描述。VHDL語言是一種結構化語言,易于編程和修改,開發周期短。整個設計簡化了器件,實驗中數據傳輸效果較好,完全符合PCI總線的要求,實現了靈活的接口控制。
參考文獻:
[1]李貴山 戚德虎:PCI局部總線開發者指南[M].西安:西安電子科技大學出版,1997
[2]徐海軍 葉衛東:FPGA在高性能數據采集系統中的應用[J].計測技術,2005,1(25):4043
[3]褚振勇 翁木云:FPGA設計及應用[M]. 西安: 西安電子科技大學出版社, 2002
[4]劉 暉 冀然然 夏意軍譯:Tom Shanley,Don Anderson.PCI系統結構[M].北京:電子工業出版社,2000