MyFPGA Forum

标题: 【转】学习FPGA的点滴心得 [打印本页]

作者: thinkts    时间: 2009-7-14 13:07
标题: 【转】学习FPGA的点滴心得
  从去年开始学FPGA,以前一直做DSP,但因为项目的需要,在一个应用中只有FPGA才能解决问题,所以硬着头皮上FPGA,又因为结项目的时间比较紧,所以主要以解决问题为目的,说真的,项目做下来写了四千多行的代码,达到了设计目标,但对FPGA学习还不够系统,也正进一步的学习中.因为我是单干,没有团队,遇到问题只能在网上找资料,其难度可想而知,幸好以前用过CPLD,有一点基础,用的编程语言是AHDL,感觉AHDL写一点小程序还可以,但做复杂程序就有点费力了(应该是我的AHDL没学好),所以在做FPGA程序时我选择了比较简单的verilog语言。

  由于没人指导,所以买了一个简单的FPGA开发板,是Cyclone的,开发板就是好,送了较多学习资料,用了一个星期的时间,学习了NIOS II的基本应用,当然,我的需要就是知道如何在NIOS里控制一个信号的高低电平变化就够了,其它全是C语言的东西,主要是熟悉了Quartus的开发平台,并用NIOS程序把要实现的主要代码用C写了一遍,通过了,但速度上不去。有这些知识做铺垫后,就开始了项目的设计。

  项目要求将外部高速数据(40MB/s)进行存盘,并可以将存盘的数据在适当的时候原路返回(速度不变)。所以在硬件的设计上FPGA选择了EP2C35F484C8N,外部有128M的SDRAM做为数据的缓冲。所以FPGA的主要程序集中在ATA HOST控制器(实现UDMA读写)、SDRAM控制器(大容量循环缓冲)上,当然还包括一些其它的控制,如实时时钟,USB2.0芯片控制,RS232的通信及相应的通信协议。

  硬件完成后,大部分的时间都在写程序,感觉verilog跟C差不多,就将原来写成的C代码翻译了一下,每写一段代码就测试一下。起初并不知道在Quartus里还有逻辑分析仪的功能,所以程序出了问题只能使劲的分析代码,猜想问题可能出在哪里,万不得已时才做一下仿真(后来看很多有做程序都先做仿真,仿真通过后再下载到目标板里运行测试,但到现在我的仿真关还没过),所以做得很累。我感到这样做下去到时间结点肯定结了不了项目,就找FPGA的QQ群向高手们请教经验,知道了可以Quartus的逻辑分析仪来观察信号,哈哈,爽了(感谢感谢)。后面的程序找问题就容易多了,按照ATA协议、SDRAM手册、及各外围芯片手册一步步写下去,当然其中也遇到了各种各样的问题,但很快得到解决。一直到项目结束,都是用逻辑分析仪来找问题,没做过仿真(所以现在仿真关还没过)。

  今年又用FPGA做了一些项目。简单说一下体会吧,归结起来就三个字:做、想、问。书读千遍,不如做一遍;看别人做百次,不如自己做一次;就是要实践。实践的动力一方面来自兴趣,别一方面来自己压力,我个人觉得后者更重要。有需求会容易形成压力,也就是说最好能在实际的项目开发中锻炼,而不是为了学习而学习。在做的过程中要多想,多想想问题出现的原因,问题解决后要多问几个为什么,这也是经验积累的过程,最好要写项目日志,把问题及原因、解决的办法都写进去。还要多问,遇到问题经历了痛苦的思索后还得不到解决就要问了,问搜索引擎,问网友,问同学同行,一篇文章、朋友们的点拨都可能帮助自己快速解决问题。
作者: redzzb    时间: 2009-7-18 16:46
辛苦了!谢谢分享!
作者: pofeng1885    时间: 2009-8-1 00:57
Thank  you for your sharing !!
作者: teddywolf    时间: 2009-8-4 14:06
同学、同学,共同学习
作者: amwha    时间: 2009-8-6 08:51
新手上路
作者: FBI    时间: 2009-11-20 18:48
辛苦了!
作者: zdb0579    时间: 2009-12-2 14:22
感谢感谢啊
作者: Steady_Chou    时间: 2009-12-4 10:59
加油阿 ~ 一起努力吧
作者: sharon_ho    时间: 2009-12-25 09:29
好聞分享...感謝
作者: smartone    时间: 2010-4-18 10:44
谢谢楼主的建议!
作者: gq21    时间: 2010-4-21 10:40
谢谢分享,很好啊!
作者: 草竹    时间: 2010-4-21 23:33
一起努力把
作者: Bill_Liu    时间: 2010-5-10 18:15
深有同感
作者: wr005168    时间: 2010-5-16 18:28
刚刚接了一个这方面的课题,谢谢啊!
作者: pex857617729    时间: 2010-5-24 14:53
谢谢分享!
作者: suzanah    时间: 2010-7-9 17:11
楼主说的对啊!大家多交流,我也是刚刚开始用FPGA做项目,光在选择哪一款芯片上就用了好长时间,选内存,估算管脚数目等等。以后还多多向大家学习。
作者: liujieaa    时间: 2010-7-17 20:39
狂顶

作者: lovely_ldq    时间: 2010-7-19 14:10
感谢分享。
作者: yuanhuayong    时间: 2010-7-22 20:48
谢谢分享!
作者: fengyechenjun    时间: 2010-8-1 11:09
好东西,谢谢分享!
作者: fffpop    时间: 2010-8-23 09:58
看来楼主感想很多,我也是新手上路,还需要跟牛人们多交流
作者: zhongjiehe    时间: 2010-9-13 10:13
顶!说的对!
作者: wushimin6    时间: 2010-9-17 11:51
谢谢分享
作者: leona1527    时间: 2011-1-26 16:30
加油啊  !
作者: bevin    时间: 2011-5-26 18:17
个人觉得C跟Verilog还是有很大差别   在网上看到有句话说得不错    如果在你的Verilog代码中看不出有硬件电路的话那么你还处于菜鸟阶段
作者: laocunzhang    时间: 2011-11-18 13:40
哈哈.这位同学竟然会用AHDL.那是Altera的硬件描述语言.恐怕现在很少有人用了.
作者: huantian    时间: 2012-4-8 11:39
三个字:做、想、问。书读千遍,不如做一遍;看别人做百次,不如自己做一次;就是要实践。实践的动力一方面来自兴趣,别一方面来自己压力,。。                  好,说的真心好!
作者: Adam520    时间: 2017-9-27 11:12
感谢分享,用心了




欢迎光临 MyFPGA Forum (http://www.myfpga.org/discuz/) Powered by Discuz! X3