xilinx FPGA课程学习总结
一时冲动,跑步进入了FPGA的大门,尤老师是教练,我之前一直做嵌入式软件,数字电路也是十年前大学课堂学过,早已经还给老师了。FPGA对于我来说完全是小白,所以。老师的课程,对于我来说至关重要!因为见过太多从入门到放弃的案例了!
什么样的教程和视频,可以不至于让小白从入门到放弃呢?
我总结了几点:
1.由浅入深,循序渐进,不急躁,不跃进,符合人的认知规律,符合学习记忆的高原曲线。越学越有信心!
2.这个课程避免了陡峭悬崖式学习曲线,不会一股脑儿把所有知识灌输进来,一下子消化不了这么多,认为学习太难,太复杂,就容易放弃!
3.学以致用,用到的时候再引出来相关知识点!比如scope,约束等。
4.学习过程得到尤老师的及时指导,鼓励,这个也很重要。
5.FPGA专业性比较强,我从课程学习到工作方法,跟做嵌入式产品类似,先画出流程图,时序图,再去写代码!否则就本末倒置。
下面是具体章节学习总结。
1.变量类型,赋值语句,运算符合
这部分因为与C语言类似,基本上过一遍就行。
2.时钟分频,这部分也简单,一个变量cnt计数,然后在某些位置置位清零就可以,难度不大。
3.倍频。使用PLL IP核。本章引出来了IP核,后续的FIFO,ram都是需要IP核。直接使用ISE---->TOOL---->core generater去创建就可以,然后有实例化模板,拷贝到自己的*.V文件去使用,就像C语言工程的库函数那样使用,很方便。
4.TOP-DOWN模块化设计,这一章节,其实就是C语言里面的高内聚低耦合原则,模块化原则,在实际项目也是容易掌握的。
5.状态机。FSM。其实也是C语言工程里面状态机,使用case *进入不同的状态,具体到FPGA,一般是状态切换使用一个always语句,其他功能与状态切换分开实现的。
6.按键消抖,售货机,这个小项目我就没有一一做了,这个项目是TOP-DOWN模块化设计和FSM的综合应用,因为与C语言太相似,我准备在全部掌握后再研习一次。
7.RAM和乒乓操作和FIFO核乒乓操作 在几乎所有有通信有数据处理的功能,都需要使用到,RAM相对简单,FIFO有标准模式和FWFT两种模式;这两种模式是由差别的,标准模式,需要提前1拍去给读写信号。这两个差别,需要专门再去练习,体会。
8.VGA sobel图形处理
实现了预定功能!整个工程,没有使用例程的25MHZ,全部统一使用50MHZ。
分辨率改为了800*600@72HZ。实现了图片sobel算法处理,并将图片显示背景色,透明化处理。
需要进一步研究细化的地方:
8.1.matlab对图像的处理。
8.2.sobel算子的深入理解
8.3.使用其他图像来测试下
8.4.十字光标暂时没有练习。
9.ICAP在线升级 原理是使用icap IP模块,会自动通过spi串口从外部w25q64读取bin文件到内部,然后执行,若没有uart升级指令传来,20秒后跳转到外部w25q64的0x400000处,读取Bin文件到fpga。
测试流程:先使用ISE下载ICAP代码到板子,然后使用fpga_update软件下载icap的bin文件到w25q64的0地址,重启板子,使用fpga_update软件下载其他应用的bin到0x400000.
测试通过。
10.SDRAM部分。初步学习了基础理论。
以上就是目前为止,学习FPGA的总结,还有很多需要细细研究,多多测试的地方;同时,我也要调整学习策略,整体目标是zynq,嵌入式Linux也是大头,希望尽早进入到zynq的嵌入式,与FPGA交替着学习。