《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > CPLD在高速數(shù)據(jù)采集系統(tǒng)中的應(yīng)用

CPLD在高速數(shù)據(jù)采集系統(tǒng)中的應(yīng)用

2008-10-16
作者:代 芬 張承學(xué) 劉延華

  摘? 要: CPLD在高速數(shù)據(jù)采集系統(tǒng)" title="高速數(shù)據(jù)采集系統(tǒng)">高速數(shù)據(jù)采集系統(tǒng)中的應(yīng)用。介紹了高速數(shù)據(jù)采集系統(tǒng)的整體框架,分析了其中的通用部分;ALTERA公司推出的MAX7000系列產(chǎn)品的特點及其開發(fā)軟件MAX+PLUSII;根據(jù)高速數(shù)據(jù)采集系統(tǒng)的需要,以VHDL語言的形式介紹了由MAX7000系列產(chǎn)品構(gòu)成的地址發(fā)生器、數(shù)據(jù)總線控制器" title="總線控制器">總線控制器和ISA總線接口,指出了在設(shè)計過程中要注意的問題。

  關(guān)鍵詞: CPLD? 高速數(shù)據(jù)采集系統(tǒng)? ISA總線接口

?

  CPLD是復(fù)雜的PLD,專指那些集成規(guī)模大于1000門以上的可編程邏輯器件。它由與陣列、或陣列、輸入緩沖電路、輸出宏單元組成,具有門電路集成度高、可配置為多種輸入輸出形式、多時鐘驅(qū)動、內(nèi)含ROM或FLASH(部分支持在系統(tǒng)編程)、可加密、低電壓、低功耗以及支持混合編程技術(shù)等突出特點。而且CPLD的邏輯單元功能強大,一般的邏輯在單元內(nèi)均可實現(xiàn),因而其互連關(guān)系簡單,電路的延時就是單元本身和集總總線的延時(通常在數(shù)納秒至十?dāng)?shù)納秒),并且可以預(yù)測。所以CPLD比較適合于邏輯復(fù)雜、輸入變量多但對觸發(fā)器的需求量相對較少的邏輯型系統(tǒng)。

  MAX7000系列產(chǎn)品與高速數(shù)據(jù)采集系統(tǒng)的要求相符,十分適合于高速設(shè)計。由MAX7000系列CPLD設(shè)計的高速數(shù)據(jù)采集系統(tǒng)已經(jīng)應(yīng)用在電力系統(tǒng)某精確故障定位系統(tǒng)中。

1 高速數(shù)據(jù)采集系統(tǒng)的硬件結(jié)構(gòu)

  對于一般的高速數(shù)據(jù)采集系統(tǒng)而言,除了采用高速的A/D" title="A/D">A/D轉(zhuǎn)換器、高速存儲器等高速器件之外,還要解決如何高速尋址、如何控制總線邏輯、如何進行高速存儲以及如何方便地與PC機交換數(shù)據(jù)等問題。這些問題都是設(shè)計一個高速數(shù)據(jù)采集系統(tǒng)所要共同面對的問題。兼顧這些共性問題,筆者設(shè)計了一套以精確故障定位為目的的高速數(shù)據(jù)采集系統(tǒng)。

  該系統(tǒng)的硬件框圖如圖1所示。在沒有故障發(fā)生的時候,輸入的模擬量通過高速AD芯片AD9225(其轉(zhuǎn)換速率可達到25MSPS,分辨率為12位)轉(zhuǎn)換成數(shù)字量,然后通過CPLD構(gòu)成的數(shù)據(jù)總線控制器,以高4位和低8位的形式分別存儲在兩片橫向并聯(lián)的緩沖RAM 628512(存儲時間為70ns)中。存儲地址由CPLD構(gòu)成的地址發(fā)生器產(chǎn)生,地址發(fā)生器產(chǎn)生的地址范圍可由存儲器的容量決定。地址產(chǎn)生器循環(huán)計數(shù),數(shù)據(jù)循環(huán)存儲。此間的運行完全不需要CPU控制,系統(tǒng)硬件可自動完成高速數(shù)據(jù)采集,使硬件的高速性能得到充分運用。CPU2采用AD公司的ADuC812,它本身就是全集成的高性能12位數(shù)據(jù)采集系統(tǒng),內(nèi)部集成了1個12位的ADC。當(dāng)其檢測到輸入的模擬量發(fā)生了突變時,再經(jīng)過預(yù)定的持續(xù)采集時間后,給出觸發(fā)信號到數(shù)據(jù)總線控制器和地址總線控制器,由CPU2取得數(shù)據(jù)總線和地址總線控制權(quán),然后通過雙口" title="雙口">雙口RAM2以及CPLD構(gòu)成的ISA總線接口,將緩沖RAM 628512中的數(shù)據(jù)傳入PC機。再聯(lián)合由GPS、CPU1和雙口RAM1構(gòu)成的精確授時系統(tǒng),就可用于精確故障定位或故障錄波了。

?

?

