基于NIOSⅡ處理器的智能家居控制系統設計
1 引 言
本文引用地址:http://dyxdggzs.com/article/90287.htm在現代家居環(huán)境中,隨著(zhù)照明、智能電器、安防等設備的日益增多,電氣安裝、控制線(xiàn)路也日趨復雜。在滿(mǎn)足多功能要求的同時(shí),安裝簡(jiǎn)單、良好的擴展性和低廉的運行成本,成為現代智能家居系統技術(shù)發(fā)展的必然要求。隨著(zhù)計算機功能的日益強大和網(wǎng)絡(luò )的普遍應用,人們對各種智能化產(chǎn)品的需求越來(lái)越強烈,家居智能化、網(wǎng)絡(luò )化、遠程化和系統化設計以其安全、舒適、便捷的服務(wù)而受到消費者的青睞。因此,智能家居控制系統有很大的發(fā)展潛力。
與其他同級別的CPU,例如ARM、MIPS和POWER-PC等處理器相比NIOSⅡ處理器有其明顯的設計優(yōu)勢;能夠隨著(zhù)設計者的需要自由定制,并且SoPC技術(shù)將處理器、存儲器、I/O口等系統設計需要的功能模塊集成在一個(gè)PLD器件上,構建成一個(gè)可編程的片上系統,具有靈活的設計方式,可裁減、可擴充、可升級,并且很好地利用IP復用技術(shù),在SoPC Builder開(kāi)發(fā)工具中包含NIOSⅡ處理器以及其他一些常用外設IP模塊,可以很方便地將處理器、存儲器和其他外設模塊連接起來(lái),形成一個(gè)完整的系統,具有極大的應用靈活性,并且對于系統升級來(lái)說(shuō)也是相當方便的。
本文設計的智能家居控制系統采用基于NIOSⅡ的SoPC技術(shù),結合NIOSⅡ軟核處理器和CycloneⅡ開(kāi)發(fā)套件實(shí)現。整個(gè)硬件系統包括核心的FPGA芯片,外部擴展的SDRAM,FLASH、各種輸入/輸出電路以及SMSC公司的LAN91C111以太網(wǎng)接口芯片等。
2 系統設計
對于一個(gè)智能家居控制系統,需要滿(mǎn)足照明燈光控制、智能家電、家電電源的本地或遠程控制及安防監測控制等要求,本系統將通過(guò)FPGA、NIOSⅡ處理器、以太網(wǎng)以及擴展的外部電路實(shí)現對于家電環(huán)境的遠程控制。
設計首先在FPGA上搭建主要的系統架構,然后在FPGA外圍搭建系統擴展電路,包括SDRAM,FLASH以太網(wǎng)接口電路,其次利用Visual Basic編寫(xiě)桌面控制軟件通過(guò)以太網(wǎng)來(lái)控制系統,實(shí)現對于系統電路的遠程控制。同時(shí),可以通過(guò)系統的輸入按鈕向遠程客戶(hù)端發(fā)送信息,通過(guò)桌面軟件接收信息并顯示,實(shí)現兩端的消息通訊。由于系統利用以太網(wǎng)來(lái)進(jìn)行數據的傳輸和處理,將智能家居控制系統和目前功能日益強大的計算機以及廣泛應用的互聯(lián)網(wǎng)緊密結合在一起,具有更強大的功能性以及使用的方便性。
3 系統硬件電路設計
Altera的NIOSⅡ處理器設計突出優(yōu)點(diǎn)表現在他的靈活性和可裁減性上,系統提供了大量IP,設計者可以任意對IP進(jìn)行選擇,同時(shí),用戶(hù)也可以根據需要定制自己的IP,實(shí)現自己所需要的功能。圖1表示本系統設計中CycloneⅡ芯片的內部配置情況以及與外圍設備的連接情況。
在本系統設計中,主要使用了如下的Altera IP,并對其進(jìn)行相應設置:
(1)NiosⅡProcessor:該IP是系統處理器模塊,作為整個(gè)系統運行的控制處理核心;
(2)FLASH Memory(CFI):該IP是外部存儲器FLASH控制接口模塊,完成對FLASH的時(shí)序控制;
(3)DDR SDRAM Controller:該IP是外部存儲器DDR SDRAM的接口控制模塊,完成對DDR SDRAM的時(shí)序控制;
(4)JTAG UART:該IP完成在主機PC和SoPCBuilder系統之間的字符流傳輸,進(jìn)行程序的下載,以及硬件軟件的在線(xiàn)調試;
(5)LAN91C111 Interface:該IP是外部以太網(wǎng)芯片接口模塊,完成NIOSⅡ系統對外部LAN91C111網(wǎng)卡芯片的控制,進(jìn)而實(shí)現系統的以太網(wǎng)數據傳輸;
(6)Character LCD:該IP是外部LCD的接口控制模塊,完成對外部液晶模塊顯示的控制;
(7)PIO:該IP是通用I/O控制模塊,用來(lái)控制外部的輸入輸出;
(8)Interval timer:該IP是系統的定時(shí)器模塊,完成對系統時(shí)間的處理。
在選定系統需要的IP資源后,就可以通過(guò)SoPCBuilder很快地在FPGA上構建一個(gè)嵌入式系統。首先,定制軟核處理器,設定為standard標準型NIOSⅡCPU,4 kB指令緩沖器,支持JTAG下載調試;16 M FLASH用來(lái)存放用戶(hù)數據和程序;16 M DDR SDRAM用來(lái)作為系統運行時(shí)程序的存儲空間;定制Avalon三態(tài)總線(xiàn)架構,將LAN91C111設置為Avalon總線(xiàn)的從器件,通過(guò)Avalon總線(xiàn)與NIOSⅡ系統相連,并定制LAN91C111的驅動(dòng)模塊,實(shí)現系統對于該芯片的控制。
搭建完系統的模塊后,需要為各個(gè)模塊設定中斷號,讓CPU在運行過(guò)程中判斷內部和外部各種中斷的優(yōu)先級,其中系統定時(shí)器的中斷優(yōu)先級最高,然后各個(gè)模塊的中斷優(yōu)先級從高到低依次為JTAG模塊、外部按鈕輸入、EPCS配置芯片、LAN91C111芯片。同時(shí)需要將FLASH存儲器的基地址設為0x000000,以便使系統每次都能從FLASH中開(kāi)始執行指令。這樣,在使用SoPC Builder中的組件編輯器將用戶(hù)外設和系統連接起來(lái)后,就可以運行SoPC Builder生成系統的硬件描述語(yǔ)言文件,編寫(xiě)相關(guān)的Verilog HDL模塊,將系統模塊和外部器件連接,然后通過(guò)QuartusⅡ軟件編譯整個(gè)FPGA設計項目。
4 系統的軟件程序設計
在智能家居控制系統中,需要完成網(wǎng)絡(luò )數據傳輸和控制控能,因此在軟件設計中,需要完成2個(gè)方面:網(wǎng)絡(luò )服務(wù)功能,建立客戶(hù)端和本系統之間的網(wǎng)絡(luò )連接;響應以太網(wǎng)消息數據,進(jìn)行對應的電路控制。
在設計中使用LwIP(Lightweight TCP/IP Stack)組件實(shí)現系統的網(wǎng)絡(luò )控制功能,同時(shí)需要移植操作系統支持LwIP組件的使用,在系統中選擇移植μC/OS-Ⅱ操作系統,在軟件的設計中添加上RTOS和LwIP這2個(gè)組件,就能很方便地實(shí)現本系統的網(wǎng)絡(luò )數據傳輸與控制功能。
在NiosⅡIDE中建立新的工程后,首先在“SystemLibrary Properties”(系統庫屬性)中選擇RTOS Options進(jìn)行操作系統的參數設置。在μC/OS-Ⅱ中除了用戶(hù)創(chuàng )建的任務(wù)外,系統還自帶2個(gè)必須的任務(wù),分別為統計任務(wù)和空閑任務(wù),用來(lái)進(jìn)行系統的管理,所以考慮以后系統升級的方便,在對系統最大任務(wù)數進(jìn)行設置時(shí),最大任務(wù)數設為10。同時(shí)最低優(yōu)先級設為20,在這里數字越高代表任務(wù)優(yōu)先級越低,這個(gè)參數不受限于系統所帶的任務(wù)數。然后,在系統庫屬性中選擇Software Components進(jìn)行LwIP網(wǎng)絡(luò )協(xié)議棧的參數設置,在系統中使用的協(xié)議有UDP和TCP協(xié)議,并使用DHCP服務(wù)完成對系統自動(dòng)分配IP的功能,其他參數保存為默認值。對μC/OS-Ⅱ和LwIP設置完成后,就是編寫(xiě)系統的相關(guān)功能任務(wù)。
在系統中主要設計了4個(gè)自定義任務(wù),分別為:
(1)系統初始化管理任務(wù):用來(lái)初始化操作系統的數據結構和創(chuàng )建其他任務(wù)。該任務(wù)在初始化完成后自動(dòng)刪除。
(2)網(wǎng)絡(luò )DHCP服務(wù)管理任務(wù):主要用來(lái)檢查DHCP服務(wù)是否成功,即系統是否成功分配到IP。該任務(wù)在完成后也自動(dòng)刪除。任務(wù)流程圖如圖2所示:
(3)遠程控制管理任務(wù):主要用來(lái)在服務(wù)器和客戶(hù)端之間建立Socket連接,在服務(wù)器端接收從客戶(hù)端發(fā)送來(lái)的控制命令,并判斷這些命令來(lái)進(jìn)行相應操作。任務(wù)流程圖如圖3所示:
(4)服務(wù)器端中斷管理任務(wù):主要在服務(wù)器端處理用戶(hù)產(chǎn)生的各種中斷,然后向客戶(hù)端發(fā)送相應命令執行對應操作。任務(wù)流程圖如圖4所示。
5 遠程終端的桌面軟件設計
在系統的硬件和軟件設計都完成后,為了進(jìn)一步完善系統功能,以及提高使用的方便性,需要在客戶(hù)端編寫(xiě)一個(gè)專(zhuān)用的界面軟件,代替客戶(hù)端命令行的操作,遠程用戶(hù)界面是利用Visual Basic 6.0來(lái)完成開(kāi)發(fā)。Windows操作系統為Internet提供Windows Sockets(或Winsock)等標準接口,而VB則利用ActiveX控件Winsock為Internet提供標準接口,所以使用VB的Winsock控件來(lái)完成本軟件開(kāi)發(fā)非常方便。
設計的軟件界面如圖5所示:
從軟件界面可以看到,在系統使用中通過(guò)“啟動(dòng)連接”按鈕建立本地計算機和智能家居控制系統間的網(wǎng)絡(luò )連接。在“信息接收”對話(huà)框中可以接收并顯示從智能家居控制系統端發(fā)送過(guò)來(lái)的消息,在“命令發(fā)送”欄中可以選擇不同的服務(wù)通過(guò)智能家居控制系統響應對應的操作。
6 系統性能分析和功能驗證
利用QuartusⅡ軟件對設計的系統進(jìn)行綜合分析后可以知道,采用CycloneⅡEP2C35F672C6型號的FPGA設計的系統占用整個(gè)FPGA的資源是比較少的,使用3 658個(gè)邏輯單元,占總資源的11%,使用了52 224 b存儲單元,占總存儲量的10%,顯示了FPGA的強大功能,利用剩余的資源可以進(jìn)行后續高級功能的擴展。
在系統功能驗證中,設計2組外圍電路來(lái)驗證系統的功能。設計外部發(fā)光二極管LED電路驗證“開(kāi)燈1”按鈕功能,模擬系統對燈具的控制作用;設計外部紅外信號發(fā)射與接收電路來(lái)(包括1對紅外發(fā)光二極管和紅外接收二極管電路)驗證“開(kāi)家電1”按鈕功能,模擬系統對紅外家電的控制作用。在實(shí)際測試中,電路工作良好,利用FPGA引腳輸出3.3 V電壓作為外部電路的電源。當通過(guò)本地的桌面軟件建立本地計算機和智能家居控制系統間的網(wǎng)絡(luò )連接后,可以利用軟件上的操作按鈕方便地遠程控制LED電路和紅外發(fā)射接收電路,同時(shí)可以利用智能家居控制系統的輸入按鈕向客戶(hù)端發(fā)送消息,并顯示在客戶(hù)端軟件上,實(shí)現兩端的相互通訊。
7 結 語(yǔ)
本文提出一種基于NIOSⅡ處理器的智能家居控制系統設計方法,在FPGA上搭建系統硬件架構,并擴展外部的系統電路和測試電路,利用LwIP組件和μC/OS-Ⅱ操作系統實(shí)現系統對網(wǎng)絡(luò )數據的控制處理,最后通過(guò)自行設計的桌面軟件,成功地實(shí)現對系統外部電路的遠程控制以及服務(wù)器和客戶(hù)端間的消息通訊。系統用SoPC技術(shù)實(shí)現將微處理器、外部存儲器控制接口、網(wǎng)絡(luò )芯片控制接口、按鈕和LCD等輸入輸出接口集成在一顆芯片上的設計思想。SoPC Builder在硬件和軟件上均為設計者提供較好的支持,NIOSⅡ IDE集成開(kāi)發(fā)環(huán)境提供集成的網(wǎng)絡(luò )協(xié)議棧和操作系統移植,使得軟件開(kāi)發(fā)更加便利。
評論