专业游戏门户,分享手游网游单机游戏百科知识攻略!

嗨游网
嗨游网

FPGA教程零基础入门,FPGA教程深入学习教程

来源:小嗨整编  作者:小嗨  发布时间:2023-02-21 02:52
摘要:FPGA教程零基础入门,FPGA教程深入学习教程1FPGA学习重点1.看代码,建模型只有在脑海中建立了一个个逻辑模型,理解FPGA内部逻辑结构实现的基础,才能明白为什么写Verilog和写C整体思路是不一样的,才能理解顺序执行语言和并行执行...

3.5 数字逻辑知识是根本

无论是FPGA的哪个方向,都离不开数字逻辑知识的支撑。FPGA说白了是一种实现数字逻辑的方式而已。如果连最基本的数字逻辑的知识都有问题,学习FPGA的愿望只是空中楼阁而已。数字逻辑是任何电子电气类专业的专业基础知识,也是必须要学好的一门课。

如果不能将数字逻辑知识烂熟于心,养成良好的设计习惯,学FPGA到最后仍然是雾里看花水中望月,始终是一场空的。

以上几条只是我目前总结菜鸟们在学习FPGA时所最容易跑偏的地方,FPGA的学习其实就像学习围棋一样,学会如何在棋盘上落子很容易,成为一位高手却是难上加难。要真成为李昌镐那样的神一般的选手,除了靠刻苦专研,恐怕还确实得要一点天赋。

4 荐读

4.1 入门首先要掌握HDL(HDL=verilog+VHDL)

第一句话是:还没学数电的先学数电。然后你可以选择verilog或者VHDL,有C语言基础的,建议选择VHDL。因为verilog太像C了,很容易混淆,最后你会发现,你花了大量时间去区分这两种语言,而不是在学习如何使用它。当然,你思维能转得过来,也可以选verilog,毕竟在国内verilog用得比较多。

接下来,首先找本实例抄代码。

抄代码的意义在于熟悉语法规则和编译器(这里的编译器是硅编译器又叫综合器,常用的编译器有:

Quartus、ISE、Vivado、Design Compiler 、Synopsys的VCS、iverilog、Lattice的Diamond、Microsemi/Actel的Libero、Synplify pro),然后再模仿着写,最后不看书也能写出来。

编译完代码,就打开RTL图,看一下综合出来是什么样的电路。

HDL是硬件描述语言,突出硬件这一特点,所以要用数电的思维去思考HDL,而不是用C语言或者其它高级语言,如果不能理解这句话的,可以看《什么是硬件以及什么是软件》。

在这一阶段,推荐的教材是《Verilog传奇》、《Verilog HDL高级数字设计》或者是《用于逻辑综合的VHDL》。不看书也能写出个三段式状态机就可以进入下一阶段了。

此外,你手上必须准备Verilog或者VHDL的官方文档,《verilog_IEEE官方标准手册-2005_IEEE_P1364》、《IEEE Standard VHDL Language_2008》,以便遇到一些语法问题的时候能查一下。

4.2 独立完成中小规模的数字电路设计

现在,你可以设计一些数字电路了,像交通灯、电子琴、DDS等等,推荐的教材是夏老《Verilog 数字系统设计教程》(第三版)。在这一阶段,你要做到的是:给你一个指标要求或者时序图,你能用HDL设计电路去实现它。这里你需要一块开发板,可以选Altera的cyclone IV系列,或者Xilinx的Spantan 6。

还没掌握HDL之前千万不要买开发板,因为你买回来也没用。这里你没必要每次编译通过就下载代码,咱们用modelsim仿真(此外还有QuestaSim、NC verilog、Diamond的Active-HDL、VCS、Debussy/Verdi等仿真工具),如果仿真都不能通过那就不用下载了,肯定不行的。

在这里先掌握简单的testbench就可以了。推荐的教材是《WRITING TESTBENCHES Functional Verification of HDL Models》。

4.3 掌握设计方法和设计原则

你可能发现你综合出来的电路尽管没错,但有很多警告。这个时候,你得学会同步设计原则、优化电路,是速度优先还是面积优先,时钟树应该怎样设计,怎样同步两个异频时钟等等。

推荐的教材是《FPGA权威指南》、《IP核芯志-数字逻辑设计思想》、《Altera FPGA/CPLD设计》第二版的基础篇和高级篇两本。学会加快编译速度(增量式编译、LogicLock),静态时序分析(timequest),嵌入式逻辑分析仪(signaltap)就算是通关了。如果有不懂的地方可以暂时跳过,因为这部分还需要足量的实践,才能有较深刻的理解。

