收藏 分享(赏)

fpga学习心得体会.docx

上传人:微传9988 文档编号:2187977 上传时间:2018-09-04 格式:DOCX 页数:52 大小:62.17KB
下载 相关 举报
fpga学习心得体会.docx_第1页
第1页 / 共52页
fpga学习心得体会.docx_第2页
第2页 / 共52页
fpga学习心得体会.docx_第3页
第3页 / 共52页
fpga学习心得体会.docx_第4页
第4页 / 共52页
fpga学习心得体会.docx_第5页
第5页 / 共52页
点击查看更多>>
资源描述

1、fpga 学习心得体会篇一:FPGA 学习心得大报告FPGA 技术基础学习报告 -课程内容学习心得姓 名: 学 号: 年级专业:指导教师:瞿麟 XX10401128 自动化 101 薛小军摘要从开始学 FPGA 到现在粗略算来的话,已经有 3 个多月了,就目前而言,我并不确定自己算不算高手们所说的入门了,FPGA 学习总结。但是不管现在的水平如何,现在就总结一下自己学习它的感受或一些认识吧。关键词 FPGA DE2 板 QuartusII 软件 Verilog 语言引言 FPGA 是什么?FPGA 现状?怎样学习 FPGA?FPGA 是现场可编程门阵列的简称,FPGA 的应用领域最初为通信领域

2、,但目前,随着信息产业和微电子技术的发展,可编程逻辑嵌入式系统设计技术已经成为信息产业最热门的技术之一,应用范围遍及航空航天、医疗、通讯、络通讯、安防、广播、汽车电子、工业、消费类市场、测量测试等多个热门领域。并随着工艺的进步和技术的发展,向更多、更广泛的应用领域扩展。越来越多的设计也开始以 ASIC 转向 FPGA, FPGA 正以各种电子产品的形式进入了我们日常生活的各个角落。正文 (1)掌握 FPGA 的编程语言在学习一门技术之前我们往往从它的编程语言开始,如同学习单片机一样,我们从 C 语言开始入门,当掌握了C 语言之后,开发单片机应用程序也就不是什么难事了。学习 FPGA 也是如此,

3、FPGA 的编程语言有两种:VHDL 和Verilog,这两种语言都适合用于 FPGA 的编程。(2)FPGA 实验尤为重要除了学习编程语言以外,更重要的是实践,将自己设计的程序能够在真正的 FPGA 里运行起来,这时我们需要选一块板子进行实验,我们选择使用 DE2 板才进行试验。初识 DE2 开发板DE2 的资源DE2 的资源非常丰富,包括1. 核心的 FPGA 芯片-Cyclone II 2C35 F672C6,从名称可以看出,它包含有 35 千个 LE,在 Altera 的芯片系列中,不算最多,但也绝对够用。Altera 下载控制芯片- EPCS16 以及 USB-Blaste 对 Jt

4、ag 的支持。 2.存储用的芯片有: 512-KB SRAM,8-Mbyte SDRAM,4-Mbyte Flash memory3. 经典 IO 配置:拥有 4 个按钮,18 个拨动开关,18个红色发光二极管,9 个绿色发光二极管,8 个七段数码管,16*2 字符液晶显示屏,4. 超强多媒体:24 位 CD 音质音频芯片 WM8731(Mic 输入+LineIn+ 标准音频输出),视频解码芯片(支持 NTSC/PAL制式),带有高速 DAC 视屏输出 VGA 模块。5.更多标准接口:通用串行总线 USB 控制模块以及A、B 型接口,SD Card 接口,IrDA 红外模块, 10/100M

5、自适应以太络适配器,RS-232 标准串口, PS/2 键盘接口6.其他:50M,27M 晶振各一个,支持外部时钟, 80针带保护电路的外接 IO7.此外还有:配套的光盘资料,QutuarsII 软件,NiosII ,例程与说明文档。关于管脚分配 当我们创建一个 FPGA 用户系统的时候,到最后要做的工作就是下载,在下载之前必须根据芯片的型号分配管脚,这样才能将程序中特定功能的管脚与实际中的 FPGA 片外硬件电路一一对应。FPGA 简单的说,就是现场可编程逻辑阵列。它的内部是逻辑单元,它们之间可以用线连接,至于以怎样的形式相连,则可以根据应用者写入的逻辑决定。每次布线都会重新组合逻辑单元,从

