1232796-20180611211325146-933255995.jpg
       当今,FPGA和单片机的应用非常广泛,在有FPGA知识的基础上,笔者认为可以把FPGA作为主要的学习目标,单片机作为辅助技能。其实二者是相互促进的。不管是FPGA还是单片机的开发其实都是基于较强的逻辑性,在这一点上二者是有共同之处的,但是在程序编写的逻辑性上,FPGA所用的硬件描述语言是要超出C语言不少的。
       FPGA编写出一个完整的功能是需要对整个工程架构非常熟悉才能完成的,要先学好状态机,然后各种组合、时序逻辑,折腾起来对于个人的逻辑思维能力有着很强的锻炼效果,而这种锻炼是每一个逻辑设计人员都要有的,当你的逻辑思维能力很出色的时候,学习单片机也就非常容易了。
      FPGA其实是硬件系统,FPGA的开发过程能使开发人员对很多的硬件底层都有接触和了解,比如简单的一个串口,可能在单片机上直接使用几个库函数就搞定,但是FPGA将会接触到数据接收的模式,波特率和系统时钟的设置算法以及数据的移位,使能,各种标记位的设置等等。一个熟知底层架构的嵌入式工程师才能走的更远。
      单片机和FPGA的应用方面,虽然现在SOC很火热,Xilinx和intel都将ARM核嵌入到FPGA内部,但也有很多公司用单片机和FPGA架构。将单片机作为FPGA的上位机,向FPGA发送指令,FPGA去做各种算法实现和逻辑控制。因为FPGA的工作频率可以很高,IO翻转速度也相当快,然后对于数字信号处理等的算法方面也有很多的优势,所以在射频微波领域有着广泛的应用。
      FPGA真的可以说是一个很强大的系统,它的灵活性很强,虽然对于很多功能上可能没有单片机使用起来那么方便,但是当你对这两个都有一定的了解认识以后发现,同时能将他们玩转是一件很有趣的事情。