[FPGA] 学完基础的verilog语言后如何进一步学习fpga

[复制链接]
851|36
gaochy1126 发表于 2025-9-28 17:31 | 显示全部楼层 |阅读模式
学fpga,先学写状态机,仿真和基础的i2c之类的协议,这是第一步,基础打好后,fpga必须会高速接口如ddr,pcie之类,算法方面至少fft之类的ip核试着用用,这算是进阶,然后还有异步时钟,布局布线,时序优化等等,技术路线基本就这样,等这些都掌握了,工作应该妥妥的

verilog是目前数字电路的通用(主流)描述语言,必学的。
但是数字IC/FPGA设计,绝不止是verilog。就像软件开发,绝不止是C++。
还有很多基础知识,专业知识技能是需要学习掌握的。自己可以对照下。

A:电子工程师(Electronics Engineer)基础知识
1:电路分析,数字电路基础;
2:微机原理,汇编语言;
3:C/C++语言,数据结构;
4:Verilog语言(比如Michael, D.Cilette的《Verilog HDL高级数字设计》或夏宇闻老师的《Verilog数字系统设计教程》);
5:晶体管原理;(做数字IC/FPGA设计,只需大致了解)

B:数字IC设计专业知识
1:进数字IC前端/FPGA设计的专业知识学习,sky推荐这本书:《CMOS VLSI Design A Circuits and Systems Perspective》。自认为是数字IC设计入门“圣经”。基本电路结构,加减法器结构,组合逻辑,时序逻辑,跨时钟设计都有涉及。
2:在此还需要理解On-Chip-Bus的基本知识与一个数字系统的基本结构,建议学习理解:AMBA总线,含:APB/AHB/AXI。由于ARM在数字IP领域的领导低位,AMBA总线事实上已经成为数字IC的通用总线结构,必学。
3:现在可以开始做数字IP的设计了,涉及到使用相关EDA tool。
a):功能验证:对于初学者(在校生),能modelsim/questasim上做仿真测试,熟悉波形窗口;debug RTL code。再使用下windows版的nLint/Debussy就能完成数字IP功能设计验证了。
b):综合与实现:这部分首先(重点)要掌握STA原理,比如:cell delay在cell library里面是怎么标定的,tool是怎么计算delay的,setup/hold timing check的计算公式是什么;clk skew, clk uncertainty, create_clock, create_generateclock, set_ideal_network, set_input_delay, set_false_path, set_multi_cycle_path,OCV , ....是什么意思,对STA有何作用。懂了STA原理,就可以用TCL语言写SDC(DC综合)/XDC(vivado综合实现)timing constraint了。目前XDC/SDC的语法已经基本统一了。

C:进阶知识、技能
1:算法方向:信号与系统,数字信号处理(DSP);
2:接口方向:UART/IIC/SPI/DDR等常用接口协议;如有余力,可以看看USB/PCIE/SATA/MIPI;
3:日常工作的OS平台:linux操作系统使用;vim(emac)使用;bash(csh);makefile;
4:脚本语言:Perl(Python)/TCL;
5:版本管理工具:SVN/Git;

D:项目锻炼
1:小数字IP的设计、验证(UART/SPI/Timer/AHB-SRAM);
2:小数字IP在FPGA上的实际运行;
3:HW/SW的协同运作(试试zynq FPGA上PS-PL的协同);
4:中大数字IP的设计、验证(AXI-DMA,图像ISP处理,CNN加速器等);
5:中大型FPGA项目开发(导师项目);
6:参与一个数字IC项目的设计、验证、FPGA emulation、流片(这个目前在校参与的机会很小);

建议补充数字IC设计基本知识,比如:rtl代码与电路结构的关系(了解基本组合逻辑,比如加减法,乘法器的结构),跨时钟域电路原理域设计,STA原理与timing约束,BUS(AHB/APB/AXI)的知识。
如果搞fpga,还得熟悉下厂商提供的IP的实用,比如:内置CPU,网络接口等。
然后就是实际写代码上fpga板子试试。

