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