FPGA的进阶学习路线

1. 硬件描述语言——Verilog + VHDL

首先,要掌握数字电路原理。学习数字电路原理是迈出的第一步。在掌握数字电路原理之前,必须先了解基础知识。然后,你可以选择学习Verilog或者VHDL。如果你已经掌握了C语言基础,建议选择VHDL。因为Verilog与C语言相似度较高,容易混淆,最终会发现自己花费了很多时间去区分这两种语言,而不是学习如何使用它们。当然,你也可以选择Verilog,毕竟Verilog的应用比较广泛。

接下来,找到一个示例来复制代码。复制代码的目的是熟悉语法规则和编译器。然后模仿编写,并最终在不阅读书籍的情况下编写代码。编译代码后,打开RTL图表,看看出了什么样的电路。

HDL是一种硬件描述语言,突出了硬件作为特点,所以要以数字电路的思维来思考HDL,而不是使用C或其他高级语言。

图片

2. 独立完成小型和中型数字电路设计

现在,你可以设计一些数字电路,比如电子吉他、交通信号灯、DDS等。在这个阶段,你要做的只是根据规范要求或时序图,在HDL中设计电路以实现它。你需要一个开发板,在掌握HDL之前不需要购买开发板。你不用每次编译通过都下载代码,我们使用ModelSim仿真。如果仿真不能通过,那就没有必要下载。在这里首先掌握简单的测试台就可以了。

3、掌握设计方法和设计原则

到这里你会发现,你的电路虽然是正确的,但会提示很多警告。这时候,你需要学会同步设计原则,优化电路,无论是优先速度还是优先面积,时钟树应该如何设计,如何同步两个异频时钟等等。学会加快编译、静态时序分析、嵌入式逻辑分析器是必须的。如果有不理解的地方可以暂时跳过,因为这部分也需要足够的练习,才能有更深的理解。

4、学会提高开发效率

因为Quartus和ISE编辑器功能较弱,影响了开发效率。因此建议使用Sublime文本编辑器中的代码片段功能,减少重复工作。ModelSim也是一种常见的仿真工具,学习TCL/TK编写自己的DO文件使仿真自动化。你可能会手动备份你的代码,但专业人士使用版本控制器,所以掌握GIT以提高效率是很重要的。文件比较工具Beyond Compare也是一种比较常见的工具。此外,你还可以使用System Verilog代替测试台,这样会更加高效。如果你正在做IC验证,你必须掌握System Verilog和验证方法论(UVM)。

图片

掌握了TCL/TK之后,你可以学习虚拟JTAG(ISE也有类似的工具),制作自己的调试工具。另外,如果有时间,最好学习一些Python脚本,这样可以一劳永逸。

5、加强理论基础

此时,你已经可以使用FPGA了,但仍有许多事情做不到(例如FIR滤波器、PID算法、OFDM等),因为理论学得不够扎实。我们将大致分成几个方向供你参考,然后跟随理论课来掌握。

1、信号处理——信号与系统、数字信号处理、数字图像处理、现代数字信号处理、盲信号处理、自适应滤波器原理、雷达信号处理。

2、接口应用——UART、SPI、IIC、USB、CAN、PCIE、Rapid IO、DDR、TCP/IP、SPI4.2(10G以太网接口)、SATA、光纤、DisplayPort。

3、无线通信——信号与系统、数字信号处理、通信原理、移动通信基础、随机过程、信息论与编码。

4、CPU设计——计算机组成原理、微控制器、计算机体系结构、编译原理。

5、仪器仪表——模拟电子学、高频电子电路、电子测量技术、智能仪器原理与应用。

6、控制系统——自动控制原理、现代控制理论、过程控制工程、模糊控制器理论与应用。

7、压缩、编码、加密——数论、抽象代数、现代编码技术、信息论与编码、数据压缩简介、应用密码学、音频信息处理技术、数字视频编码技术原理。

现在你会发现,原来FPGA涉及这么多知识,你可以选择一个感兴趣的方向,但工作可能会涉及到几个方向的知识,所以理论学得越多越好。

6、学会使用MATLAB仿真

