本刊前兩期給出了數(shù)字示波器DIY制作方案,第一篇集中介紹了LCD繪圖顯示,第二篇介紹了模擬信號調(diào)理,完成這些內(nèi)容學(xué)習(xí)之后,讀者可能會發(fā)現(xiàn)一個致命的問題,那就是高速數(shù)據(jù)采集,前面給出的方案是基于MCU控制的ADC,這種方案致命的缺陷是數(shù)據(jù)采集的速度慢,對頻率稍高的信號無法有效采樣,本篇將介紹一種MCU加CPLD控制的DMA高速數(shù)據(jù)采樣方案。
一、傳統(tǒng)低速數(shù)據(jù)采集
傳統(tǒng)MCU控制的ADC數(shù)據(jù)采集原理框圖如圖1所示,MCU運(yùn)行驅(qū)動程序控制ADC循環(huán)轉(zhuǎn)換,每次轉(zhuǎn)換通常由啟動、查詢等待、讀取數(shù)據(jù)、寫入RAM幾個過程,每一個過程都需要CPU執(zhí)行若干指令來實(shí)現(xiàn),這樣的數(shù)據(jù)采集不僅受ADC速度,尤其是受到MCU運(yùn)行速度影響,通常只能做低速數(shù)據(jù)采集。
二、DMA數(shù)據(jù)采集
DMA也就是DirectMemoryAccess簡稱,是直接內(nèi)存存取的意思,DMA的主要優(yōu)勢是可在無CPU干涉的情況下進(jìn)行數(shù)據(jù)的交換,可以將ADC的速度發(fā)揮到極致;贛CU加CPLD控制的DMA原理框圖如圖2所示。MCU通過對CPLD的控制,實(shí)現(xiàn)讓出數(shù)據(jù)總線,由CPLD時序邏輯電路控制AD循環(huán)轉(zhuǎn)換并將結(jié)果直接存儲到RAM中,這個循環(huán)過程是純硬件電路實(shí)現(xiàn)的,因此速度快,不受MCU速度影響。MCU查詢到一幀數(shù)據(jù)采集完成后,再奪回數(shù)據(jù)總線,從RAM中讀取數(shù)據(jù),處理數(shù)據(jù)并顯示波形。
下面我們結(jié)合具體的器件來介紹這種DMA方案,ADC器件選擇TLC5510,RAM選擇UT62256,32KSRAM。
TLC5510是美國德州儀器公司生產(chǎn)的8位半閃速結(jié)構(gòu)模數(shù)轉(zhuǎn)換器,它采用CMOS工藝制造,可提供最小20Msps的采樣率。
TLC5510的工作時序圖如圖3所示,時鐘信號CLK在每一個下降沿采集模擬輸入信號。第N次采集的數(shù)據(jù)經(jīng)過2.5個時鐘周期的延遲之后,在時鐘上升沿將轉(zhuǎn)換得到的結(jié)果送到內(nèi)部數(shù)據(jù)總線上,在時鐘其他時間段數(shù)據(jù)保持不變?梢钥吹,該器件可以在20MHz時鐘信號驅(qū)動下以20MHz的采樣率采集數(shù)據(jù),平均獲得一個數(shù)據(jù)只要0.05μs。
RAM數(shù)據(jù)寫入時序圖如圖4所示。RAM的寫入條件是具備確定的地址ADDR,CE=0,WE=0,OE=1;數(shù)據(jù)線上的數(shù)據(jù)將被寫入RAM內(nèi)部相應(yīng)的單元。
綜合TLC5510的工作時序和RAM的寫入時序,提出如圖5所示的驅(qū)動過程。基于同一個時鐘信號驅(qū)動,在時鐘下降沿①、低電平②、上升沿③、高電平④4個節(jié)拍中,同步實(shí)現(xiàn)AD轉(zhuǎn)換和數(shù)據(jù)寫入RAM。
數(shù)據(jù)寫入RAM后,還要能夠被MCU從RAM中獲取,RAM數(shù)據(jù)讀出時序如圖6所示。
從圖中看出,當(dāng)CE=0;OE=0時,RAM將地址選擇的內(nèi)部單元數(shù)據(jù)輸出到數(shù)據(jù)總線從而可以被MCU讀取。
這里有一個問題要考慮清楚,為了實(shí)現(xiàn)ADC結(jié)果直接存入RAM,已經(jīng)將5510的數(shù)據(jù)線和RAM的數(shù)據(jù)線直接相連了,現(xiàn)在還要將MCU的數(shù)據(jù)線和RAM的數(shù)據(jù)線相連,會不會出現(xiàn)數(shù)據(jù)沖突?其實(shí)只要器件數(shù)據(jù)線具有三態(tài)功能,就能夠?qū)崿F(xiàn)數(shù)據(jù)線分時復(fù)用,通過控制電路實(shí)現(xiàn)數(shù)據(jù)總線上某階段只能有一個數(shù)據(jù)輸出源,例如當(dāng)ADC直接給RAM存入數(shù)據(jù)時,MCU要讓出數(shù)據(jù)總線,當(dāng)MCU讀取RAM數(shù)據(jù)時,ADC要高阻態(tài)隔離數(shù)據(jù)總線。
三、控制電路設(shè)計
控制電路原理如圖7所示,在MCU的控制下,RAM和ADC的控制信號通過多路選擇器選擇與MCU總線模式或DMA模式相連,這兩種模式被MCU完全控制,可以自由切換,當(dāng)選擇DMA模式時,MCU首先要讓出數(shù)據(jù)總線,確保ADC與RAM占用數(shù)據(jù)總線,此時,RAM的地址由地址計數(shù)器產(chǎn)生,RAM_CE=0(片選有效);RAM_OE=1(禁止讀);ADC_OE=0(內(nèi)部數(shù)據(jù)總線上的數(shù)據(jù)直接輸出到外部數(shù)據(jù)總線上);RAM_WE與ADC_CLK、地址計數(shù)器共用同一時鐘信號,按圖5中4節(jié)拍實(shí)現(xiàn)AD轉(zhuǎn)換后數(shù)據(jù)直接存儲到RAM中,DMA過程在MCU清零地址計數(shù)器后開始,沒一個時鐘周期AD輸出一個數(shù)據(jù)直接存入RAM,同時地址計數(shù)器加1,當(dāng)?shù)刂酚嫈?shù)器溢出后被MCU檢測到則表示一幀數(shù)據(jù)采集完成。
一幀數(shù)據(jù)采集完成后,MCU切換到MCU總線模式讀取RAM的結(jié)果,這時RAM_CE=0(或接MCU地址引腳);RAM_OE=RD(MCU讀控制信號);ADC_OE=1(禁止ADC數(shù)據(jù)占用數(shù)據(jù)線);RAM_WE=WR,ADC_CLK=0,這時MCU可以自由讀取RAM。
圖7所示邏輯電路用硬件描述語言在CPLD上實(shí)現(xiàn)非常方便,請讀者吸收DMA設(shè)計思路后自己完成電路設(shè)計。
四、結(jié)束語
筆者完成的DMA高速數(shù)據(jù)采集卡對2MHz、1MHz的正弦信號采樣并繪圖效果如圖8(a)、(b)所示。對于低于1MHz的正弦信號采集后能夠非常光滑清晰的還原出正弦波形。在CPLD內(nèi)部時鐘精確分頻后還可以實(shí)現(xiàn)多頻點(diǎn)采樣,例如20MHz采樣,10MHz采樣,1MHz采樣。
作者:田開坤 李任青 來源:《電子制作》