wufl是web ,usb ,fpga ,led四个英文单词的缩写,意思是通过web和usb去控制fpga开发板上的led灯。原理很简单,思路也并不复杂。该项目的目的是用web连接控制硬件,提供一种可供参考的设计框架,如想实现更多的功能,只需要按照设计思路进行扩展即可。
这个框架包含三个大的模块,硬件设计,nios程序,上位机程序(web服务端和前端)。
- 硬件设计是指的配置nios软核,将nios软核与fpga开发板的外设联系起来。
- nios程序职责相对简单,具体的职责就是处理服务端过来的请求然后控制硬件去做具体的事情,这个例子是去点亮4个led灯。
- 上位机程序。沟通前端与硬件的中间层,将用户的请求分发到硬件上。因为是demo,并不复杂,所以我将server与前端放在了一块,即便如此二者也是可以完全分离的。
- 配置开发环境。我用的是winxp 32位,Quartus11,采用的硬件为黑金fpga开发板NIOS CYCLONE IV EP4CE15
- 新建工程Family:CYCLONE IV E,芯片选择:EP4CE15F17C8,新建顶层文件
- 打开sopcbuilder,配置nios,依次添加CPU,systemid,SDRAM,epcs,JTAG,led,usb,然后自动分配地址和中断,编译内核
- 在顶层文件中添加新建的内核,建立锁相环,分配引脚,然后编译。
- 新建工程,ptf选择刚才生成的ptf文件。导入USB代码文件和led代码文件,修改代码,调试。
- 测试USB驱动文件,完成python的调用过程
- 新建django项目,配置项目,编写服务端框架
- 新建html文件和js文件,编写前端框架
- 程序开发完成后发布到github,将前端文件发布到项目的page分支。
##设计思路 整个系统的三个模块可以理解成mvc的三个层次,每个具体的层次再开发的时候依然可以采用mvc的设计思路,之所以这样设计是因为为了方便扩展,可以设想一下扩展到N多个硬件,就像一棵大树,硬件是根,nios和服务端是树干,前端为树叶。从云端的角度看实际上是把N多个硬件放入云端,如果进一步扩展并集群就可以提供硬件云服务了。
- 应用到家庭上,将家里的硬件放到云端,就是一种很好的家庭云的解决方案。
- 应用到物联网上,形成物联云网,所有硬件信息的采集和管理控制可以变得无处不在。
- 应用到智能交通领域。配合人工智能技术,解决交通问题。
- 应用到智能工业控制领域。智能工厂,一个人就可以方便的管理整个工厂。
- 应用到智能硬件领域。手环,鞋子,路由等当前热门的智能硬件。
- 应用到智能传感网络。可以应用于特殊环境下,比如高温,水下,墓室挖掘。
##设计缺陷
- 框架设计的较为简单,本质是一个原型,服务端并没有设计数据库,因为目的较为简单,只需要点亮硬件上的led灯即可。做这个项目的意义并不在于设计一个功能复杂的系统,而是设计一种解决这类问题的思路和框架。
- 安全性。任何东西一旦放到网络上,安全性必然成为一种必须要面对的问题,在进行设计的时候并没有考虑安全问题。但这并不意味着安全并不重要,如果设计上有缺陷,极有可能发生千里之外取人首级的问题。
- 标准化的问题。思路人人有,如果人人都按照自己思路去做,那就会形成一种十分混乱复杂的局面。
##展望 互联网已经发展到了万物皆可联网的地步,因此人们提出了物联网的概念,我们也已经身处在云时代。我们错过了互联网的最初发展阶段,难道还要再继续错过吗?