摘 要:設計并實現基于SoPC技術的嵌入式智能家居控制器。簡單介紹智能家居系統的總體結構,隨后對核心部分家居控制器的實現在硬件和軟件2方面進行詳細論述,其中運用NiosⅡ軟核處理器作為主控制器,實時多任務操作系統μC/OS-Ⅱ為應用軟件運行平臺,實現家電控制和安防報警功能以及小區內管理等。系統采用的可編程片上系統的設計方法使其可以根據需求裁減或者擴充功能,以滿足眾多層次的家居控制應用需要。
關鍵詞:智能家居;SoPC;μC/OS-Ⅱ;FPGA
中圖分類號:TP332文獻標識碼:A
文章編號:1004373X(2008)2203603
Research of Smart Home Control System Based on SoPC
SUN Yuliang,WANG Shukun,ZHANG Chuansheng
(School of Information and Electric Engineering,Shandong Jianzhu University,Jinan,250101,China)
Abstract:Embedded smart home control system based on System on a Programmable Chip (SoPC) is designed and implemented.The structure of smart home control system is briefly introduced.Subsequently implementation of home control system′s core is detailed discussed in terms of hardware and software,using soft intellectual property processor as primary controller,real-time multitasks operating system μC/OS-Ⅱas running platform of application software,realizes the control of household appliances,security alarm functions as well as the district management.To meet the many levels of home control application needs,function of the system based on the design method of SoPC can be reduced and extended according to the requirement.
Keywords:smart home;SoPC;μC/OS-Ⅱ;FPGA
智能家居是近幾年產生并迅速崛起的一種新型家居住宅?!爸悄芗揖印?smart home),又稱智能住宅,它利用先進的計算機技術、嵌入式系統技術、網絡通訊技術和傳感器技術等,將家中的各種設備有機的連接到一起[1]。
SoPC(System on Programmable Chip)技術是Altera公司提出的一種靈活、高效的片上系統設計方案[2]。它的特點在于可編程性,即利用FPGA器件的可編程性來進行SoC(System on Chip)設計。因此可以簡化采用傳統方式設計的家居控制器,使得眾多的控制接口芯片在一片FPGA中實現。并使其具有處理能力強、系統架構清晰、網絡性能優越等更多的優勢。嵌入實時操作系統μC/OS-Ⅱ屬于占先式多任務操作系統,可固化、可裁減、移植性好,具有良好的可靠性和穩定性[3]。它支持64個任務,具有信號量、消息郵箱、消息隊列等多種進程間通信機制,其已經在商業領域得到了成功的應用。利用可編程SoPC技術和μC/OS-Ⅱ操作系統是智能家居系統設計的良好選擇。本系統以Altera公司的DE2開發板為核心,其FPGA芯片采用CycloneⅡEP2C35。
1 智能家居系統總體結構
智能家居通過統一的網絡總線和控制平臺,將家庭的信息家電系統、環境控制系統、安防報警系統、遠程操作系統等連成體。向上連至小區物業控制中心的綜合管理系統,實現遠程數據采集、設備監控。向下通過家庭總線連接到家庭中各種不同的功能??欤瑯嫵杉彝バ畔⒖刂凭W,實現家庭中所有相關信息點的數據采集和相關控制點的功能控制,并通過網絡接口與外部信息社會相連接。智能家居系統總體結構如圖1所示。

2 智能家居控制器的硬件設計
2.1 系統硬件構成
智能家居控制器的硬件由FPGA、存儲器和外圍模塊等3個部分構成,是系統的數據處理和完成人機對話的交互中心。結構如圖2所示。

