为什么你会感觉FPGA难学?若何进修FPGA?

电子产品世界 电子产品世界

[原文来自:www.tt44.com]

 问:本人零根蒂,想学FPGA,求有经验的人说说,我应该从哪下手,应该看什么教程,应该用什么进修板和斥地板,看什么书等,进展有经验的好心人可以给我一些指导。

[本文来自:www.tt44.com]


若是想速成,那就上彀看视频吧,如许首要是面临应用的,一个小时内让你的板子运行起来。早期起来的快,活学活用,就是后期没有系统理论支撑,会有些吃力,稀奇是大项目,那完满是个悲剧。


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 生怕是天方夜谭。那么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触发器来完成。但这究竟只实现了4输入1输出的逻辑电路罢了,平日逻辑电路的规模那是相当的大。

  

可编程连线

那怎么办呢?这个时候就需要用到可编程连线了。在这些连线上有好多用存储器掌握的链接点,经由改写对应存储器的值就能够确定哪些线是连上的而哪些线是断开的。这就能够把好多可编程逻辑单元组合起来形成大型的逻辑电路。


可编程的IO

任何芯片都必然有输入引脚和输出引脚。有可编程的IO能够随意的界说某个非专用引脚(FPGA中有专门的非用户可使用的测试、下载用引脚)为输入照样输出,还能够对IO的电平尺度进行设置。


总归一句话,FPGA之所以可编程是因为能够经由特别的01代码建造成一张张 “真值表”,并将这些“真值表”组合起来以实现大规模的逻辑功能。

  

不认识FPGA内部构造,就不克领略最终代码若何变到FPGA里面去的,也就无法深入的认识若何可以充裕运用FPGA。如今的FPGA,不单单是有前面讲的那三块,还有好多专用的硬件功能单元,若何行使好这些单元实现复杂的逻辑电路设计,是从菜鸟迈向高手的路上必需要战胜的障碍。而这一切,照样必需先从认识FPGA内部逻辑及其工作道理做起。


2. 错误懂得HDL说话,怎么看都看不出硬件构造

HDL说话的英语全称是:Hardware Deion Language,注重这个单词Deion,而不是Design。老外为什么要用Deion这个词而不是Design呢?因为HDL的确不是用用来设计硬件的,而仅仅是用来描述硬件的。


描述这个词正确地反映了HDL说话的素质,HDL说话不外是已知硬件电路的文本示意形式罢了,只是将今后的电路用文本的形式描述出来罢了。而在编写说话之前,硬件电路应该已经被设计出来了。说话只不外是将这种设计转化为文字表达形式罢了。


硬件设计也是有分歧的抽象条理,每一个条理都需要设计。最高的抽象条理为算法级、然后依次是系统构造级、寄放器传输级、门级、物理邦畿级。


使用HDL的优点在于我们已经设计好了一个寄放器传输级的电路,那么用HDL描述今后转化为文本的形式,剩下的向更低条理的转换就能够让EDA对象去做了,这就大大的降低了工作量。这就是可综合的概念,也就是说在对这一抽象条理上硬件单元进行描述能够被EDA对象懂得并转化为底层的门级电路或其他构造的电路。

  

在FPGA设计中,就是在将这以抽象层级的定见描述成HDL说话,就能够经由FPGA斥地软件转化为上一点中所述的FPGA内部逻辑功能实现形式。HDL也能够描述更高的抽象层级如算法级或许是系统构造级,但今朝受限于EDA软件的成长,EDA软件还无法懂得这么高的抽象条理,所以HDL描述如许抽象层级是无法被转化为较低的抽象层级的,这也就是所谓的弗成综合。


所以在阅读或编写HDL说话,尤其是可综合的HDL,不该该看到的是说话自己,而是要看到说话背后所对应的硬件电路构造。

  

3. FPGA自己不算什么,一切皆在FPGA之外

FPGA是给谁用的?好多学校是为给学微电子专业或许集成电路设计专业的学生用的,其实这不外是好多学校受资金限制,买不起专业的集成电路设计对象而用FPGA对象替代罢了。其实FPGA是给设计电子系统的工程师使用的。这些工程师平日是使用已有的芯片搭配在一路完成一个电子设备,如基站、机顶盒、视频监控设备等。当现有芯片无法知足系统的需求时,就需要用FPGA来快速的界说一个能用的芯片。

  

前面说了,FPGA里面无法就是一些“真值表”、触发器、各类连线以及一些硬件资源,电子系统工程师使用FPGA进行设计时无非就是考虑若何将这些今后资源组合起来实现必然的逻辑功能罢了,而不必像IC设计工程师那样一向要存眷到最后芯片是不是可以被制造出来。


素质上和行使现有芯片组合成分歧的电子系统没有区别,只是需要存眷更底层的资源罢了。要想把FPGA用起来照样简洁的,因为无非就是那些资源,在懂得了前面两点再搞个实验板,跑跑实验,做点简洁的器材是能够的。而真正要把FPGA用好,那光懂点FPGA常识就远远不敷了。因为最终要让FPGA里面的资源若何组合,实现何种功能才能知足系统的需要,那就需要懂得更多更普遍的常识。

  

