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