首页 » 科学 » FPGA真的很难学吗?那可能是没弄明白这些事理……_电路_暗记

FPGA真的很难学吗?那可能是没弄明白这些事理……_电路_暗记

落叶飘零 2025-01-17 12:09:37 0

扫一扫用手机浏览

文章目录 [+]

如果想速成,那就上网看视频吧,这样紧张是面对运用的,一个小时内让你的板子运行起来。
早期起来的快,活学活用,便是后期没有系统理论支持,会有些吃力,特殊是大项目,那完备是个悲剧。
海内做的可以的,周立功算一个了,艾米电子也可以。
这两家都有学习板,不过后者的教程抄袭的前者的。
前者功底深厚些,资金不紧张就买前者吧。
速成的话,数电书一定一定必备,边看边学比较好,别的的书可以适量买点。

实在只要有兴趣,逐步学,入门也不难,板子就去网购吧,EDA365便是一个很不错的代购平台。

FPGA真的很难学吗?那可能是没弄明白这些事理……_电路_暗记 科学

前方知识点高能预警

(先大略总结几点:)

1

看代码,建模型

只有在脑海中建立了一个个逻辑模型,理解FPGA内部逻辑构造实现的根本,才能明白为什么写Verilog和写C整体思路是不一样的,才能理解顺序实行措辞和并行实行措辞的设计方法上的差异。
在看到一段大略程序的时候该当想到是什么样的功能电路。

2

用数学思维来简化设计逻辑

学习FPGA不仅逻辑思维很主要,好的数学思维也能让你的设计化繁为简,以是啊,那些瞥见高数就头疼的童鞋须要重视一下这门课哦。
举个大略的例子,比如有两个32bit的数据X[31:0]与Y[31:0]相乘。
当然,无论Altera还是Xilinx都有现成的乘法器IP核可以调用,这也是最大略的方法,但是两个32bit的乘法器将耗费大量的资源。
那么有没有节省资源,又不太繁芜的办法来实现呢?我们可以稍做修正:

将X[31:0]拆成两部分X1[15:0]和X2[15:0],令X1[15:0]=X[31:16],X2[15:0]=X[15:0],则X1左移16位后与X2相加可以得到X;同样将Y[31:0]拆成两部分Y1[15:0]和Y2[15:0],令 Y1[15:0]=Y[31:16],Y2[15:0]=Y[15:0],则Y1左移16位后与Y2相加可以得到Y;则X与Y的相乘可以转化为X1和X2 分别与Y1和Y2相乘,这样一个32bit32bit的乘法运算转换成了四个16bit16bit的乘法运算和三个32bit的加法运算。
转换后的占用资源将会减少很多,有兴趣的童鞋,不妨综合一下看看,看看两者差多少。

3

时钟与触发器的关系

“时钟是时序电路的掌握者”这句话太经典了,可以说是FPGA设计的圣言。
FPGA的设计紧张因此时序电路为主,由于组合逻辑电路再怎么繁芜也变不出太多花样,理解起来也不没太多困难。
但是时序电路就不同了,它的所有动作都是在时钟一拍一拍的节奏下转变触发,可以说时钟便是全体电路的掌握者,掌握不好,电路功能就会混乱。

打个比方,时钟就相称于人体的心脏,它每一次的跳动便是触发一个 CLK,向身体的各个器官供血,坚持着机体的正常运作,每一个器官体统正常事情少不了组织细胞的构成,那么触发器就可以比作基本单元组织细胞。
时序逻辑电路的时钟是掌握时序逻辑电路状态转换的“发动机”,没有它时序逻辑电路就不能正常事情,由于时序逻辑电路紧张是利用触发器存储电路的状态,而触发器状态变换须要时钟的上升或低落沿!
由此可见时钟在时序电路中的核心浸染!

