12166|24

230

帖子

2

TA的资源

纯净的硅(初级)

楼主
 

小梅哥和你一起深入学习FPGA之初学者指南 [复制链接]

 
    感谢论坛给我的诸多照顾,通过和广大电子爱好者深入交流,我真正了解到了很多初学者的困惑。特权同学的深入浅出玩转FPGA系列教程确实不错,想当初,我也是靠着他的视频教程入门的。跟着特权同学的教程,我们能够很快学会QuartusII软件的使用,也能够做一些简单的实验。但是跟着他的教程走了大半年,后来又跟着黑金的教程走了大半年,还有CrazyBingoVIP教程。感觉他们都很厉害,能够做出那么优秀的设计,可是自己却一直不得要领,出了问题就是找不到原因,不知道怎么去解决。直到我在业界几位大师的带领下系统的学习了一段时间后,我才真正的能够自己进行独立的FPGA系统设计。总结我这一年半时间的FPGA学习经历,有以下心得:
一、          正确的设计方法尤为重要
        很多初学者,包括绝大多数的高校EDA课程,都没有教给学生正确的设计方法,可以这么说,很多高校的授课老师对这门技术的掌握也是连入门的要求都没达到,他们要么干脆不知道要仿真,要么就用Quartus II自带的绘制波形的仿真软件进行简单的测试,很少有老师教学生怎么去进行系统的仿真,更少有老师教学生进行testbench的编写。前天接触一个进行EDA教学的老师,课程实验要求里面说了要进行仿真,但是他不要求学生仿真,究其原因,他自己说的是因为他自己不会写testbench。每天在各大论坛,有那么多的学生在网上咨询着一些入门级的问题,让我们不得不嗟叹,很多大学的课程教学,是很失败的。我以前自学FPGA的时候,也觉得testbench的编写特别的难,想跟人学,却没有人教。导致一直止步不前,对自己所写的代码,执行时会是怎么样一个效果,心里完全没有一个清晰的概念。即那时候的学习,还只停留在代码层,完全没有理解FPGA的工作实质。只是看着别人这么写能行,我也就这么写了。当后来学会了仿真之后,突然一下子就全部理解了,知道了自己的每一行代码生成的电路在执行的时候会是什么情况,知道了FPGA时序设计的本质,知道了怎么通过仿真结果去修改和优化自己的设计。因此,这里我主要就是想说,FPGA设计并不难,只要学习者掌握了正确的学习方法。
二、          学习参考很重要
        在开始学习的过程中,总会遇到各种各样的困难:软件使用不熟练、语法不熟练、基本原理不熟练等等,都会严重打击初学者的积极性。那么针对这三个问题,小梅哥的建议则是:软件不熟练,就跟着视频教程一步一步走,Altera官网有一套视频教程,这些教程由官方出品,具有极高的参考价值,另外,目前网上很多FPGA爱好者也出了有视频教程,如果只是想单纯的学习软件的使用,跟着这些视频教程来走是非常适合的;语法不熟练,就需要去看书了,目前讲verilog语法的书满天飞,但是实际又有多大的价值呢。个人认为,夏宇闻老师的经典教材《Verilog数字设计教程》绝对是一本好书。这本书将Verilog语法的精髓讲的淋漓尽致,对于可综合语法和不可综合语法都很看重,这是其他教材所无法达到的。虽然做FPGA设计,代码必须能够是可综合的,这样才能生成有意义的电路,才能被下载到FPGA芯片中去执行。因此,绝大部分教材就只讲了可综合的设计语法,对于不可综合的语法,只是简单的一带而过,这其实是非常错误的观点。正确的FPGA设计流程,应该是在开发环境中仿真无误后才进行板级验证,而在仿真的过程中,要想使仿真结果能够全面可靠,不可综合的语法运用相当重要。只有运用好了这些语法,我们才能够编写出好的测试文件,对我们的设计进行全面的测试。因此,那些认为不可综合语法不重要的人,大部分对于仿真测试这一块没有深刻的认识。因此,他们也就无法进行很多创新设计和复杂的系统设计。对于连基本电路原理都不熟悉的人,小梅哥就感觉有点无能为力了,只能希望你自己能够多多在网上查阅资料,将基本原理弄清楚。小梅哥从小学六年级拆开自己一台崭新的复读机,接触花花绿绿的电路板开始,到如今,也已经有了十多个年头,这十年,小梅哥无时不刻不在被电子技术的强大魅力所吸引,义无反顾的投入到电子技术的学习中。电子技术的学习,需要激情,需要耐力。
