1引言
SoC(System on Chip)是將來電路設計的一個趨勢,由于CPLD(Complex Programmable Logic Device)芯片密度不斷增加和新一代EDA(Electronic Design Automatic)開發工具的使用,利用CPLD器件實現SoC已成為可能,而單片機與CPLD之間的通信和合作方法亦成為目前單片機應用的一個熱門方向。
通過水流、氣流的噴射和循環以達到按摩功效并具備一些輔助功能的按摩浴缸已經成為時尚產品,而目前市場上的一般產品往往采用在浴缸中安裝機械式閥門,并在浴缸表面配以手動的開關、旋鈕來實現諸如背部、腳部及其他部位的出水按摩效果,這樣的方式一來用戶使用不方便,二來安裝難度增加,三者維護成本高。
在新型的按摩浴缸產品中,為了滿足高端用戶的需求,往往綜合了水泵、氣泵、加熱器、電控閥門、燈光、收音機、消毒、電話等設備的控制,而控制部分通常會選用價格低廉、功能強大的各種8位單片機產品。由于單片機I/O端口的數量限制,在輸入輸出的數量較多的情況下,如果直接使用單片機的I/O端口會造成單片機數量的增加以及系統設計的難度增加,同時還會造成系統的成本增加。
按照新型按摩浴缸的模型設計,需控制的輸出包括水泵1路、氣泵1路、加熱器1路、電控閥門12路、燈光6路、消毒泵1路,共22路輸出,另外還包括了故障檢測(19路)及液位檢測(2路)共21路輸入。在單片機尚要兼顧鍵盤、LCD顯示及遙控器的情況下,直接使用其I/O端口顯然是不現實的。通過引入CPLD的設計可以解決上述多輸入輸出的控制問題。
2 CPLD介紹
ATF1508AS是ATMEL公司生產的電可擦寫、可在線編程的邏輯電路器件,它內含128個邏輯宏單元,可以通過LogicDoubling技術進行邏輯功能設計的擴展,可以靈活地實現用戶設計的要求。
ATF1508AS共有84個管腳,其中61個管腳可作為I/O使用,完全可以滿足上述新型浴缸的控制要求。圖1是ATF1508AS的組成示意圖。

圖1 ATF1508AS的組成示意圖
3 CPLD應用開發
CPLD的設計方法包括電路原理圖法、Verilog編程、VHDL編程等,本設計中采用電路原理圖的設計方法,下面說明相關設計過程。
顯然CPLD是處于單片機與驅動控制電路之間的接口部分,單獨將它抽象出來,則其輸入輸出框圖如圖2所示:

圖2 CPLD輸入輸出框圖
3.1 輸出部分設計
由于前述新型浴缸模型中有22路輸出,所以輸入信號應設計五位地址輸入線(25=32》22)以滿足輸出數量的要求,另外相應的控制信號線還包括復位、時鐘及輸出開關控制信號共三個。顯然,對輸出部分來說,CPLD的功能類似于5線-22線的譯碼器,但由于輸出信號之間要求相互不能影響,所以在譯碼器的基礎上需增加觸發器以實現上述要求,同時還需加入相應輸出設備的開關控制信號。
5線-22線譯碼器是用兩片4線-16線譯碼器74154擴展而成的(多余的輸出不用), 對于4線-16線譯碼器74154來說,它有兩個片選信號控制端G1N和G2N,只有當G1N和G2N都為邏輯“0”時,74154芯片才能正常譯碼。利用G1N進行兩片74154的擴展,再利用G2N作為輸出設備的開關控制信號剛好可以滿足設計需求。擴展后的譯碼器電路能實現5線-32線的譯碼,可以滿足22路輸出的要求,因為輸出設備存在多路共同輸出的組合,通過在譯碼器的輸出端添加多個雙二輸入JK觸發器7474可以實現這一功能。分析JK觸發器的特性方程:Qn+1=J + Qn可知,當
(1) J=1,K=0時Qn+1=1;對應于相應設備關閉;
(2) J=0,K=1時Qn+1=0;對應于相應設備開啟;
(3) J=K=0時Qn+1=Qn;對應于相應設備保持原開關狀態;
(4) J=K=1時Qn+1= 。(實際上該種組合因電路設計的原因不存在)
針對圖3所示的電路,經分析可知,左半部分的電路用于控制輸出設備的開啟,而右半部分的電路控制輸出設備的關閉,且由于各個輸出設備的控制碼不同,所以不存在沖突的問題。輸出部分的設計占用了CPLD的30個I/O端子,其中8個I/O端子用于與單片機的連接,另外22個I/O端子通過驅動控制電路與相應設備連接。
對于設計完成的輸出控制部分來說,其與單片機連接的8位數據格式及相應定義如下:
CLRN CLK G2N G1N A B C D
CLRN:復位信號(低電平有效)
CLK:時鐘信號(上升沿有效)
G2N:輸出控制信號(“0”:開,“1”:關)
G1N、A、B、C、D:地址碼輸入
3.2輸入部分設計
3.2.1 故障檢測部分設計
該部分是針對浴缸控制器中關于故障檢測的功能進行設計的,它的信號來自各相應設備的故障檢測電路,并規定“1”表示設備發生故障,“0”表示設備正常。對故障檢測的輸入部分來說,CPLD相當于一個多路數據選擇器。利用兩片16選1數據選擇器74150可以擴展成32選1數據選擇器,從而滿足19路故障檢測信號輸入的要求。具體的實現方法是利用74150的片選端EN作為擴展端,對于74150來說,只有當EN為邏輯“0”時,數據選擇器才能正常工作,設計電路如圖3所示。故障檢測輸入部分的設計占用了CPLD的27個I/O端子,其中6個I/O端子(5個地址碼端子,1個選擇輸出端子)與單片機連接,其他21個I/O端子通過接口電路與故障檢測電路連接。
3.2.2 液位檢測部分設計
液位檢測是新型浴缸系統正常工作的一個重要組成部分。液位檢測包括浴缸液位檢測和消毒液液位檢測兩個部分,其中浴缸液位是否達到預定水位是系統中水泵、氣泵等設備開啟的必要條件,而消毒液液位是否高于正常位置也是系統能否正常消毒的充分條件。
實際設計中通過兩個非接觸式液位開關檢測相關液位,液位開關的輸出為標準的TTL電平信號,并規定“1”表示液位達到設定值,“0”表示液位未達到設定值。如果浴缸液位未達到設定值,則系統會提示加水信息,如果消毒液液位低于設定值,則系統會提示添加消毒液。
對于設計完成的輸入控制部分來說,其與單片機連接的6位數據格式及相應定義如下:
![]()
Yselect:數據選擇輸出
A0、A1、A2、A3、A4:地址碼輸入
3.3 CPLD的燒錄
上述關于CPLD輸入輸出功能的設計是使用MaxplusII工具進行的,設計完成后得到的結果是*.pof文件,使用Pof2Jed工具將*.pof 轉換為 *.jed 文件, 然后利用 AtmIsp 工具將相應的*.jed燒錄到CPLD中,就完成了整個CPLD芯片的設計、實現過程。

