时间:2024-08-02 来源:网络搜集 关于我们 0
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工程师几乎没有年龄上的职业危机。所以,加油吧!
都看到这儿了,点个关注吧!!
点击图片关注“成电国芯FPGA人才培养”小程序/服务号
(服务号)
详情咨询:
高老师:18935839030
V信:gmy18935839030