6、而可以任意的编写不同的逻辑。当然,前提是定义的逻辑块不超出它可读写的最大值。总结在学习 FPGA 时,遇到的问题有许多,譬如,写代码时的警告,特别是一些不能忽视的警告,每次遇到时,总是还要检查一会儿才能改过来,或者有的警告已经出现了几次,但是就是解决不掉。每次在学一个模块时,只要是看懂了,它的一些重点就没有及时的记录在本子上,只有个别的想起来时,才会做笔记。每做完一个模块,没有及时记录下自己从这个模块中学到了什么。上面的不足,都是在写模块的过程中,自己逐渐暴露出来的。我很庆幸自己的一些问题能及时的被发现,避免类似的事情再次发生。像遇到警告时,都要记录下来,通过改正后,要注释,写下警告的原因,定

7、期看一下。每次写模块的时候,都要记下重点知识,即使是自己懂得的,好记性都是比不过烂笔头的。关于以上的总结,我相信在以后的学习中一定会对自己有莫大的帮助,它会时刻警醒自己,在以前的学习中,自己有哪些不足,以后千万不能再去犯同样的错误,不断地纠正,不断地进步,相信自己一定会学好 FPGA 的。篇二:个人 FPGA 学习心得回想起自己学 FPGA,已经有一段时间了,从开始的茫然,到后来的疯狂看书,设计开发板,调电路,练习各种FPGA 实例,到最后能独立完成项目,一路走来,感受颇多,拿出来和大家分享,顺便介绍下自己的一点经验所得,希望对初学者有所帮助。 废话不说了,下面进入正题,学习 FPGA 我主要

8、经历了这么几个阶段:、Verilog 语言的学习,熟悉 Verilog 语言的各种语法。、FPGA 的学习,熟悉 QuartusII 软件的各种功能,各种逻辑算法设计,接口模块(RS232,LCD,VGA,SPI,I2c 等)的设计,时序分析,硬件优化等,自己开始设计简单的FPGA 板子。、NiosII 的学习,熟悉 NiosII 的开发流程,熟悉开发软件(SOPC,NiosII IDE),了解 NiosII 的基本结构,设计NiosII 开发板,编写 NiosII C 语言程序,调试板子各模块功能。 先来说说第一个阶段,现在主要的硬件描述语言有 VHDL,Verilog 两种,在本科时老师一

9、般教 VHDL,不过现在Verilog 用的人越来越多,其更容易上手(与 C 语言语法比较类似),也更灵活,现在的 IC 设计基本都用Verilog。像 systemC,systemVerilog 之类的应该还在萌芽阶段,以后可能会有较大发展。鉴于以上原因我选择了Verilog 作为我学习的硬件描述语言。其实有 C 语言的基础,学起 Verilog 的语言很简单,关键要有并行的概念,所有的 module,assign,always 都是并行的,这一点与软件语言有明显不同。这里推荐几本评价比较好的学习 Verilog 的书籍:、 verilog 数字系统设计教程 ,这本书对于入门是一本很好的书,

10、通俗易懂,让人很快上手,它里面的例子也不错。但本书对于资源优化方面的编程没有多少涉及到。、 设计与验证 Verilog HDL ,这本书虽然比较薄,但是相当精辟,讲解的也很深入,很多概念看了这本书有种豁然开朗的感觉,呵呵。学习 Verilog 其实不用看很多书,基本的语法部分大家都一样,关键是要自己会灵活应用,多做练习。Verilog 语言学了一段时间,感觉自己可以编点东西,希望自己编的程序在板子上运行看看结果,下面就介绍我学习的第二个阶段。刚开始我拿了实验室一块 CPLD 的开发板做练习,熟悉QuartusII 的各种功能,比如 IP 的调用,各种约束设置,时序分析,Logiclock 设计

11、方法等,不过做到后面发现CPLD 的资源不太够(没有内嵌的 RAM、不能用SignalTapII,LE 太少等),而实验室没有 FPGA 开发板,所以就萌生了自己做 FPGA 开发板的意图,刚好 Cadence 我也学的差不多了,就花了几天时间主要研究了 FPGA 配置电路的设计,在板子上做了 Jtag 和 AS 下载口,在做了几个用户按键和 LED,其他的口全部引出作为 IO 口,电路比较简单,板子焊好后一调就通了(心里那个爽啊.)。我选的FPGA 是 cycloneII 系列的 EP2C5,资源比以前的 FPGA 多了好几倍,还有 PLL,内嵌的 RAM,可以试试 SignalTapII,

12、用内嵌的逻辑分析仪测试引脚波形,对于 FPGA 的调试,逻辑分析仪是至关重要的。利用这块板子我完成了项目中的几个主要功能:RS232 通信,指令译码,配置 DDS,AD 数据高速缓存,电子开关状态设置等,在实践中学习起来真的比平时快很多,用到什么学什么动力更大。这个时候我主要看的数据有这几本感觉比较好:、 Altera FPGA/CPLD 设计(基础篇) :讲解一些基本的 FPGA 设计技术,以及 QuartusII 中各个工具的用法(IP,RTL,SignalProbe,SignalTapII,Timing Closure Floorplan,chip Editor 等) ,对于入门非常好。

