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

换个姿势学FPGA:《零基础学FPGA设计—理解硬件编程思想》 - 哔哩哔哩

时间:2025-03-22      来源:FPGA_UCY 关于我们 0

FPGA基础知识_基础知识的重要性_基础知识不扎实的家长评语

一、为什么要换个姿势学FPGA?

大家好,我是杜勇,一名资深FPGA数字信号处理算法工程师,一名高校教师,也是一名UP主,业余时间喜欢看球赛、看电影、听音乐、看书、慢跑,感觉快乐的生活状态是一边看球赛、一边喝茶、一边等待FPGA程序的运行结果。

在经过多年的FPGA工程项目设计之后,感慨于当初学习相关技术时找不到可用参考资料(主要是工程实现方面的可用资料缺乏)的无助,抱着减少后来者踩坑迷茫的微小愿望,又机缘巧合,刚好有一段较长的相对空闲的时间,于是开始编写《数字滤波器的与FPGA实现》等数字信号处理的系列图书。蓦然回一下首,已是11年前,2012年。后来陆续出版通信同步、调制解调、锁相环技术、数字信号处理设计等FPGA设计与实现的图书。

很幸运,二十余年来一直在从事FPGA设计相关的工作,亲身感受到FPGA技术的发展已成汪洋之势。

但是,很多人说,入门难!

目前很多高校从本科开始开设FPGA课程,并且越来越多的学校开始将传统的《数字电路技术》课程与FPGA技术课程融合起来讲解。FPGA技术入门难,但其发展趋势已不可逆转,一些课堂在认真细致的讲解繁杂的 HDL语法时,且因语法与C语言长得相似,而宽慰学生那颗对硬件描述语言的畏难之心。

数字电路技术中组合逻辑简单直接,很容易上手,但令学生头疼的是随之而来的时序逻辑设计,尤其是状态方程的分析理解。解方程?这与数学问题好相似!然而,更难的还在后面,要用不太熟悉的状态机描述不太熟悉的时序逻辑电路。老师,这种功能的电路要分成几个状态呢?如何画状态转移图呢?学生在经历了短暂愉快的组合逻辑电路设计之后,很快就遭遇到时序逻辑设计的无情阻碍。

再用 HDL语言,按照已训练成熟的C语言思维描述硬件电路,再次经历学习的迷茫。请问“=”和“<=”到底有什么区别?为什么叫阻塞赋值?为什么叫非阻塞赋值?什么叫立即执行,什么叫顺序执行?“=”和“<=”什么时候相同,什么时候不同?为什么C语言可以这样写, HDL就不行?

或许,我们可以换个思路学FPGA!

需要理解 HDL的本质是并行语言,C语言是顺序语言,他们俩除长得像以外,也就仅仅是长得像而已!理解了D触发器的时序波形,再用并行语言的思维去理解“=”和“<=”,就一切清晰明了,豁然开朗。

所谓时序,就是时间的先后关系,在时钟的驱动下计数,就可以生成各种与时间相关的信号。设计时序逻辑,本质是设计计数器而已。计数器,谁还掌握不了呢?

或许,我们可以换个姿势学FPGA!

暂时放下状态机的概念、放下对顺序语言思维的执着,按照数字电路的工作方法,从D触发器、计数器入手,详细阐述并行语言的精髓,打通硬件描述语言的学习关卡,跨入FPGA技术的大门。

《零基础学FPGA设计——理解硬件编程思想》是我于2023年4月由电子工业出版社出版的图书,专为FPGA初学者编著,希望能够帮助大家快速跨入FPGA技术的门槛。

二、为什么要用国产FPGA?

近年来,国际国内的芯片产业正经历大的变革时期。AMD和Intel两家的FPGA仍然占据全球FPGA的绝大部分市场,但你经历过买不到芯片的困境吗?或者经历过设计好的开发板,在要量产时,供货商的价格傲娇到高攀不起的情况?

更重要的是,或许正是由于米国的一顿凶猛操作,国产芯片的崛起已是大势所趋,不可阻挡。作为一名长期从事FPGA设计的从业者,明显体会到近年来采用国产FPGA开发的项目越发呈快速增长之势。

又是机缘巧合,刚好,有机会和高云FPGA合作,推出国产FPGA开发平台的入门级图书。

坦诚来讲,高云的云源软件,以及其它国产FPGA开发软件,与ISE、、相比还存在明显的差距,但这主要体现在高阶的应用方面。对于初学者来讲,国产FPGA开发环境却反而友好得不是一点点,是很多很多。从安装过程到使用步骤都更具亲和力,初学者反而不用为学习繁杂的开发工具使用方法花费过多的时间。而学习FPGA的核心,一定是理解硬件编程思想,掌握硬件编程方法。开发环境的使用大同小异。相信我,相信成千上万的FPGA开发工程师的切身体会,在你熟悉FPGA开发方法后,学习其它开发环境一定是一件轻松惬意的事。就正如,如果你掌握了 HDL语言,即使从未编写过VHDL代码,人生第一次看见一段VHDL代码也会感到无比的亲切。因为,他们并没有本质上的不同。

