<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 數(shù)字示波器之DMA高速數(shù)據(jù)采集方案設(shè)計

          數(shù)字示波器之DMA高速數(shù)據(jù)采集方案設(shè)計

          作者: 時間:2017-01-12 來源:網(wǎng)絡(luò) 收藏

            數(shù)據(jù)寫入RAM后,還要能夠被MCU從RAM中獲取,RAM數(shù)據(jù)讀出時序如圖6所示。

            從圖中看出,當(dāng)CE=0;OE=0時,RAM將地址選擇的內(nèi)部單元數(shù)據(jù)輸出到數(shù)據(jù)總線從而可以被MCU讀取。

            這里有一個問題要考慮清楚,為了實現(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ù)據(jù)線具有三態(tài)功能,就能夠?qū)崿F(xiàn)數(shù)據(jù)線分時復(fù)用,通過控制電路實現(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é)拍實現(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上實現(xiàn)非常方便,請讀者吸收DMA設(shè)計思路后自己完成電路設(shè)計。

            四、結(jié)束語

            筆者完成的DMA高速數(shù)據(jù)采集卡對2MHz、1MHz的正弦信號采樣并繪圖效果如圖8(a)、(b)所示。對于低于1MHz的正弦信號采集后能夠非常光滑清晰的還原出正弦波形。在CPLD內(nèi)部時鐘精確分頻后還可以實現(xiàn)多頻點(diǎn)采樣,例如20MHz采樣,10MHz采樣,1MHz采樣。



          上一頁 1 2 下一頁

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();