13、、 Altera FPGA/CPLD 设计(高级篇) :讲解了一些高级工具的应用,LogicLock,时序约束很分析,设计优化,也讲述了一些硬件编程的思想,作为提高用。、 FPGA 设计指南-器件,工具和流程:这本书看了他的目录忍不住就买了,这本书讲述了 FPGA 设计的各个方面,虽然每个方面都是点到为止,但能让你有个整体的概念,了解 FPGA 的所有设计功能,了解 FPGA 开发的整个流程。、在这里也推荐几个学习 FPGA 比较好的论坛,不过很多人一看到英语就不想看,其实上面的英文很简单,很多时候不敢看是因为对自己没信心或心静不下来看。不过官方站上资料很多,刚开始可能会觉得资料安排的有点乱,

14、不方便查找,以后有时间我列个资料的链接目录,整理一下,方便大家查找。到这里,自己最 FPGA 的学习有一段时间了,练习了很多实例,自己也编写了不少程序,也有了一些项目经验,算是对 FPGA 有些了解了。在不断的学习中发现 FPGA 不仅可以做逻辑设计,算法设计等,还能做嵌入式开发,altera 先后开发了 Nios,NiosII 两款 FPGA 的嵌入式软核,并有配套的软件,刚开始看到这些我真是心中突然豁然开朗,学习真的是无止境,又一个全新的领域摆在我面前,我决定学习 NiosII,要学就要学最好。 刚开始入门是很痛苦的,嵌入式设计需要从硬件到驱动到软件全部熟悉,硬件系统问题还不是很大(以前做

15、过单片机,DSP 等 MCU),处理器的架构心里还有点数,对于驱动和软件工程,刚开始学习真的很头痛。NiosII 应该还算比较新的内容(应该是 XX 年出的),国内的书籍不算很多,上这方面的资料也比较零碎,所以我就开始将 Altera 站上这方面的资料系统的看一边,这里推荐几本站上的handbook:、Embedded Design Handbook、Nios II Processor Reference Handbook、Nios II Software Developers Handbook、Quartus II Handbook, Volume 4: SOPC Builder、Quart

16、us II Handbook, Volume 5: Embedded Peripherals看完这些 handbook,总算基本明白整个架构,软硬件设计方法,驱动的编写等,感觉自己可以编一些嵌入式的程序了,不过虽然前面做的那块 ep2c5 的板子支持 NiosII系统,不过对于嵌入式设计来说还是显得单薄了一点,没有 SDRAM,Flash 这两个比较基本的模块,Ep2C5 内嵌的RAM 太小,程序写不大,而且每次总要绞尽脑汁优化程序代码大小,很多时候优化了后函数功能会受到限制,不利于初学者,也不利于调试。所以到这里我有产生了自己做一块 Nios 开发板的想法(直接买比较贵,自己做便宜,而且还能

17、锻炼自己,一举两得),通过借鉴其他开发板,选择自己开发板上需要包含什么模块,确定各个模块使用什么芯片,阅读各个芯片的 datasheet,画出原理图并做出PCB 图,这块板子我选的是 Ep2c8Q208,比上一块资源又将近多了一倍,板子上还有以下模块:SDRAM,Flash,EPCS4,RS232,USB,VGA,PS2,AD,DA,LCD 等,满足了一般开发板的配置要求。板子回来以后调试了四五天,(flash 工作了,LCD 显示了,RS232 通了,USB 通了,AD,DA 工作了,SDRAM 正常了.),真是每天都有惊喜,每个模块都编写了 NiosII 软件测试程序,调试硬件的时候对软件

18、的运行也更熟悉了。在这次调试的过程中真的学到了很多,为此专门写了好几页调试笔记,下次拿出来和大家一起分享。现在硬件平台有了,NiosII 也了解的差不多了,终于可以自己编写一些规模大一点的程序了。学 FPGA 的一点心得 从去年开始学 FPGA,以前一直做 DSP,但因为项目的需要,在一个应用中只有 FPGA 才能解决问题,所以硬着头皮上FPGA,又因为结项目的时间比较紧,所以主要以解决问题为目的,说真的,项目做下来写了四千多行的代码,达到了设计目标,但对 FPGA 学习还不够系统,也正进一步的学习中.因为我是单干,没有团队,遇到问题只能在上找资料,其难度可想而知,幸好以前用过 CPLD,有一

