<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 換體DMA高速數據采集電路的CPLD實(shí)現

換體DMA高速數據采集電路的CPLD實(shí)現

作者: 時(shí)間:2008-12-22 來(lái)源:網(wǎng)絡(luò ) 收藏
在許多儀器和控制系統中,是必不可少的,也是經(jīng)常需要解決的問(wèn)題。數據設計方法很多,但往往離不開(kāi)A/D轉換電路、數據緩存電路、控制邏輯電路、地址發(fā)生器、地址譯碼電路等。而數據緩存、控制邏輯、地址譯碼等電路通常是由RAM芯片、與非門(mén)、觸發(fā)器、緩沖/驅動(dòng)器等構成,導致數據復雜、芯片繁多,特別是硬件的固定使得采集系統在線(xiàn)升級幾乎不可能。很多情況下只有重新設計電路和印刷板,重新焊接和調試,造成開(kāi)發(fā)周期長(cháng)、成本大大增高。復雜可編程邏輯器件的應用,為這些問(wèn)題的解決提供了一種好的辦法。利用芯片本身集成的上萬(wàn)個(gè)邏輯門(mén)和EAB,把數據采集電路中的數據緩存、地址發(fā)生器、控制譯碼等電路全部集成進(jìn)一片芯片中,大大減小了系統的體積,降低了成本,提高了可靠性。同時(shí),CPLD可由軟件實(shí)現邏輯重構,而且可實(shí)現在系統中編程(ISP)以及有眾多功能強大的EDA軟件的支持,使得系統具有升級容易、開(kāi)發(fā)周期短等優(yōu)點(diǎn)。在數據采集電路中,采用換體技術(shù)不但大大地提高了數據采集的速度,而且彌補了數據采集中可能丟失數據的缺陷。

1 換體數據采集電路原理

本文引用地址:http://dyxdggzs.com/article/192177.htm

系統原理框圖如圖1所示。在時(shí)序電路的控制下,模擬輸入開(kāi)關(guān)將多達16路(單端輸入)或8路(差分輸入)的模擬輸入信號經(jīng)多路開(kāi)關(guān)送至放大器的輸入端,放大后由內含采樣/保持電路的模數轉換器AD774B轉換成數字量,轉換完的數字量經(jīng)時(shí)序電路的控制寫(xiě)入兩個(gè)存儲體的一個(gè)(例如存儲體0)中。每個(gè)存儲體有4KB的容量,但實(shí)際使用中的存儲體容量可設定為小于4KB。當計數到設定的存儲容量后,控制電路產(chǎn)生換體信號,后續的A/D轉換數據自動(dòng)地存入另一個(gè)存儲體(存儲體1)。同時(shí)控制電路向主機發(fā)出請求信號,主機響應請求后在時(shí)序電路的配合下,從已存夠規定數據的存儲體(存儲體0)中讀入所存的數據。這樣存儲體0和存儲體1交替存取,直到規定的換體次數計完為止。

數據采集電路中,時(shí)序控制電路、地址發(fā)生器、多路控制驅動(dòng)器等芯片眾多,占用了大部分體積,邏輯時(shí)序復雜。用CPLD實(shí)現這些電路則顯得簡(jiǎn)單明了,如圖2所示。圖2中地址發(fā)生器、雙端口RAM、時(shí)序控制等電路都可以用HDL語(yǔ)言或原理圖,或是兩者結合來(lái)實(shí)現,使電路開(kāi)發(fā)簡(jiǎn)單、靈活、方便。

2 采用CPLD實(shí)現換體DMA