averyleigh 发表于 2025-9-28 19:27 来自手机 | 显示全部楼层
具有一定的参考价值,需要的朋友可以参考一下。

评论

赞一个  发表于 2025-9-28 19:48
linfelix 发表于 2025-9-28 19:27 来自手机 | 显示全部楼层
资料很实用,谢谢楼主!                                 

评论

赞一个  发表于 2025-9-28 19:48
saservice 发表于 2025-9-28 19:28 来自手机 | 显示全部楼层
相当全的资料,很适合初学者                                 

评论

赞一个  发表于 2025-9-28 19:48
wengh2016 发表于 2025-9-28 19:28 来自手机 | 显示全部楼层
正准备学习的朋友推荐下载。                                 

评论

赞一个  发表于 2025-9-28 19:48
robincotton 发表于 2025-9-28 19:28 来自手机 | 显示全部楼层
谢谢你共享的资料!!                                 

评论

赞一个  发表于 2025-9-28 19:48
ulystronglll 发表于 2025-9-28 19:29 来自手机 | 显示全部楼层
资料很实用,谢谢楼主!                                 

评论

赞一个  发表于 2025-9-28 19:48
sheflynn 发表于 2025-9-28 19:30 来自手机 | 显示全部楼层
资料的确是很全面                                 

评论

赞一个  发表于 2025-9-28 19:49
xiaoyaodz 发表于 2025-9-28 19:30 来自手机 | 显示全部楼层
谢谢lz分享,很有用                                 

评论

赞一个  发表于 2025-9-28 19:49
deliahouse887 发表于 2025-9-28 19:31 来自手机 | 显示全部楼层
相当全的资料,很适合初学者                                 

评论

赞一个  发表于 2025-9-28 19:49
i1mcu 发表于 2025-9-28 19:31 来自手机 | 显示全部楼层
共享的资料比较详细  谢谢                                 

评论

赞一个  发表于 2025-9-28 19:49
usysm 发表于 2025-9-28 19:32 来自手机 | 显示全部楼层
具有一定的参考价值,需要的朋友可以参考一下。

评论

赞一个  发表于 2025-9-28 19:49
mickit 发表于 2025-9-28 19:32 来自手机 | 显示全部楼层
非常感谢楼主分享                                 

评论

赞一个  发表于 2025-9-28 19:49
phoenixwhite 发表于 2025-9-28 19:33 来自手机 | 显示全部楼层
资料的确是很全面                                 

评论

赞一个  发表于 2025-9-28 19:49
 楼主| gaochy1126 发表于 2025-9-28 19:41 | 显示全部楼层
通过RTL视图分析综合后的电路结构,理解组合逻辑与时序逻辑的硬件实现差异‌

评论

赞一个  发表于 2025-9-28 19:49
 楼主| gaochy1126 发表于 2025-9-28 19:41 | 显示全部楼层
熟练使用Quartus/Vivado完成综合、实现、时序分析全流程,重点学习时序约束文件(.sdc)编写‌

评论

赞一个  发表于 2025-9-28 19:50
 楼主| gaochy1126 发表于 2025-9-28 19:41 | 显示全部楼层
掌握TCL脚本自动化流程,使用Git进行版本控制,推荐Sublime Text+Verilog代码片段提高编码效率‌

评论

赞一个  发表于 2025-9-28 19:50
 楼主| gaochy1126 发表于 2025-9-28 19:41 | 显示全部楼层
从跑马灯、按键消抖等小项目过渡到DDS信号发生器、交通灯控制器等中型项目‌

评论

赞一个  发表于 2025-9-28 19:50
 楼主| gaochy1126 发表于 2025-9-28 19:41 | 显示全部楼层
尝试构建简单CPU或SoC系统,理解模块间数据交互与时钟域管理‌

评论

赞一个  发表于 2025-9-28 19:50
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1205

主题

11937

帖子

26

粉丝
快速回复 在线客服 返回列表 返回顶部