给初学者的学习建议:
  • 最开始不要急于求成,一定要掌握正确的设计流程和设计方法,这里应该强烈要求大家使用modelsim-Altera软件对我们的编写代码进行仿真,而不是简单的“代码编写》编译》下板测试》修改代码”的方式,正确的方式应该为“代码编写》功能仿真调试》编译》门级仿真》下板测试”。仿真第一可以节约时间,第二可以让我们对FPGA内部的信号工作时序有非常清晰的认识,使我们能以最快的速度掌握FPGA的设计思想,第三可以培养自主设计能力;
  • 初学者,可能需要花费半个月左右的时间,每天写代码,甚至是抄代码,来熟悉语法。在这个过程中,一定会遇到各种各样的问题,大家肯定会遇到语法错误、符号错误、设计错误。即使没有错误,代码写好后也无法实现预期的效果,此时,最简单有效的方式就是在论坛提问,相信论坛上会有很多高手在这里。小梅哥实在不算是高手,但是我作为版主,也会天天在论坛里回答各种提问。
  • 依葫芦画瓢,这个过程大家可以对着我们开发板提供的教程和代码,依葫芦画瓢,来了解各种外设的驱动原理。我们的开发板所提供的代码都是只是简单的提供了对外设的功能验证,也是为了使初学者能够尽快的掌握。因此,当各位学习有一定感悟后,就可以开始着手自己修改、优化我们的代码,甚至重新编写属于你自己的代码;
  • 创新设计,此时,大家可以寻找手边现有的器件,如各种接口的ADC,传感器,来使用FPGA编写驱动,实现功能。当这一步完成后,大家就基本步入了FPGA开发的大门。此时,也就达到了FPGA初学者的水平。

建议的FPGA学习实验顺序:
基本外设:
  • 按键
  • 数码管
  • 蜂鸣器

时序器件:
  • ADCTLC549
  • DACTLC5620
  • PS2键盘
  • UART串口
  • IICAT24C64
  • SPI协议

存储器IP的使用:
  •        FIFO
  •        RAM
  •        ROM
  • ……

综合实验,将上面的一些外设,采用自顶向下的结构,设计一些综合实验,来实现自己的创意。
以上为FPGA初级班课程的学生需要达到的要求。更多资料请大家随时关注论坛FPGA板块中的资料更新。

此帖出自FPGA/CPLD论坛

最新回复

梅哥。我现在学FPGA也是卡在了testbench上,跟个黑金的教程抄代码,他们的教程没有给出testbench,我也无从下手。有没有什么好的素材、设计案例之类的资料可以学习编写testbench?   详情 回复 发表于 2019-6-24 23:32
点赞(1) 关注(5)
 

回复
举报

2万

帖子

74

TA的资源

管理员

沙发
 
小梅哥辛苦,这些对学习FPGA的人很重要 ,赞一个
此帖出自FPGA/CPLD论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼主辛苦了
此帖出自FPGA/CPLD论坛
 
 
 

回复

458

帖子

1

TA的资源

一粒金砂(高级)

4
 
小梅哥说的真是良心建议  给小梅哥一百个赞 ~\(≧▽≦)/~  
此帖出自FPGA/CPLD论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

5
 
赞一个。
此帖出自FPGA/CPLD论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

6
 
赞很多个
此帖出自FPGA/CPLD论坛
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

7
 
谢谢小梅哥,学习了!
此帖出自FPGA/CPLD论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

8
 
谢谢小梅哥,真是雪中送炭啊
此帖出自FPGA/CPLD论坛
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(初级)

9
 
谢谢楼主分享 学习了
此帖出自FPGA/CPLD论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

10
 
谢谢!
此帖出自FPGA/CPLD论坛
 
 
 

回复

22

帖子

0

TA的资源

一粒金砂(初级)

11
 
有FPGA开发板,不过一直没有自己研究,这会借小哥东风学学
此帖出自FPGA/CPLD论坛
 
 
 

回复

91

帖子

0

TA的资源

一粒金砂(中级)

12
 
本帖最后由 liwenz 于 2016-6-30 08:55 编辑

赞一个。我们就这么学fpga
此帖出自FPGA/CPLD论坛
 
 
 

回复

297

帖子

0

TA的资源

一粒金砂(中级)

13
 
赞一个
此帖出自FPGA/CPLD论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(中级)

14
 
赞!初学者表示很有用,会持续关注
此帖出自FPGA/CPLD论坛
 
 
 

回复

1950

帖子

4

TA的资源

版主

15
 
FPGA 学习,得有
Modelsim, 自己能搭简单的环境:生成CLK,复位,简单的时序,读写文件
板子+综合工具,调试简单的点灯,开关
   生成PLLcore,调用RAM和FIFO
   接口SPI是一定要写的,与I2C比较,初期写UART跟有用
   熟悉了上面的接口,写个简单的图像输入输出
   熟悉了上面的接口,写个简单的声音输入输出   
   外置如果有SRAM的话,先写上,没有的话,初期调用的MIG啥的也不错
   
   时序,同期,非同期这些原理是要一边写,一遍领会的。
   
如果要提高,还得有人带,代码要review。
此帖出自FPGA/CPLD论坛
个人签名MicroPython中文社区https://micropython.org.cn/forum/  
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

16
 
此帖出自FPGA/CPLD论坛
 
 
 

回复

297

帖子

0

TA的资源

一粒金砂(中级)

17
 
学习了!
此帖出自FPGA/CPLD论坛
 
 
 

回复

104

帖子

1

TA的资源

一粒金砂(中级)

18
 
作为一个初学者,LZ说到心坎里了。。。
此帖出自FPGA/CPLD论坛
个人签名淡泊明志 宁静致远
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

19
 
谢谢楼主,这些内容非常有用!
此帖出自FPGA/CPLD论坛
 
 
 

回复

370

帖子

0

TA的资源

一粒金砂(中级)

20
 
学习了
此帖出自FPGA/CPLD论坛
个人签名杭州海莱电子科技 FPGA硬件加速http://www.openfpga.cn/
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表