CPLD在遠(yuǎn)程多路數(shù)據(jù)采集系統(tǒng)中的應(yīng)用
摘要:采用VHDL語言和圖形輸入設(shè)計(jì)方法,給出了用CPLD在遠(yuǎn)程多路數(shù)據(jù)采集系統(tǒng)中實(shí)現(xiàn)地址譯碼、串口擴(kuò)展、模塊測(cè)試、模數(shù)轉(zhuǎn)換以及高位數(shù)據(jù)處理等功能的具體方法,同時(shí)簡(jiǎn)要介紹了遠(yuǎn)程多路數(shù)據(jù)采集系統(tǒng)的工作原理及軟、硬件框架。
關(guān)鍵詞:CPLD;單片機(jī);譯碼;RS-232;VHDL; EPM7256SQC208
CPLD(Complex Programmable Logic Device?復(fù)雜可編程邏輯器件)是在傳統(tǒng)的PAL、GAL基礎(chǔ)上發(fā)展起來的。目前,CPLD已在通訊、DSP及微機(jī)系統(tǒng)中有著非常廣泛的應(yīng)用,它不僅可使設(shè)計(jì)的產(chǎn)品小型化、集成化和穩(wěn)定可靠,而且還具有在系統(tǒng)或在芯片直接編程的能力,從而使電子系統(tǒng)的設(shè)計(jì)、開發(fā)、更新與維護(hù)變得更為方便,更便于裝配和批量生產(chǎn)。因此,利用CPLD可大大縮短設(shè)計(jì)周期,減少設(shè)計(jì)費(fèi)用,降低設(shè)計(jì)風(fēng)險(xiǎn)。遠(yuǎn)程多路數(shù)據(jù)采集系統(tǒng),不但需要較多的片選信號(hào),而且模塊測(cè)試所占用的I/O口資源也較多,用一般的芯片較難實(shí)現(xiàn),而用CPLD/FPGA則不但可以較好地實(shí)現(xiàn)其功能,而且還可大大提高設(shè)計(jì)能力和設(shè)計(jì)效率。
1 系統(tǒng)組成思路
本遠(yuǎn)程多路數(shù)據(jù)采集系統(tǒng)以Altera公司7000S系列CPLD產(chǎn)品中的EPM7256SQC208-10為控制核心,并由A/D(模擬量采集)模塊、DI(數(shù)字量采集)模塊、D/A(模擬量輸出)模塊、DO(數(shù)字量輸出)模塊、MCU模塊、電源模塊及I/O接口模塊組成,其系統(tǒng)組成原理圖如圖1所示。
圖中,MCU模塊主要由CAN總線模塊、RS-485模塊、RS-232模塊、時(shí)鐘和復(fù)位模塊、CPLD模塊等組成,MCU模塊的電路原理圖如圖2所示。該遠(yuǎn)程多路數(shù)據(jù)采集系統(tǒng)的I/O接口板共有14個(gè)插槽,其中12個(gè)插槽可實(shí)現(xiàn)A/D模塊、D/A模塊、DI模塊、DO模塊等四種模塊的任意配置。因此,單個(gè)數(shù)據(jù)采集系統(tǒng)最大可采集192路模擬量或192路數(shù)字量,也可以提供最大96路模擬量輸出或192路數(shù)字量輸出。多個(gè)數(shù)據(jù)采集系統(tǒng)也可以根據(jù)實(shí)際和現(xiàn)場(chǎng)需要通過CAN總線、RS-485總線或RS-232總線進(jìn)行連接,從而實(shí)現(xiàn)上百個(gè)或上千個(gè)采集頻率不高的遠(yuǎn)程數(shù)據(jù)采集。該遠(yuǎn)程多路數(shù)據(jù)采集系統(tǒng)可采集0~5V的電壓信號(hào)和4~20mA的電流信號(hào),數(shù)字量輸出電平為12V,可直接控制12V的繼電器。
顯而易見,傳統(tǒng)的設(shè)計(jì)思路不但要使用大量的外圍芯片,而且需要主處理器直接控制各種采集模塊和控制模塊,并完成各模塊和通道的自檢。因此,這種解決方案需要占用主處理器大量的I/O資源和處理時(shí)間。然而,一般處理器的 I/O資源極其有限,而且又要求大量的匯編軟件配合,這就使設(shè)計(jì)移植變得比較困難;此外,由于I/O的頻繁操作也不利于系統(tǒng)調(diào)度軟件的設(shè)計(jì)和其他軟件模塊的實(shí)時(shí)執(zhí)行,因而在現(xiàn)場(chǎng)更難以組成分布式控制管理系統(tǒng)(FCS)??梢?,如果采用傳統(tǒng)的設(shè)計(jì)方法,不但使系統(tǒng)設(shè)計(jì)較為龐大,而且開發(fā)成本高、設(shè)計(jì)周期長、設(shè)計(jì)效率低。所以,傳統(tǒng)的設(shè)計(jì)思路在遠(yuǎn)程多路數(shù)據(jù)采集系統(tǒng)中是不可取的,而使用CPLD或FPGA器件則可以較好地解決上述問題。
2?。茫校蹋脑O(shè)計(jì)
2.1 頂層軟件設(shè)計(jì)
上述功能可在MAX+PLUSII 9.5環(huán)境下設(shè)計(jì)完成。該系統(tǒng)的軟件設(shè)計(jì)采用“自頂向下”、“軟硬兼施”的設(shè)計(jì)方法,主要設(shè)計(jì)了五大功能模塊,分別是DECODE?地址譯碼?模塊、AD?模擬量輸入數(shù)據(jù)處理?模塊。DATA?數(shù)據(jù)處理?模塊、TEST?模塊自動(dòng)識(shí)別?模塊、UART?串口擴(kuò)展?模塊,其設(shè)計(jì)原理圖如圖3所示。其中譯碼模塊用于完成處理器對(duì)CPLD片內(nèi)和片外模塊的尋址和譯碼,這是一種簡(jiǎn)單的譯碼邏輯和觸發(fā)電路,共產(chǎn)生34個(gè)片選信號(hào)。AD模塊用于完成對(duì)10位A/D 轉(zhuǎn)換芯片TLV1578高位D8、D9的處理以及實(shí)現(xiàn)D9/A1、D8/A0的分時(shí)復(fù)用,是一般組合邏輯電路和數(shù)據(jù)緩沖及鎖存電路。TEST模塊用于完成對(duì)各種模塊的自動(dòng)識(shí)別,包括識(shí)別某一插槽有無模塊以及具體是何種模塊,該模塊共需處理36個(gè)測(cè)試信號(hào)。DATA模塊用于簡(jiǎn)單處理各種數(shù)據(jù),包括數(shù)據(jù)的緩沖、鎖存以及驅(qū)動(dòng)放大等。由于該系統(tǒng)中單片機(jī)的串口被RS-485占用,因此,UART模塊一般用于實(shí)現(xiàn)RS-232串口擴(kuò)展。
2.2 底層軟件設(shè)計(jì)
底層軟件設(shè)計(jì)是基于頂層軟件中五大功能模塊而設(shè)計(jì)的,其中UART模塊設(shè)計(jì)采用VHDL語言描述完成,而DECODE模塊、TEST模塊、DATA模塊和AD模塊由于原理和時(shí)序相對(duì)簡(jiǎn)單,則采用圖形輸入設(shè)計(jì)方法,并通過編譯、綜合、仿真后生成底層設(shè)計(jì)文件(即生成相應(yīng)的設(shè)計(jì)符號(hào)*.sym),以供頂層設(shè)計(jì)調(diào)用。
為了突出重點(diǎn),這里只簡(jiǎn)單介紹UART模塊的底層設(shè)計(jì)。UART模塊是一個(gè)8位全雙工異步接收發(fā)送器模塊,該模塊主要由四個(gè)子模塊構(gòu)成,即并入串出模塊、串入并出模塊、接口模塊、時(shí)鐘產(chǎn)生模塊。該UART模塊的主要功能是:從計(jì)算機(jī)接收8位并行數(shù)據(jù)并發(fā)送到串口輸出;二是從串口讀入外部串行數(shù)據(jù)并將其轉(zhuǎn)換為8位并行數(shù)據(jù)送到計(jì)算機(jī)。
并入串出操作由輸入信號(hào)的高電平觸發(fā)的,串行輸出結(jié)束后,結(jié)束信號(hào)變?yōu)椤啊?。而串入并出操作則由串行輸入的下降沿觸發(fā),且串行輸入要保持低電平持續(xù)半個(gè)周期以上。此半周期時(shí)鐘同時(shí)可作為輸入移位時(shí)鐘,8位數(shù)據(jù)輸入結(jié)束后,結(jié)束信號(hào)變?yōu)椤啊⒕S持到下次數(shù)據(jù)輸入。數(shù)據(jù)口是8位雙向三態(tài)I/O口。
時(shí)鐘產(chǎn)生模塊產(chǎn)生的時(shí)鐘用于并入串出模塊和串入并出模塊。在串入并出操作中,工作時(shí)鐘只有高于移位時(shí)鐘,才能檢測(cè)是否開始一次新的輸入過程,因此,工作時(shí)鐘是移位時(shí)鐘的4倍。其時(shí)鐘產(chǎn)生模塊的VHDL源程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL
;?ENTITY clkgen IS
PORT (iclk,oclk:BUFFER STD_LOGIC);?
END clkgen;
ARCHITECTURE clk OF clkgen IS
SIGNAL iclk_lag,oclk_lag:TIME:=0 ns;
SIGNAL temp_iclk,temp_oclk:STD_LOGIC;
BEGIN
PROCESS(temp_iclk,temp_oclk)
BEGIN
temp_iclk<=NOT temp_iclk AFTER iclk_lag/4;
temp_oclk<=NOT temp_oclk AFTER oclk_ lag;
END PROCESS;
iclk<=temp_iclk;
oclk<=temp_oclk;
END clk;
限于篇幅,UART模塊的其它底層模塊設(shè)計(jì)這里不作一一介紹。
圖3
3 系統(tǒng)仿真和驗(yàn)證
軟件設(shè)計(jì)完成后,可根據(jù)Protel99SE中的電路原理圖進(jìn)行引腳鎖定,然后啟動(dòng)編譯程序來編譯項(xiàng)目。編譯器將進(jìn)行錯(cuò)誤檢查、網(wǎng)表提取、邏輯綜合和器件適配,然后進(jìn)行行為仿真、功能仿真和時(shí)序仿真。最后采用并口下載電纜ByteBlaster并通過JTAG編程方式將top.pof文件下載到EPM7256SQC208-10芯片中,從而生成硬件電路。4 結(jié)束語
為了將該遠(yuǎn)程多路數(shù)據(jù)采集系統(tǒng)應(yīng)用到污水處理自動(dòng)控制系統(tǒng)中,筆者設(shè)計(jì)了以計(jì)算機(jī)為核心的分布式控制管理系統(tǒng)(FCS),從而高性價(jià)比地實(shí)現(xiàn)了污水處理設(shè)備的自動(dòng)化控制和信息化管理,穩(wěn)定可靠地發(fā)揮了污水處理設(shè)備的作用,實(shí)現(xiàn)了現(xiàn)場(chǎng)數(shù)據(jù)信息傳遞的完全數(shù)字化,同時(shí)保證了數(shù)據(jù)采集的準(zhǔn)確性和控制功能的可靠性。
借助先進(jìn)的MAX+PLUSII EDA設(shè)計(jì)軟件和高可靠性的CPLD/FPGA芯片開發(fā)的這種分布式控制管理系統(tǒng),不但可大大節(jié)省電路開發(fā)費(fèi)用,而且能提高設(shè)計(jì)效率,同時(shí)還可有效實(shí)現(xiàn)電路的數(shù)字化與微型化。
評(píng)論