侵权投诉

fpga论坛推荐_fpga开发难吗

2020-11-10 14:29 次阅读

fpga论坛推荐

第一名

http://bbs.elecfans.com/zhuti_fpga_1.html

elecfans论坛的FPGA模块还是比较活跃的,有各种FPGA工具使用问题的一些讨论。

第二名

hifpga.com

准确地说这是一个FPGA论坛,更是一个FPGA的问答社区,整个社区非常活跃,它鼓励人们更快更准确地提问和回答问题,避免FPGA技术论坛中常见的无意义的顶帖和COPY式回帖。整个论坛的主题都是FPGA相关的,是一个专注于FPGA的论坛。这个论坛中大都是一些具体的解决FPGA相关问题的办法,也会有一些FPGA相关的技术细节文章进行分享,当然还有XILINX、ALTERALATTICEMICROSEMIC等FPGA器件的维基(wiki),对了这个论坛还有一个优点就是可以在手机端进行浏览的问答,整站界面做了移动自适应匹配。

第三名

http://bbs.eetop.cn/forum-68-1.html

这个论坛主要是偏向IC设计的,由于FPGA在IC设计中往往属于前端设计,因此其前端设计板块有一些FPGA的相关讨论,里面有一些非常不错的分享,但是论坛这两年活跃度有点低。

第四名

http://bbs.21ic.com/icfilter-typeid-119-83.html

21IC是一个很老的电子社区了,FPGA在这个网站是一个子板块,由于网站本身是单片机起家,里面更多的聊的是一些比较低端的FPGA或者CPLD相关器件,这两年气氛也不是很活跃。

第五名

http://blog.chinaaet.com/fpga

电子技术应用期刊的网站,准确地讲它不算一个论坛,里面有一个不错的FPGA博客版块,有比较多的FPGA相关文章,大部分文章是有干货的,当然也有一些夹杂不少的培训班的广告。

第六名

http://www.eda365.com/forum-50-1.html

这是一个讨论PCB技术起家的论坛,FPGA在里面是一个版块,整个版块的活跃度比较高,提问比较基础。

第七名

www.heijin.org/

这是黑金开发板的论坛,如果你买了他们家的板子可以去这个论坛提问看看。

第八名

www.fpgaw.com/

这是一个培训机构的FPGA论坛,有一些基础的FPGA学习资料

第九名

http://www.openhw.org/

这个论坛有不少的FPGA开源项目,很多很有意思,可以学到不少东西。

第十名

http://forums.xilinx.com/

这是xilinx的官方讨论区,论坛本身是英语的,但是有一些人在里面用中文提问也得到了答复。

fpga开发难吗

问:零基础,想学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相乘,这样一个32bit*32bit的乘法运算转换成了四个16bit*16bit的乘法运算和三个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语言的英语全称是:HardwareDeionLanguage,注意这个单词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位单片机还在嵌入式领域混呢,嵌入式主要不是靠硬件的差异而更多的是靠软件的差异来体现价值的。

曾经看好的是cypressPsoc这一想法。和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、DesignCompiler、Synopsys的VCS、iverilog、Lattice的Diamond、Microsemi/Actel的Libero、SynplIFypro),然后再模仿着写,最后不看书也能写出来。编译完代码,就打开RTL图,看一下综合出来是什么样的电路。

HDL是硬件描述语言,突出硬件这一特点,所以要用数电的思维去思考HDL,而不是用C语言或者其它高级语言,如果不能理解这句话的,可以看《什么是硬件以及什么是软件》。在这一阶段,推荐的教材是《Verilog传奇》、《VerilogHDL高级数字设计》或者是《用于逻辑综合的VHDL》。不看书也能写出个三段式状态机就可以进入下一阶段了。

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

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

现在,你可以设计一些数字电路了,像交通灯、电子琴、DDS等等,推荐的教材是夏老《Verilog数字系统设计教程》(第三版)。在这一阶段,你要做到的是:给你一个指标要求或者时序图,你能用HDL设计电路去实现它。这里你需要一块开发板,可以选Altera的cycloneIV系列,或者Xilinx的Spantan6。还没掌握HDL之前千万不要买开发板,因为你买回来也没用。这里你没必要每次编译通过就下载代码,咱们用modelsim仿真(此外还有QuestaSim、NCverilog、Diamond的Active-HDL、VCS、Debussy/Verdi等仿真工具),如果仿真都不能通过那就不用下载了,肯定不行的。在这里先掌握简单的testbench就可以了。推荐的教材是《WRITINGTESTBENCHESFunctionalVerificationofHDLModels》。

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

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

