1 引 言
在现代家居环境中,随着照明、智能电器、安防等设备的日益增多,电气安装、控制线路也日趋复杂。在满足多功能要求的同时,安装简单、良好的扩展性和低廉的运行成本,成为现代智能家居系统技术发展的必然要求。随着计算机功能的日益强大和网络的普遍应用,人们对各种智能化产品的需求越来越强烈,家居智能化、网络化、远程化和系统化设计以其安全、舒适、便捷的服务而受到消费者的青睐。因此,智能家居控制系统有很大的发展潜力。
与其他同级别的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 Basic编写桌面控制软件通过以太网来控制系统,实现对于系统电路的远程控制。同时,可以通过系统的输入按钮向远程客户端发送信息,通过桌面软件接收信息并显示,实现两端的消息通讯。由于系统利用以太网来进行数据的传输和处理,将智能家居控制系统和目前功能日益强大的计算机以及广泛应用的互联网紧密结合在一起,具有更强大的功能性以及使用的方便性。
3 系统硬件电路设计
Altera的NIOSⅡ处理器设计突出优点表现在他的灵活性和可裁减性上,系统提供了大量IP,设计者可以任意对IP进行选择,同时,用户也可以根据需要定制自己的IP,实现自己所需要的功能。图1表示本系统设计中CycloneⅡ芯片的内部配置情况以及与外围设备的连接情况。
[nextpage]
在本系统设计中,主要使用了如下的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个必须的任务,分别为统计任务和空闲任务,用来进行系统的管理,所以考虑以后系统升级的方便,在对系统最大任务数进行设置时,最大任务数设为10。同时最低优先级设为20,在这里数字越高代表任务优先级越低,这个参数不受限于系统所带的任务数。然后,在系统库属性中选择Software Components进行LwIP网络协议栈的参数设置,在系统中使用的协议有UDP和TCP协议,并使用DHCP服务完成对系统自动分配IP的功能,其他参数保存为默认值。对μC/OS-Ⅱ和LwIP设置完成后,就是编写系统的相关功能任务。[nextpage]
在系统中主要设计了4个自定义任务,分别为:
(1)系统初始化管理任务:用来初始化操作系统的数据结构和创建其他任务。该任务在初始化完成后自动删除。
(2)网络DHCP服务管理任务:主要用来检查DHCP服务是否成功,即系统是否成功分配到IP。该任务在完成后也自动删除。任务流程图如图2所示:
(3)远程控制管理任务:主要用来在服务器和客户端之间建立Socket连接,在服务器端接收从客户端发送来的控制命令,并判断这些命令来进行相应操作。任务流程图如图3所示:
(4)服务器端中断管理任务:主要在服务器端处理用户产生的各种中断,然后向客户端发送相应命令执行对应操作。任务流程图如图4所示。
[nextpage]
5 远程终端的桌面软件设计
在系统的硬件和软件设计都完成后,为了进一步完善系统功能,以及提高使用的方便性,需要在客户端编写一个专用的界面软件,代替客户端命令行的操作,远程用户界面是利用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 V电压作为外部电路的电源。当通过本地的桌面软件建立本地计算机和智能家居控制系统间的网络连接后,可以利用软件上的操作按钮方便地远程控制LED电路和红外发射接收电路,同时可以利用智能家居控制系统的输入按钮向客户端发送消息,并显示在客户端软件上,实现两端的相互通讯。
7 结 语
本文提出一种基于NIOSⅡ处理器的智能家居控制系统设计方法,在FPGA上搭建系统硬件架构,并扩展外部的系统电路和测试电路,利用LwIP组件和μC/OS-Ⅱ操作系统实现系统对网络数据的控制处理,最后通过自行设计的桌面软件,成功地实现对系统外部电路的远程控制以及服务器和客户端间的消息通讯。系统用SoPC技术实现将微处理器、外部存储器控制接口、网络芯片控制接口、按钮和LCD等输入输出接口集成在一颗芯片上的设计思想。SoPC Builder在硬件和软件上均为设计者提供较好的支持,NIOSⅡ IDE集成开发环境提供集成的网络协议栈和操作系统移植,使得软件开发更加便利。