末了大略说一下体会吧,归结起来便是多实践、多思考、多问。
实践出真知,看100遍别人的方案不如自己去实践一下。
实践的动力一方面来自兴趣,一方面来自压力,个人以为后者更主要。
有需求会随意马虎形成压力,也便是说最好能在实际的项目开拓中磨炼,而不是为了学习而学习。
在实践的过程中要多思考,多想想问题涌现的缘故原由,问题办理后要多问几个为什么,这也是履历积累的过程,如果有写项目日志的习气更好,把问题及缘故原由、办理的办法都写进去。
末了还要多问,碰着问题思虑后还得不到办理就要问了,毕竟个人的力量是有限的,问同学同事、问搜索引擎、问网友都可以,一篇文章、朋友们的点拨都可能帮助自己快速办理问题。

为什么大量的人会以为FPGA难学?

1、不熟习FPGA的内部构造,不理解可编程逻辑器件的基本事理

FPGA为什么是可以编程的?恐怕很多菜鸟不知道,他们也不想知道。
由于他们以为这是无关紧要的。
他们潜意识的认为可编程嘛,肯定便是像写软件一样啦。
软件编程的思想根深蒂固,看到Verilog或者VHDL就像看到C措辞或者其它软件编程措辞一样。
一条条的读,一条条的剖析。
如果这些菜鸟们始终谢绝去理解为什么FPGA是可以编程的,不去理解FPGA的内部构造,要想学会FPGA 恐怕是天方夜谭。
虽然现在EDA软件已经非常前辈,像写软件那样如法泡制也能综合出点东西,但大概只有天知道EDA软件末了综合出来的到底是什么。
大概点个灯,跑个马还行。
这样便是为什么很多菜鸟学了N久往后依然是一个菜鸟的缘故原由。
那么FPGA为什么是可以“编程”的呢?首先来理解一下什么叫“程”。
启迪 “程”只不过是一堆具有一定含义的01编码而已。

编程,实在便是编写这些01编码。
只不过我们现在有了很多开拓工具运算或者是其它操作。
以是软件是一条一条的,常日都不是直接编写这些01编码,而因此高等措辞的形式来编写,末了由开拓工具转换为这种01编码而已。
对付软件编程而言,处理器会有一个专门的译码电路逐条把这些01编码翻译为各种掌握旗子暗记,然后掌握其内部的电路完成一个个的读,由于软件的操作是一步一步完成的。
而FPGA的可编程,实质也是依赖这些01编码实现其功能的改变,但不同的是FPGA之以是可以完身分歧的功能,不是依赖像软件那样将01编码翻译出来再去掌握一个运算电路,FPGA里面没有这些东西。

FPGA内部紧张三块:可编程的逻辑单元、可编程的连线和可编程的IO模块。
可编程的逻辑单元是什么?其基本构造某种存储器(SRAM、 FLASH等)制成的4输入或6输入1输出地“真值表”加上一个D触发器构成。
任何一个4输入1输出组合逻辑电路,都有一张对应的“真值表”,同样的如果用这么一个存储器制成的4输入1输出地“真值表”,只须要修正其“真值表”内部值就可以等效出任意4输入1输出的组合逻辑。
这些“真值表”内部值是什么?便是那些01编码而已。
如果要实现时序逻辑电路怎么办?这不又D触发器嘛,任何的时序逻辑都可以转换为组合逻辑+D触发器来完成。
但这毕竟只实现了4输入1输出的逻辑电路而已,常日逻辑电路的规模那是相称的大哦。

那怎么办呢?这个时候就须要用到可编程连线了。
在这些连线上有很多用存储器掌握的链接点,通过改写对应存储器的值就可以确定哪些线是连上的而哪些线是断开的。
这就可以把很多可编程逻辑单元组合起来形成大型的逻辑电路。
末了便是可编程的IO,这实在是FPGA作为芯片级利用必须要把稳的。

任何芯片都一定有输入引脚和输出引脚。
有可编程的IO可以任意的定义某个非专用引脚(FPGA中有专门的非用户可利用的测试、下载用引脚)为输入还是输出,还可以对IO的电平标准进行设置。
总归一句话,FPGA之以是可编程是由于可以通过分外的01代码制作成一张张 “真值表”,并将这些“真值表”组合起来以实现大规模的逻辑功能。