19、点基础,用的编程语言是VHDL,感觉 AHDL 写一点小程序还可以,但做复杂程序就有点费力了(应该是我的 AHDL 没学好) ,所以在做 FPGA 程序时我选择了比较简单的verilog 语言。由于没人指导,所以买了一个简单的 FPGA 开发板,是Cyclone 的,开发板就是好,送了较多学习资料,用了一个星期的时间,学习了 NIOSII 的基本应用,当然,我的需要就是知道如何在 NIOS 里控制一个信号的高低电平变化就够了,其它全是 C 语言的东西,主要是熟悉了 Quartus 的开发平台,并用 NIOS 程序把要实现的主要代码用 C 写了一遍,通过了,但速度上不去。有这些知识做铺垫后,就开

20、始了项目的设计。项目要求将外部高速数据(40MB/s)进行存盘,并可以将存盘的数据在适当的时候原路返回(速度不变) 。所以在硬件的设计上 FPGA 选择了 EP2C35F484C8N,外部有 128M的 SDRAM 做为数据的缓冲。所以 FPGA 的主要程序集中在ATAHOST 控制器(实现 UDMA 读写) 、SDRAM 控制器(大容量循环缓冲)上,当然还包括一些其它的控制,如实时时钟,芯片控制,RS232 的通信及相应的通信协议。硬件完成后,大部分的时间都在写程序,感觉 verilog跟差不多,就将原来写成的代码翻译了一下,每写一段代码就测试一下。起初并不知道在 Quartus 里还有逻辑

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

22、FPGA 做了一些项目。简单说一下体会吧,归结起来就三个字:做、想、问。书读千遍,不如做一遍;看别人做百次,不如自己做一次;就是要实践。实践的动力一方面来自兴趣,别一方面来自己压力,我个人觉得后者更重要。有需求会容易形成压力,也就是说最好能在实际的项目开发中锻炼,而不是为了学习而学习。在做的过程中要多想,多想想问题出现的原因,问题解决后要多问几个为什么,这也是经验积累的过程,最好要写项目日志,把问题及原因、解决的办法都写进去。还要多问,遇到问题经历了痛苦的思索后还得不到解决就要问了,问搜索引擎,问友,问同学同行,一篇文章、朋友们的点拨都可能帮助自己快速解决问题。FPGA 入门心得及系列资料 不

23、知道为什么自己每次接受一个新事物,总要花上那么长的一段时间。每个东西,总要经过从一点都不了解,到有点了知道,到最后才想知道要来学学,但每次学习时也总是走马观花。可能真的受中国的教育思想束缚的太严重了吧。以前的人读书,好像也没有什么目标,只是知道上课要认真听,考试要考好。这样就可以了。也从来没想过,我学这个到底有什么用呢。但是上了大学后,一切都改变了。我们的学习也不再是为了考试而考试了。尤其是像我们学电子,假如仅仅是为考试的话,那你的大学完全可以过得很轻松,整天睡觉,游戏,照样可以考高分。那样毕业了,你说你的大学学习是不是等于 0。到头来还是什么也不是。所以当你进入大学,当你选择了电子,就决定了

24、你从此要为之付出。不管将来怎样,只要你朝着自己的方向走,一定会成功的。 现在说说 FPGA 的学习吧,或许,很多人刚接触 FPGA时,可能还在为到底什么是 CPLD,什么时 FPGA,我到底要学习哪门语言而苦恼,不知大家是不是这样,但是我曾经就是这样,也到上去找过,最后也终于找到了答案。因为那时身边的人都还没学过。其实 CPLD,FPGA 最大的区别也就是 FPGA 的程序必须由配置芯片经过上电后,将程序写入芯片中,也就是 FPGA 的内部存储器是相当于内存一样,一掉电就没了。而 CPLD 是像单片机一样,程序是存储存在内部中的,一上电就可以跑了。二者的功能差不多,但是FPGA 的资源比 CP

25、LD 更加丰富。在 CPLD 上可以实现的功能,在 FPGA 上基本都可以实现的。所以也不必去想太多什么是FPGA,CPLD 了,只要弄懂了二者的内部结构就可以了。至于学什么语言吗,首先要看你们在校老师上课是用什么语言,就先那个语言吧,我们学校老师是用 VHDL 语言的,所以一开始我也是先学 VHDL 语言,而且学习资料比较多,但是在上看到,好像公司里面用的比较多的是 Verilog HDL 语言,为了能看懂一些资料,现在也在学 Verilog HDL语言,学习中发现,要是学过 C 语言的人,会发现 Verilog HDL 好像更加好理解。一旦你开始了学习 FPGA,那就要坚持下去,因为语言这