三、确认视频是完备的?认真录制的?完全免费的?

基础知识的重要性_基础知识不扎实的家长评语_FPGA基础知识

是完备的,是认真录制的,是完全免费的。我于2022底~2023年初完成了42集配套视频的录制,已在B站(UP主:杜勇FPGA)发布完毕。在你观看视频的过程中,或许会感觉到有几期视频的声音有一点特别,就是有点沙哑,好像感冒了?或许你已经猜到了。在那场席卷全球的疫情面前,我也荣幸的经历了一次洗礼。

春回大地,万物复苏。五一节的人海,让那场疫情恍如隔世!

四、章节编排的理由

全书分四篇:基础篇、初识篇、入门篇和提高篇。

基础篇中只用一章的篇幅介绍与FPGA设计相关的,数字电路课程的核心内容,另外二章讨论逻辑电路基础知识和环境安装方法。

初识篇先用流水灯电路体验FPGA的开发流程,你会发现其实比想象中简单很多,尤其采用云源软件开发时。再多角度阐述D触发器这个灵魂,和计数器这个精华。这两个简单的内容讲得太多了吗?不,不,不。根据“换个姿势”的出发点,编写FPGA程序不过是反复写D触发器和计数器而已,无论是后面讲的秒表电路、串口电路、还是音乐放器,莫不如此。在讲D触发器和计数器时,注意融合FPGA并行设计思想,简洁明了彻底理解“=”“<=”等与C语言截然不同的概念。

入门篇就开始起飞了。秒表电路几乎人人都在设计,网上充斥很多学习的代码。什么样的代码才是简洁、美观的呢?如果你发现了和书中类似风格的代码,如果代码是在2019年以前发布的(我于2019年通过开发板发布了秒表、按键消抖、串口通信这类基础代码),只能说发布者和我的审美相差无几吧,如果全都是2019年后发布的,希望大家能够在使用的时候注明出处啊。密码锁、电子琴电路的设计问题,已初步超越了FPGA语法的范围,其实只是训练学习者的逻辑思维能力罢了。串口通信是一个应用非常广泛的功能电路。经常看到学生从网上找到用状态机写的串口代码。为什么要用状态机呢?用计数器的方法无论从理解的角度,还是实现的角度都更为简单清晰。虽然不提倡用状态机的思路写代码,但还是用一章的内容对此进行了讨论,并以序列检测器的程序为例进行了对比分析。用D触发器的思想写序列检测器是多么多么的简单啊!

提高篇讨论了时序约束、IP核设计、在线逻辑分析仪和常用设计技巧。其实在经历过前面三篇的学习之后,如果初学者已经能够在不参考任何代码的前提下,从头开始写完整个的“串口控制秒表电路”,相信已经基本跨入了FPGA设计的大门,已经具备顺利自学这一篇内容的条件和能力了。

五、学无止境

没有一本书能够把FPGA设计的方方面面都讲到,通过学习一本书就能完全掌握FPGA设计的所有技巧只是一个美好的愿望而已。熟练的应用需要学习者大量的练习和思考。《零基础学FPGA设计——理解硬件编程思想》只是采用另一种姿势,给大家提供另一种学习的方法,帮助大家快速、顺利的跨入FPGA设计的大门而已。

一定要有开发板,一定要用云源软件才能使用这本书吗?不,不,不。

重要的事说三篇:开发环境是次要的,核心是理解硬件编程思想,思想,思想!

基础知识不扎实的家长评语_基础知识的重要性_FPGA基础知识

图书配套开发板实物图

六、图书目录

第一篇基础篇

第 1 章 必备的数字逻辑电路知识

第 2 章 可编程逻辑器件基础

第 3 章 准备好设计环境

第二篇 初识篇

第 4 章 FPGA 设计流程—LED 流水灯电路

第5章 从组合逻辑电路学起

第 6 章 时序逻辑电路的灵魂——D 触发器

第 7 章时序逻辑电路的精华—计数器

第三篇:入门篇

第 8 章 设计简洁美观的秒表电路

第 9 章 数字密码锁电路设计

第 10 章简易电子琴电路设计

第 11 章 应用广泛的串口通信电路

第 12 章 对状态机的讨论

第四篇:提高篇

第 13 章 基本的时序约束方法

第 14 章 采用 IP 核设计

第 15 章 采用在线逻辑分析仪调试程序

第 16 章 常用 FPGA 设计技巧

祝大家学习愉快,工作顺利!


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

用户登陆

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

提交留言