4、学会提高开发效率

因为Quartus和ISE的编辑器功能太弱,影响了开发效率。所以建议使用Sublimetext编辑器中代码片段的功能,以减少重复性劳动。Modelsim也是常用的仿真工具,学会TCL/TK以编写适合自己的DO文件,使得仿真变得自动化,推荐的教材是《TCL/TK入门经典》。你可能会手动备份代码,但是专业人士都是用版本控制器的,所以,为了提高工作效率,必须掌握GIT。文件比较器BeyondCompare也是个比较常用的工具。此外,你也可以使用SystemVerilog来替代testbench,这样效率会更高一些。如果你是做IC验证的,就必须掌握SystemVerilog和验证方法学(UVM)。推荐的教材是《WritingTestbenchesusingSystemVerilog》、《TheUVMPrimer》、《SystemVerilog1800-2012语法手册》。

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

5、增强理论基础

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

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

接口应用——如:UART、SPI、IIC、USB、CAN、PCIE、RapidIO、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基础,目的让大家对图像处理有个感性的认识,而不是一上来就各种各样的公式推导。推荐《PhotoshopCS6完全自学教程》。

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

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

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

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

收藏 人收藏
分享:

评论

相关推荐

如何使用FPGA实现三相变频电源系统的设计

基于现场可编程门阵列(Field Programmable Gate Array,FPGA)设计了一....
发表于 03-02 18:14 6次 阅读
如何使用FPGA实现三相变频电源系统的设计

如何使用FPGA实现DDS数字移相信号发生器的原理

本文讨论了基于FPGA芯片的直接数字频率合成器(DDS)的设计方法。因为DDS 的实现依赖于高速、高....
发表于 03-02 17:11 9次 阅读
如何使用FPGA实现DDS数字移相信号发生器的原理

在Petalinux中应该如何确认dev目录下设备的对应关系?

通常 Kernel 一加载起来,大家能在/dev目录下可以看到一大堆的设备。这些设备都是 Kerne....
的头像 FPGA开发圈 发表于 03-02 14:34 53次 阅读
在Petalinux中应该如何确认dev目录下设备的对应关系?

v零基础学FPGA(二)关于触发器

发表于 03-02 14:25 0次 阅读
v零基础学FPGA(二)关于触发器

使用FPGA实现ROM的正弦波发生器详细资料说明

本文档的主要内容详细介绍的是使用FPGA实现ROM的正弦波发生器详细资料说明免费下载。
发表于 03-02 13:52 8次 阅读
使用FPGA实现ROM的正弦波发生器详细资料说明

FPGA与单片机实现串行通信的资料详细说明

介绍了单片机与FPGA 异步串行通信的实现方法,给出了系统结构原理框图及其部分VHDL 程序,并定义....
发表于 03-02 13:52 8次 阅读
FPGA与单片机实现串行通信的资料详细说明

浅谈国产FPGA迈向高端的三大挑战

相比几十亿出货量,市场规模千亿美元的CPU和GPU,市场规模还未超百亿美元的FPGA并非大众关注的焦....
发表于 03-02 09:53 210次 阅读
浅谈国产FPGA迈向高端的三大挑战

如何选择国产化替代FPGA产品?

国产FPGA正在面临挑战 如何选择国产化替代FPGA产品 ...
发表于 03-02 06:30 0次 阅读
如何选择国产化替代FPGA产品?

如何使用ARM和FPGA实现圆网印花机控制器

根据传统圆网印花机的结构以及存在的问题,提出了基于ARM和FPGA的嵌入式圆网印花机控制器的设计方案....
发表于 03-01 16:51 15次 阅读
如何使用ARM和FPGA实现圆网印花机控制器

2021年程序员必学的五种编程语言