26、东西,要是不一下子把它强记住,过不了两天就又忘了,书本的东西,一定要越快消化越好,这样你看别人的程序时就不会有什么语言障碍了。之后就是编写程序,模仿别人的模块,仿真实验,这步很重要,要不你就不会发现 FPGA 功能的强大,你也不知道到底仿真的结果和实际是不是有差别。当你成功时,你一定会感到成功的喜悦。 当你基本的程序都看得懂时,有完整地编个程序,而且在硬件上实验过时,那么祝贺你入门了,之后的道路就是不断的实践,跟学习单片机一样,只有不断的学习,不断的做东西,你的编程能力才会提高。以上仅仅为作者本人的一点观点,本人现在还是一个电子白菜,只是苦于自己学习电子找不到捷径,不想还有更多的人跟我一样,在

27、电子的道路中不断摸索,不断徘徊。 看过一个高手对 FPGA 的认识,自己对 FPGA 未来的发展更是看好,鉴定了学好的决心,FPGA 在电子开发工作中已经上升到数字系统核心处理器,尽快掌握 FPGA 开发技术显得非常迫切。总结了一下: 传统的开发方式:一半固定,硬件 CPU 是不可编程的,另一半灵活是可编程的软件FPGA 新开发形式:两个部分都是可编程了,FPGA,它代表的就是硬件的编程。这两部分都可编程的一个结合点就是 FPGA 上的软核。另外可以根据需要通过外部单片机把合适的应用 bit 流写入到 FPGA 内,从而完成根据功能需要变更硬件。硬件可重构!使计算机的能力越来越强,方法一:通过

28、提高工艺来提高工作频率;方法二:通过优化系统体系,并行!新学习思想: FPGA 设计有点象围棋:易学难精带着问题学习是最有效率的时序性能的调整提高是 FPGA 开发能力的标志多看书,但要注意,书当做字典,不是所有地方都去看。目前,在 FPGA 上有三种类型开发方法和应用方向:a、逻辑类应用 b、软核类应用 c、DSP 类应用。篇三:fpga 学习心得FPGA 学习心得学习 fpga 一个多月以来,完全从零开始学习,感觉自己学到的东西真不少,虽然还不是很熟练,不过也对 fpga有了很好的了解。以前一直没有想过要来总结些什么,是感觉自己对于 fpga 根本就像是一无所知一样,虽然天天在学,不过确实

29、没有一个总体观念,学的东西太混乱也没有一个总体的框架。到了今天终于觉得自己的学习已经小有成就了,虽然还是没有能够独立设计的自信。在最初学习的时候最主要就是对于 fpga 结构的一个基本认识和对硬件描述语言 verilog HDL 语言的学习。之所以选择学习 fpga 是因为在这一学期找工作中发现,现在很多公司都需要会一点 fpga 方面的知识,在笔试的时候也会偶尔遇到一些用 HDL 语言编程的试题。现在很多硬件工程师已经不再是单纯的用传统的方法进行电路的设计,至少现在很多招聘的岗位当中不再是单纯的电路的设计了,很多都涉及到嵌入式和 HDL 语言。Fpga 现在正在以异常的速度发展,在 08 年

30、全球金融危机的时候大多数行业都呈现在下滑的趋势,而 fpga 的厂商如 xilinx 和 altera 等公司的收入却呈现出增长的态势。在我看来 fpga 必将是将来硬件工程师不可缺少的一项本领,这也就是我学习 fpga 的原因之一。一、硬件描述语言:对于硬件描述语言(HDL)语言我选择的是和 C 语言类似的 verilog HDL 语言,虽然 VHDL 语言在很多方面优于verilog HDL 语言,但是作为初学,还是先学习一个简单一点的语言,尽量先将所需要学习的东西过一遍,将来等时间允许的时候再去学习 VHDL 语言,在上有看到现在出来了一个叫 system verilog 的语言,据说融

31、合了 verilog 和VHDL 语言各自的优点,可能将来会成为行业统一的语言吧。verilog HDL 现阶段主要接触的就是对组合逻辑电路和时序电路的描述了。所接触的程序中以 always (*)模块居多,几乎是所见过模块的核心部分了,其实在学习这个语言上面也没有花太多的时间,因为有对 C 语言的学习,所以就先入为主了。当了解了其基本语法过后就开始了实例的分析,在此过程中也有了解 fpga 的结构,不过感觉没有真正使用过 fpga 所以对于那些什么 pll、sram 、sdram、norflash 等都没有什么直观的感觉,所以对于程序也根本不知道这样些的原因和到底能实现什么功能,这也成为了我

