主页(http://www.pttcn.net):基于NIOSⅡ处理器的智能家居控制系统设计
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上搭建主要的系统架构,然后在FPGA外围搭建系统扩展电路,包括SDRAM,FLASH以太网接口电路,其次利用Visual Basic编写桌面控制软件通过以太网来控制系统,实现对于系统电路的远程控制。同时,可以通过系统的输入按钮向远程客户端发送信息,通过桌面软件接收信息并显示,实现两端的消息通讯。由于系统利用以太网来进行数据的传输和处理,将智能家居控制系统和目前功能日益强大的计算机以及广泛应用的互联网紧密结合在一起,具有更强大的功能性以及使用的方便性。
3 系统硬件电路设计
在本系统设计中,主要使用了如下的Altera 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 系统的软件程序设计 在设计中使用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设置完成后,就是编写系统的相关功能任务。
|