不理解FPGA内部构造,就不能明白终极代码如何变到FPGA里面去的。
也就无法深入的理解如何能够充分利用FPGA。
现在的FPGA,不单单是有前面讲的那三块,还有很多专用的硬件功能单元,如何利用好这些单元实现繁芜的逻辑电路设计,是从菜鸟迈向高手的路上必须要战胜的障碍。
而这统统,还是必须先从理解FPGA内部逻辑及其事情事理做起。

2、缺点理解HDL措辞,怎么看都看不出硬件构造

HDL措辞的英语全称是:Hardware Deion Language,把稳这个单词Deion,而不是Design。
老外为什么要用Deion这个词而不是Design呢?由于HDL确实不是用用来设计硬件的,而仅仅是用来描述硬件的。
描述这个词精确地反响了HDL措辞的实质,HDL措辞不过是已知硬件电路的文本表现形式而已,只是将往后的电路用文本的形式描述出来而已。
而在编写措辞之前,硬件电路该当已经被设计出来了。
措辞只不过是将这种设计转化为笔墨表达形式而已。
但是很多人就不理解了,既然硬件都已经被设计出来了,直接拿去制作部就完了,为什么还要转化为笔墨表达形式再通过EDA工具这些麻烦的流程呢?实在这便是很多菜鸟没有理解设计的抽象层次的问题,任何设计包括什么服装、机器、广告设计都有一个抽象层次的问题。
就拿广告设计来说吧,最初的设计大概便是一个观点,设计出这个观点也是便是一个点子而已,离终极拍成广告还差得很远。

硬件设计也是有不同的抽象层次,每一个层次都须要设计。
最高的抽象层次为算法级、然后依次是体系构造级、寄存器传输级、门级、物理版图级。
利用HDL的好处在于我们已经设计好了一个寄存器传输级的电路,那么用HDL描述往后转化为文本的形式,剩下的向更低层次的转换就可以让EDA工具去做了,这就大大的降落了事情量。
这便是可综合的观点,也便是说在对这一抽象层次上硬件单元进行描述可以被EDA工具理解并转化为底层的门级电路或其他构造的电路。

在FPGA设计中,便是在将这以抽象层级的见地描述成HDL措辞,就可以通过FPGA开拓软件转化为问题1中所述的FPGA内部逻辑功能实现形式。
HDL也可以描述更高的抽象层级如算法级或者是体系构造级,但目前受限于EDA软件的发展,EDA软件还无法理解这么高的抽象层次,以是 HDL描述这样抽象层级是无法被转化为较低的抽象层级的,这也便是所谓的不可综合。
以是在阅读或编写HDL措辞,尤其是可综合的HDL,不应该看到的是措辞本身,而是要看到措辞背后所对应的硬件电路构造。
如果看到的HDL始终是一条条的代码,那么这种人永久摆脱不了菜鸟的宿命。
如果哪一天看到的代码不再是一行行的代码而是一块一块的硬件模块,那么恭喜分开了菜鸟的级别,进入不那么菜的鸟级别。

3、FPGA本身不算什么,统统皆在FPGA之外,这一点恐怕也是很多学FPGA的菜鸟最难明得的地方

FPGA是给谁用的?很多学校阐明为给学微电子专业或者集成电路设计专业的学生用的,实在这不过是很多学校受资金限定,买不起专业的集成电路设计工具而用FPGA工具替代而已。
实在FPGA是给设计电子系统的工程师利用的。
这些工程师常日是利用已有的芯片搭配在一起完成一个电子设备,如基站、机顶盒、视频监控设备等。
当现有芯片无法知足系统的需求时,就须要用FPGA来快速的定义一个能用的芯片。

