1 引言 高速數(shù)據(jù)采集系統(tǒng)廣泛應用于網(wǎng)像信號采集、雷達、軟件無線電等技術領域。在傳統(tǒng)的以MCU為控制器的數(shù)據(jù)采集系統(tǒng)中,數(shù)據(jù)采集頻率直接受到MCU速度的限制。在采樣頻率要求較高的場合。MCU和數(shù)據(jù)存儲的同步將成為問題。 以CPLD為代表的可編程邏輯器件以其工作速度快、靈活的可編程能力等特點越來越受到人們的廣泛應用。它彌補了以MCU為控制器的傳統(tǒng)數(shù)據(jù)采集系統(tǒng)的不足。 2 系統(tǒng)硬件設計 本文設計的高速數(shù)據(jù)采集系統(tǒng)采用ALTERA公司的MAX7000系列產(chǎn)品之一的EPM7128SLC84作為控制器,選用TI公司的TLC5510作為模數(shù)轉換器,其采樣頻率可以達到20MSPS,8位并行輸出。RAM選擇ICSI公司的61C256。系統(tǒng)的硬件原理 如圖1所示。 ![]() 圖1系統(tǒng)原理圖 在該系統(tǒng)中,CPLD和單片機一同構成了系統(tǒng)的控制核心。CPLD與RAM的接口信號分為三類:地址信號、數(shù)據(jù)信號和控制信號。由于本系統(tǒng)采樣數(shù)據(jù)達到2KB即可滿足要求,因此地址信號線為12位,RAM的A12-A14接地;數(shù)據(jù)信號為8位;控制信號為寫使能WE和片選CE。CPLD對TLC5510的接口包括時鐘信號CLK和數(shù)據(jù)輸出使能OE。TLC5510的數(shù)據(jù)輸出端口和RAM的8位數(shù)據(jù)線相連,以便將AD轉換后的數(shù)據(jù)寫入RAM中。 P80C552和CPLD之間的接口信號包括兩類:數(shù)據(jù)信號和控制信號。在CPLD側.8位的數(shù)據(jù)總線與單片機系統(tǒng)數(shù)據(jù)總線D0~D7相連.用以單片機讀取A/D轉換后的數(shù)據(jù)。控制信號包括讀信號RD,寫信號WR和地址譯碼信號Yl及Y2。 2.1 CPLD控制器 CPLD控制器主要負責A/D轉換并將轉換得到的數(shù)據(jù)寫入SRAM中。對TLC5510的控制按照TLC5510數(shù)據(jù)手冊給出的典型電路實現(xiàn):在轉換控制信號ADCLK的每一個下降沿開始采樣,第n次采集的數(shù)據(jù)經(jīng)過2.5個時鐘周期的延遲之后,送到內(nèi)部數(shù)據(jù)總線上。此時如果輸出使能OE有效.則數(shù)據(jù)便可被送至數(shù)據(jù)總線上。啟動后A/D轉換無須控制,將連續(xù)不斷的以轉換時鐘頻率輸出轉換后的并行8位數(shù)字信號。 在轉換過程中,CPLD同時控制采樣數(shù)據(jù)寫入RAM中,這樣就必須考慮TLC5510采樣和61C256寫入的時序匹配。在設計中,首先對clk 40MHZ信號2分頻得到20MHZ信號,將此信號作為TLC5510的采樣時鐘ADCLK。TLC55lo在ADCLK的下降沿采樣,CPLD在ADCLK的上升沿讀取轉換后的數(shù)據(jù)寫入RAM中。 圖2為CPLD對SRAM的控制邏輯電路。主要包括以下幾個部分: (1)寫地址產(chǎn)牛器:由于61C256為32Kx8的SRAM,故寫地址產(chǎn)生器用15位寄存器實現(xiàn)。靠ADCLK時鐘驅動,每進行一次寫操作后,讀寫控制單元使其加1。寫RAM操作發(fā)生在系統(tǒng)采樣前的RAM單凡清零和采樣過程中。 (2)讀地址產(chǎn)牛器:讀地址產(chǎn)牛器也用15位寄存器實現(xiàn)。單片機每次發(fā)出讀信號對RAM讀操作后,讀寫控制單元使其加1,下次單片機從此位置讀取數(shù)據(jù)。 (3)讀寫控制:當需要對SRAM進行寫操作時,由CPLD控制產(chǎn)生寫地址選通信號RAMWR,片選信號RAMCE,同時給數(shù)據(jù)線上送數(shù)據(jù),而寫地址選通信號上升沿到來時使寫地址寄存器增1,使CPLD輸出寫地址。對SRAM進行讀操作相對較簡單,在進行讀操作期間,RAMCE始終為低電平。每進行一次讀操作,地址按系統(tǒng)要求變化一次。 ![]() 圖2 SRAM讀寫控制 2.2 MCU控制器 單片機主要控制對A/D轉換的啟動及對保存在RAM中的數(shù)據(jù)讀入以備后續(xù)處理。在圖l的系統(tǒng)原理中,Yl、Y2為單片機部分通過74LSl38澤碼器產(chǎn)生.RD、WR為單片機的讀寫信號。當Y1和WR有效時,MCU指示CPI.D控制完成對SRAM地址單元內(nèi)容的清零,并復位CPLD內(nèi)部寫地址寄存器值;當Y2和WR有效時.MCU指示CPLD開始進行A/D采樣;當Y2和RD有效時,CPLD對61C256讀取一個單元并通過I/O口將數(shù)據(jù)送至單片機數(shù)據(jù)總線上。本系統(tǒng)中,61C256的讀信號直接由單片機RD信號控制,無須CPLD控制產(chǎn)生。 3 軟件設計 3.1 CPLD部分的軟件設計 CPLD在每個ADCLK時鐘的下降沿,檢測信號Y1、Y2、WR和RD信號的變化,根據(jù)2.2節(jié)中MCU控制器部分給出的功能描述來完成具體的操作。 以下是用Verilog HDL語言描述的CPLD控制程序主要代碼: ![]() ![]() 在上述程序中,clraddr、wraddr和rdaddr為CPLD內(nèi)部清零地址寄存器、寫地址寄存器和讀寄存器,用以產(chǎn)生RAM的讀寫地址。clrbz、cvbz為CPLD內(nèi)部RAM清零和采樣標志,當這兩標志為1有效時,CPLD分別控制完成61C256地址單元內(nèi)容的清零和外部采樣操作,操作完成后兩標志被清0表示無效。流程中的數(shù)值N可根據(jù)實際需要的采樣點數(shù)來調(diào)整。 3.2單片機部分的軟件設計 單片機軟件部分相對簡單,只要根據(jù)Yl、Y2的具體地址,參考MCU對外部SRAM的讀寫操作來方問即可。本設計中,將61C256中的采樣數(shù)據(jù)讀取到單片機部分,以便進行液晶顯示等后續(xù)處理。具體程序段參考如下: /* 產(chǎn)生Y1和WR有效信號,指示CPLD清SRAM 2K單元 */ /*((unsigned char xdata *)CPLD_Y1ADDR)=0x00; /*產(chǎn)生Y2和WR有效信號。指示CPLD開始采樣*/, *((unsigned char xdata *) CPLD_Y2ADDR)=Ox00; for(i=0:i<2048;i++) //通過CPLD讀取SRAM 2K單元內(nèi)容 { /* 產(chǎn)生Y2和RD有效信號。讀61C256中的數(shù)據(jù) */ to_data [ i ]=* ( ( unsigned char xdata * ) CPLD_Y2ADDR); } 4 仿真和實驗結果 ![]() 圖3 CPLD采樣和瀆寫SRAM仿真波形 圖3為CPLD采樣和讀寫SRAM的仿真結果。在仿真過程中,選取采樣點數(shù)為6進行測試以方便觀察。當MCUWR和Yl信號有效時,由CPLD控制產(chǎn)生對SRAM的片選和寫信號,連續(xù)對SRAM單元內(nèi)容清O;當MCUWR和Y2信號有效后,CPLD輸出給TLC5510的采樣時鐘,在2.5個ADCLK周期后,產(chǎn)生TLC5510的輸出使能信號,同時控制61C256的寫操作,將采樣數(shù)據(jù)連續(xù)寫入SRAM單元。仿真過程中,在數(shù)據(jù)總線上模擬了采樣的6個數(shù)據(jù)。當MCURD和Y2信號有效時,CPLD給出61C256的片選信號和地址信號,讀出一個單元的數(shù)據(jù),若再次讀,則地址單元加1。 5 總結 本文設計的基于CPLD與單片機的高速數(shù)據(jù)采集系統(tǒng)在QUARTUS II軟件中進行了仿真并達到了預期的控制邏輯。該系統(tǒng)的實際電路在新型匝問間耐壓測斌儀的開發(fā)中得到了成功的應用。本文創(chuàng)新點:本文的設計方案對于其它高速數(shù)據(jù)采集系統(tǒng)設計具有借鑒價值,通過選擇不同采樣頻率的A/D轉換器,系統(tǒng)可滿足不同應用場合的需求,因而系統(tǒng)具有普遍使用性。 項目經(jīng)濟效益(300萬元) 作者:萬軍 來源:《微計算機信息》(嵌入式與SOC)2009年第4-2期 |