張九賓 張丕狀 杜坤坤
摘 要:介紹一種基于單片機與CPLD結合的傳感器網(wǎng)絡節(jié)點的無線控制系統(tǒng)。節(jié)點中單片機對無線命令進行譯碼,并對外圍子模塊進行控制,CPLD擴展控制系統(tǒng)的并行I/O端口、SPI串行接口等,從而根據(jù)系統(tǒng)需要可擴展無線傳感網(wǎng)絡節(jié)點的外圍功能模塊。采用單片機與CPLD模塊化設計方法,降低了設計成本,方便電路的多次改進,為傳感器網(wǎng)絡節(jié)點在不同場合的應用提供了一種通用的方法。
關鍵詞:單片機I/O端口擴展;CPLD;控制節(jié)點;SPI串行接口擴展
中圖分類號:TP302.1 文獻標識碼:B
文章編號:1004-373X(2009)01-094-03
Wireless Control System Based on Single Chip Computer and CPLD
ZHANG Jiubin,ZHANG Pizhuang,DU Kunkun
(School of Information and Communication Engineering,North University of China,Taiyuan,030051,China)
Abstract:
A wireless control system of sensor network nodes with the combination of single chip computer and CPLD is introduced.In the node,single chip computer decodes the wireless commands and controls expansion modules,CPLD expands control system parallel I/O ports and serial SPI ports,the system can expand periphery function modules according to need.The way of module design with the combination of single chip computer and CPLD can low cost price,facilitate the circuit several times to improve and provide a common method for the sensor network nodes in the application of different occasions.
Keywords:single chip computer I/O expansion;CPLD;control node;SPI serial interface expansion
0 引 言
自單片機引入我國以來,相關產(chǎn)品的普及促使單片機的應用設計日益廣泛。傳統(tǒng)的單片機控制系統(tǒng)由單片機以及外圍擴展芯片組成,但是這些外圍芯片一般具有接線重復性高、體積大等缺點??删幊踢壿嫼陠卧蜻壿媺K之間的相互連線在同一封裝內(nèi),受外界干擾影響小,電磁兼容(EMC)性能好。對設計者來說,CPLD器件最大的優(yōu)點在于可現(xiàn)場編程,改變邏輯關系時,無需更改外部線路板,只需用圖形語言程序或硬件描述語言程序來改變電路,生成下載編輯軟件,通過下載電纜輸入CPLD器件即可,非常方便,特別有利于新品試制,大大縮短了開發(fā)周期。使用CPLD和單片機結合構成其外圍電路可以減少系統(tǒng)芯片數(shù)量,縮小系統(tǒng)體積,提高系統(tǒng)可
靠性。
1 控制系統(tǒng)
該系統(tǒng)是一個無線傳感器網(wǎng)絡節(jié)點的控制系統(tǒng),它用于控制無線模塊接收主站發(fā)送過來的信息,單片機讀取這些數(shù)據(jù)并譯碼后,根據(jù)譯碼結果控制各功能子模塊,如無線模塊控制、溫度采集控制、電源管理控制、時間統(tǒng)一信號控制等功能,共需要28個輸出控制 I/O口,13個輸入控制I/O口,擴展I/O端口分配 8個。各外圍模塊通過SPI串行標準接口的擴展與單片機和CPLD進行通信,并完成數(shù)據(jù)傳輸控制功能。各外圍模塊只需接受MCU的控制命令,即可獨立完成外圍模塊各自的功能:無線模塊的收發(fā)、數(shù)據(jù)采集A/D轉換、時間統(tǒng)一記錄、電源管理等。同時預留單片機通過 USART的串口輸出,另外,還需要此系統(tǒng)具有很好的擴展性,通過擴展外圍模塊來增加節(jié)點不同的功能。系統(tǒng)設計要求如圖1所示。
根據(jù)設計要求,單片機系統(tǒng)要8 b的UART串行輸出以及SPI串行輸入輸出,同時為了完成各種控制功能,單片機必須至少擴展7個I/O端口。如果使用傳統(tǒng)的擴展方法,在輸出速率要求不高的情況下,并行接口通常使用8255傳統(tǒng)的微處理器接口芯片來擴展。
但是,這些芯片都是40腳DIP封裝,體積龐大,并且每片最多只能擴展3個8 b I/O端口,還要考慮8255中A,B,C口是作為輸入口還是輸出口。當需要的控制端口較多時,不得不用多個這種專用芯片。這時需重復連接多片8255的8位數(shù)據(jù)線、單片機讀/寫信號線、ALE,CS(片選)和A0,A1信號線,增加了單片機硬件、軟件的設計難度,也就造成電路復雜、控制不便、可靠性降低,而且增大了電路的功耗、體積和重量。同時接口芯片提供的端口數(shù)未必與實際需要的端口數(shù)相等,不能根據(jù)實際情況分配I/O端口的數(shù)量,容易造成芯片部分資源的浪費。而CPLD具有豐富的可編程I/O引腳,并且由于其在系統(tǒng)可編程的特點,設計者能夠自己定義器件的內(nèi)部邏輯和管腳,擴展電路也具有可編程設計的特點,方便電路的多次改進,降低了設計成本。
2 單片機與CPLD
AVR單片機,采用精簡指令集CPU(RISC),具有高性能,處理速度快(1 MIPS/MHz),成本低,包括FLASH程序存儲器、看門狗、E2PROM、同/異步串口、SPI 、ADC、 定時器/計數(shù)器,眾多的中斷系統(tǒng),集成多種功能,具有低功耗抗干擾的休眠模式。
復雜可編程邏輯器件(Complex Programmable Logic Device,CPLD)是一種半定制的專用集成電路(Application Specific Integrated Circuit,ASIC)。其芯片上按一定排列方式集成了大量的門和觸發(fā)器等基本邏輯元件。通過軟件編程可以實現(xiàn)這些元件的連接,從而使之完成某個邏輯電路或系統(tǒng)的功能,成為一個可在實際電子系統(tǒng)中使用的ASIC。
目前,最大的兩家CPLD/FPGA生產(chǎn)廠商分別是ALTERA 以及Xilinx。該系統(tǒng)使用的Xilinx的XC2C256屬于Xilinx公司的Coolrunner2系列,包含256個宏單元,最大用戶I/O管腳有100個。
3 系統(tǒng)硬件連接組成以及工作過程
使用CPLD代替單片機的外圍接口芯片,與AVR單片機構成的控制系統(tǒng)相連如圖2所示。系統(tǒng)的主要部分僅需要2片集成電路,AVR單片機系列ATmega162和XC2C256。單片機與CPLD之間的接口是通過單片機的地址/數(shù)據(jù)復用總線(PORTA端口)以及讀寫控制I/O口(WR,RD,ALE)與CPLD的I/O口相連來進行數(shù)據(jù)、狀態(tài)的傳輸。
在單片機中對擴展的I/O端口進行統(tǒng)一編址,通過C語言可以方便地訪問I/O端口,單片機要往數(shù)據(jù)端口或控制端口輸出信息,必須先把地址送到地址總線上,將確定的控制信息送到控制總線上,再把數(shù)據(jù)信息送到數(shù)據(jù)總線上。經(jīng)過CPLD的內(nèi)部邏輯進行地址、數(shù)據(jù)鎖存,并譯碼以獲得擴展的端口號,從而獲得對各個外部功能子模塊的控制信號,端口號COM
通過選擇不同的I/O端口可以控制讀取、寫入各外圍處理模塊的數(shù)據(jù)。要讀取某一外圍處理模塊的數(shù)據(jù),必須先讀取狀態(tài)選擇端口COM 4 CPLD軟件設計 采用Xilinx公司的CPLD開發(fā)軟件Xilinx ISE完成系統(tǒng)的軟件設計,Xilinx ISE支持原理圖輸入、HDL語言輸入、狀態(tài)圖輸入和混合輸入等輸入方法。其中HDL語言中的VHDL硬件描述語言,與具體的工藝技術和器件無關,易于共享和復用,具有多層次描述系統(tǒng)硬件功能的能力。 在設計中,CPLD需要實現(xiàn)的功能為地址譯碼端口以及控制不同端口的電路設計,用VHDL語言對進行編程編譯,然后采用元件例化的方法得到電路結構如 圖3所示。 CPLD中所設計的程序片斷: addr_code<=RD≀&PA;_i_latch; 地址譯碼功能電路 p2: process(addr_code) begin case addr_code is when″100000″=>adrr_cs<=″111111111110″; --cs(0),電源管理 when ″100001″=>adrr_cs<=″111111111101″; --cs(1),時間統(tǒng)一模塊控制端口 when ″100010″=>adrr_cs<=″111111111011″; --cs(2),無線模塊模式控制端口 when ″100011″=>adrr_cs<=″111111110111″; --cs(3),數(shù)據(jù)采集模塊控制端口 when ″100100″=>adrr_cs<=″111111101111″; --cs(4),片選選擇端口 when ″100101″=>adrr_cs<=″111111011111″; --cs(5),狀態(tài)端口 when others =>adrr_cs<=″111111111111″; end case; end process p2;--無線模塊模式控制電路 p: process(adrr_cs(2),PA_i(2 downto 0)) begin if (adrr_cs(2)′event and adrr_cs(2) = ′0′)then wireless_manage<=PA_i(2 downto 0); end if; end process p;--片選不同的功能模塊通過擴展SPI與單片機通信 p:process(SS_PIN,adrr_cs(4),PA_i(2 downto 0),csaddr) begin if (adrr_cs(4)′event and adrr_cs(4) = ′0′)then csaddr<=PA_i(2 downto 0); end if; if (SS_PIN=′0′) then case csaddr is when ″000″ => SS <=″11111110″; when ″001″ => SS <=″11111101″; when ″010″ => SS <=″11111011″; when others => SS<=″11111111″; end case; else SS<=″11111111″; end if; end process p; 地址譯碼端口以及不同端口實現(xiàn)的功能仿真結果如圖4所示??梢钥闯?仿真結果符合設計要求。 5 單片機軟件設計 AVR單片機固化程序采用ICC語言編寫,并使用模塊化的設計方法,分為初始化程序、預定義子程序、主程序、無線收發(fā)控制程序、各功能模塊控制程序、讀功能子模塊的子程序、配置功能子模塊程序、超時程序等。模塊化設計使軟件更加靈活,便于調(diào)用和移植,并且在錯誤發(fā)生的時候,可以很快找到錯誤,極大地提高了系統(tǒng)的可靠性和穩(wěn)定性。 單片機中要對擴展的不同I/O端口分配相對應的不同的內(nèi)存地址。例如:要對擴展的電源管理I/O端口分配單片機所映射的內(nèi)存地址為Ox2000??梢詫懗桑?define POWER_ADDR (*( unsigned char *)0x2000)。 單片機主要完成系統(tǒng)的控制功能,在實現(xiàn)輸出控制接口時需要與CPLD配合,提供CPLD需要的數(shù)據(jù)和地址及控制線。當需要某一組輸出工作時,在單片機中用C語言對宏變量對應的地址進行賦值,“WR”或“RD” 同時就被拉低,CPLD通過這組信號判斷選擇并且使能某一組輸出工作,并將輸出控制代碼從單片機經(jīng)過CPLD的相應端口輸出,完成控制功能。例如對電源管理單片機中定義的I/O端口對應的內(nèi)存地址為:#define POWER_ADDR (*(unsigned char *)0x2000),當用C語言寫下POWER_ADDR=0x12時,就會在CPLD的8個I/O口輸出相應的控制信息“00010010”,從而對各功能模塊進行供電或斷電。 6 結 語 采用CPLD作為單片機I/O端口的擴展芯片,大大減少了單片機外圍所用芯片的種類和數(shù)量,縮小了體積,降低了功耗,提高了系統(tǒng)的可靠性和整體性。使用單片機和CPLD結合可以有效地實現(xiàn)過去需要利用單片機和大量外圍接口芯片才能完成的功能,而且還可以根據(jù)需要不斷地擴展外圍電路,只需要修改CPLD的程序就可以實現(xiàn)用戶的需求。CPLD器件與單片機結合,可以優(yōu)勢互補,組成靈活的、硬軟件都可現(xiàn)場編程的控制器,縮短開發(fā)周期,適應市場需要。 參考文獻 [1]李彬,蕭德云,張正芳.基于單片機和CPLD的智能I/O模塊設計.計算機工程與應用,2006,42(36):66-69. [2]何立民.單片機高級教程——應用與設計.北京:北京航空航天大學出版社,2003. [3]趙鑫,蔣亮,齊兆群,等.VHDL與數(shù)字電路設計.北京:機械工業(yè)出版社,2005. [4]羅苑棠.CPLD/FPGA常用模塊與綜合系統(tǒng)設計實例精講.北京:電子工業(yè)出版社,2007. [5]李慶,亓科,于敬芬.基于CPLD與單片機的多路高精度數(shù)據(jù)采集系統(tǒng)設計.海軍工程大學學報,2007,19(3): 62-65. [6]沈周義,許克濱.采用CPLD增強單片機P89C669外部設備擴展能力.現(xiàn)代電子技術,2007,30(13):63-65. [7]程耕國,劉濤.CPLD擴展51單片機尋址范圍.微計算機信息,2006,22(5Z):185-186,10. [8]蔡錦元.CPLD器件在單片機控制器中的使用.現(xiàn)代電子技術,2006,29(22):1-3. [9]沈文,Eagle lee,詹衛(wèi)前.AVR單片機C語言開發(fā)入門指導.北京:清華大學出版社,2007. [10]楊美剛,李小文.SPI接口及其在數(shù)據(jù)交換中的應用.通信技術,2007(11):385-387. 作者簡介張九賓 男,1981年出生,山西運城人,現(xiàn)就讀于中北大學信息與通信工程學院,碩士研究生。 張丕狀 男,1965年出生,教授,博士,碩士生導師。中北大學信息與通信工程學院信息工程系副主任,中北大學山西省無損檢測中心青年骨干。主要從事信號信息處理、數(shù)據(jù)采集測試工作。 杜坤坤 女,1983年出生,山東聊城人,現(xiàn)就讀于中北大學信息與通信工程學院,碩士研究生。