2 MAX7000系列CPLD及其開發(fā)平臺介紹

  由于高速數(shù)據(jù)采集系統(tǒng)的特殊要求,在眾多的CPLD器件中,選擇了ALTERA公司的MAX系列器件。MAX系列的高性能和高密度是基于它先進的MAX(Multiple Array Matrix——多重陣列矩陣)架構(gòu),因此為高速應(yīng)用提供了非常高的性價比。MAX7000系列還提供了業(yè)界速度最快的可編程邏輯解決方案。它基于CMOS EEPROM工藝,傳播延遲最小為3.5ns,可以實現(xiàn)速度高于200MHz的計數(shù)器,并且為高密度的器件提供了非常寬的選擇余地,十分適合高速設(shè)計時應(yīng)用。該公司的MAX+plusII軟件是一款易于使用的開發(fā)工具,其界面友好,集成化程度高,兼容工業(yè)標(biāo)準(zhǔn),支持FLEXMAXACEX 1K等系列產(chǎn)品。并且為大學(xué)提供了學(xué)生版軟件,在功能上與商業(yè)版類似,僅在可使用的芯片上受限制。由于MAX7000系列的這些優(yōu)點,以下的設(shè)計都基于MAX7000系列產(chǎn)品。

3 CPLD在高速尋址中的應(yīng)用

  一般的數(shù)據(jù)采集均需由CPU將A/D轉(zhuǎn)換的結(jié)果讀入,然后再轉(zhuǎn)存到片外的存儲器中,這樣至少需要4個機器周期。如果按照一般一個機器周期為1μs,那么最高采樣率只能達到250kHz,絕難滿足高速采樣的需要。在本系統(tǒng)中,直接將采樣數(shù)據(jù)存到高速緩沖RAM中,而存儲器尋址則采用ALTERA公司的EPM7032LC44-6構(gòu)成的地址發(fā)生器來完成。寫信號可采用A/D轉(zhuǎn)換的時鐘信號,但需經(jīng)過一系列分頻及邏輯組合,也可另由電路產(chǎn)生或放在地址發(fā)生器中。EPM7032LC44-6構(gòu)成地址發(fā)生器的基本原理是采用5片級聯(lián)的74161組成20位的同步計數(shù)器,第20位接在高速緩沖RAM的片選線上,用來切換緩沖存儲器組。用CPU2的P1.7控制計數(shù)允許端,異步清零,則20位地址線輸出保持同步。其具體的實現(xiàn)可以采用圖形編輯輸入或者文本編輯輸入的方法。下面給出其VHDL語言程序。

LIBRARY ieee;

  USE ieee.std_logic_1164.ALL;

  USE ieee.std_logic_unsigned.ALL;

  ENTITY untitle4 IS

??   PORT

??   ( ci??? ? :IN??? std_logic;

???? ????? clk? :IN??? std_logic;

??? ??? ??? nreset :??IN??? std_logic;

??? ???? ?? addbus :? buffer?? std_logic_vector(19 DOWNto 0)

  );

END untitle4;

ARCHITECTURE behave OF untitle4 IS

? BEGIN??

??? PROCESS(clk,nreset)

?????? BEGIN

????????? IF(nreset='0')THEN

?????????? addbus<=″00000000000000000000″;

???????????? ELSIF(rising_edge(clk))THEN

?????????????? IF(ci='1') THEN

?????????????? IF(addbus=″11111111111111111111″)then

??????????????????? addbus<=″00000000000000000000″;

?????????????? ELSE

???????????????????? addbus<=addbus+1;

?????????????? END IF;

??????????? END IF;---end if ci=1

???????? END IF;---end if reset

??? END PROCESS;

END behave;

  其仿真結(jié)果如圖2所示。

?

?

4 CPLD構(gòu)成數(shù)據(jù)總線控制器

  在這個高速數(shù)據(jù)采集系統(tǒng)中,為了提高數(shù)據(jù)傳輸和尋址的速度,在正常采樣期間,其數(shù)據(jù)總線和地址總線并不需要CPU控制,數(shù)據(jù)存儲是由系統(tǒng)硬件自動完成的。但當(dāng)CPU2監(jiān)測到輸入模擬量的突變時,再經(jīng)過預(yù)定的一段持續(xù)采樣時間后,就會發(fā)出控制信息給地址發(fā)生器和數(shù)據(jù)總線控制器,停止繼續(xù)存儲采樣數(shù)據(jù)和自動產(chǎn)生地址,而由CPU2取得總線的控制權(quán),對處在高速緩沖RAM中的故障前后數(shù)據(jù)進行操作。為避免總線沖突,就需要一塊數(shù)據(jù)總線的控制器處理好系統(tǒng)總線和局部總線的關(guān)系。

EPM7064可以很好地解決這個問題。在EPM7064的內(nèi)部,用三態(tài)門將CPU2的讀寫控制線、8根數(shù)據(jù)總線以及AD9225的12根數(shù)據(jù)線及一根溢出線與控制高速緩沖RAM的讀寫控制線和數(shù)據(jù)線隔離開來,由CPU2的P1.7作為CPU2或高速A/D控制總線的控制信號線,這樣就能方便地實現(xiàn)緩沖RAM數(shù)據(jù)線訪問控制權(quán)的切換??紤]篇幅,不再詳細(xì)給出實現(xiàn)程序。地址總線控制邏輯實現(xiàn)方法類似,不再介紹。

