1 引 言
在現代家居環境中,隨著照明、智能電器、安防等設備的日益增多,電氣安裝、控製線路也日趨複雜。在滿足多功能要求的同時,安裝簡單、良(liang)好(hao)的(de)擴(kuo)展(zhan)性(xing)和(he)低(di)廉(lian)的(de)運(yun)行(xing)成(cheng)本(ben),成(cheng)為(wei)現(xian)代(dai)智(zhi)能(neng)家(jia)居(ju)係(xi)統(tong)技(ji)術(shu)發(fa)展(zhan)的(de)必(bi)然(ran)要(yao)求(qiu)。隨(sui)著(zhe)計(ji)算(suan)機(ji)功(gong)能(neng)的(de)日(ri)益(yi)強(qiang)大(da)和(he)網(wang)絡(luo)的(de)普(pu)遍(bian)應(ying)用(yong),人(ren)們(men)對(dui)各(ge)種(zhong)智(zhi)能(neng)化(hua)產(chan)品(pin)的(de)需(xu)求(qiu)越(yue)來(lai)越(yue)強(qiang)烈(lie),家(jia)居(ju)智(zhi)能(neng)化(hua)、網絡化、遠程化和係統化設計以其安全、舒適、便捷的服務而受到消費者的青睞。因此,智能家居控製係統有很大的發展潛力。
與其他同級別的CPU,例如ARM、MIPS和POWER-PC等處理器相比NIOSⅡ處理器有其明顯的設計優勢;能夠隨著設計者的需要自由定製,並且SoPC技術將處理器、存儲器、I/O口等係統設計需要的功能模塊集成在一個PLD器件上,構建成一個可編程的片上係統,具有靈活的設計方式,可裁減、可擴充、可升級,並且很好地利用IP複用技術,在SoPC Builder開發工具中包含NIOSⅡ處理器以及其他一些常用外設IP模塊,可以很方便地將處理器、存儲器和其他外設模塊連接起來,形成一個完整的係統,具有極大的應用靈活性,並且對於係統升級來說也是相當方便的。
本文設計的智能家居控製係統采用基於NIOSⅡ的SoPC技術,結合NIOSⅡ軟核處理器和CycloneⅡ開發套件實現。整個硬件係統包括核心的FPGA芯片,外部擴展的SDRAM,FLASH、各種輸入/輸出電路以及SMSC公司的LAN91C111以太網接口芯片等。
2 係統設計
對於一個智能家居控製係統,需要滿足照明燈光控製、智能家電、家電電源的本地或遠程控製及安防監測控製等要求,本係統將通過FPGA、NIOSⅡ處理器、以太網以及擴展的外部電路實現對於家電環境的遠程控製。
設計首先在FPGA上搭建主要的係統架構,然後在FPGA外圍搭建係統擴展電路,包括SDRAM,FLASH以太網接口電路,其次利用Visual Basicbianxiezhuomiankongzhiruanjiantongguoyitaiwanglaikongzhixitong,shixianduiyuxitongdianludeyuanchengkongzhi。tongshi,keyitongguoxitongdeshuruanniuxiangyuanchengkehuduanfasongxinxi,tongguozhuomianruanjianjieshouxinxibingxianshi,shixianliangduandexiaoxitongxun。youyuxitongliyongyitaiwanglaijinxingshujudechuanshuhechuli,jiangzhinengjiajukongzhixitonghemuqiangongnengriyiqiangdadejisuanjiyijiguangfanyingyongdehulianwangjinmijiehezaiyiqi,juyougengqiangdadegongnengxingyijishiyongdefangbianxing。
3 係統硬件電路設計
Altera的NIOSⅡ處理器設計突出優點表現在他的靈活性和可裁減性上,係統提供了大量IP,設計者可以任意對IP進行選擇,同時,用戶也可以根據需要定製自己的IP,實現自己所需要的功能。圖1表示本係統設計中CycloneⅡ芯片的內部配置情況以及與外圍設備的連接情況。
在本係統設計中,主要使用了如下的Altera IP,並對其進行相應設置:
(1)NiosⅡProcessor:該IP是係統處理器模塊,作為整個係統運行的控製處理核心;
(2)FLASH Memory(CFI):該IP是外部存儲器FLASH控製接口模塊,完成對FLASH的時序控製;
(3)DDR SDRAM Controller:該IP是外部存儲器DDR SDRAM的接口控製模塊,完成對DDR SDRAM的時序控製;
(4)JTAG UART:該IP完成在主機PC和SoPCBuilder係統之間的字符流傳輸,進行程序的下載,以及硬件軟件的在線調試;
(5)LAN91C111 Interface:該IP是外部以太網芯片接口模塊,完成NIOSⅡ係統對外部LAN91C111網卡芯片的控製,進而實現係統的以太網數據傳輸;
(6)Character LCD:該IP是外部LCD的接口控製模塊,完成對外部液晶模塊顯示的控製;
(7)PIO:該IP是通用I/O控製模塊,用來控製外部的輸入輸出;
(8)Interval timer:該IP是係統的定時器模塊,完成對係統時間的處理。
在選定係統需要的IP資源後,就可以通過SoPCBuilder很快地在FPGA上構建一個嵌入式係統。首先,定製軟核處理器,設定為standard標準型NIOSⅡCPU,4 kB指令緩衝器,支持JTAG下載調試;16 M FLASH用來存放用戶數據和程序;16 M DDR SDRAM用來作為係統運行時程序的存儲空間;定製Avalon三態總線架構,將LAN91C111設置為Avalon總線的從器件,通過Avalon總線與NIOSⅡ係統相連,並定製LAN91C111的驅動模塊,實現係統對於該芯片的控製。
搭建完係統的模塊後,需要為各個模塊設定中斷號,讓CPU在運行過程中判斷內部和外部各種中斷的優先級,其中係統定時器的中斷優先級最高,然後各個模塊的中斷優先級從高到低依次為JTAG模塊、外部按鈕輸入、EPCS配置芯片、LAN91C111芯片。同時需要將FLASH存儲器的基地址設為0x000000,以便使係統每次都能從FLASH中開始執行指令。這樣,在使用SoPC Builder中的組件編輯器將用戶外設和係統連接起來後,就可以運行SoPC Builder生成係統的硬件描述語言文件,編寫相關的Verilog HDL模塊,將係統模塊和外部器件連接,然後通過QuartusⅡ軟件編譯整個FPGA設計項目。
4 係統的軟件程序設計
在智能家居控製係統中,需要完成網絡數據傳輸和控製控能,因此在軟件設計中,需要完成2個方麵:網絡服務功能,建立客戶端和本係統之間的網絡連接;響應以太網消息數據,進行對應的電路控製。
在設計中使用LwIP(Lightweight TCP/IP Stack)組件實現係統的網絡控製功能,同時需要移植操作係統支持LwIP組件的使用,在係統中選擇移植μC/OS-Ⅱ操作係統,在軟件的設計中添加上RTOS和LwIP這2個組件,就能很方便地實現本係統的網絡數據傳輸與控製功能。
在NiosⅡIDE中建立新的工程後,首先在“SystemLibrary Properties”(係統庫屬性)中選擇RTOS Options進行操作係統的參數設置。在μC/OS-Ⅱ中除了用戶創建的任務外,係統還自帶2個ge必bi須xu的de任ren務wu,分fen別bie為wei統tong計ji任ren務wu和he空kong閑xian任ren務wu,用yong來lai進jin行xing係xi統tong的de管guan理li,所suo以yi考kao慮lv以yi後hou係xi統tong升sheng級ji的de方fang便bian,在zai對dui係xi統tong最zui大da任ren務wu數shu進jin行xing設she置zhi時shi,最zui大da任ren務wu數shu設she為wei10。同時最低優先級設為20,在這裏數字越高代表任務優先級越低,這個參數不受限於係統所帶的任務數。然後,在係統庫屬性中選擇Software Components進行LwIP網絡協議棧的參數設置,在係統中使用的協議有UDP和TCP協議,並使用DHCP服務完成對係統自動分配IP的功能,其他參數保存為默認值。對μC/OS-Ⅱ和LwIP設置完成後,就是編寫係統的相關功能任務。
在係統中主要設計了4個自定義任務,分別為:
(1)係統初始化管理任務:用來初始化操作係統的數據結構和創建其他任務。該任務在初始化完成後自動刪除。
(2)網絡DHCP服務管理任務:主要用來檢查DHCP服務是否成功,即係統是否成功分配到IP。該任務在完成後也自動刪除。任務流程圖如圖2所示:
(3)遠程控製管理任務:主要用來在服務器和客戶端之間建立Socket連接,在服務器端接收從客戶端發送來的控製命令,並判斷這些命令來進行相應操作。任務流程圖如圖3所示:
(4)服務器端中斷管理任務:主要在服務器端處理用戶產生的各種中斷,然後向客戶端發送相應命令執行對應操作。任務流程圖如圖4所示。
5 遠程終端的桌麵軟件設計
在(zai)係(xi)統(tong)的(de)硬(ying)件(jian)和(he)軟(ruan)件(jian)設(she)計(ji)都(dou)完(wan)成(cheng)後(hou),為(wei)了(le)進(jin)一(yi)步(bu)完(wan)善(shan)係(xi)統(tong)功(gong)能(neng),以(yi)及(ji)提(ti)高(gao)使(shi)用(yong)的(de)方(fang)便(bian)性(xing),需(xu)要(yao)在(zai)客(ke)戶(hu)端(duan)編(bian)寫(xie)一(yi)個(ge)專(zhuan)用(yong)的(de)界(jie)麵(mian)軟(ruan)件(jian),代(dai)替(ti)客(ke)戶(hu)端(duan)命(ming)令(ling)行(xing)的(de)操(cao)作(zuo),遠(yuan)程(cheng)用(yong)戶(hu)界(jie)麵(mian)是(shi)利(li)用(yong)Visual Basic 6.0來完成開發。Windows操作係統為Internet提供Windows Sockets(或Winsock)等標準接口,而VB則利用ActiveX控件Winsock為Internet提供標準接口,所以使用VB的Winsock控件來完成本軟件開發非常方便。
設計的軟件界麵如圖5所示:
從軟件界麵可以看到,在係統使用中通過“啟動連接”按鈕建立本地計算機和智能家居控製係統間的網絡連接。在“信息接收”對話框中可以接收並顯示從智能家居控製係統端發送過來的消息,在“命令發送”欄中可以選擇不同的服務通過智能家居控製係統響應對應的操作。
6 係統性能分析和功能驗證
利用QuartusⅡ軟件對設計的係統進行綜合分析後可以知道,采用CycloneⅡEP2C35F672C6型號的FPGA設計的係統占用整個FPGA的資源是比較少的,使用3 658個邏輯單元,占總資源的11%,使用了52 224 b存儲單元,占總存儲量的10%,顯示了FPGA的強大功能,利用剩餘的資源可以進行後續高級功能的擴展。
在係統功能驗證中,設計2組外圍電路來驗證係統的功能。設計外部發光二極管LED電路驗證“開燈1”按鈕功能,模擬係統對燈具的控製作用;設計外部紅外信號發射與接收電路來(包括1對紅外發光二極管和紅外接收二極管電路)驗證“開家電1”按鈕功能,模擬係統對紅外家電的控製作用。在實際測試中,電路工作良好,利用FPGA引腳輸出3.3 Vdianyazuoweiwaibudianludedianyuan。dangtongguobendidezhuomianruanjianjianlibendijisuanjihezhinengjiajukongzhixitongjiandewangluolianjiehou,keyiliyongruanjianshangdecaozuoanniufangbiandiyuanchengkongzhiLED電dian路lu和he紅hong外wai發fa射she接jie收shou電dian路lu,同tong時shi可ke以yi利li用yong智zhi能neng家jia居ju控kong製zhi係xi統tong的de輸shu入ru按an鈕niu向xiang客ke戶hu端duan發fa送song消xiao息xi,並bing顯xian示shi在zai客ke戶hu端duan軟ruan件jian上shang,實shi現xian兩liang端duan的de相xiang互hu通tong訊xun。
7 結 語
本文提出一種基於NIOSⅡ處理器的智能家居控製係統設計方法,在FPGA上搭建係統硬件架構,並擴展外部的係統電路和測試電路,利用LwIP組件和μC/OS-Ⅱcaozuoxitongshixianxitongduiwangluoshujudekongzhichuli,zuihoutongguozixingshejidezhuomianruanjian,chenggongdishixianduixitongwaibudianludeyuanchengkongzhiyijifuwuqihekehuduanjiandexiaoxitongxun。xitongyongSoPC技術實現將微處理器、外部存儲器控製接口、網絡芯片控製接口、按鈕和LCD等輸入輸出接口集成在一顆芯片上的設計思想。SoPC Builder在硬件和軟件上均為設計者提供較好的支持,NIOSⅡ IDE集成開發環境提供集成的網絡協議棧和操作係統移植,使得軟件開發更加便利。