【推荐图书】+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等
初次接触FPGA,到现在也有四年多了,当时读大二,暑假在学校准备光电设计竞赛,指导老师让用单片机做,前期向我们推荐FPGA,希望我们有时间去学学FPGA,记得当时买了块黑金核心板,下载了特权同学的《深入浅出玩转FPGA》视频教程,买了特权同学写的《深入浅出玩转FPGA》和夏宇闻老师编写的《Verilog数字系统设计教程》。那时把大部分时间都花在了单片机上,对于FPGA,只是做了几个基本的实验,像计数器,二分频等。步入大三,专业课比较多,当时也是比较懒,身边也没有人做FPGA,始终还是没有坚持下来,下学期出去实现了3个月,大四,步入考研大军……
14年秋季上研究生,研究方向是FPGA图像处理,这时才算是真正开始做FPGA,这期间做了一些工程项目,也读了不少书,掌握了FPGA硬件电路设计、Verilog程序编写(包括一些图像处理算法的硬件实现)、简单的上位机控制界面的制作(使用C#)。这时才觉得,做工程,最重要的莫过于坚持下去。
以下几本书,我觉得写的比较好,跟大家推荐推荐(大牛勿喷),书单如下:
1. 深入浅出玩转FPGA
ISBN:9787512411616
2012年买了一本,后来本科毕业时弄丢了,前段时间又买了一本,毕竟,大神写的书嘛。书中讲了FPGA的基本概念、Verilog语法、重要的设计思想、时序约束以及一些简单的项目应用。
我一直认为FPGA设计思想非常重要,我在做图像处理时,经常使用乒乓操作,比如我之前写直方图均衡算法时,就是开辟两块存储区域A、B,区域A统计时区域B映射,区域A清零时区域B累加,占用的存储空间也不多(对于24bit RGB图像,分辨率为640×480时,占用256*19=4864bit),并且算法执行效率高。
时序约束的重要性就不用多说了,之前听别人说过一个工程项目,同一个程序,每次编译后现象都不太一样(体现在图像噪声上),估计是时序约束的问题,我现在在时序约束方面算是小白,只会对工程做一些简单的时钟约束,在编写算法时,我也只是尽量减小判断语句嵌套。
书中包括了一些项目应用,通过这些应用,相信有开发板的初学者应该能掌握PLL的配置、FIFO的使用、移位寄存器的使用、双口RAM的使用包括片外存储器SDRAM及Flash的使用,这些算是FPGA开发的基本功吧,进行快速操作时,一般使用片上RAM完成;跨时钟域处理时,一般使用双口RAM或者异步fifo;中值滤波时,要用到移位寄存器生成3×3或者5×5矩阵;VGA输出图像时,要用到外部存储器缓存图像;Flash可用来存储配置程序。把这些掌握了,基本上就可以着手做工程咯。
2. 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例
ISBN:9787121257735
作者pong p.chu的个人网页:http://academic.csuohio.edu/chu_p/
在做FPGA实时图像处理时,有时需要计算一些参数,比如Gamma值、校正矩阵等,这些参数在逻辑中计算会非常复杂,并且由于这些参数不需要一直计算,因此完全没有必要在逻辑中实现。
32位的NIOS II系列软核处理器是Altera公司研制的第二代嵌入式处理器,它具有很高的性能、方便的软件开发工具和很大的灵活性,并且占用很小的FPGA资源,它可以与各种各样的外设、定制的硬件加速单元组合,构成一个定制的片上可编程系统。如果使用Nios II,那么事情就将会变得非常简单。逻辑正常处理数据的同时,Nios II通过访问存储器,读取图像进行分析,使用Nios可以像C语言编程一样进行操作,得到参数值,再通过寄存器映射的方式映射到逻辑中的某些寄存器。
这本书有点贵,80多块钱,隔壁实验室有个同学买了本,之前我借着看过一段时间,书写的很nice,对Nios讲的还不错,并且还有一些例程,学习sopc系统设计的朋友可以参考。
3. 数字图像处理
ISBN:9787121110085
做图像处理的人,我想应该都接触过这本书吧,书中主题很多,从理论到实践,讲的很透彻,这是我在图像处理方面见过的最好的书,没有之一。我学的时候大部分时候是要用到哪个知识点,才去看相关部分。
我现在写过的一些图像处理算法(中值滤波、直方图均衡、高斯滤波、双边滤波、线性变换)也基本上都是基于此书,比如空间域图像增强、频率域图像增强、彩色图像处理、图像检测等。图像增强对视觉冲击比较大,使用中值滤波可降低随机噪声,频率滤波可用来降低图像中的周期噪声,后面有空再学学图像存储、分割、配准、合成。
4. 数字图像处理matlab版
ISBN:9787121201974
这本书讲的主要是相关图像处理算法的matlab实现,图像图像处理偏向于理论解释,而这本书主要讲工程实现。本书同样适用于matlab初学者,即使之前没有学过matlab,直接上手这本书也没有关系,书中第一章讲了matlab的使用,全书循序渐进,由浅入深,对图像处理工程师来说,这两本书不容错过。
5. C#入门经典
ISBN:9787302343394
学C#,主要是工程需要,当时写了一个串口控制界面的上位机程序,上位机通过uart与FPGA通信,实现对硬件系统的控制。
当时也是主要看了看一些基本的语法和windows窗体编程,不得不说,界面编程真方便,所见即所得,将一些控制摆上去,再编写一些响应函数即可。闲暇之余写了个界面,有时验证一些算法适用性时,使用下面的小软件将会显得非常方便。
这本书讲的大都是些基础性的知识,如果有时间和精力,可以学学《C#高级编程》,这本书我也没读过,所以就不多说咯。
6. 于博士cadence视频教程
前面推荐的都是纸质教程,最后推荐一份电子教程,总共60集。需要的直接百度哈。我当时画PCB也是看的这个教程,讲的很不错,比较详细,基本上看完就可以设计FPGA处理板了。
在电子设计领域,要走的路还很长,后期准备深入学习Nios、图像处理算法的硬件化实现、基于C#的软件开发,有空了了解了解FPGA异构计算。