圖3 CPLD 設計示意圖
4 CPLD的應用效果[1][2]
4.1 輸出設備控制
在所有的控制設備中,除了氣泵、多路水閥及燈光以外,其他均是簡單的開關控制。現在以氣泵及燈光的控制說明CPLD的應用效果。
4.1.1氣泵控制
根據氣泵電機的組成原理,經過實際測試,可以通過PWM調節實現氣泵的調速,而用單片機實現不同的脈沖輸出或PWM波形是非常簡單的功能,具體的電路連接示意圖如下圖所示。

通過實驗,我們實現了氣泵的無極調速。下面是典型的脈沖波形輸出示意圖。

4.1.2燈光控制
一般情況下,浴缸中安裝三個彩燈及三個白燈,均是由高亮度發光二極管構成,彩燈按照紅、籃、綠三色由2個、3個、2個共7個發光二極管組成,白燈由7個白色發光二極管組成,要求白燈能夠實現亮度的控制,彩燈能夠實現幾種不同周期循環狀態的控制。
白燈亮度的控制采用控制不同發光二極管組合的方式實現,亮度共分7級,分別對應相應數量的白燈點亮,具體實現時,將白燈分成三組:第一組1個白色發光二極管,第二組2個白色發光二極管,第三組4個白色發光二極管,通過這三組白色發光二極管的組合就可以實現7級亮度的調節。
彩燈循環狀態的控制采用脈沖式輸出的方式實現,配合定時器及外圍添加邏輯或門的方式可以具體實現彩燈循環的控制。
4.2 輸入設備控制
4.2.1 故障檢測控制
故障檢測是本文作者針對新型多功能浴缸提出的一種全新功能,它一方面可以提醒用戶關于系統故障的信息,另一方面,也為浴缸生產廠家的維護人員提供了全面的檢測、維修信息。
如前所述,故障檢測的信號來自各相應設備的故障檢測電路,并規定“1”表示設備發生故障,“0”表示設備正常。在軟件實現的過程中,首先要建立一個設備與地址A4-A0的對應表,然后定時輪詢CPLD的相應端子,采集故障檢測信息,并根據相應的信息進行顯示及驅動蜂鳴器報警。同時軟件系統還會存儲累積的設備故障次數,以方便廠家分析故障原因。
4.2.2 液位檢測控制
系統響應按鍵操作需進行關于水泵、氣泵、加熱器、閥門的啟動時,均會先行采集液位開關的輸入狀態,并根據采集的信息判斷是進行設備開啟操作,還是顯示錯誤提示。
5 結束語
本文作者的創新點在于將單片機控制與CPLD的應用綜合在新型浴缸的設計和生產過程中。從以上CPLD的實際應用效果可以總結出,使用CPLD不但可以簡化控制電路的設計,而且可以獲得穩定、可靠的控制效果,同時還降低了系統開發的成本,完全達到了設計要求。可以預見的是,隨著CPLD芯片密度的進一步提高,必然會將單片機及CPLD的設計加入SoC,以形成更加專用的SoC系統,進一步降低產品的生產成本,并提高系統的保密性。
責任編輯:gt
電子發燒友App



























評論