在设计FPGA算法时,多少会用到MATLAB,也可以起到辅助FPGA视觉算法硬件化,比如CRC的系数矩阵、数字滤波器系数、各种表格和文本处理等。此外,MATLAB还可以用于调试HDL,通过将MATLAB的计算结果与HDL逐步计算进行对比,你可以知道哪里出了问题。

图片

7、充分练习

此时你至少已经阅读了芯片手册几次(可以在官方网站上找到),然后可以为自己的方向做一定数量的练习(期间保持良好的代码风格,增加组件示例语句的可读性,绘制流程图/时序图,编写文档的习惯)。

例如:通信类可以做调制和解调算法,仪器类可以做总线分析仪等。但这些算法在书中只给出了一个公式、框图,实际的差距很大,你甚至可能觉得书写得很肤浅。实际上,当你达到这个阶段时,你已经达到了专业水平,自由地了解一些前沿技术,这将有助于你的职业规划。

8、图像处理

1、Photoshop。花一两周时间学习PS,对图像处理有一个大致的了解,了解各种图片格式、直方图、色调、通道、滤镜、拼接等基本概念,并能够使用它。这部分是零基础的,目的是让你对图像处理有一种感性的理解,而不是一堆公式推导出来的。

2、基于MATLAB或OpenCV的图像处理。在这个阶段,只要学习简单的调用函数即可,暂时不必深究实现的细节。

图片

3、图像处理的基本理论。这部分理论需要较高的数学基础,包括复变函数、线性代数、信号与系统、数字信号处理等基础知识,如果基础不好,建议先补足基础再来。无法理解理论的也可以暂时放下,也许学习后自然就能有所启发。

4、基于FPGA的图像处理。将前面学到的理论应用到FPGA上,如果你已经达到了第七阶段的水平,你将很容易独立完成图像算法的设计(图像处理离不开接口,要求在第五阶段以上)。

5、深入学习数学。要想在算法上达到更高的水平,必须需要更多的数学知识,所以这里建议学习实分析、广义分析、小波分析等。

9、电子学的终点是模拟电子

现在,你对FPGA内部的东西已经不难了,但是FPGA输出的信号却无法控制。这时候就必须学好模拟电子。例如:电路分析、模拟电子学、高频电子电路、PCB设计、EMC、SI、PI等,可以设计一块带有两片DDR3的FPGA开发板,即使通关。

图片

10、学习是个坚持的过程

能达到这个水平,说明你已经很不错了,但是还有许多事情要学,因为FPGA经常需要与CPU交互,也就是说,你必须与软件工程师沟通,所以你也必须懂一些软件知识。例如,ARM(Xilinx ZYNQ和Altera的SOC会使用ARM硬核)。总之,学习是个长期坚持的事情。正因为技术无止境,所以FPGA工程师几乎没有年龄上的职业危机。所以,加油吧!

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA进阶开发与实践PDF》是一本关于FPGA(Field-Programmable Gate Array)进阶开发和实践的电子书。本书详细介绍了FPGA的相关原理、设计技术和实践经验。 首先,本书简要介绍了FPGA的基本概念和工作原理,并提供了一些常用的FPGA开发工具和开发环境的选择指南。它还涵盖了FPGA设计的基本知识,如Verilog和VHDL的语法,以及常用的设计模块和电路。 其次,本书重点讨论了FPGA的高级开发技术。它介绍了如何利用FPGA高速时钟,性能优化和资源利用率,以及使用硬核IP(Intellectual Property)和软核IP进行系统集成等进阶开发技术。此外,还讨论了FPGA设计中的时序分析和时序约束,以及如何进行测试和调试等方面的实践经验。 此外,本书还介绍了一些常见的FPGA应用领域,如数字信号处理(DSP)、图像处理、通信和网络等。它详细解释了如何设计和实现这些应用的硬件电路,并提供了许多实际的案例和应用示例,帮助读者理解和掌握FPGA进阶开发和实践的技巧。 总之,《FPGA进阶开发与实践PDF》是一本系统全面的关于FPGA进阶开发和实践的电子书。它不仅提供了理论知识和技术原理,还通过大量的实例和案例,帮助读者深入理解和掌握FPGA的设计和开发技术,提升其在FPGA领域的实践能力。无论是FPGA初学者还是有一定经验的开发人员,都可以从本书中获得丰富的知识和实践经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值