家居控制器的工作原理是:現場的數據采集設備采集到各自的數據,通過串口送給DE2開發板,系統硬件板卡對不同數據進行不同處理。對于房間環境參數數據將交付給LCD顯示,同時和設定參數相比較,比較結果送出至各繼電器完成對室內環境的調節。對于安防報警信息進行匹配處理,看是否有報警事件需要報警輸出。對于智能水表、電表、熱表、天然氣表的數據進行不同的封裝,形成各自的信息流放到網絡接口層,交付給網絡進行傳輸。另一方面,當對家庭內電器需要控制時,通過控制器的鍵盤下達的控制信息來控制現場動作。同時,可以通過CGI頁面完成對控制器的遠程控制。
2.1.1 SoPC定制NiosⅡ軟核處理器模塊
該設計中的FPGA芯片是采用的Altera公司的Cyclone ⅡEP2C35,它具有35 000個邏輯單元、672個引腳,提供用戶自定義I/O口475個。是一款性價比非常好的FPGA芯片。
FPGA內部各模塊是利用Quartus Ⅱ開發軟件和其中集成的SoPC Builder系統開發工具設計的。SoPC Builder提供圖形化的配置界面,并備有一些常用接口控制模塊,可以直接加入到系統中。在SoPC Builder中加載CPU軟核和相應的外圍接口以及與定義相應的自定義指令,然后對設計進行編譯綜合,下載到FPGA,就可以方便地制作一個具有特定功能的嵌入式處理器[4]。設計中的CPU軟核采用Altera公司的32位RISC嵌入式處理器Nios Ⅱ。在設計中對FPGA進行配置時,選用了Nios Ⅱ/S CPU、內部定時器、JTAG異步串行接口、SDRAM控制器、FLASH存儲器接口、LCD接口、片內存儲器和EPCS4串行配置器件控制器接口、RS 232接口、DM9000A接口等部件。Nios Ⅱ CPU和所有部件通過Avalon總線連接在一起,構成基于Avalon總線的SoPC系統架構。系統框圖如圖3所示。
2.1.2 存儲器和外圍模塊
存儲器模塊采用數據不易丟失的FLASH來存儲應用程序及需要保存的數據參數,采用讀寫速度較高的SDRAM來給μC/OS-Ⅱ操作系統和應用程序提供運行空間并緩存大量的中間處理數據。

系統的外圍模塊包括一個16×2的字符型液晶顯示屏LCD和一個16位獨立式非編碼鍵盤,用來實現系統的人機交互功能。另外,RS 232接口用來實現家庭內各檢測單元與FPGA的通信。
2.2 DM9000A與處理器的接口設計
以太網控制器芯片是采用臺灣Davicom公司生產的DM9000A芯片,支持10 MHz/100 MHz的傳輸速率,集成了介質訪問控制子層(MAC)和物理層的功能,并且可以直接與大部分通用處理器的本地總線接口。它為嵌入式系統實現快速的以太網連接提供了良好的解決方案。
在設計DM9000A芯片控制模塊時,由于沒有相應的IP核,于是在Altera公司的網站上下載DM9000A _IF.V文件,修改后在SoPC Builder中用“Create New Component”,將DM9000A接口模塊添加到系統中。DM9000A接口框圖如圖4所示。