前面说了,FPGA里面无法便是一些“真值表”、触发器、各种连线以及一些硬件资源,电子系统工程师利用FPGA进行设计时无非便是考虑如何将这些往后资源组合起来实现一定的逻辑功能而已,而不必像IC设计工程师那样一贯要关注到末了芯片是不是能够被制造出来。
实质上和利用现有芯片组合身分歧的电子系统没有差异,只是须要关注更底层的资源而已。
要想把FPGA用起来还是大略的,由于无非便是那些资源,在理解了前面两点再搞个实验板,跑跑实验,做点大略的东西是可以的。
而真正要把FPGA用好,那光懂点FPGA知识就远远不足了。
由于终极要让FPGA里面的资源如何组合,实现何种功能才能知足系统的须要,那就须要懂得更多更广泛的知识。

目前FPGA的运用紧张是三个方向:

第一个方向:也是传统方向紧张用于通信设备的高速接口电路设计,这一方向紧张是用FPGA处理高速接口的协议,并完成高速的数据收发和交流。
这类运用常日哀求采取具备高速收发接口的 FPGA,同时哀求设计者懂得高速接口电路设计和高速数字电路板级设计,具备EMC/EMI设计知识,以及较好的仿照电路根本,须要办理在高速收发过程中产生的旗子暗记完全性问题。
FPGA最初以及到目前最广的运用便是在通信领域,一方面通信领域须要高速的通信协议处理办法,另一方面通信协议随时在修正,非常不适宜做成专门的芯片。
因此能够灵巧改变功能的FPGA就成为首选。
到目前为止FPGA的一半以上的运用也是在通信行业。

第二个方向:可以称为数字旗子暗记处理方向或者数学打算方向,由于很大程度上这一方向已经大大超出了旗子暗记处理的范畴。
例如早就在2006年就听说老美将FPGA用于金融数据剖析,后来又见到有将FPGA用于医学数据剖析的案例。
在这一方向哀求FPGA设计者有一定的数学功底,能够理解并改进较为繁芜的数学算法,并利用FPGA内部的各种资源使之能够变为实际的运算电路。
目前真正投入实用的还是在通信领域的无线旗子暗记处理、信道编解码以及图像旗子暗记处理等领域,其它领域的研究正在开展中,之以是没有大量实用的紧张缘故原由还是由于学金融的、学医学的不理解这玩意。
不过最近创造欧美有很多电子工程、打算机类的博士转入到金融行业,开展金融旗子暗记处理,相信随着转入的人增加,FPGA在其它领域的数学打算功能会更好的发挥出来,而我也故意做一些这些方面的研究。
不过海内学金融的、学医的恐怕连数学都很少用到,就不用说用FPGA来帮助他们完成数学运算了,这个问题只有再议了。

第三个方向:所谓的SOPC方向,实在严格意义上来说这个已经在FPGA设计的范畴之内,只不过是利用FPGA这个平台搭建的一个嵌入式系统的底层硬件环境,然后设计者紧张是在上面进行嵌入式软件开拓而已。
设计对付FPGA本身的设计时相称少的。
但如果涉及到须要在FPGA做专门的算法加速,实际上须要用到第二个方向的知识,而如果须要设计专用的接口电路则须要用到第一个方向的知识。
就目前SOPC方向发展实在远不如第一和第二个方向,其紧张缘故原由是由于SOPC以FPGA为主,或者是在FPGA内部的资源实现一个“软”的处理器,或者是在FPGA内部嵌入一个处理器核。
但大多数的嵌入式设计却是以软件为核心,以现有的硬件发展情形来看,多数情形下的接口都已经标准化,并不须要那么大的FPGA逻辑资源去设计太过繁芜的接口。

而且就目前看来SOPC干系的开拓工具还非常的不完善,以ARM为代表的各种嵌入式处理器开拓工具却早已深入民气,大多数以ARM为核心的SOC芯片供应了大多数标准的接口,大量成系列的单片机/嵌入式处理器供应了干系行业所须要的硬件加速电路,须要专门定制硬件场合确实很少。

常日是在一些特种行业才会在这方面有非常急迫的需求。
纵然目前Xilinx将ARM的硬核加入到FPGA里面,相信目前的情形不会有太大改不雅观,不要忘了很多老掉牙的8位单片机还在嵌入式领域混呢,嵌入式紧张不是靠硬件的差异而更多的是靠软件的差异来表示代价的。

