

摘 要:文章介紹了一種基于單片機89C51和FIFO的多路高速數據采集系統,給出了系統的總體設計方案,對各組成電路模塊進行了詳細的設計,用C語言編寫了軟件程序。
關鍵詞:89C51;FIFO;高速數據采集;A/D轉換;信號調理
引言
數據采集是將被測的各種參量通過相應的傳感器轉換為模擬電信號,再將模擬電信號進行處理(放大或衰減),然后經過采樣、量化、編碼、數據預處理和傳輸等步驟,最后進行存儲記錄的過程,完成相應功能的系統稱為數據采集系統。隨著高速數字處理以及高速數據采集系統要求的越來越高,現在的數據采集系統不僅要求其具有較高的采樣速率和足夠寬的工作帶寬,還要有較高的精度以提高其動態范圍。
我們通過FIFO(First-In First-Out)實現了單片機對B-dot磁探針信號的高速采集。為了能夠完成對B-dot磁探針信號的高速采集,并對采集到的大量數字信號進行緩存處理,作者采用TLE2072、AD7899、IDT7204、IDT71256和89C51單片機一起設計了一個多路高速數據采集系統,制定和設計完成相應的硬件及接口系統。
1 系統的整體設計
圖1所示為一個三路高速數據采集系統結構框圖。由圖可知,該高速數據采集系統主要包括信號調理電路、A/D轉換電路(ADC)、FIFO、89C51、SRAM、485總線和上位機等部分。
圖1 3路高速采集系統結構框圖
ADC將采集到模擬信號實時轉換為數字信號,以實現數字化采樣。在基于89C51高速數據采集系統中,89C51往往不能適應ADC的工作速率,因為ADC總是在進行數據輸出,如果由單片機直接讀取A/D轉換的數據,則系統的采樣率會大大降低,所以在89C51和ADC之間增加了緩存器。常用的緩存器有RAM、SRAM等,但是若用它們作為緩存器,采集系統必須增加地址發生電路,SRAM還需要總線仲裁電路,因而使器件多,時序復雜,可靠性不高。而FIFO恰好架起了ADC和89C51之間的一座橋梁。由ADC把采樣轉換值同步寫入FIFO,每寫入一塊數據便向單片機發出一個信號,以提醒單片機從FIFO中讀取數據塊。FIFO芯片數據進出有序、輸入輸出口獨立,可作為輸入緩沖使用,無需復雜的輔助電路,占用系統資源較少。
89C51通過總線、I/O口及少量外圍電路控制ADC、FIFO、SRAM的操作;89C51通過485總線實現和上位機的通信。
2 硬件電路設計
2.1 信號調理電路
圖2中的信號調理電路對B-dot磁探針信號進行調理,TLE2072是低噪聲高速JFET輸入運算放大器,它的單位增益帶寬可達10 MHz,電路中起到前置放大及阻抗變換的作用。一方面濾除干擾信號,另一方面使調理后的信號與ADC芯片的量程相匹配。
圖2 信號調理電路
2.2 ADC、FIFO及單片機89C51的接口
為了滿足高速數據采集系統分辨率、轉換時間、采樣率的要求,A/D轉換芯片采用的是Analog Device公司生產的AD7899,AD7899是快速、低功耗、高分辨率、14位逐次逼近(SAR)型ADC,轉換時間為2.2μs,采樣率為400ksps,滿足B-dot磁探針信號實時、高精度采樣的要求。
FIFO作為連接ADC與單片機之間的關鍵器件,其參數的高低與數據采集的速度的快慢直接相關。FIFO的讀寫速度必須大于等于ADC的采樣率,才能充分發揮ADC高采樣率并保證不丟失數據,且在滿足數據存儲容量的要求下,FIFO芯片采用IDT公司的IDT7204,IDT7204是4k×9位的可以實現先進、先出的異步讀寫操作的雙端口存儲器,具有數據進出有序、輸入輸出口獨立的特點。靈活使用多片IDT7204級聯可以構成不同容量、不同寬度的緩存系統。本系統采用兩片IDT7204進行寬度擴展,三路模擬采集信號共需六片IDT7204芯片。其中單路高速數據采集系統中,AD7899、IDT7204及與89C51的接口設計如圖3所示。
AD7899共有三種工作模式:EOC模式、BUSY模式和連續轉換模式。連續轉換模式用于基于MCU的系統,即系統中A/D轉換芯片和MCU是通過FIFO或DMA來接口的。本系統中AD7899采用外部時鐘,CLKIN和CONVST腳連接在一起的連續轉換模式。
AD7899的工作過程如下:
(1)外部時鐘信號CLKIN作為AD7899的轉換啟動控制信號;
(2)單片機的p1.1口控制AD7899的RD和CS,控制何時進行讀操作;
(3)連續轉換模式下,BUSY/EOC作為EOC輸出。轉換啟動時,EOC置高;轉換結束后EOC置低一個時鐘周期,表示數據在0D0~0D13處有效。
圖3中包括FIFO擴展寬度電路連接圖。這是由兩片9位IDT7204擴展寬度構成的14位存儲模式,IDT7204的具體特點如下:
●采用+5V電源供電,低功耗;
●具有4k×9Bit的容量;
●高速12ns的存取時間;
●可異步同時讀寫;
●能進行深度和寬度擴展;
●具有“空、半滿、滿”標志;
●可重復傳輸;
●高性能CMOS技術。
IDT7204片上的D0~D8為9位數據輸入線,不用的輸入線應當接地;Q0~Q8為9位三態數據輸出線,不用的應當懸空。讀寫操作會自動訪問存儲器中的連續存儲單元,從FIFO中讀出的數據順序與寫入的順序相同,地址的順序在內部已經預先定義好。對芯片的讀/寫操作只由讀/寫信號控制,不需要額外的地址信息。這就使得FIFO的控制電路變得十分簡單。該芯片其它引腳的功能如下:
XI、XO:擴展功能控制線,可在多個芯片級聯構成更大容量的存儲器時使用。本系統進行寬度擴展時,即將兩片IDT7204的FL/RT引腳接電源,XI接地。
RS:復位引腳,每次上電后第一次寫入數據之前,RS必須有一個持續時間大于12ns的低電平時復位(復位后讀、寫指針均指向存儲器的首地址,存儲器內容為空);
EF:存儲器空標志(低電平有效以表示存儲器空。此時讀操作將被禁止);
HF:存儲器半滿標志(低電平有效,表示存儲器已存儲了一半);
FF:存儲器滿標志(低電平有效,用于表示存儲器滿。此時寫操作將被禁止);
R、W:讀、寫控制線,低電平有效;擴展使用時可以將兩片讀寫控制連在一起;讀指針和寫指針的相對位置為0時,EF為低,存儲器空并禁止讀,而當該存儲器為滿容量時,FF為低并禁止寫;
FL/RT:該引腳具有兩個功能。當多個芯片級聯時,該腳接地表示當前的芯片為第一個芯片;而當芯片單獨使用時,該腳則作為讀指針的復位控制線。無論在任何時候,在此引腳輸入一個低電平都可以使讀從頭開始。本系統沒使用此管腳,而是通過一上拉電阻將其拉高。
本系統中,FIFO的RS、R、W信號均直接或間接的受單片機89C51控制,用兩片IDT7204擴展來完成對14數據的存儲,因兩片FIFO器件的狀態完全一樣,所以只要判斷兩個片子中的任何一片標志位(EF、HF、FF即可,另外一片可懸空不用。因FIFO數據的接收方是8位的控制器89C51,采用兩路讀信號(IN4、IN5)分兩次讀14位A/D轉換數據。
2.3 SRAM
SRAM采用IDT71256S35DB,IDT71256S35DB為靜態大容量存儲器,其容量為32Kbit×8,其讀寫存取時間為35ns。89C51通過地址和數據總線對IDT71256S35DB進行讀、寫操作,采用89C51的RD作為IDT71256S35DB的OE(讀選通)信號,用WR作為IDT71256S35
DB的WE(寫選通)信號,用A15作為IDT71256S35DB的片選信號。
3 軟件部分
采用C語言編寫軟件系統,主要包括主程序流程和中斷程序流程,如圖4所示。
圖4系統主程序和中斷程序流程圖
主程序流程中,上電復位后進行初始化狀態變量工作,當外部中斷過來以后,跳出主程序去執行中斷程序,中斷返回后,再回到主程序執行采樣數據從FIFO轉存至SRAM,單片機進行數據處理,處理完畢結果通過485總線上傳上位機。
中斷程序主要完成模擬信號的自動采集,控制ADC進行A/D轉換,轉換后的數據順序寫入FIFO,采集到要求的次數后,開啟轉換結果數據轉存,將FIFO中的數據轉存至SRAM。
4 結束語
文章所介紹的高速數據采集系統采用89C51、AD7899、IDT7204、IDT71256S35DB等器件,電路結構簡單,性能可靠性高。不僅采樣頻率和精度都很高,而且可采樣的模擬輸入信號帶寬也很寬,同時還擁有一定的緩存容量,可以滿足多路高速數據采集的要求。
參考文獻
[1]張柯,鐘和清,林福昌,等.基于DSP和FIFO的多路高速數據采集系統在PFN中的應用[J].電測與儀表,2006,43(492).
[2]陶海軍,張一鳴,曾志輝.基于AD7606的多通道數據采集系統設計[J].工礦自動化,2013,39(12).
[3]王達,楊鐵梅.基于C8051F040的多通道數據無線采集系統[J].計量與測試技術,2013,40(8).
[4]關守平,尤富強,高鑫.基于C8051F040的多通道數據無線采集系統[J].計量與測試技術,2013,20(6).
[5]吳寶麗,陳健.基于FIFO與電平轉換器的DSP高速ADC系統[J].國外電子元器件,2004(10).