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

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于CPLD 120MHz高速A/D采集卡設(shè)計

          基于CPLD 120MHz高速A/D采集卡設(shè)計

          ——
          作者:徐法東 翟正軍 時間:2005-09-19 來源:電子產(chǎn)品世界 收藏

          基于CPLD 120MHz高速A/D采集卡設(shè)計

          摘 要:介紹了一種基于復(fù)雜可編程邏輯器件(CPLD)的120MHz高速A/D采集卡的設(shè)計方法。給出了這種采集卡的硬件原理電路和主要的軟件設(shè)計思路。采用該設(shè)計方法設(shè)計的數(shù)據(jù)采集卡具有包括負(fù)延遲觸發(fā)等多種觸發(fā)方式,具有體積小,工作可靠,控制簡單等特點(diǎn)。

          關(guān)鍵詞:高速A/D;CPLD;負(fù)延遲觸發(fā);EPM7128;AD9054

            高速A/D采集技術(shù)已在許多領(lǐng)域得到愈來愈廣泛的應(yīng)用,本文將詳細(xì)論述采用CPLD技術(shù)來實(shí)現(xiàn)120MHz高速A/D采集卡的設(shè)計方法,該采集卡具有包括負(fù)延遲觸發(fā)在內(nèi)的多種觸發(fā)方式,采用CPLD復(fù)雜可編程邏輯器件(又稱FPGA)EPM7128SQC100-7和AD公司的高速模數(shù)轉(zhuǎn)換器(A/D)AD9054BST-135來實(shí)現(xiàn)。

              1  芯片介紹

              1.1 EPM7128SQC100-7簡介

            EPM7128SQC100-7內(nèi)含128個宏單元(或2500個可用門),其引腳到引腳的最短傳輸延時為7ns,采用單+5V電源供電,可通過JTAG接口實(shí)現(xiàn)在線編程,并帶有可供84個用戶使用的I/O腳(其中4個為專用輸入腳)。該器件采用PQFP-100封裝。其中TDI、TDO、TMS、TCLK腳為編程腳;GCLK、GOE、GCLEAR、REDIN腳為專用輸入腳;VCCINT、VCCIO腳接+5V電源;GND腳接地;I/O為用戶可編程輸入輸出腳。在I/O腳作輸出使用時,可由用戶設(shè)定為0,1和Z三種狀態(tài)。

              1.2 AD9054BST-135簡介   

            AD9054BST-135是一種低價位135MSPS的8位A/D轉(zhuǎn)換器,其模擬輸入電壓峰峰值為1V,且內(nèi)置2.5V參考電壓,采用+5V單電源供電,并可與TTL電平接口,具有單8位或雙8位A/D轉(zhuǎn)換結(jié)果輸出模式,采用TQFP-44腳封裝形式,其內(nèi)部結(jié)構(gòu)如圖1所示,各管腳的定義如下:

              AIN:模擬電壓輸入正端;

              :模擬電壓輸入負(fù)端;

              ENCODE:時鐘輸入正端;

           ?。簳r鐘輸入負(fù)端,通常應(yīng)通過電容耦合接地;

           ?。狠敵鰯?shù)據(jù)模式設(shè)置引腳。該腳為1時,采用單8位A/D轉(zhuǎn)換結(jié)果輸出模式。該腳為0時,采用雙8位A/D轉(zhuǎn)換結(jié)果輸出模式;

              DS:數(shù)據(jù)同步控制引腳,正脈沖輸入;

              AD7~DA0:A/D轉(zhuǎn)換輸出;

              D B7~DB0:A/D轉(zhuǎn)換輸出;

              V REFOUT:+2.5V參考電壓輸出;

              V REFIN:參考電壓輸入;

              DVD:+5V電源輸入端;

              GND:電源地。

            使用時,如將接地,則AD9054工作于雙8路數(shù)據(jù)輸出模式。上電后,DA7~DA0及DB7~DB0均以二分之一的ENCODE頻率(即120MHz/2)輸出A/D轉(zhuǎn)換結(jié)果,因此從DA7~DA0及DB7~DB0讀取的A/D轉(zhuǎn)換結(jié)果,無法知曉DA口與DB口的數(shù)據(jù)所對應(yīng)的采樣點(diǎn)在時序上的先后。這樣,需要加一個數(shù)據(jù)同步脈沖DS信號,并讓DS正脈沖的后沿后的4個時鐘周期上的DA口與DB口同步有效,即在DS后沿的第2N+1與2N+3個ENCODE上升沿期間輸出第K點(diǎn)采樣值的轉(zhuǎn)換結(jié)果;在DS后沿后第2N+2與2N+4個ENCODE上升沿期間輸出第K+1點(diǎn)采樣值的轉(zhuǎn)換結(jié)果(注:N≥1,K≥0,K=0對應(yīng)的采樣值為DS下降沿后ENCODE第一次上升沿時刻所對應(yīng)的采樣輸入值)。因此,在施加DS信號后就可以得知任一時刻A口數(shù)據(jù)與B口數(shù)據(jù)所對應(yīng)的采樣點(diǎn)在時間上的先后順序,以便讀取有用的A/D轉(zhuǎn)換數(shù)據(jù)。

              2  系統(tǒng)設(shè)計原理  

            圖2是基于CPLD的高速A/D采集卡的系統(tǒng)設(shè)計原理框圖。圖中,89C51送往EPM7128S的控制信號包括一個A/D啟動信號SAD、一個讀SRAM信號RRD和一個地址加一控制脈沖ACLK。而EPM7128S送往AD9054的信號為一個DS同步信號,送往89C51的信號為轉(zhuǎn)換結(jié)束信號(接INT0)和超前觸發(fā)地址串行輸出信號SADR。

              EPM7128S送往61128-15SRAM的信號包括讀信號RD、寫信號WE、數(shù)據(jù)信號DINA0~7和DINB0~7以及地址信號ADR0~16。其中兩片SRAM的地址信號共用。為了節(jié)省EPM7128S的I/O口線,可將61128-15的片選線接地。

              QA信號為外觸發(fā)A/D轉(zhuǎn)換控制信號。

            在本文所介紹的A/D數(shù)據(jù)采集卡中,負(fù)延遲觸發(fā)存貯深度為2k字節(jié)。上電復(fù)位后,89C51向EPM7128S發(fā)一個A/D啟動信號時,EPM7128S也會發(fā)一個DS同步脈沖給AD9054,在四個時鐘后,EPM7128S輸出WE信號有效,同時將AD9054輸出的雙8位數(shù)據(jù)信號以60MHz的頻率經(jīng)鎖存處理后送往SRAM,每鎖存AD9054數(shù)據(jù)一次(2字節(jié))將地址ADR0~13加1。當(dāng)?shù)刂窞?FF時(即1k),清地址計數(shù)器以使其為零。此后,地址計數(shù)器仍以60MHz的頻率加1計數(shù),而鎖存器仍以60MHz的頻率鎖存雙8位數(shù)據(jù)并寫入SRAM。當(dāng)?shù)刂窞?FF時再一次清零,在外觸發(fā)信號QA到來之前,CPLD就這樣控制著整個電路以使其在2k字節(jié)存貯深度內(nèi)作超前循環(huán)采集。當(dāng)某一時刻的QA信號到來時,CPLD首先將此時的地址信號的前10位ADR0~9鎖存,隨后將地址計數(shù)器置為400H,而后地址計數(shù)器仍以60MHz的頻率加1計數(shù),而鎖存器也以60MHz的頻率鎖存雙8位數(shù)據(jù)并寫入SRAM。當(dāng)?shù)刂酚嫈?shù)器為1FFFFH(即128k)時,地址計數(shù)器停止計數(shù),鎖存器停止鎖存數(shù)據(jù)并對外輸出高阻態(tài),CPLD向89C51送出轉(zhuǎn)換結(jié)束信號ADEND,并置WE信號無效。

            當(dāng)89C51收到ADEND中斷信號后,就可以讀取SRAM中的A/D數(shù)據(jù)以及CPLD中的超前地址ADR0~9。首先89C51將送出一個RRD信號給EPM7128S,EPM7128S收到RRD信號后立即置RD信號有效,同時將地址計數(shù)器清零。此時,兩片SRAM均輸出地址為0的單元的數(shù)據(jù),同時由CPLD的SADR線輸出負(fù)延遲觸發(fā)地址ADR0~9中的ADR0位。89C51則可通過P0和P2口由DINA和DINB分別讀取SRAM中的數(shù)據(jù),并通過P1口由SADR讀地址ADR0位。此后89C51便向EPM7128S發(fā)出一個地址加一脈沖ACLK,EPM7128S在收到這個ACLK脈沖后使ADR0~13加1,同時CPLD由SADR線輸出負(fù)延遲觸發(fā)地址ADR0~9中的ADR1位。這樣,89C51便可通過不斷地發(fā)ACLK脈沖來使P0、P2口的DINA和DINB分別讀取SRAM中的數(shù)據(jù),并通過P1口來由SADR讀負(fù)延遲觸發(fā)地址ADR0~9。

            3  CPLD部分的設(shè)計

            由于EPM7128SQC100的內(nèi)部邏輯電路是整個系統(tǒng)設(shè)計的關(guān)鍵,因此,了解EPM7128SQC100的內(nèi)圖2基于CPLD的高速A/D采集卡統(tǒng)框圖基于復(fù)雜可編程邏輯器件(CPLD)的120MHz高速A/D采集卡的設(shè)計部結(jié)構(gòu)十分重要。圖3是其內(nèi)部結(jié)構(gòu)原理框圖.
            
              圖3中有三個574鎖存器,其作用是將AD9054輸出的在時序上未對齊的DA、DB兩組數(shù)據(jù)變?yōu)闀r序上對齊的兩組數(shù)據(jù)DINA、DINB,圖4是其對齊操作時序圖。

              將120MHz信號二分頻后所得到的60MHz信號可作為整個邏輯電路的工作頻率。工作時,同步控制電路首先將外輸入信號與內(nèi)部60MHz信號同步,然后送往各單元電路。地址計數(shù)器的工作情況有兩種:一是進(jìn)行A/D采集時以60MHz頻率計數(shù),二是89C51讀數(shù)時以ACLK脈沖頻率計數(shù)。RD、WE發(fā)生電路的作用是當(dāng)89C51發(fā)SAD信號時,電路輸出WE信號有效,RD信號無效;而當(dāng)89C51發(fā)RRD信號時,電路輸出RD信號有效,WE信號無效。DS信號發(fā)生電路的作用是在收到89C51的SAD信號時發(fā)送一個DS正脈沖。

              10位移位寄存器的作用是當(dāng)外觸發(fā)信號QA到達(dá)時將地址計數(shù)器中的ADR0~9鎖存,當(dāng)收到RRD信號后,系統(tǒng)每接收一個ACLK脈沖便將寄存器移位輸出一次,順序是低位在前。

            4  單片機(jī)的軟件設(shè)計

              單片機(jī)的軟件設(shè)計主要是負(fù)責(zé)把各種控制信號和數(shù)據(jù)送給CPLD,并把采集到的數(shù)據(jù)通過接口送到上位機(jī)或其它設(shè)備。本卡中的接口有串口和并口兩種類型。對CPLD的操作的軟件流程框圖如圖5所示。

            由于采用了負(fù)延遲觸發(fā),所以由SRAM所讀取的256k字節(jié)并不是按時間的先后順序存放的,因此必須進(jìn)行重新排序整理。

              5  注意事項

            在利用本文的設(shè)計方法進(jìn)行120MHz A/D設(shè)計時應(yīng)注意以下幾點(diǎn):

              (1)應(yīng)選用高速器件。

           ?。?)電路中的器件布局要合理,高頻信號線應(yīng)盡量的短。

           ?。?)進(jìn)行時序分析時應(yīng)充分考慮器件延時,必要時應(yīng)考慮長線傳輸延時,這也是高頻信號線應(yīng)盡量短些的原因之一。

           ?。?)盡量采用同步設(shè)計。也就是說整個電路要盡最大可能按某一高頻時鐘同步工作。本電路的同步時鐘為60MHz。

           ?。?)電路內(nèi)部要盡量濾去毛刺。特別是觸發(fā)器、計數(shù)器的時鐘信號、清零信號和置位信號,更應(yīng)如此。

              參考文獻(xiàn) 

            1.齊懷印,盧錦.高級邏輯器件與設(shè)計.北京:電子工業(yè)出版社,1996 

            2.閻石.?dāng)?shù)字電子技術(shù)基礎(chǔ).北京:高等教育出版社.1996 

            3.陳龍三.8051單片機(jī)C語言控制與應(yīng)用.北京: 清華大學(xué)出版社,1999



          評論


          相關(guān)推薦

          技術(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); })();