曾经看好的是 cypress的Psoc这一想法。
和SOPC系列不同,Psoc的思想史载SOC芯片里面去嵌入那么一小块FPGA,那这样实在可以知足嵌入式的那些眇小的硬件接口差异,比如某个利用须要4个USB,而常日的处理器不会供应那么多,就可以用这么一块FPGA来供应多的USB接口。
而另一种利用须要6个 UART,也可以用同样的方法完成。

对付嵌入式设计公司来说他们只须要备货一种芯片,就可以知足这些设计中各种眇小的差异变革。
其紧张的差异化仍旧是通过软件来完成。
但目前cypress过于封闭,如果其采取ARM作为处理器内核,借助其完全的工具链。
同时开放IP互助,让大量的第三方为它供应IP设计,实在是很有希望的。
但目前cypress的日子怕不太好过,Psoc的思想也不知道何时能够发光。

第四个方向:数字逻辑知识是根本。
无论是FPGA的哪个方向,都离不开数字逻辑知识的支撑。
FPGA说白了是一种实现数字逻辑的办法而已。
如果连最基本的数字逻辑的知识都有问题,学习FPGA的欲望只是空中楼阁而已。
而这,正好是很多菜鸟最不愿意去面对的问题。
数字逻辑是任何电子电气类专业的专业根本知识,也是必须要学好的一门课。
很多人无非是学习了,考个试,完了。

如果不能将数字逻辑知识烂熟于心,养成良好的设计习气,学FPGA到末了仍旧是雾里看花水中望月,始终是一场空的。
以上四条只是我目前总结菜鸟们在学习FPGA时所最随意马虎跑偏的地方,FPGA的学习实在就像学习围棋一样,学会如何在棋盘上落子很随意马虎,成为一位高手却是难上加难。
要真成为李昌镐那样的神一样平常的选手,除了靠刻苦专研,恐怕还确实得要一点天赋。

划重点内容:

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》,以便碰着一些语法问题的时候能查一下。

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》。

3、节制设计方法和设计原则

你可能创造你综合出来的电路只管没错,但有很多警告。
这个时候,你得学会同步设计原则、优化电路,是速率优先还是面积优先,时钟树该当若何设计,若何同步两个异频时钟等等。
推举的教材是《FPGA威信指南》、《IP核芯志-数字逻辑设计思想》、《Altera FPGA/CPLD设计》第二版的根本篇和高等篇两本。
学会加快编译速率(增量式编译、LogicLock),静态时序剖析(timequest),嵌入式逻辑剖析仪(signaltap)就算是通关了。
如果有不懂的地方可以暂时跳过,由于这部分还须要足量的实践,才能有较深刻的理解。

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。
脚本,意味着一劳永逸。

5、增强理论根本

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

旗子暗记处理——旗子暗记与系统、数字旗子暗记处理、数字图像处理、当代数字旗子暗记处理、盲旗子暗记处理、自适应滤波器事理、雷达旗子暗记处理

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

无线通信——旗子暗记与系统、数字旗子暗记处理、通信事理、移动通信根本、随机过程、信息论与编码

CPU设计——打算机组成事理、单片机、打算机体系构造、编译事理

仪器仪表——仿照电子技能、高频电子线路、电子丈量技能、智能仪器事理及运用

掌握系统——自动掌握事理、当代掌握理论、过程掌握工程、模糊掌握器理论与运用

压缩、编码、加密——数论、抽象代数、当代编码技能、信息论与编码、数据压缩导论、运用密码学、音频信息处理技能、数字视频编码技能事理

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

6、学会利用MATLAB仿真

设计FPGA算法的时候,多多少少都会用到MATLAB,比如CRC的系数矩阵、数字滤波器系数、各种表格和文本处理等。
此外,MATLAB还能用于调试HDL(用MATLAB的打算结果跟用HDL算出来的一步步对照,可以知道哪里出问题)。
推举的教材是《MATLAB宝典》和杜勇的《数字滤波器的MATLAB与FPGA实现》。