5 CPLD構(gòu)成的ISA總線接口

  在PC系列機中,I/O" title="I/O">I/O空間是獨立的,共有1KB(地址編號為000H~3FFH)。由于I/O接口一部分分布在主機母板上,另一部分分布在擴展槽上,所以I/O的1024個口地址也分成兩個部分,其中前512個由母板上的接口控制器使用,后512個供擴展槽內(nèi)的接口控制卡使用。而且由于后512個地址中的一部分已經(jīng)被配置成系統(tǒng)資源的接口,所以真正能被用戶設(shè)計開發(fā)的I/O端口為數(shù)不多,而且不連續(xù)。這樣就不能采用常規(guī)的用PC機提供的地址總線來尋址雙口RAM的方法,因為這種方法只能尋址其中為數(shù)不多而且不連續(xù)的一些單元。所以這是一個難點。為此,采用用PC機的數(shù)據(jù)線來尋址雙口RAM的方式,只需占用三個I/O端口,就能尋址整個4K的RAM區(qū)。

  ISA總線接口電路邏輯框圖如圖3所示。

?

?

  采用了ISA插槽中的8位數(shù)據(jù)線、10位地址線、讀寫控制線IOW和IOR以及電源線,并假設(shè)使用390H、391H、392H三個端口。當(dāng)PC機要訪問某一地址單元時,首先通過390H端口將低8位地址送到數(shù)據(jù)總線上。此時由PC-AB送出的390H信號和IOW信號經(jīng)解碼電路輸出一個鎖存脈沖到鎖存器(L),將此低8位地址鎖存;然后通過391H端口將高4位地址送到數(shù)據(jù)總線上,此時由PC-AB送出的391H信號和IOW信號經(jīng)解碼電路輸出一個鎖存脈沖到鎖存器(H),將此高4位地址鎖存;最后通過392H端口進行讀寫,只要PC-AB上出現(xiàn)392H信號,解碼電路就輸出一個低電平到雙口RAM的/CS,再根據(jù)相應(yīng)的讀寫控制信號就能進行讀寫操作。

用ALTERA公司的EPM7064SLC84-5實現(xiàn)這一接口的VHDL文件如下:

PORT

  (PCDB: INOUT ??????? std_logic_vector(7 downto 0);

??? ?????? PCAB: IN???????std_logic_vector(9 downto 0);

??? ?????? PCRD: IN???????std_logic;

??? ?????? PCWR: IN??? ?? std_logic;

?????????? RAMDB:INOUT????std_logic_vector(7 downto 0);

???????????RAMABL:OUT?????std_logic_vector(7 downto 0);

???????????RAMABH:OUT?????std_logic_vector(3 downto 0);

??? ?????? RAMCS:OUT? ??? std_logic;

???????????RAMWR:OUT????? std_logic;

??? ?????? RAMRD:OUT????? std_logic

??? );

END isa1;

ARCHITECTURE behave OF isa1 IS

BEGIN

?????????? RAMDB<=PCDB WHEN (PCWR='0') ELSE (OTHERS=>'Z');

?????????? PCDB<=RAMDB WHEN (PCRD='0') ELSE (OTHERS=>'Z');

?????????? RAMABL<=PCDB WHEN (PCAB=″1110010000″ AND PCWR='0') ELSE (OTHERS=>'Z');

?????????? RAMABH<=PCDB(3 DOWNTO 0) WHEN (PCAB=″1110010001″ AND PCWR='0') ELSE (OTHERS=>'Z');

?????????? RAMCS<='0' when (PCAB=″1110010010″ ) ELSE '1';

?????????? RAMWR<=PCWR;

?????????? RAMRD<=PCRD;

END BEHAVE;

  仿真結(jié)果表明此電路設(shè)計完全可以實現(xiàn)上述功能。PC機使用端口392H讀取雙口RAM中的數(shù)據(jù)時的仿真圖如圖4所示。

?

?

????CPLD是現(xiàn)代電子工程領(lǐng)域的一門新技術(shù),它提供了基于計算機和信息技術(shù)的電路系統(tǒng)設(shè)計方法,提高了設(shè)計電路的集成度和可靠性。筆者在將ALTERA公司推出的MAX7000系列產(chǎn)品應(yīng)用于高速數(shù)據(jù)采集方面做了嘗試,具體使用EPM7032和EPM7064設(shè)計了地址發(fā)生器、數(shù)據(jù)總線控制器和ISA總線的接口,目前已經(jīng)將其應(yīng)用在電力系統(tǒng)某精確故障定位系統(tǒng)中。

?

參考文獻

1 黃正謹(jǐn),徐 堅,章小麗.CPLD系統(tǒng)設(shè)計技術(shù)入門與應(yīng)用. 北京:電子工業(yè)出版社,2002

2 徐志軍,徐光輝. CPLD/FPGA的開發(fā)與應(yīng)用. 北京:電子工業(yè)出版社,2002

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。