如果您是编程新手,不知道从哪里开始,这篇文章正好适合您。现在有超过100种编程语言(Goolge说有....
的头像 如意 发表于 03-01 15:52 115次 阅读
2021年程序员必学的五种编程语言

中国成功研发新型可编程光量子计算芯片

中国科研人员主导的国际团队26日在美国《科学进展》期刊上发表论文说,他们研发出一款新型可编程光量子计....
的头像 如意 发表于 03-01 15:28 250次 阅读
中国成功研发新型可编程光量子计算芯片

TDMA基础帧的仿真与FPGA实现的详细资料说明

TDMA,即Time Division Multiple Access 时分多址,时分多址是把时间分....
发表于 03-01 15:25 33次 阅读
TDMA基础帧的仿真与FPGA实现的详细资料说明

我们应该如何编程操作多功能电力仪表

大家一般在应用上操作多功能电力仪表的情况下,必须更改它的实际变量值,在编程这一块,大家又应当如何去应....
发表于 03-01 11:45 59次 阅读
我们应该如何编程操作多功能电力仪表

不通过JTAG线来固化加载xilinx公司的fpga程序。有偿!

1. 现有一块xc7vx690tffg芯片。 2. 之前写的fpga程序都是通过在vivado上JTAG线的方式,将mcs文件烧写到flash中,现听说部分...
发表于 03-01 10:45 3次 阅读
不通过JTAG线来固化加载xilinx公司的fpga程序。有偿!

阶段3 跳出菜鸟阶段 理解FPGA设计本质

发表于 02-28 15:05 101次 阅读
阶段3 跳出菜鸟阶段 理解FPGA设计本质

FPGA技术及其发展趋势探讨

在电子设计中FPGA 技术得到了广泛应用,而且还成为电子系统构建中的主要手段,本文章首先对FPGA ....
发表于 02-28 11:31 33次 阅读
FPGA技术及其发展趋势探讨

Sparrow开发板电路原理图免费下载

Sparrow开发板原理图,版本C。 包含Cyclone IV EP4CE15F23C8 FPGA,....
发表于 02-28 08:00 15次 阅读
Sparrow开发板电路原理图免费下载

Win10 安装Quartus Prime 20.1

1,到官方网站上下载Quartus Prime 20.1 Lite版本,该版本免费,无需授权。其中2是主文件,必须要下。3是modelsim,可以方便...
发表于 02-27 12:29 0次 阅读
Win10 安装Quartus Prime 20.1

如何在FPGA芯片中支持不同的IO电平标准

上述一些I/O标准要求VCCO和/或VREF电压。这些电压由外部提供并连接到为IOB组(称为组)提供....
发表于 02-26 17:23 51次 阅读
如何在FPGA芯片中支持不同的IO电平标准

Go语言在世界各地的使用情况如何?

【导读】Go语言在世界各地的使用情况如何?数据说话,带你直观感受什么叫“酷小孩都用的语言”! Jet....
的头像 Linux爱好者 发表于 02-26 14:10 222次 阅读
Go语言在世界各地的使用情况如何?

SERDES FPGA设计手册免费下载

为了学习xilinx serdes 原语的使用,以及交流学习经验,在工程项目中方便的应用SERDES....
发表于 02-26 10:04 28次 阅读
SERDES FPGA设计手册免费下载

FPGA的基本结构详细说明

FPGA 由6 部分组成, 分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM 、丰富的....
发表于 02-25 17:55 102次 阅读
FPGA的基本结构详细说明

华为自研编程语言仓颉曝光

企查查App显示,近日,华为技术有限公司申请注册“仓颉语言”商标,国际分类为42类,设计研究。
的头像 如意 发表于 02-25 17:38 995次 阅读
华为自研编程语言仓颉曝光

华为申请注册“仓颉语言”商标 自研编程语言

2月25日消息,企查查App显示,近日,华为技术有限公司申请注册“仓颉语言”商标,国际分类为42类,....
的头像 工程师邓生 发表于 02-25 16:46 370次 阅读
华为申请注册“仓颉语言”商标 自研编程语言

求解答!

有大佬说编程可以改动电流流向,请问这是真的吗? ...
发表于 02-25 15:28 105次 阅读
求解答!

Xilinx正在极大地发展FPGA市场

赛灵思本周针对数据中心发布了一系列声明,例如该公司推出了新系列的可编程网络100Gb / s Sma....
的头像 我快闭嘴 发表于 02-25 14:15 243次 阅读
Xilinx正在极大地发展FPGA市场

人工智能和编程将进入中小学教育

春回大地,全国多地陆续开学,而长沙2021年春季中小学大有不同,据新闻报道人工智能和编程将进入中小学....
的头像 电子魔法师 发表于 02-25 11:38 719次 阅读
人工智能和编程将进入中小学教育

【紫光同创国产FPGA教程】【第十八章】AD实验之AD7606波形显示

本实验练习使用ADC,实验中使用的ADC模块型号为AN706,最大采样率200Khz,精度为16位。....
的头像 FPGA技术专栏 发表于 02-25 11:20 832次 阅读
【紫光同创国产FPGA教程】【第十八章】AD实验之AD7606波形显示

如何使用DSP和FPGA实现导航计算机系统的信息融合研究

本文首先简单介绍某小型基于DSP 和FPGA 的导航计算机系统,然后根据其子系统输出的有效信息设计可....
发表于 02-25 11:06 20次 阅读
如何使用DSP和FPGA实现导航计算机系统的信息融合研究

如何实现两块FPGA之间的通信总结

1、两块fpga 之间采用12 根线连接,包括8 根数据线, 2 根同步时钟线, 2 根使能信号线。
发表于 02-25 09:58 27次 阅读
如何实现两块FPGA之间的通信总结

【紫光同创国产FPGA教程】【第十七章】AD实验之AD9238波形显示

本实验练习使用ADC,实验中使用的ADC模块型号为AN9238,最大采样率65Mhz,精度为12位。....
的头像 FPGA技术专栏 发表于 02-24 14:47 678次 阅读
【紫光同创国产FPGA教程】【第十七章】AD实验之AD9238波形显示

【紫光同创国产FPGA教程】【第十六章】SOBEL边缘检测例程

在图像中,“边缘”指的是临界的意思。一幅图像的“临界”表示为图像上亮度显著变化的地方,边缘指的是一个....
的头像 FPGA技术专栏 发表于 02-24 14:46 850次 阅读
【紫光同创国产FPGA教程】【第十六章】SOBEL边缘检测例程

编程中的同步和异步意味着什么?

承接上文《终于明白了,一文彻底理解I/O多路复用》。在这篇文章中我们来讨论一下到底什么是同步,什么是....
的头像 玩转单片机 发表于 02-23 16:02 181次 阅读
编程中的同步和异步意味着什么?

2021年将成为激光雷达前装规模量产元年

预计2023年搭载车型产量突破30万, 2030年全球前装量产市场规模将超230亿美元。激光雷达乃高....
的头像 我快闭嘴 发表于 02-23 10:05 956次 阅读
2021年将成为激光雷达前装规模量产元年

基于FPGA cylone II芯片实现智能脉冲电源的设计

只有设计出了高频率的、参数化的脉冲发生器,脉冲加工电源的精度、参数化才可以实现。该电源系统中采用的是....
发表于 02-23 10:01 941次 阅读
基于FPGA cylone II芯片实现智能脉冲电源的设计

数字下变频的FPGA实现

发表于 02-22 15:09 202次 阅读
数字下变频的FPGA实现

Enclustra瑞苏盈科_极速开启您的FPGA项目

FPGA特有的技术复杂性可以用强大的标准FPGA或SoC核心板模块封装,这使硬件设计甚至比使用传统的....
发表于 02-22 14:02 778次 阅读
Enclustra瑞苏盈科_极速开启您的FPGA项目

【FPGA ZYNQ Ultrascale+ MPSOC教程】33.BRAM实现PS与PL交互

有时CPU需要与PL进行小批量的数据交换,可以通过BRAM模块,也就是Block RAM实现此要求。....
的头像 FPGA技术专栏 发表于 02-22 13:51 599次 阅读
【FPGA ZYNQ Ultrascale+ MPSOC教程】33.BRAM实现PS与PL交互

【紫光同创国产FPGA教程】【第十五章】OV5640摄像头显示例程

OV5640的寄存器配置是通过FPGA的I2C(也称为SCCB接口)接口来配置。用户需要配置正确的寄....
的头像 FPGA技术专栏 发表于 02-22 13:45 552次 阅读
【紫光同创国产FPGA教程】【第十五章】OV5640摄像头显示例程

采用FPGA和MicroBlaze进行嵌入式系统设计

本文采用FPGA 和MicroBlaze 进行嵌入式系统设计,文中在分析了FFT算法后,描述了运算的蝶形单元,地址生成单元及FFT...
发表于 02-22 07:36 0次 阅读
采用FPGA和MicroBlaze进行嵌入式系统设计

单片机的编程架构是咋样的?

新手必看之单片机的编程架构
发表于 02-22 06:20 0次 阅读
单片机的编程架构是咋样的?

三种FPGA界最常用的跨时钟域处理法式

跨时钟域处理是FPGA设计中经常遇到的问题,而如何处理好跨时钟域间的数据,可以说是每个FPGA初学者的必修课。如果是还在...
发表于 02-21 07:00 404次 阅读
三种FPGA界最常用的跨时钟域处理法式

正点原子:FPGA视频教程

我们都知道FPGA是一个很难入门行业,对于专业知识要求也比较高,但是一旦掌握这一行的知识,薪资待遇还....
的头像 发烧友实验室 发表于 02-20 17:44 855次 阅读
正点原子:FPGA视频教程

从入门到高级替换If-Else的5种方法示例

本文并不肯定或者否定哪一种写法,仅仅为大家提供一些其他的编码思路或者一些值得借鉴的点子。 设计更好的....
的头像 算法与数据结构 发表于 02-20 16:27 307次 阅读
从入门到高级替换If-Else的5种方法示例

【紫光同创国产FPGA教程】【第十四章】SD卡读取BMP图片显示例程

本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明....
的头像 FPGA技术专栏 发表于 02-20 13:44 513次 阅读
【紫光同创国产FPGA教程】【第十四章】SD卡读取BMP图片显示例程

【紫光同创国产FPGA教程】【第十三章】字符显示实验

在HDMI测试实验中讲解了HDMI显示原理和显示方式,本实验介绍如何使用FPGA实现字符显示,通过这....
的头像 FPGA技术专栏 发表于 02-19 13:43 499次 阅读
【紫光同创国产FPGA教程】【第十三章】字符显示实验

【紫光同创国产FPGA教程】【第十二章】SD卡音乐播放例程

WAV文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resour....
的头像 FPGA技术专栏 发表于 02-19 13:42 699次 阅读
【紫光同创国产FPGA教程】【第十二章】SD卡音乐播放例程

【紫光同创国产FPGA教程】【第十一章】录音与播放例程

开发板通过40PIN的扩展口和AN831音频模块连接,AN831音频模块使用WOLFSON公司的WM....
的头像 FPGA技术专栏 发表于 02-19 13:41 700次 阅读
【紫光同创国产FPGA教程】【第十一章】录音与播放例程

基于EP1C6Q240C8芯片和CORD IC算法实现自然对数变换器的应用方案

在需要硬件实现对数运算的场合,其精度和速度是必须考虑的问题。目前硬件实现对数变换的方法主要有查表法、....
发表于 02-19 11:19 853次 阅读
基于EP1C6Q240C8芯片和CORD IC算法实现自然对数变换器的应用方案

莱迪思推出更优成本、可灵活配置的高性能EtherCAT伺服驱动方案

FPGA控制电流环,高性能,高精度;高集成度,以更优成本实现单/多轴应用;可灵活搭配不同配置 低功耗....
发表于 02-16 05:22 1263次 阅读
莱迪思推出更优成本、可灵活配置的高性能EtherCAT伺服驱动方案

如何使用FPGA实现脉冲信号载波频率同步环

对脉冲信号载波频率的同步问题,提出一种快速高精度的数字锁频环路。该环路采用改进的相位差分频率估计算法....
发表于 02-05 17:35 169次 阅读
如何使用FPGA实现脉冲信号载波频率同步环

如何使用FPGA实现高效的宽带数字接收机

针对电子战中的宽带侦察数字信道化接收机,提出了基于短时傅里叶变换的宽带数字信道化接收机的改进方法,给....
发表于 02-05 17:35 143次 阅读
如何使用FPGA实现高效的宽带数字接收机

如何使用FPGA实现高分辨率图像DCT域的增强

为了提高高分辨率图像的质量.实现快速的图像增强算法,提出在离散余弦变换(DCT)的对比度测度下。通过....
发表于 02-05 17:35 159次 阅读
如何使用FPGA实现高分辨率图像DCT域的增强

一种应用于实时图像系统的USB通信设计

针对小型化实时图像系统对移动性和高数据传输速率的迫切需求,提出了一种由USB2.0芯片、FPGA和图....
发表于 02-05 17:35 159次 阅读
一种应用于实时图像系统的USB通信设计

如何使用FPGA实现图像动态范围压缩算法

灰度动态范围压缩是一种基本的图像增强处理方法,广泛应用于图像识别,视频监控等领域中。结合这一应用,提....
发表于 02-05 17:00 56次 阅读
如何使用FPGA实现图像动态范围压缩算法

使用FPGA实现的判决反馈均衡器结构详细资料说明

自适应均衡算法是无线通信系统中解决多径效应的主要手段,由于无线通信系统带宽的不断增加,如何提高自适应....
发表于 02-05 17:00 50次 阅读
使用FPGA实现的判决反馈均衡器结构详细资料说明

如何使用FPGA实现智能车路径图像识别的预处理设计

本文以智能车辆视觉导航系统为研究平台,以车载数字式CMOS摄像头获取的实时路径图像信号为信号源,进行....
发表于 02-05 17:00 49次 阅读
如何使用FPGA实现智能车路径图像识别的预处理设计

如何使用FPGA实现网口传输的LED同步屏控制系统

介绍一种以订BA为核心,基于网口传输的全彩高灰度同步LED显示屏控制系统的设计方法。该设计改变传统设....
发表于 02-05 17:00 76次 阅读
如何使用FPGA实现网口传输的LED同步屏控制系统

使用FPGA实现循环冗余校验CRC编码器的设计资料说明

介绍了循环冗余校验(CRC)编码器的设计及FPGA实现过程,采用原理图输入法对整个系统进行了编译和仿....
发表于 02-05 17:00 50次 阅读
使用FPGA实现循环冗余校验CRC编码器的设计资料说明

Verilog HDL的学习教程电子书免费下载

Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模....
发表于 02-05 16:24 39次 阅读
Verilog HDL的学习教程电子书免费下载

TMP411 ±1°C Programmable Remote/Local Digital Out Temperature Sensor

TMP411设备是一个带有内置本地温度传感器的远程温度传感器监视器。远程温度传感器,二极管连接的晶体管通常是低成本,NPN或PNP型晶体管或二极管,是微控制器,微处理器或FPGA的组成部分。 远程精度为±1 °C适用于多个设备制造商,无需校准。双线串行接口接受SMBus写字节,读字节,发送字节和接收字节命令,以设置报警阈值和读取温度数据。 TMP411器件中包含的功能包括:串联电阻取消,可编程非理想因子,可编程分辨率,可编程阈值限制,用户定义的偏移寄存器,用于最大精度,最小和最大温度监视器,宽远程温度测量范围(高达150°C),二极管故障检测和温度警报功能。 TMP411器件采用VSSOP-8和SOIC-8封装。 特性 ±1°C远程二极管传感器 ±1°C本地温度传感器 可编程非理想因素 串联电阻取消 警报功能 系统校准的偏移寄存器 与ADT7461和ADM1032兼容的引脚和寄存器 可编程分辨率:9至12位 可编程阈值限...
发表于 09-19 16:35 243次 阅读
TMP411 ±1°C Programmable Remote/Local Digital Out Temperature Sensor

TMP468 具有引脚可编程的总线地址的高精度远程和本地温度传感器

TMP468器件是一款使用双线制SMBus或I 2 C兼容接口的多区域高精度低功耗温度传感器。除了本地温度外,还可以同时监控多达八个连接远程二极管的温度区域。聚合系统中的温度测量可通过缩小保护频带提升性能,并且可以降低电路板复杂程度。典型用例为监测服务器和电信设备等复杂系统中不同处理器(如MCU,GPU和FPGA)的温度。该器件将诸如串联电阻抵消,可编程非理想性因子,可编程偏移和可编程温度限值等高级特性完美结合,提供了一套精度和抗扰度更高且稳健耐用的温度监控解决方案。 八个远程通道(以及本地通道)均可独立编程,设定两个在测量位置的相应温度超出对应值时触发的阈值。此外,还可通过可编程迟滞设置避免阈值持续切换。 TMP468器件可提供高测量精度(0.75°C)和测量分辨率(0.0 625°C)。该器件还支持低电压轨(1.7V至3.6V)和通用双线制接口,采用高空间利用率的小型封装(3mm×3mm或1.6mm×1.6mm),可在计算系统中轻松集成。远程结支持-55°C至+ 150°C的温度范围。 特性 8通道远程二极管温度传感器精度:±0.75&...
发表于 09-18 16:05 160次 阅读
TMP468 具有引脚可编程的总线地址的高精度远程和本地温度传感器