- 相關(guān)推薦
換體DMA高速數(shù)據(jù)采集電路的CPLD實現(xiàn)
摘要:介紹了塊體DMA高速數(shù)據(jù)采集電路原理及其CPLD實現(xiàn)。用CPLD設(shè)計雙端口RAM緩存、控制譯碼、時序邏輯電路,很好地解決了電路元件所占體積大、電路復(fù)雜、不能實現(xiàn)在線升級等問題,大大提高了系統(tǒng)的整體性能。在許多儀器和控制系統(tǒng)中,高速數(shù)據(jù)采集電路是必不可少的,也是經(jīng)常需要解決的問題。數(shù)據(jù)采集電路設(shè)計方法很多,但往往離不開A/D轉(zhuǎn)換電路、數(shù)據(jù)緩存電路、控制邏輯電路、地址發(fā)生器、址譯碼電路等。而數(shù)據(jù)緩存、控制邏輯、地址譯碼等電路通常是由RAM芯片、與非門、觸發(fā)器、緩沖/驅(qū)動器等構(gòu)成,導(dǎo)致數(shù)據(jù)采集電路復(fù)雜、芯片繁多,特別是硬件的固定使得采集系統(tǒng)在線升級幾乎不可能。很多情況下只有重新設(shè)計電路和印刷板,重新焊接和調(diào)試,造成開發(fā)周期長、成本大大增高。復(fù)雜可編程邏輯器件CPLD的應(yīng)用,為這些問題的解決提供了一種好的辦法。利用CPLD芯片本身集成的上萬個邏輯門和EAB,把數(shù)據(jù)采集電路中的數(shù)據(jù)緩存、地址發(fā)生器、控制譯碼等電路全部集成進(jìn)一片CPLD芯片中,大大減小了系統(tǒng)的體積,降低了成本,提高了可靠性。同時,CPLD可由軟件實現(xiàn)邏輯重構(gòu),而且可實現(xiàn)在系統(tǒng)中編程(ISP)以及有眾多功能強(qiáng)大的EDA軟件的支持,使得系統(tǒng)具有升級容易、開發(fā)周期短等優(yōu)點。在數(shù)據(jù)采集有電路中,采用換體DMA技術(shù)不但大大地提高了數(shù)據(jù)采集的速度,而且彌補(bǔ)了數(shù)據(jù)采集中可能丟失數(shù)據(jù)的缺陷。
1 換體DMA數(shù)據(jù)采集電路原理
系統(tǒng)原理框圖如圖1所示。在時序電路的控制下,模擬輸入開關(guān)將多達(dá)16路(單端輸入)或8路(差分輸入)的模擬輸入信號經(jīng)多路開關(guān)送至放大器的輸入端,放大后由內(nèi)含采樣/保持電路的模數(shù)轉(zhuǎn)換器AD774B轉(zhuǎn)換成數(shù)字量,轉(zhuǎn)換完的數(shù)字量經(jīng)時序電路的控制寫入兩個存儲體的一個(例如存儲體0)中。每個存儲體有4KB的容量,但實際使用中存儲容量可設(shè)定為小于4KB。當(dāng)計數(shù)到設(shè)定的存儲空量后,控制電路產(chǎn)生換體信號,后續(xù)的A/D轉(zhuǎn)換數(shù)據(jù)自動地存入另一個存儲體(存儲體1)。同時控制電路向主機(jī)發(fā)出DMA請求信號,主機(jī)響應(yīng)請求后在時序電路配合下,從已存儲規(guī)定數(shù)據(jù)的存儲體(存儲體0)中讀入所存的數(shù)據(jù)。這樣存儲體0和存儲體1交替存取,直到規(guī)定的換體次數(shù)計完為止。
數(shù)據(jù)采集電路中,時序控制電路、地址發(fā)生器、多路控制驅(qū)動器等芯片眾多,占用了大部分體積,邏輯時序復(fù)雜。用CPLD實現(xiàn)這些電路則顯得簡單明了,如圖2所示。圖2中地址發(fā)生器、雙端口RAM、時序控制等電路都可以用HDL語言或原理圖,或是兩者結(jié)合來實現(xiàn),使電路開發(fā)簡單、靈活、方便。
2 采用CPLD實現(xiàn)換體DMA
CPLD的開發(fā)必須經(jīng)過前期的邏輯設(shè)計、前仿真、后仿真、目標(biāo)代碼下載及在調(diào)試等過程,該設(shè)計過程是借助ALTERA公司的EDA軟件MAXPLUS II 10.1來實現(xiàn)的。MAXPLUS II支持原理圖輸入、HDL語言輸入、設(shè)計波形輸入等。本設(shè)計則是將原理圖和HDL語言輸入相結(jié)合,這樣既可以加快開發(fā)速度,又不失靈活性。本電路設(shè)計所用的CPLD芯片一FLEX10K30E。它是ALTERA公司1995年把EAB與邏輯陣列塊相結(jié)合的產(chǎn)品,增加了許多FLEX10KA、B系列沒有的新特點;FLEX10K30E內(nèi)有30000個邏輯門,247576個RAM位,支持3.3V、5V多種電源,速度等級高。
2.1 數(shù)據(jù)緩存——雙端口RAM
雙端口RAM的核心是存儲器陣列,它的讀與寫相互獨立,有各自的時鐘線、地址總線、數(shù)據(jù)總線和使能端。在數(shù)據(jù)采集時,數(shù)據(jù)進(jìn)入存儲器進(jìn)行緩存,同時CPU可以從緩存中取出數(shù)據(jù)讀進(jìn)計算機(jī)內(nèi)存。在傳統(tǒng)的雙RAM換體方案中要實現(xiàn)換體,存儲器芯片必須使用偶數(shù)片來交互存儲;當(dāng)A/D數(shù)據(jù)位數(shù)超過8位時,需要另加芯片來存儲高于8位的數(shù)據(jù)。在CPLD中設(shè)計雙端口RAM模塊不但實現(xiàn)了雙RAM換體功能,而且使緩存RAM的數(shù)據(jù)位數(shù)、存儲量大小可以根據(jù)需要任意配置。
如上所述,在CPLD中設(shè)計雙端口RAM,可以有兩種方式:原理圖輸入和HDL語言輸入。本設(shè)計采用的是MAXPLUS II庫中的LPM_RAM_DP宏,原理圖如圖3所示。
在LPM_RAM_DP宏中總共有10個可配置參數(shù)。通常情況下,只配置LPM_WIDTH(數(shù)據(jù)寬度)、LPM_WIDTHAD(地址總線寬度)、USE_EAB(是否使用嵌入式陣列塊EAB)三個參數(shù)。在本設(shè)計中,AD774B的數(shù)據(jù)寬度是12位,轉(zhuǎn)換速度為8微秒,所以配置了LPM_WIDTH=12,LPM_WIDTHAD=10(緩存容量為1K),USE_EAB=ON。對于緩存的大小,可以在調(diào)試過程中根據(jù)具體采集速度和緩存要求進(jìn)行在線調(diào)整,而不影響其他邏輯電路。
圖3LPM_RAM_DP模塊中rdaddress、rden、rdclock、rdclken、q分別為讀端的地址線、使能端、時鐘線、時鐘使能和數(shù)據(jù)線;data、wraddress為寫端的數(shù)據(jù)總線和地址總線。圖3的雙端口RAM模塊并沒有BUSY端,當(dāng)寫地址和讀地址相同時,數(shù)據(jù)位沖突,讀寫不能正常工作。在實際工作中,這種問題是不應(yīng)該出現(xiàn)的。結(jié)合本系統(tǒng)的具體需要,在此引入了存儲器分而概念,即把1k字節(jié)的雙端RAM分為2頁,每頁512字節(jié),分別為讀緩存頁和寫緩存頁,兩者相互交換。當(dāng)采集數(shù)據(jù)量達(dá)到512字節(jié)時,系統(tǒng)馬上申請DMA傳送,把剛轉(zhuǎn)換完的第一頁中的512字節(jié)數(shù)據(jù)送給計算機(jī),傳送結(jié)束后等待下一次DMA申請;與此同時,A/D繼續(xù)工作,轉(zhuǎn)換的數(shù)據(jù)放在第2頁0~511地址中。任何時候讀寫都分別在不同的頁工作,從而有效地避免了數(shù)據(jù)沖突,但又不影響數(shù)據(jù)傳輸速度。具體的分頁控制主要由地址發(fā)生器設(shè)計確定。
2.2 分頁地址發(fā)生器
分頁地址發(fā)生器不但要產(chǎn)生雙端口RAM的讀寫地址,而且還要為緩存器分頁;頁寫滿時,還要提供DMA傳輸申請信號。為了增強(qiáng)靈活性,讀寫地址發(fā)生器由VHDL語言編程集中在一個模塊實現(xiàn),部分程
【換體DMA高速數(shù)據(jù)采集電路的CPLD實現(xiàn)】相關(guān)文章:
USB接口的高速數(shù)據(jù)采集卡的設(shè)計與實現(xiàn)03-18
DMA結(jié)合McBSP在數(shù)據(jù)采集系統(tǒng)中的應(yīng)用設(shè)計03-18
基于USB總線的高速數(shù)據(jù)采集系統(tǒng)03-26
利用VB的MSComm控件實現(xiàn)GPS數(shù)據(jù)采集03-07
利用ColdFire uClinux實現(xiàn)數(shù)據(jù)采集和傳輸03-19
利用DSP和CPLD增強(qiáng)數(shù)據(jù)采集的可擴(kuò)展性03-20
ISP技術(shù)在高速數(shù)據(jù)采集模塊中的應(yīng)12-07