各位正在学习NIOS II的朋友们,首先感谢来“实现”的博客做客,实现在这里向各位看官鞠躬致谢了。书归正传,“实现”开设NIOS II V12.1开发系列的博文的目的,就是希望借助EDN提供的优秀平台与NIOS II征途上的伙伴们扶持、共勉。一方面通过自己在学习NIOS II过程的积累心得、体会为同袍们扫清路障,更快的前行;另一方面也可以多多的和大家交流学习、共同提高,同时达到“反馈激励自我的小私心。
为谁创造的NIOS-II
圣经里最广为世人熟知的故事就是上帝在创造了亚当之后,又取他的肋骨创造了夏娃;那这个故事和我们NIOS-II有什么关系呢?这正是实现在本节博文中要讲的问题——NIOS II为谁创造,且听我慢慢道来。
(1)FPGA并行特性的原罪
FPGA作为当今两大嵌入式硬件平台之一,其主要应用领域涵盖了:数据采集、接口逻辑、工业控制、通信工程、高速信号处理等。但FPGA本质——并行——决定了它在系统控制方面先天不足,如果非要实现其他硬件平台的CPU一样能够顺序执行,就必须采用特权同学的那种方法,不过即使在你学会这种招式,也要在verilog 代码和流程图上付出相当的时间代价,这点上远没有在普通MCU上用C写主控代码那么爽。
如果我要告诉你,NIOS II就可以让你在FPGA上用C语言轻松开发主控程序,你会惊喜呢,还是惊喜呢?
有人会说:"不就是多写几行verilog代码和考虑程序跳转的问题吗,这个难不住我们勤劳的程序员,就为这个创造出NIOS II ,我们还真不领他这份情,哥用顺序大发照样搞的定”,不过遗憾的是NIOS II还真不就这点本事。
(2)FPGA无形特性的救赎
FPGA的另一特性——无形——宣判了它只是一堆没有灵魂的”细胞“,虽然可以通过”硬件语言“的上帝之手创造出各种鲜活的生命,但所有万物都要从头做起,是这真会让”上帝之手“累到抽筋。
因为,现如今的嵌入式系统开发都要集成诸如:UART、USB、PCI、SDRAM、FLASH、网口等功能模块,而且针对具体应用和实际硬件的不同,会有非常多的变化。如果每个工程的这些部分都用硬件描述语言或者IP核来实现,我们的工程师一定会累得够呛,而且一下子要掌握这么多种模块的FPGA驱动也不大现实,更别谈运行效率了。
而我们NIOS II在这方面将工程师从繁重的工作中解救了出来,我们只要在交互式的配置界面了点击几下,就可以轻松实现对外部模块的驱动使用,从此再也不必为各种厂家的芯片手册的时序图呕心沥血了。
(3)到底为谁创造的NIOS-II
各位看官,那么现在问题来了,到底是为了谁创造的NIOS-II呢?要回答这个问题,我们必须要回到开篇讲的那个故事。上帝为了让亚当不再孤单,取他的肋骨创造了夏娃;而Altera公司为了让FPGA不再“永远并行”,能有多种可以直接选用的用于创造万物的“器官”,同样取了FPGA的一部分LEs,为他创造了NIOS-II。
NIOS-II为何物
NIOS-II是Altra公司于2004年6月推出的一款采用全新架构的高性能、可配置、通用嵌入式处理器。NIOS-II本质是一种使用FPG**上资源生成的处理器软核,可以根据您的应用配置最适合的CPU、外设和接口资源。尤其在对价格和电路面积敏感的应用中,替代分立式微处理器。
举个实例来说明NIOS-II的强大之处,一块带有Cyclone II SDRAM EPCS ADV7180 ADV7123 的电路板,并且FPGA所有没使用的引脚全部通过接插件引出。那么我们用NIOS-II能让他有啥变化呢?本来我们这块电路板是用在无人机上,为了实现在视频上叠加各种航电信息的功能;但随着系统开发的深入发现最开始预留给 GPS的1路TTL串口、给重力加速度计的1路SPI接口、给磁阻传感器的IIC接口不能满足实际的需要,增加了1路IIC接口的陀螺仪,而且磁阻传感器也换成了一个使用TTL串口的其他型号。
如果没有NIOS-II我们要么重新用FPGA的硬件语言一点一点重新生成需要的接口逻辑模块,再进行数据解析的设计;或者重新画电路、制版。有了NIOS-II只要在交互软件上点击几下重新配置软核,随你要几个串口、IIC、SPI都会轻松搞定,然后就是用C轻松的搞定后续工作。
软核与硬核之争
讲到这里,各位看官应该对NIOS-II有了一个大概的了解,但是到底啥是软核,他与硬核是怎么划分的呢?
“软核”就是使用FPGA的硬件逻辑资源,塑造出的一个芯片(包括CPU、外设接口等),好比DIY积木,可以随意组合出自己喜欢的玩具;而“硬核”是和FPGA封装在一起的独立专用芯片,只能比作类似遥控汽车这样不能DIY的玩具。
好了以上就是我在学习NIOS-II的一点心得体会,感谢大家支持。下一篇带来《永远的Hello world !》
用户1831649 2015-3-12 20:43