为什么我觉得单片机开发比FPGA开发要难

2019-04-15 17:25发布

最近跟同学一起做了xilinx的OPENHW比赛,用的是xilinx的zynq-7020开发板。项目是《基于zynq-7000的宽带适时自适应滤波器》。我在其中做了verilog开发GAL(梯度自适应滤波)算法。 做完这个,我又开始做freescale的MCU开发大赛,项目是《基于cortex-M0+的地震检波器采集系统》。使用的是freescale的KL25开发板。不过很快就受到了阻碍。SPI操作nor-flash不成功。 我发现,做单片机开发真的很烦人,尤其是ARM单片机,功能各种冗余。开发的时候,要查看的东西很多,要看各种外设的数据手册,单片机的数据手册也要反反复复看,都是英文的真的很烦人。KL25的寄存器特别多,区区一个SPI总线,支持三线制,标准四线制,甚至两线制,还支持数据检测中断,支持直接DMA传输,支持三种低功耗模式。支持你妹啊!搞那么复杂干嘛。KL25的每个引脚都有一堆可以使用的功能,一般都有四五种选择。KL25更是支持9种低功耗模式,每种低功耗会停掉不同的时钟,有的时候会停掉某模块的部分时钟,每种低功耗下,可能的唤醒方式又不同,擦! 而FPGA开发算法,根本不需要去看数据手册,本质上来讲跟用C语言开发软件感觉没什么太大区别,只不过多了时序控制。而时序这东西说起来复杂,一仿真立马一清二楚,所以其实相当简单。 说起来,还是两者的基础就有着根本区别,单片机开发本身没有任何创造性,因为单片机都是设计好了的,功能配置都隐藏在寄存器里面,你能做的事情仅仅是理解,并且填鸭式的使用,一点创造性都没有;而FPGA则是一张白纸,你不需要去看数据手册,不需要去理解别人的东西,只需要按照算法来就可以了,所以你从一开始就掌握了主动,就是一个很简化的设计流程,而不是单片机那种验证式的流程。 理解别人的东西永远是那么困难。就像我们去看操作系统的代码一样。