4.4 学会提高开发效率

因为Quartus和ISE的编辑器功能太弱,影响了开发效率。所以建议使用Sublime text编辑器中代码片段的功能,以减少重复性劳动。Modelsim也是常用的仿真工具,学会TCL/TK以编写适合自己的DO文件,使得仿真变得自动化,推荐的教材是《TCL/TK入门经典》。

你可能会手动备份代码,但是专业人士都是用版本控制器的,所以,为了提高工作效率,必须掌握GIT。

文件比较器Beyond Compare也是个比较常用的工具。此外,你也可以使用System Verilog来替代testbench,这样效率会更高一些。如果你是做IC验证的,就必须掌握System Verilog和验证方法学(UVM)。推荐的教材是《Writing Testbenches using SystemVerilog》、《The UVM Primer》、《System Verilog1800-2012语法手册》。

掌握了TCL/TK之后,可以学习虚拟Jtag(ISE也有类似的工具)制作属于自己的调试工具,此外,有时间的话,最好再学个python。脚本,意味着一劳永逸。

4.5 增强理论基础

这个时候,你已经会使用FPGA了,但是还有很多事情做不了(比如,FIR滤波器、PID算法、OFDM等),因为理论没学好。我大概地分几个方向供大家参考,后面跟的是要掌握的理论课。

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

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

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

  • CPU设计 —— 计算机组成原理、单片机、计算机体系结构、编译原理

  • 仪器仪表 —— 模拟电子技术、高频电子线路、电子测量技术、智能仪器原理及应用

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

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

现在你发现,原来FPGA会涉及到那么多知识,你可以选一个感兴趣的方向,但是工作中很有可能用到其中几个方向的知识,所以理论还是学得越多越好。如果你要更上一层,数学和英语是不可避免的。

4.6 学会使用MATLAB仿真

设计FPGA算法的时候,多多少少都会用到MATLAB,比如CRC的系数矩阵、数字滤波器系数、各种表格和文本处理等。

此外,MATLAB还能用于调试HDL(用MATLAB的计算结果跟用HDL算出来的一步步对照,可以知道哪里出问题)。推荐的教材是《MATLAB宝典》和杜勇的《数字滤波器的MATLAB与FPGA实现》。

4.7 图像处理

Photoshop

花一、两周的时间学习PS,对图像处理有个大概的了解,知道各种图片格式、直方图、色相、通道、滤镜、拼接等基本概念,并能使用它。这部分是0基础,目的让大家对图像处理有个感性的认识,而不是一上来就各种各样的公式推导。推荐《Photoshop CS6完全自学教程》。

基于MATLAB或OpenCV的图像处理

有C/C++基础的可以学习OpenCV,否则的话,建议学MATLAB。这个阶段下,只要学会简单的调用函数即可,暂时不用深究实现的细节。推荐《数字图像处理matlab版》、《学习OpenCV》。

图像处理的基础理论

这部分的理论是需要高数、复变、线性代数、信号与系统、数字信号处理等基础,基础不好的话,建议先补补基础再来。看不懂的理论也可以暂时先放下,或许学到后面就自然而然地开窍了。推荐《数字图像处理》。

基于FPGA的图像处理

把前面学到的理论运用到FPGA上面,如果这时你有前面第七个阶段的水平,你将轻松地独立完成图像算法设计(图像处理是离不开接口的,上面第五个阶段有讲)。推荐《基于FPGA的嵌入式图像处理系统设计》、《基于FPGA的数字图像处理原理及应用》。

进一步钻研数学。要在算法上更上一层,必然需要更多的数学,所以这里建议学习实分析、泛涵分析、小波分析等。

5 其它问题

5.1 为什么不推荐学习MicroBlaze等软核?

性价比不高,一般的软核性能大概跟Cortex M3或M4差不多,用FPGA那么贵的东西去做一个性能一般的CPU,在工程上是非常不划算的。不如另外加一块M3。

加上软核,可能会影响到其它的逻辑的功能。这是在资源并不十分充足的情况下,再加上软核,导致布局布线变得相当困难。软核不开源,出现Bug的时候,不容易调试。工程上很少使用,极有可能派不上用场。

5.2 为什么不推荐0基础学习ZYNQ或SOC?

入门应该学习尽量简单的东西,要么专心学习ARM,要么专心学习FPGA。这样更容易有成就感,增强信心。

ZYNQ和SOC的应用领域并不广,还有很多人没听过这种东西,导致求职的不利。开发工具编译时间长,浪费较多时间。绝大多数工作,都只是负责一方面,也就是说另一方面,很有可能派不上用场。