32、学习 verilog HDL 语言的一个障碍。二、fpga 的基本结构:在这里还是得认识清楚 fpga 的结构,记得有一个在外面去面试的时候,别人就问了我一个问题fpga 和 mcu的联系与区别?当时我根本都还没有接触过 fpga,只知道fpga 是属于硬件方面的开发板。后来通过自己对 fpga 的接触和上的相关说明终于有了一个初步的认识。接下来就具体说明一下:MCU 又称为单片机,它为 8 位的微控制器,主要用在工业控制,FPGA 则为可编程逻辑器件的一种,拥有丰富的硬件资源,可实现强大的逻辑功能,由于其硬件重构的特性,适合各种领域的应用; MCU 的编程语言主要为 C 语言,以软逻辑实现,

33、它通过顺序执行指令来实现特定功能,避免不了低速的缺点,相比之下,FPGA 它以 Verilog 或 VHDL 等硬件描述语言为编程语言,由于直接由硬件实现逻辑,所以它并行执行,从而使速度大大提高; MCU 的这种同一时间只能处理一条指令的特点也影响了它的应用,它只能用于一些算法的设计及简单的控制,而 FPGA 由于并行执行的特性,大量应用于复杂逻辑控制以及大量的数据运算和处理。FPGA 是在 PAL、GAL、CPLD 等可编程器件的基础上一步一步发展起来的。PAL 是与阵列可编程或阵列固定,它的缺点是:采用熔丝工艺,只能一次编程,并且它的输出是固定的,不能编程;也就是说芯片一旦选定,输出结构将

34、不可改变。GAL 是在 PAL 的基础上发展起来的,可以重复编程。与 PAL 的最大区别是:输出结构可以由用户自己定义。但它结构简单,I/O 数目有限。CPLD 是在 GAL 的基础上发展起来的。它主要由输入输出控制单元、宏单元和互连矩阵等组成。随着电子市场对功能要求的不断提高,CPLD 越来越不能满足市场的需求。它最大只有 512 个宏单元,大部分是组合逻辑,难以实现复杂的时序逻辑设计,并且功耗很大。随着工艺的发展,FPGA登上了历史舞台并成为主角,它内部资源丰富,不管是时序逻辑还是组合逻辑都很多。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程

35、器件门电路数有限的缺点。三、altera 公司的软件使用:其实真正对 fpga 有一个整体了解是在其软件的使用过程中。我在实验室里使用的是 altera 公司的 sycloneII 系列的 EP2C35F484C8,所以使用的软件就是 altera 公司提供的 quartusII 和 nios EDS。在 quartus 的使用中其他的没什么说的,只是有几点需要注意:一就是顶层文件名一定要和工程名一致;二就是工程一定不能放在含中文的目录下,否者编译会出错。在最初使用 quartus 的时候就涉及到仿真和引脚分配的问题。关于引脚分配,最开始没人提示所以我以为只要弄上去不报错就行了,后来在下载到实

36、验板上的时候,发觉根本就达不到预期的效果,于是在上找了很多相关的技巧,也尝试过通过 tcl 脚本配置,上还特推荐这种方法。后来在 handbook 里面终于找到了相应的治疗,发觉还是我一个一个的敲进去方彪。然后就是仿真了,在最初使用的quartusII 版本中还自带仿真工具,所以就没有借用第三方的 modelsim,因为感觉编写 testbench 也是一个很麻烦的事情,但是自从 quartusII10 版本以后 altera 公司就取消了仿真工具,而推荐大家使用第三方的 modersim,哎没办法只有再去研究一下 modersim 破解了方法和 testbench的书写了。其实 quartu

37、sII 里面还有很多实用的工具,比如说像signaltap II、timeQuest、sopc builder等。现在我还欠缺的就是使用 timeQuest 进行时序收敛,这个在特权同学的视频教程中有,还需要好好去学习,而对于 signaltap II 和 sopc builder 已经有了一定的了解。其实 sopc builder 就是以前的 nios 和 niosII 的一个后继者,它主要就是调用别人已经写好了的一些程序来控制 fpga 的各个组件,当然也可以根据自己的需要进行自定义组件以达到自己的设计要求。在配置 sopc 的时候一定要根据自己所使用的 fpga 型号就行参数的设置,所以