7、足量的实践

这个时候你至少读过几遍芯片手册(官网有),然后可以针对自己的方向,做一定量的实践了(期间要保持良好的代码风格,增加元件例化语句的可读性,绘制流程图/时序图,撰写文档的习气)。
比如:通信类的可以做调制解调算法,仪表类的可以做总线剖析仪等等。
不过这些算法,在书上只是给了个公式、框图而已,跟实际的差距很大,你乃至会以为书上的东西都很肤浅。
那么,你可以在知网、百度文库、EETOP论坛、opencores、ChinaAET、Q群共享、博客上面找些干系资料(校外的朋友可以在淘宝买个知网账号)。
实在,当你到了这个阶段,你已经达到了职业级水平,有空就多理解一些前沿技能,这将有助于你的职业方案。

在事情当中,或许你须要关注很多协议和行业标准,协议可以在EETOP上面找到,而标准(如:国家标准GB和GB/T,国际标准ISO)就推举《标准网》和《标准分享网》。

8、图像处理(这部分只写给想学图像处理的朋友,也是由浅入深的路线)

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

基于MATLAB或OpenCV的图像处理。
有C/C++根本的可以学习OpenCV,否则的话,建议学MATLAB。
这个阶段下,只要学会大略的调用函数即可,暂时不用穷究实现的细节。
推举《数字图像处理matlab版》、《学习OpenCV》。

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

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

进一步研讨数学。
要在算法上更上一层,一定须要更多的数学,以是这里建议学习实剖析、泛涵剖析、小波剖析等。

(下面这两个阶段是给感兴趣的朋友先容的。

9、数电的尽头是模电

现在FPGA内部的事情是难不倒你的,但是旗子暗记出了FPGA,你就没法掌握了。
这个时候必须学好模电。
比如:电路剖析、仿照电子技能、高频电子线路、PCB设计、EMC、SI、PI等等,能设计出一块带两片DDR3的FPGA开拓板,就算通关了。

10、学无止境

能到这个境界,解释你已经很厉害了,但是还有很多东西要学的,由于FPGA常常要跟CPU交互,也便是说你得常常跟软件工程师互换,以是也得懂点软件方面的知识。
比如ARM(Xilinx的ZYNQ和Altera的SOC会用到ARM的硬核)、DSP、Linux、安卓、上位机(QT、C#、JAVA)都可以学一下,反正学无止境的。

11、其它问题

a、为什么不推举学习NIOS II和MicroBlaze等软核?

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

加上软核,可能会影响到其它的逻辑的功能。
这是在资源并不十分充足的情形下,再加上软核,导致布局布线变得相称困难。

软核不开源,涌现Bug的时候,不随意马虎调试。

工程上很少利用,极有可能派不上用场。

b、为什么不推举0根本学习ZYNQ或SOC?

随意马虎让人有傍同心理。
傍同心理是指一个人通过渲染与自己有亲近关系的人的精彩,来粉饰和填补自己在这方面的不敷,从而得到生理上的平衡。
自己在学习很厉害的东西,然后也觉得自己很厉害,但这只是错觉而已。

入门该当学习只管即便大略的东西,要么专心学习ARM,要么专心学习FPGA。
这样更随意马虎有造诣感,增强信心。

ZYNQ和SOC的运用领域并不广,还有很多人没听过这种东西,导致求职的不利。

开拓工具编译韶光长,摧残浪费蹂躏较多韶光。

绝大多数事情,都只是卖力一方面,也便是说另一方面,很有可能派不上用场。

c、为什么已经存在那么多IP核,仍旧须要写HDL?

问这种问题的,一样平常是学生,他们没有做过产品,没有碰着过工程上的问题。

IP核并非万能,不能知足所有需求。

只管即便少用闭源IP核,一旦出问题,这种黑匣子很可能让产品难产。

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

标签:

相关文章