CPLD的開(kāi)發(fā)必須經(jīng)過(guò)前期的邏輯設計、前仿真、后仿真、目標代碼下載及在線(xiàn)調試等過(guò)程,該設計過(guò)程是借助ALTERA公司的EDA軟件MAXPLUS II 10.1來(lái)實(shí)現的。MAXPLUS II支持原理圖輸入、HDL語(yǔ)言輸入、設計波形輸入等。本設計則是將原理圖和HDL語(yǔ)言輸入相結合,這樣既可以加快開(kāi)發(fā)速度,又不失靈活性。本電路設計所用的CPLD芯片―FLEX10K30E。它是ALTERA公司1995年把EAB與邏輯陣列塊相結合的產(chǎn)品,增加了許多FLEX10KA、B系列沒(méi)有的新特點(diǎn);FLEX10K30E內有30000個(gè)邏輯門(mén),247576個(gè)RAM位,支持3.3V、5V多種電源,速度等級高。

2.1 數據緩存――雙端口RAM

雙端口RAM的核心是存儲器陣列,它的讀與寫(xiě)相互獨立,有各自的時(shí)鐘線(xiàn)、地址總線(xiàn)、數據總線(xiàn)和使能端。在數據采集時(shí),數據進(jìn)入存儲器進(jìn)行緩存,同時(shí)CPU可以從緩存中取出數據讀進(jìn)計算機內存。在傳統的雙RAM換體方案中要實(shí)現換體,存儲器芯片必須使用偶數片來(lái)交互存儲;當A/D數據位數超過(guò)8位時(shí),需要另加芯片來(lái)存儲高于8位的數據。在CPLD中設計雙端口RAM模塊不但實(shí)現了雙RAM換體功能,而且使緩存RAM的數據位數、存儲量大小可以根據需要任意配置。

如上所述,在CPLD中設計雙端口RAM,可以有兩種方式:原理圖輸入和HDL語(yǔ)言輸入。本設計采用的是MAXPLUS II庫中的LPM_RAM_DP宏,原理圖如圖3所示。

在LPM_RAM_DP宏中總共有10個(gè)可配置參數。通常情況下,只配置LPM_WIDTH(數據寬度)、LPM_WIDTHAD(地址總線(xiàn)寬度)、USE_EAB(是否使用嵌入式陣列塊EAB)三個(gè)參數。在本設計中,AD774B的數據寬度是12位,轉換速率為8微秒,所以配置了LPM_WIDTH=12,LPM_WIDTHAD=10(緩存容量為1K),USE_EAB=ON。對于緩存的大小,可以在調試過(guò)程中根據具體采集速度和緩存要求進(jìn)行在線(xiàn)調整,而不影響其他邏輯電路。

圖3LPM_RAM_DP模塊中rdaddress、rden、rdclock、rdclken、q分別為讀端的地址線(xiàn)、使能端、時(shí)鐘線(xiàn)、時(shí)鐘使能和數據線(xiàn);data、wraddress為寫(xiě)端的數據總線(xiàn)和地址總線(xiàn)。圖3的雙端口RAM模塊并沒(méi)有BUSY端,當寫(xiě)地址和讀地址相同時(shí),數據位沖突,讀寫(xiě)不能正常工作。在實(shí)際工作中,這種問(wèn)題是不應該出現的。結合本系統的具體需要,在此引入了存儲器分頁(yè)概念,即把1K字節的雙端口RAM分為2頁(yè),每頁(yè)512字節,分別為讀緩存頁(yè)和寫(xiě)緩存頁(yè),兩者相互交換。當采集數據量達到512字節時(shí),系統馬上申請DMA傳送,把剛轉換完的第一頁(yè)中的512字節數據送給計算機,傳送結束后等待下一次DMA申請;與此同時(shí),A/D繼續工作,轉換的數據放在第2頁(yè)0~511地址中。任何時(shí)候讀寫(xiě)都分別在不同的頁(yè)工作,從而有效地避免了數據沖突,但又不影響數據傳輸速度。具體的分頁(yè)控制主要由地址發(fā)生器設計確定。

2.2 分頁(yè)地址發(fā)生器

分頁(yè)地址發(fā)生器不但要產(chǎn)生雙端口RAM的讀寫(xiě)地址,而且還要為緩存器分頁(yè);頁(yè)寫(xiě)滿(mǎn)時(shí),還要提供DMA傳輸申請信號。為了增強靈活性,讀寫(xiě)地址發(fā)生器由VHDL語(yǔ)言編程集中在一個(gè)模塊實(shí)現,部分程序如下:

signal wtmp:integer range 0 to 1023;

signal rtmp:integer range 0 to 1023;

signal page:intefer range 0 to 1;

if(wclk'event and wclk='1') then

if(wtmp>1023) then wtmp=0;

else wtmp=wtmp+1; --wtpm為寫(xiě)地址值

end if;

if (0=

else page=1; --“0”代表第0頁(yè)

end if; --“1”代表第一頁(yè)

if(wtmp=512 and wtmp=1023)then page_full='1';

else page_full='0'; --page-full為頁(yè)寫(xiě)滿(mǎn)標志,同時(shí)為DMA傳送申請信號

end if;

end if;

if(page=0)then rtmp=0; --不同的頁(yè)置不同的數據讀地址初始值

else if(page=1)then rtmp=512;

end if;

if(rclk'event and rclk='1') then

if(en='1' and rtmp1024) then rtmp=rtmp+1;

end if; --rtmp為讀地址值

end if;

代碼經(jīng)過(guò)編譯生成的原理框圖如圖3的ADD_CREATE模塊。在圖形輸入編輯環(huán)境下,可以把它作為一個(gè)標準的原理圖與其他模塊連接;寫(xiě)地址時(shí)鐘WCK由AD774B的STS端產(chǎn)生,每一組數據轉換結束后,地址發(fā)生器加1,讀地址時(shí)鐘RCK由DMA應答信號DACK提供;PAGE_FULL在0頁(yè)或1頁(yè)滿(mǎn)時(shí)變?yōu)楦唠娖?經(jīng)D觸發(fā)器申請DMA傳輸,把剛滿(mǎn)頁(yè)的數據送給計算機內存。

2.3 時(shí)序邏輯電路的設計

在數據采集電路中,時(shí)序邏輯電路主要解決地址譯碼、時(shí)序邏輯控制、數據鎖存等功能。用普通的中小規模集成電路實(shí)現,電路組成龐大;而用VHDL語(yǔ)言實(shí)現則簡(jiǎn)單靈活、易于更新升級。圖3中的微機譯碼電路、數據緩沖器、D觸發(fā)器等都可以在MAXPLUS II的圖形編輯環(huán)境下,從庫中直接調出。計算機在每次DMA傳送中都向外設輸出一個(gè)應答信號DACK和讀允許信號IOR,利用這個(gè)特點(diǎn),正好把它們作為讀緩存的地址時(shí)鐘,即每DMA傳送一次,讀地址加1;AD774B每轉換完一組數據,在STS端輸出由低電平轉為高電平,剛好給寫(xiě)緩存提供寫(xiě)地址時(shí)鐘,同時(shí)經(jīng)過(guò)適當延時(shí),STS又可以送到R/C端作為A/D下一次轉換的啟動(dòng)信號。

3 DMA的應用

數據傳送的查詢(xún)方式和中斷方式都是在CPU的控制下進(jìn)行的,因而傳輸速率受CPU指令運行速度的限制。直接存儲器存取方式,即DMA方式。存儲器與外設在DMA控制器控制下,直接傳送數據而不通過(guò)CPU,傳輸速率主要取決于存儲器存取速度。所以在DMA過(guò)程中,數據傳輸完全由DMA控制器8237A控制,不占用CPU時(shí)間。

在本換體DMA采集電路中,用復雜可編程邏輯器件CPLD來(lái)實(shí)現數據緩存、帶分頁(yè)功能的地址發(fā)生器以及復雜的邏輯和時(shí)序電路等,使得電路大大簡(jiǎn)化;同時(shí)硬件電路軟件化,具有可在線(xiàn)更新、升級容易、保密性強等特點(diǎn)。本換體DMA采集電路已成功地應用在生物醫學(xué)儀器、核譜獲取電路中。



關(guān)鍵詞: CPLD DMA 高速數據 采集電路

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>