38、阅读开发板使用手册就显得至关重要了。而我在配置 sopc 的过程中也遇到过很多的问题,现在也还有很多技巧没有学会,我在这个方面花费的时间也是特别的多的,几乎用去了我 2/3 的时间。刚开始配置的时候还是感觉自己学到了很多东西,也作出了很多实际的效果,给自己带来了不少的信心,可是到后面发觉自己好像只是在做一个简单的模仿的工作,于是越来越觉得自己偏离了学习的重心,而且在这个过程中也遇到了很多没有解决的问题,于是学习就有点停滞不前了。很多器件为什么需要,为什么不需要?成了困扰我的主要问题,而Nios_II_嵌入式软核 SOPC 设计原理及应用 、 Nios II的那些事儿以及用户手册和友博客给了我很

39、大的帮助,也补充了自己在这方面的理论知识。在学习 sopc 过程中到现在也还有很多难题没有得到解决,当然不一定就是 sopc 的问题,也有 HDL 语言的问题:第一、在配置锁相环的时候遇到一个很奇怪的问题。首先来说说锁相环的功能,锁相环主要的功能是能够进行倍频和分频并且能够产生相移。而一般的 niosII 软核能够工作在 100MHz 的频率下,而 sycloneII 系列的晶振时钟是50MHz,所以一般在配置 sopc 的时候都需要用到锁相环,当然也可以不用。然而如果要用到 SDRAM 组件的时候就一定要用 PLL 了,因为 SDRAM 的时钟和系统时钟之间有一个相移,必须通过 PLL 来实

40、现相移。而 PLL 的使用有两种方法,一种就是在 quartusII 里面添加,一种就是在 sopc 里面添加 PLL control来生成。第一种没有多少好说的,这里主要就是说一下第二种方法,因为我在第二种配置下没有成功过。当时一直不知道原因所在,也在上看了很多想过质料,依旧没有找到权威的解释,终于在特权同学的博客上面得到了解答: 我发觉自己很多知识都是通过特权同学的博客、书籍和视频而得到,看到很多友推荐购买特权同学的书籍学习看来真是对的。第二、在观看了特权同学的视频后,试着将那些繁琐的程序分模块来进行书写。但是对于顶层例化模块的书写一直还没来得及仔细去学习。大多时候都是通过生成板块图在 b

41、df 文件里面用连线的方式来代替例化,对于我现阶段这种小工程来说这样还并没有多大的影响,也和同学讨论过例化。他们的观点是这个东西可以通过连线的方式来完成,所以没必要再去做那个“麻烦而看似作用不大”的例化了。其实例化模块的存在是有很大的意义的,或许在我们现阶段的这种小系统中还体现不出它的作用。我们这样设想一下,假如在公司里面要做某个工程,这个工程由1000 个模块组成,分给不同的小组完成,每个小组负责一个模块,最后由总工程师将各个模块整合,如果没有例化文件那么总工程师就用对这 1000 个模块图进行连接,而通过例化模块对管脚进行分配后就只有一个模块图了,差别可想而知了吧。当然学习编写例化模块还有

42、一个好处就是能够让自己对所编写的程序有一个总体概念,增强自己对于程序的理解能力,这样能提高自己的编程能力。第三、就是涉及到一个自定义组件的问题了,其实任何组件都可以通过 PIO 端口进行外加,但是这个和模块例化也有一样的问题。既然能够使模块的数量减少又何乐而不为呢?第四、就是时序收敛了,这个真的还没有仔细去研究过,只是观看了特权同学的教学视频,感觉太繁琐了,还是等以后又充足的时间的时候再去学习了。第五、而在我的毕业设计当中需要用到 vga 显示,这成了我这段时间的主要难题,刚开篇四:FPGA,学习心得体会篇一:fpga 学习心得大报告fpga 技术基础学习报告-课程内容学习心得姓 名:学 号:

43、 年级专业:指导教师:瞿麟 XX10401128 自动化 101 薛小军摘要从开始学fpga 到现在粗略算来的话,已经有 3 个多月了,就目前而言,我并不确定自己算不算高手们所说的入门了,fpga 学习总结。但是不管现在的水平如何,现在就总结一下自己学习它的感受或一些认识吧。关键词fpga de2 板 quartusii 软件 verilog 语言引言fpga 是什么?fpga 现状?怎样学习 fpga?fpga 是现场可编程门阵列的简称,fpga 的应用领域最初为通信领域,但目前,随着信息产业和微电子技术的发展,可编程逻辑嵌入式系统设计技术已经成为信息产业最热门的技术之一,应用范围遍及航空航

44、天、医疗、通讯、络通讯、安防、广播、汽车电子、工业、消费类市场、测量测试等多个热门领域。并随着工艺的进步和技术的发展,向更多、更广泛的应用领域扩展。越来越多的设计也开始以 asic 转向 fpga, fpga 正以各种电子产品的形式进入了我们日常生活的各个角落。正文(1)掌握 fpga 的编程语言在学习一门技术之前我们往往从它的编程语言开始,如同学习单片机一样,我们从 c 语言开始入门,当掌握了c 语言之后,开发单片机应用程序也就不是什么难事了。学习 fpga 也是如此,fpga 的编程语言有两种:vhdl 和verilog,这两种语言都适合用于 fpga 的编程。(2)fpga 实验尤为重要