5.3 为什么已经存在那么多IP核,仍需写HDL?

问这种问题的,一般是学生,他们没有做过产品,没有遇到过工程上的问题。IP核并非万能,不能满足所有需求。尽量少用闭源IP核,一旦出问题,这种黑匣子很可能让产品难产。

深入理解底一层次,可以更好地使用高一层次。该法则可以适用于所有编程语言。


本文地址:网络百科频道 https://www.eeeoo.cn/wangluo/903181_2.html,嗨游网一个专业手游免费下载攻略知识分享平台,本站部分内容来自网络分享,不对内容负责,如有涉及到您的权益,请联系我们删除,谢谢!

共2页 1 2 当前是最后一页

网络百科
小编:小嗨整编
相关文章相关阅读
  • 泰剧迷app官网入口(泰剧迷app使用教程)

    泰剧迷app官网入口(泰剧迷app使用教程)

    泰剧迷app官网入口(泰剧迷app使用教程)随着泰剧在国内的流行,越来越多的观众想要找到一款能观看泰剧的软件。泰剧迷App就是一款深受剧迷喜爱的泰剧播放器。本文将为您详细介绍泰剧迷App的官网入口以及使用教程,让您轻松观看喜欢的泰剧。泰剧迷...

  • 正方形手工折纸教程(手工折纸教程简单又漂亮)

    正方形手工折纸教程(手工折纸教程简单又漂亮)

    正方形手工折纸教程(手工折纸教程简单又漂亮)手工折纸是一种充满创意和乐趣的技艺,通过简单的折叠,就能让纸张变成各种各样的形状。今天,就让我来为大家介绍一款简单又漂亮的正方形手工折纸教程,让你轻松掌握制作技巧。一、准备材料1.彩色纸张(推荐使...

  • 小数点除法竖式教程(百位除法竖式教程)

    小数点除法竖式教程(百位除法竖式教程)

    小数点除法竖式教程(百位除法竖式教程)小数点除法竖式是指在除法运算中,被除数和除数均含有小数点时,按照一定规则进行竖式计算的方法。百位小数点除法竖式是指被除数和除数的整数部分均为百位数的除法运算。一、百位小数点除法竖式步骤1.将被除数和除数...

  • catia教程入门教程(catia教程在哪可以看)?

    catia教程入门教程(catia教程在哪可以看)?

    catia教程入门教程(catia教程在哪可以看)?CATIA作为一款广泛应用于机械设计、汽车制造、飞机制造等行业的3D建模软件,具有强大的功能和优越的建模体验。为了让初学者快速上手,本文将为您提供一份详细的CATIA入门教程。CATIA是...

  • 水彩画教程步骤(水彩画教程初学者简单)

    水彩画教程步骤(水彩画教程初学者简单)

    水彩画教程步骤(水彩画教程初学者简单)下面带来比较简单的初学者水彩画教程步骤。第1步:铅笔削尖,画出建筑物和山的轮廓形。第2步:用黑色针管笔描边,建筑物的窗户排线;树木和花草随意的笔触带过即可。第3步:水彩笔调114号永固浅绿画塔顶的颜色;...

  • 打领带教程只需四步(打领带教程图片)

    打领带教程只需四步(打领带教程图片)

    打领带教程只需四步(打领带教程图片)领带的打法有几十种,从简单到复杂,常见到不常见的都有。在这里,教给大家一种十秒快速打领带的技巧,以及适合初学者的四种简易打法。1.四手结打法。四手结的打法和系红领巾有点相似,打出来的结小巧,看起来有点不太...

  • 金刚结手绳编织教程(金刚结手绳编织图片)

    金刚结手绳编织教程(金刚结手绳编织图片)

    金刚结手绳编织教程(金刚结手绳编织图片)金刚结是藏传佛教特有的一种护身符,代表:九尊、金刚,它是经过高僧大德加持以后对人、对物赋有灵气的一种法器。金刚结的寓意是一切佛母爱护着我们犹如自己的母亲,一切护法神众在我们的周围,帮助我们遣除诸违缘,...

  • 碧蓝航线ios反和谐2024(碧蓝航线ios反和谐教程)

    碧蓝航线ios反和谐2024(碧蓝航线ios反和谐教程)

    碧蓝航线ios反和谐2024(碧蓝航线ios反和谐教程)碧蓝航线是一款二战题材的战舰少女战斗养成手游。游戏中包括丰富的角色养成、舰队搭配、战斗策略、任务系统等玩法。下面带来碧蓝航线ios反和谐2024教程:碧蓝航线ios反和谐教程1.打开游...

  • 周排行
  • 月排行
  • 年排行

精彩推荐