3 智能家居控制器的軟件設計
3.1 μC/OS-Ⅱ操作系統的移植
根據家居控制器的特點,設計必須滿足實時性和并發性的要求,以便更好地支持運行時的多任務環境的調度,所以應用軟件應該基于嵌入式實時操作系統。日前比較流行的嵌入式操作系統主要有VxWorks,Windows CE,μCLinux,μC/OS-Ⅱ等。考慮到μC/OS-Ⅱ的規模較小、實時性和可靠性較高,NiosⅡ IDE開發環境對μC/OS-Ⅱ的良好支持,故操作系統選擇μC/OS-Ⅱ。它是一種占先式的多任務實時操作系統內核,通過為每個任務分配單獨的任務堆棧來保存任務工作環境,提供任務答理與調度、任務間的同步、互斥與通信、時間和中斷管理、內存的動態分配等多種系統服務。
Altera公司提供實時操作系統μC/OS-Ⅱ作為NiosⅡ開發系統的一部分。即在硬件系統創建完成以后,開始一個基于NiosⅡ處理器的MicroC/OS-Ⅱ軟件設計過程,使用IDE可以對所有的RTOS模塊進行配置。具體可以通過單擊MicroC/OS-Ⅱ下每一個選項檢查所能選擇的選項進行設置,例如最大任務數、最低優先級、消息郵箱等。
3.2 終端軟件的設計
終端軟件同樣在NiosⅡ集成開發環境下利用C語言開發。軟件設計采用模塊化設計,保證程序具有良好的可移植性和可采用性。智能家居控制器的軟件部分包括遠程通信模塊、人機交互模塊、安防報警模塊、環境控制模塊和信息家電模塊。智能家居控制器的啟動和運行過程是:當系統上電后,家居控制器硬件初始化、操作系統初始化、LCD初始化、初始化系統圖形用戶界面、啟動操作系統、創建系統任務、進入主系統任務(Main_Task任務)、創建用戶程序,以中斷方式隨時響應來自各模塊任務的響應。每個任務均由以下3部分組成:應用程序、任務堆棧以及任務控制塊。其中只有應用程序被燒入ROM,而任務本身則被置于RAM,待系統運行時再建立,任務堆棧用以存儲CPU寄存器內容。當某任務由運行態變為其他狀態時,CPU寄存器內容壓入相應任務堆棧,反之則將相應任務堆棧內容置于CPU寄存器。作為系統中定義的一個數據結構,任務控制塊的內容包括任務堆棧的地址、任務當前狀態、任務優先權等。操作系統通過查詢任務控制塊內容實現對任務的管理。
3.3 網絡設備驅動程序設計
DM9000A程序設計中采用中斷的方式收發數據,程序的編寫主要包括初始化、接收、發送、中斷處理這幾個部分。
在系統上電時,FPGA通過總線配置DM9000A內部的網絡控制寄存器(NCR)、中斷寄存器(ISR)等,完成初始化。隨后,DM9000A進入數據收發等待狀態。
在控制器平臺上,接收到的各傳感器數字信號經過數字下變頻、抽取濾波等解調處理后,形成連續的解調數據流,在FPGA內通過FIFO和以太網接口部分進行緩沖,當解調數據達到規定的數據幀長度時,FPGA利用寫操作寄存器MWCMD(REG_F8)將數據幀寫入DM9000A的TX緩存區中,然后再將數據幀長度寫入寄存器FCH和FDH,其中將高8位寫入寄存器FCH,低8位寫入寄存器FDH。隨后,FPGA將發送控制寄存器TCR(REG_02)的bit[1]置為高電平,DM9000A接到使能命令后將緩存的數據和數據幀信息進行MAC組幀,并發送出去。
DM9000A中的接收緩存區RX FIFO初始化后的起始地址為0C00H,每幀數據都有4字節長的首部,然后是有效數據和CRC校驗序列。首部4字節用于判斷是否有數據接收、接收的幀格式是否有效以及幀長度。在接收到新數據后,中斷寄存器ISR的PRS位將被置為0,FPGA開始讀取接收緩存區數據。
4 結 語
本文給出一種基于SoPC的遠程家居控制系統的設計方案。使用SoPC技術進行系統設計具有設計靈活、開發周期短的特點,它能將多個外部模塊綜合設計到一片高密度的FPGA中,使設計更為小巧,成本更為低廉,也更易于系統的升級。雖然目前SoPC技術還處于推廣階段,但在不久的將來一定有更廣闊的應用空間。
參考文獻
[1]王明秋.智能家居控制系統的設計與實現研究[D].武漢:華中師范大學,2006.
[2]徐光輝,程東旭,黃如,等.基于FPGA的嵌入式開發與應用[M].北京:電子工業出版社,2005.
[3][美]Jean J Labroosse.嵌入式實時操作系統μC/OS-Ⅱ [M].2版.邵貝貝,譯.北京:北京航空航天大學出版社,2005.
[4]任愛鋒.基于FPGA的嵌入式系統設計[M].西安:西安電子科技大學出版社,2004.
[5]潘松,王國棟.VHDL實用教程[M].成都:電子科技大學出版社,2001.
[6]孫釗.嵌入式操作系統在智能家居中的應用與研究[D].武漢:武漢理工大學,2006.
[7]朱立彤.智能住宅的核心“家庭控制器”[DB/OL].中國智能建筑服務網,1999.
[8]Using MicroC/OS- II RTOS with the Nios II Processor Tutorial[Z].Altera Inc.2003.
[9]Nios Software Development Tutorial[Z].Altera Inc.2003.
[10]Micro/OS-II Real-Time Operating System[Z].Altera Inc.2003.
作者簡介 孫玉亮 女,1982年出生,山東日照人,碩士研究生。研究方向為自動化裝置的集成化與智能化。
王樹昆 男,1956年出生,山東濟南人,山東建筑大學信息與電氣工程學院教授、碩士生導師,中國電子學會高級會員。研究方向為自動化裝置的集成化與智能化、嵌入式系統和智能建筑技術。
張傳升 男,1973年出生,山東濱洲人,山東建筑大學信息與電氣工程學院講師。研究方向為建筑智能化系統。