FPGA:我的零基础学习路线(2022秋招已上岸)持续更新中~
前言
初次接触FPGA是在2022年3月左右,正处在研二下学期,面临着暑假找工作,周围的同学大多选择了互联网,出于对互联网的裁员形势下,我选择了FPGA,对于硬件基础知识我几乎是没有的,最初我还很担心要补的硬件知识太多了,但是慢慢发现需要的硬件知识不算多,用到哪里就学哪里,以下记录我从零开始学习FPGA的过程,以及使用的资料,下面的内容均是我尝试过的,有好的方法大家可以借鉴,也提到一些不好的方法,以帮大家避坑
正文
一开始,我先去咨询身边会FPGA的人,以及去网上搜经验贴,大家不约而同地提出数电
的重要性,于是从数电开始,我开启了我一路跌跌撞撞的入门之旅
一、视频教程
1.1 数电
推荐教材:数字电子技术基础-第六版-闫石
数电重点章节:组合逻辑、触发器、时序逻辑;其中触发器这一章中可以先学最常用的D触发器
,别的触发器等以后用到再学
我看过B站上好几位讲数电的老师,一开始看的是播放量最高的清华的王红老师的课程:数电 - 清华王红
但是看了几节课后发现我看不懂,也跟不上老师的上课进程,于是我又发现了另外2位老师的课程:数电 - 西电任爱锋、数电 - 苏州大学,这2位老师的课程是我觉得比较能听懂的,于是我跟着他们的课程快速过了一遍数电的组合逻辑、时序逻辑这2章最重要的内容
因此想要快速过一遍数电,推荐这两个老师的视频:
- 数电 - 西电任爱锋
- 数电- 苏州大学
- 数电 - 哈工大(有好几个老师轮流上课,讲得还是很不错,可以作为补充观看)
1.2 Verilog
数电把重点章节过一篇后,我就直接开始学习Verilog了,虽然很多人推荐夏闻宇老师的Verilog书,但是我觉得不是很适合用来快速入门,我也没有选择去B站找Verilog的视频教程看,而是开始跟着小梅哥的视频,边熟悉数电知识,边学习Verilog语言
看小梅哥视频这部分应该算是入门的关键之一,看完视频后悔对Verilog和FPGA大概能做什么有一个初步的认识
下面是我看的视频:
这两个视频我是搭配着看的,如果小梅哥讲的我没听懂,我就去看看野火是怎么讲的,反之亦然
- 零基础轻松学习FPGA - 小梅哥
- FPGA系列教学视频,“波形图”教学法 - 野火:几乎每节课都会先带着你手绘波形图,然后对着波形图写代码
补充:
如果有同学想要系统跟着课程学一遍Verilog,推荐这个老师的课程:
Verilog硬件描述语言 西安电子科技大学 蔡觉平等主讲
当你觉得自己可以写一点Verilog的简单代码后,就可以开始刷HDLBits上的题了,题目比较多,几乎涵盖了Verilog的常用语法,强烈建议刷一遍上面的题,尽量自己做,然后再去看别人的答案;我第一遍刷是看了别人的答案再去做,感觉收获不大。你可以评估一下自己现在的Verilog编程水平,做前10道你都觉得没什么问题的话,就可以继续做下去;如果觉得很吃力的话,还是再看一段时间的小梅哥或者野火的视频再去做上面的题
- 刷题网站
- HDLBits答案 - 博客 - 孤独的单刀
- HDLBits答案 - B站视频 - 荣晔
另外再推荐一个菜鸟的Verilog教程,还是比较全的
- 菜鸟 - Verilog
注意:
在看视频时,一定不要陷入一种误区,眼睛会≠手会≠脑子会
,所以一定要多动手写代码,而且要把学过的东西用起来,不然很快就会忘记,比如点灯这个操作,你可以在最开始用assign led = 1'b1
让灯亮起来,后面学到状态机,你可以用状态机检测一个序列,如果检测到,就点灯;再比如,学到UART串口,你可以使用串口助手往FPGA传输数据1,如果FPGA接收到了串口助手发来的数据,就点灯;最后再举例,使用赛灵思的开发板时,用PL中断给PS端传输中断信号,再通过GPIO点灯。
(后面举例这部分你可以能还不太看得明白,没关系,我刚学的时候也不明白,我想表达的含义就是要把前面学到的东西用起来,我就是吃了这个亏,不用好多东西都忘记了)
如果有同学需要system verilog的刷题网站,也推荐一个比较不错的:
System Verilog刷题网站
1.3 项目
把上面的视频看得差不多了,可以尝试做一些网上的开源项目,我师兄推荐给我的这个项目我暂时还没有做,但我后面有时间一定要把他做了,因为我在看牛客上的面试经验时发现有的公司还是会经常问SDRAM的内容
1.3.1 SDRAM
推荐项目:
- SDRAM第一季 - 开源骚客
1.3.2 RISC-V实现单周期处理器
还有一个我做了的项目,是用riscv写一个CPU,做了这个项目后对我的帮助是,提升了Verilog的代码编写能力,熟悉了CPU的大致结构和工作原理,算是位以后学习计算机体系结构开了一个头吧
- tinyriscv技术手册
- tinyriscv - gitee仓库
- tinyriscv - B站分析教程 - 荣晔
- riscv - 设计 - 荣晔
1.3.3 基于ov7725、ov5640摄像头的图像处理、数字识别
这个摄像头的项目涉及的知识点稍微多了一点,可以把之前学的SDRAM、I2C协议、HDMI显示、VGA显示等知识点都用上,还有其他关于显示数据的内容。做了这个项目我是写到简历上的,推荐的课程如下:
正点原子 : ov7725摄像头
注
:也可以把每个模块需要的知识点拆分开,去野火FPGA那里找对应的知识点
摄像头这部分我做了图像显示、简单的图像处理、数字识别这几个功能,实现效果如下:
经过很长一段时间调试,需要工程的朋友后台私信我,一杯奶茶钱带走它哈~
1.3.4 卷积神经网络的手写数字识别
这个是找到工作后打算做的,还在进行中…
二、博客教程
学习FPGA的过程中,能遇到一个领路人是一件无比重要的事,在这个过程中有幸发现一位这样的领路人,他的CSDN上的内容从结构来看,就是一本FPGA书!!从入门到进阶,结构十分清晰,内容也很丰富,博主本人也非常热心,这一波,墙裂推荐啊~
- 推荐博主 - 孤独的单刀
三、基础课程
3.1 计算机体系结构
最好不要一上来就看书,我反正是看不进去的,对于这样的专业性很强的课程,推荐找到对应的考研视频,考研视频会把知识点讲的很细,跟着过一遍就好。
我在做RISCV那个项目时,发现一位研究院的工程师到高校讲课的视频,其中对计算机结构做了很清晰的讲解,十分推荐:
RISCV - 汪辰
四、推荐论坛
论坛太多了,找个时间整理一下
五、补充
1、需要资料的后台私信我
2、我在2022年期间担任声光电校园大使,收到过很多求职简历,可提供修改简历以及项目PPT
3、创作不易,给个三连啦~
4、另外还有我整理的面试常问的问题,面试前我手里就拿着这个看一看
FPGA:我的零基础学习路线(2022秋招已上岸)持续更新中~相关推荐
- 零基础学习C++系列课程(一) 持续更新中
目录 第 1 节:课程目标 项目 1:C++基础编程-黑客攻击系统(含 6 个子项目) 项目 2:C++基础编程-人工智能之地形导航系统 项目 3:C++基础编程-人工智能之双色球预测系统 项目 4: ...
- 零基础学习C++系列课程(五) 持续更新中
目录 项目四.路由器管理系统-权限判断 第 1 节 项目需求.项目实现 第 2 节 项目精讲-string 字符串的比较 第 3 节 项目精讲-表示真假的布尔类型 第 4 节 项目精讲-C 语言字符串 ...
- 零基础学习C++系列课程(三) 持续更新中
目录 项目二.黑客攻击系统-输入账号 第 1 节 项目需求 第 2 节 项目实现 第 3 节 项目精讲 3.1 C++的数据类型 3.2 构建 IT 大厦的砖块:变量 3.3 用于计数的整数类型 3. ...
- 2022最新网络安全零基础学习路线
前 言 写这篇文章的初衷是很多朋友都想了解如何入门/转行网络安全,实现自己的"黑客梦".文章的宗旨是: 1.指出一些自学的误区 2.提供客观可行的学习表 3.推荐我认为适合小白学习 ...
- 第11期:Hadoop零基础学习路线
大家好,我是你们的老朋友老王随聊,今天和大家讨论的话题--Hadoop零基础应该怎么学? 通过这段时间和群里同学们交流,发现很多大学生甚至职场小白对Hadoop学习路线不是很清晰,所以我花了一些时间给 ...
- 第12期:Spark零基础学习路线
大家好,我是你们的老朋友老王随聊,今天和大家讨论的话题--Spark零基础应该怎么学? 通过这段时间和群里同学们交流,发现很多大学生甚至职场小白对Spark学习路线不是很清晰,所以我花了一些时间给大家 ...
- 第10期:Python零基础学习路线
大家好,我是你们的老朋友老王随聊,今天和大家讨论的话题--Python零基础应该怎么学? 通过这段时间和群里同学们交流,发现很多大学生甚至职场小白对Python学习路线不是很清晰,所以我花了一些时间给 ...
- webpack1.x环境配置与打包基础【附带各种 “坑“ 与解决方案!持续更新中...】
webpack1.x环境配置与打包基础[附带各种 "坑" 与解决方案!持续更新中...] 参考文章: (1)webpack1.x环境配置与打包基础[附带各种 "坑&quo ...
- Java编程入门先学什么?Java零基础学习路线分享!
Java作为一种对初学者非常友好的编程语言,小源十分推荐大家学习.一是Java开发岗位比较多,二是对于从业者的知识结构门槛不高,非计算机专业出身,只要是本科学历,从好程序员学Java后也有非常多机会从 ...
- Java开发编程小白零基础学习路线附资源
最新Java零基础小白从入门到精通学习路线: https://www.bilibili.com/read/cv11975482 全套视频资料打包下载(视频.源码.工具.软件.笔记.案例): https ...
最新文章
- 爱立信总裁表示欧洲网络始终趋于落后,网站推广之下5G发展需加快步伐
- GNU Wget 命令及其参数说明
- JS 获取中英字符串字节长度
- 【黑马程序员 C++教程从0到1入门编程】【笔记3】C++核心编程(内存分区模型、引用、函数提高)
- 阿卡迪亚大学的计算机科学,阿卡迪亚大学计算机科学
- 使用 ML.NET 进行保险价格预测
- oracle导出导入数据库
- 菜鸟学习笔记:Java基础篇7(包装类、时间相关类、文件类、异常处理类)
- c语言中注释参与程序设计的编译吗,C语言程序设计(第4章函数)6
- linux scp 使用简单说明
- 单片机课程设计——交通灯
- 如何简单地将工资单发给员工?
- UVA 11137 - Ingenuous Cubrency
- java工具类–自动将数据库表生成javabean
- 【时光它会替我们记得】- 1024有奖征文
- [014量化交易] python 通过tushare 获取股票数据、名称、股票代码、指定股票名
- 布局“grid”详解介绍大全
- 海鲜吃得好,喝酒少不了,盒马痛风套餐来了
- 【Java面试宝典】1000+面试题附答案详解,最全面详细
- JavaScript 导入 excel文件(兼容IE11) 示例 打包下载
热门文章
- 打蚊子表情包_打死蚊子表情包 - 打死蚊子微信表情包 - 打死蚊子QQ表情包 - 发表情 fabiaoqing.com...
- python补考卷子_1819级计算机专业补考(python程序设计)_章节测验,期末考试,慕课答案查询公众号...
- JavaCC实现语法分析
- python下载哪个好_tensorflow用python哪个版本更好?
- js大地坐标与经纬度坐标互转
- Android基础教程之Button事件发送消息到通知栏Notification
- 数据结构之平衡二叉树详解
- python gps显示_MicroPython-GPS教程之TPYBoardv702控制5110显示当前经纬度
- 视频格式转换(avi、wmv、flv、mkv、rmvb、rm、3gp转MP4、MP3)边学边开发
- ShadowGun 体积光学习