当前位置:首页 > 新闻资讯 > FPGA之家动态 >

从单片机到FPGA再到Zynq——知其所以然

时间:2024-07-24      来源:网络搜集 关于我们 0

    从大学进入实验室开始就注定踏上了技术不归路,路是自己选的,再苦再累都要走下去。同一届毕业的同学,有做安卓/或者软件开发的,不管待遇还是日子都比我们这些做硬件的好很多,失落啊;不做技术的同学,找到适合自己的路子,虽然待遇刚毕业比我们低,日子比我们苦,但是,现在......哎,又是失落啊;更有在工作中,同是做硬件的,FPGA开发又是各种调试不便,各种苦逼。。。。。。怪我了,谁让你只做FPGA逻辑,而且还做的不咋的。

    当然,今天不是吐槽FPGA的各种不愉快,而是反思下以前的学习经历,从各个角度聊聊自己在单片机、FPGA、Zynq的不同思维方式,知其所以然,有不对的地方,请指正。

1. 单片机

a. 单片机学习体验

    刚接触单片机,很幸运自己是从51汇编单片机开始的,为什么说很幸运,因为通过学习汇编,不只是只学习了51单片机,而是通过学习了汇编让自己学懂了单片机原理,以后学习什么单片机都不是事。很可惜,这个道理很多人不懂,或者多年后才懂:只有知其所以然了,那么以后学习类似的东西那都不是事,通一通百;

b. 单片机工作原理

    单片机的工作原理很简单,可以这样理解:每学期按照学校给你排的课程内容来学习(也就是单片机按照存储器中的指令数据来执行操作),中途出现休学后回来接着学完所有课程才能毕业(CPU中途被中断后处理临时操作后返回继续执行操作到完成);

c. 单片机优势和劣势

    单片机的优势当然是成本低,开发周期短,编译一个程序分分钟的事,可以应用中生活中各个方面,软件开发对C语言的要求也相对低些;另外,它还有一个很好的优势,学习成本高,做这行的说单片机有谁不知道,但是你问他FPGA,他会问FPGA是个什么鬼,还有这个鬼东西。

    单片机的劣势就是,一些复杂较高端的应用,单片机比较难搞定,特别是并行处理。

d. 单片机思维方式

    单片机可以理解把PC做小巧了,和底层接触比较亲密,软件的开发是基于寄存器操作上,比较复杂的单片机,厂商都提供了对应的驱动函数,用户只需要操作对应的函数即可,数据结构相对简单。

    所以单片机的开发,和单片机中的控制寄存器密切相关,整个程序就是串行的main函数,加点中断。这也决定了单片机开发者是典型的完全串行思维,也是我们日常中常用的思维方式,所以FPGA开发的非常讨厌刚从单片机转来做FPGA的,看它们的代码就想抽死他,是不是?

2. FPGA

a. FPGA学习体验

    因为我是先做的单片机再做的FPGA,所以刚开始接触FPGA各种不适应,是那种别人想抽的菜鸟。但我后来在大神的指导下,渐渐入门了FPGA开发的,大神对我有提出2点要求:每一句HDL代码不要从C语言来看,要从RTL视图来看;每一句HDL代码要逻辑清晰,代码规范,要有代码就是注释的感觉

。后来,我2年多的FPGA之路就一直按这2个要求来,慢慢步入佳境,正式步入FPGA开发之路了。

b. FPGA工作原理

    FPGA的工作原理,可以这样理解:就是用一堆逻辑门来搭建一个功能电路,只不过随着FPGA的发展,这堆逻辑门不在是简单的逻辑门,而是有各种更大的现成电路(PLL、FIFO)。那搭建这个电路要借用工具:HDL语言开发工具和电路搭建工具(EDA布局、布线等),同样,工具也升级了(HLS等)。但这一切都没有改变FPGA的开发流程和基本概念,只是升级了开发工具和开发效率,所以在理解FPGA基本原理上,更要会用工具,用好工具让你事半功倍,会用工具的人都是牛人

c. FPGA优势和劣势

    FPGA的优势当然是并行处理能力,能够用在高端应用,对时序的控制很容易实现。

    FPGA的劣势是门槛高、调试难,因为FPGA并行处理和硬件特性会带来调试很困难,特别随着FPGA资源的越来越大,调试定位一个BUG很艰辛,所以FPGA设计更需要注重的规范的设计,这样才不会带来后期的高成本维护。

d. FPGA思维方式

    FPGA和我们日常的思维方式完全不一样,它是完全的并行处理,一切处理的基准都是时钟,所以的一切都是以时序为准,看懂时序图,而不再是main函数的流程图。当时,遇到这样一个笑话:一个FPGA工程师对单片机工程师说:你这GPIO0和GPIO1出的脉冲应该一样,不对,它们之间怎么还有这么大延时,你是不是有个GPIO输出延时了很多拍?从中我们也可以很好的理解串行思维和并行思维的区别。

3. Zynq

a. Zynq学习体验

    因为ARM深入人心,在嵌入式很火,自己也发现除了串行思维方式和并行思维,还有操作系统这个好东西,同时高级语言C++比C也有很多好的思想(学了C++能更大的巩固自己C语言)。还有更好的好处:一是,通过学习Zynq可以把各种思想和设计方法串起来,更好的巩固已经学习的单片机/FPGA/ARM;二是,FPGA高速发展,纯做FPGA开发以后的发展潜力越来越小,但是Zynq的潜力无限大,也算自己吐槽这么多FPGA苦逼后找的一条出路。

b. Zynq工作原理

    Zynq就是Xilinx新推出的MpSOC产品,集多核ARM处理器和FPGA逻辑与一身,既有比较实用的ARM处理器,也有比较灵活的FPGA逻辑,通过ARM和FPGA的协同合作来完成比纯ARM或纯FPGA更出色性能。

c. Zynq的优势和劣势

    Zynq的优势当然是集ARM和FPGA开发为一体,具有更强大的开发潜力和能力,也是以后的趋势;当然它也有劣势,学习成本更高,需要的基础更多,学习交流的人更多,但在Xilinx的推广下,相信会有越来越多的人学习,本人也是刚学习不久,希望一路有你。

d. Zynq的思维方式

    Zynq中既需要串行思维、也要并行思维,同时还需要操作系统的分时复用的并行思维;语言开发中,既需要HDL底层开发、也要C语言寄存器开发,同时需要C++高级语言Qt等应用程序开发。虽然牵扯的内容比较多,但是能够很好的把这一溜串起来,起到互相帮助加快学习的效率,不管在技术上还是学习上,会让自己受益匪浅,加油吧!

长按左侧关注

共同学习FPGA2嵌入式


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言