首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

学FPGA的一点心得

学FPGA的一点心得

学FPGA的一点心得从去年开始学FPGA,以前一直做DSP,但因为项目的需要,在一个应用中只有FPGA才能解决问题,所以硬着头皮上FPGA,又因为结项目的时间比较紧,所以主要以解决问题为目的,说真的,项目做下来写了四千多行的代码,达到了设计目标,但对FPGA学习还不够系统,也正进一步的学习中.因为我是单干,没有团队,遇到问题只能在网上找资料,其难度可想而知,幸好以前用过CPLD,有一点基础,用的编程语言是AHDL,感觉AHDL写一点小程序还可以,但做复杂程序就有点费力了(应该是我的AHDL没学好),所以在做FPGA程序时我选择了比较简单的verilog语言。
由于没人指导,所以买了一个简单的FPGA开发板,是Cyclone的,开发板就是好,送了较多学习资料,用了一个星期的时间,学习了NIOSII的基本应用,当然,我的需要就是知道如何在NIOS里控制一个信号的高低电平变化就够了,其它全是C语言的东西,主要是熟悉了Quartus的开发平台,并用NIOS程序把要实现的主要代码用C写了一遍,通过了,但速度上不去。有这些知识做铺垫后,就开始了项目的设计。
项目要求将外部高速数据(40MB/s)进行存盘,并可以将存盘的数据在适当的时候原路返回(速度不变)。所以在硬件的设计上FPGA选择了EP2C35F484C8N,外部有128M的SDRAM做为数据的缓冲。所以FPGA的主要程序集中在ATAHOST控制器(实现UDMA读写)、SDRAM控制器(大容量循环缓冲)上,当然还包括一些其它的控制,如实时时钟,USB2.0芯片控制,RS232的通信及相应的通信协议。
  硬件完成后,大部分的时间都在写程序,感觉verilog跟C差不多,就将原来写成的C代码翻译了一下,每写一段代码就测试一下。起初并不知道在Quartus里还有逻辑分析仪的功能,所以程序出了问题只能使劲的分析代码,猜想问题可能出在哪里,万不得已时才做一下仿真(后来看很多有做程序都先做仿真,仿真通过后再下载到目标板里运行测试,但到现在我的仿真关还没过),所以做得很累。我感到这样做下去到时间结点肯定结了不了项目,就找FPGA的QQ群向高手们请教经验,知道了可以Quartus的逻辑分析仪来观察信号,哈哈,爽了(感谢感谢)。后面的程序找问题就容易多了,按照ATA协议、SDRAM手册、及各外围芯片手册一步步写下去,当然其中也遇到了各种各样的问题,但很快得到解决。一直到项目结束,都是用逻辑分析仪来找问题,没做过仿真(所以现在仿真关还没过)。
  今年又用FPGA做了一些项目。简单说一下体会吧,归结起来就三个字:做、想、问。书读千遍,不如做一遍;看别人做百次,不如自己做一次;就是要实践。实践的动力一方面来自兴趣,别一方面来自己压力,我个人觉得后者更重要。有需求会容易形成压力,也就是说最好能在实际的项目开发中锻炼,而不是为了学习而学习。在做的过程中要多想,多想想问题出现的原因,问题解决后要多问几个为什么,这也是经验积累的过程,最好要写项目日志,把问题及原因、解决的办法都写进去。还要多问,遇到问题经历了痛苦的思索后还得不到解决就要问了,问搜索引擎,问网友,问同学同行,一篇文章、朋友们的点拨都可能帮助自己快速解决问题。
返回列表