学fpga(起步)

Posted 费晓行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学fpga(起步)相关的知识,希望对你有一定的参考价值。

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        很早就知道fpga,记得还是九年前在芯片公司的时候。那个时候在公司里面,主要也是用fpga做芯片验证,印象中好像用的是xilinx的v5、v7,vivado刚出来不久,价格还比较贵。当时觉得verilog挺好玩的,所以在2013年的时候写了一篇blog,https://feixiaoxing.blog.csdn.net/article/details/8897509

        后来去了研究所,偶尔用了一次zynq芯片,觉得蛮好玩的。因为记忆中,fpga和arm soc是分开的,而zynq可以同时实现arm、fpga集成在一个芯片上面,并且可以把fpga做成linux的ip core,还是蛮神奇的。后来想想,其实这也算正常,毕竟arm+dsp的ti j6、arm + gpu的jetson开发板、arm + npu的rk3399 pro,这些其实都集成了arm架构,毕竟linux+arm的软件平台能用的东西太多了。

        真正觉得fpga有用,还是搞了一段时间图像后,发现想要对图像进行加速处理,fpga算是比较好的一个方案。虽然有一定的门槛,但是效果也是真的好。另外,和九年前相比较,现在电商网站,fpga的开发板很多,品牌也很多,便宜的几百块,贵的几千块,品种还是蛮多的。

        之前学fpga的时候,总觉得把verilog学好就好了,甚至还学习了怎么用fpga设计cpu。其实,学习fpga除了语法之外,还是要多上板子测试,多去实践真实的客户需求,这样才能形成正反馈,越学越好。此外,目前各个视频网站虽然学习资源蛮多的,但是还是发现了一些问题,

1、各大品牌都喜欢把fpga当mcu用

        很多培训资料都是mcu有什么用例,fpga就用什么例子。这其实有误区。如果是实现一般功能,mcu比fpga简单的不是一点点,学起来也容易。只是会让人产生疑问,为啥要学fpga。殊不知,只有真正遇到高并发、数据加速的时候,这个时候几乎只有fpga能帮得上忙。

2、zynq里面的fpga不只是点个灯而已

       zynq里面的fpga不应该是实现普通的硬件ip,点个灯、做个串口什么的。与此相反,他做的应该是算法加速,把算法单独做一个ip,写一个linux kernel driver驱动这个ip,被linux app上层调用,这才是zynq使用正确的方法。

3、hls代替不了verilog

        hls虽然可以翻译成verilog,但是如果不了解verilog,只是认为写写c就可以实现算法加速,这几乎是不可能的。软件工程里面有一个没有银弹的道理,说的就是这个意思。

4、先有时序图,后有verilog代码

        fpga虽然是底层设计,但是本身也是有规律可循的。不管什么开发,最好把时序图、接口图、状态机画好,然后再写verilog代码。和c编译不同,quartus和vivado编译综合的时间都不短,所以最好想清楚了再编代码、调试,这样会比较稳妥一些。

        另外,dsp、gpu、npu、多核cpu这些不是不好,只是arm+fpga具有更多的定制性,对于非标的产品来说,几乎是很好的一个选择。如果是大批量量产的商品,或者消费电子类产品,fpga未必是一个好的选择。

以上是关于学fpga(起步)的主要内容,如果未能解决你的问题,请参考以下文章

从零开始学微服务05.微服务的优势和不足

从零开始学微服务05.微服务的优势和不足

一起学习用Verilog在FPGA上实现CNN----SoftMax层设计

5G起步,LTE还该不该学?

第二篇-FPGA学习之RoadMap

从零起步学python计划及感想