4. 数字逻辑常识是基本

无论是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. 图像处理

Photoshop

花一、两周的时间进修PS,对图像处理有个也许的认识,知道各类图片花样、直方图、色相、通道、滤镜、拼接等根基概念,并能使用它。这部门是0根蒂,目的让人人对图像处理有个感性的熟悉,而不是一上来就各类各样的公式推导。介绍《Photoshop CS6完全自学教程》。

  

基于MATLAB或OpenCV的图像处理

有C/C++根蒂的能够进修OpenCV,不然的话,建议学MATLAB。这个阶段下,只要学会简洁的挪用函数即可,临时不消深究实现的细节。介绍《数字图像处理matlab版》、《进修OpenCV》。

  

图像处理的根蒂理论

这部门的理论是需要高数、复变、线性代数、旌旗与系统、数字旌旗处理等根蒂,根蒂欠好的话,建议先补补根蒂再来。看不懂的理论也能够临时先放下,或许学到后背就天然而然地开窍了。介绍《数字图像处理》。

  

基于FPGA的图像处理

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

  

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

  

另外问题

1. 为什么不介绍进修MicroBlaze等软核?

性价比不高,一样的软核机能也许跟Cortex M3或M4差不多,用FPGA那么贵的器材去做一个机能一样的CPU,在工程上是非常不划算的。不如此外加一块M3。

  

加上软核,或者会影响到另外的逻辑的功能。这是在资源并不十分足够的情形下,再加上软核,导致结构布线变得相当难题。软核不开源,显现Bug的时候,不轻易调试。工程上很少使用,极有或者派不上用场。

  

2. 为什么不介绍0根蒂进修ZYNQ或SOC?

入门应该进修尽量简洁的器材,要么用心进修ARM,要么用心进修FPGA。如许更轻易有成就感,增加决心。

  

ZYNQ和SOC的应用范畴并不广,还有好多人没听过这种器材,导致求职的晦气。斥地对象编译时间长,虚耗较多时间。绝大多数工作,都只是负责一方面,也就是说另一方面,很有或者派不上用场。

  

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

问这种问题的,一样是学生,他们没有做过产物,没有碰到过工程上的问题。IP核并非全能,不克知足所有需求。尽量罕用闭源IP核,一旦出问题,这种黑匣子很或者让产物难产。


深入懂得底一条理,能够更好地使用高一条理。该轨则能够适用于所有编程说话。


↓↓↓↓点击阅读原文,查察更多新闻

电子产品世界微信号:EEPWweixin扫描二维码关注公众号
爱八卦,爱爆料。
小编推荐
  1. NO.1 12个意想不到的心梗预兆!如果不搭理...你懂得!

    在伟大危机光降之前,若何像地动的预告一般,识别早期旌旗,及早接纳办法,以避免日后生命和产业的伟大损失。 北京胸科病院心脏中心主任张健

  2. NO.2 毛细血管收缩可能导致阿尔茨海默病的认知下降

    点击上方蓝字,立刻免费存眷阿尔茨海默病。 β-淀粉样卵白引起的毛细血管收缩限制了阿尔茨海默病模型小鼠的脑血流量。按捺毛细血管收缩或者会

  3. NO.3 又七家医疗机构被罚,医疗废弃物处置一定要注意这些...

    导 语 医疗废料措置非小事,比来就有多数卫生室因为措置欠妥被惩罚了。 医疗废料分类欠妥 7家卫生室被惩罚 据齐鲁晚报·齐鲁壹点报道,6月20日,

  4. NO.4 郭力话健康:这份“吃药忌口清单”很全,最好存下来!

    全国广播电视金牌主持人郭力和您聊健康 郭力导读 : 流传大健康,传递正能量! 俗话说,吃药不忌口,坏了医生手。 今天,我们来看看常见药的忌

  5. NO.5 国家为什么禁止输液?危害全总结

    输液是将大剂量(一次给药在100ml以上)打针液单次往静脉滴注入体内的治疗体式。平日由玻璃或塑料成品盛装,不含防腐剂或抑菌剂,可将药物、营

  6. NO.6 早啊,健康来了!【2019.6.25】

    【首例!美国克利夫兰诊所完成宫内胎儿脊柱裂手术】 本年2月,世界有名医疗机构克利夫兰诊所成功地进行了首例宫内胎儿手术,修复了一个近23周

  7. NO.7 运动也能预防骨质疏松,这篇文章全说透了!

    视频:四川大学华西病院何成奇传授 — 骨康操 介绍 中国西部疑难危机重症诊疗的国度级中心,在复旦大学中国最佳专科声誉和最佳病院排行榜上,

  8. NO.8 |必读|十年后癌症幸存者超过2200万, 他们的刚性需求是?

    2018年诺贝尔医学或生理学奖得主本庶佑在深思旁观 比来在美国癌症协会年会时代,美国国度癌症中心的专家们展望下一个十年前景和重点会增加哪些

Copyright2018.天天资讯网资讯站,让大家及时掌握各行各业第一手资讯新闻!