45、除了学习编程语言以外,更重要的是实践,将自己设计的程序能够在真正的 fpga 里运行起来,这时我们需要选一块板子进行实验,我们选择使用 de2 板才进行试验。初识 de2 开发板de2 的资源 de2 的资源非常丰富,包括1. 核心的 fpga 芯片-cyclone ii 2c35 f672c6,从名称可以看出,它包含有 35 千个 le,在 altera 的芯片系列中,不算最多,但也绝对够用。altera 下载控制芯片- epcs16 以及 usb-blaste 对 jtag 的支持。2.存储用的芯片有: 512-kb sram,8-mbyte sdram,4-mbyte flash mem

46、ory3. 经典 io 配置:拥有 4 个按钮,18 个拨动开关,18个红色发光二极管,9 个绿色发光二极管,8 个七段数码管,16*2 字符液晶显示屏,4. 超强多媒体:24 位 cd 音质音频芯片 wm8731(mic 输入+linein+ 标准音频输出),视频解码芯片(支持 ntsc/pal制式),带有高速 dac 视屏输出 vga 模块。5.更多标准接口:通用串行总线 usb 控制模块以及a、b 型接口,sd card 接口,irda 红外模块, 10/100m 自适应以太络适配器,rs-232 标准串口, ps/2 键盘接口6.其他:50m,27m 晶振各一个,支持外部时钟, 80针

47、带保护电路的外接 io7.此外还有:配套的光盘资料,qutuarsii 软件,niosii ,例程与说明文档。 关于管脚分配当我们创建一个 fpga 用户系统的时候,到最后要做的工作就是下载,在下载之前必须根据芯片的型号分配管脚,这样才能将程序中特定功能的管脚与实际中的 fpga 片外硬件电路一一对应。fpga 简单的说,就是现场可编程逻辑阵列。它的内部是逻辑单元,它们之间可以用线连接,至于以怎样的形式相连,则可以根据应用者写入的逻辑决定。每次布线都会重新组合逻辑单元,从而可以任意的编写不同的逻辑。当然,前提是定义的逻辑块不超出它可读写的最大值。 总结在学习 fpga 时,遇到的问题有许多,譬

48、如,写代码时的警告,特别是一些不能忽视的警告,每次遇到时,总是还要检查一会儿才能改过来,或者有的警告已经出现了几次,但是就是解决不掉。每次在学一个模块时,只要是看懂了,它的一些重点就没有及时的记录在本子上,只有个别的想起来时,才会做笔记。每做完一个模块,没有及时记录下自己从这个模块中学到了什么。上面的不足,都是在写模块的过程中,自己逐渐暴露出来的。我很庆幸自己的一些问题能及时的被发现,避免类似的事情再次发生。像遇到警告时,都要记录下来,通过改正后,要注释,写下警告的原因,定期看一下。每次写模块的时候,都要记下重点知识,即使是自己懂得的,好记性都是比不过烂笔头的。关于以上的总结,我相信在以后的学

49、习中一定会对自己有莫大的帮助,它会时刻警醒自己,在以前的学习中,自己有哪些不足,以后千万不能再去犯同样的错误,不断地纠正,不断地进步,相信自己一定会学好 fpga 的。篇二:fpga 学习心得回想起自己学 fpga,已经有一段时间了,从开始的茫然,到后来的疯狂看书,设计开发板,调电路,练习各种fpga 实例,到最后能独立完成项目,一路走来,感受颇多,拿出来和大家分享,顺便介绍下自己的一点经验所得,希望对初学者有所帮助。废话不说了,下面进入正题,学习 fpga 我主要经历了这么几个阶段:、verilog 语言的学习,熟悉 verilog 语言的各种语法。、fpga 的学习,熟悉 quartusii 软件的各种功能,各种逻辑算法设计,接口模块(rs232,lcd,vga,spi,i2c 等)的设计,时序分析,硬件优化等,自己开始设计简单的fpga 板子。、niosii 的学习,熟悉 niosii 的开发流程,熟悉开发软件(sopc,niosii ide),了解 niosii 的基本结构,设计niosii 开发板,编写 niosii c 语言程序,调试板子各模块功能。 先来说说第一个阶段,现在主要的硬件描述语言有 vhdl,verilog 两种,在本科时老师一般教 vhdl,不过现在verilo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 工作总结

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报