【推荐图书】+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等
【推荐图书】+ 基于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异构计算。
【推荐图书】+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等的更多相关文章
- FPGA回忆记事(一):基于Nios II的LED实验
实验一:基于Nios II的LED实验 一. 创建Quartus II工程 1.打开Quartus II环境.开始->程序->Altera->Quartus II 9.1. 2 ...
- 基于NIOS II的双端口CAN通信回环测试
基于NIOS II的双端口CAN通信回环测试 小梅哥编写,未经授权,严禁用于任何商业用途 说明:本稿件为初稿,如果大家在使用的过程中有什么疑问或者补充,或者需要本文中所述工程源文件,欢迎以邮件形式发送 ...
- 推荐一个基于Vue2.0的的一款移动端开发的UI框架,特别好用。。。
一丶YDUI 一只注重审美,且性能高效的移动端&微信UI. 下面为地址自己研究去吧! 我的项目正在用,以前用的Mint-ui但是现在感觉还是这个好一点,官方给出的解释很清楚,很实用. 官方地址 ...
- [置顶]
基于FPGA的VGA简易显存设计&NIOS ii软核接入
项目简介 本项目基于Altera公司的Cyclone IV型芯片,利用NIOS II软核,2-port RAM与时序控制模块,实现64*48分辨率的显存(再大的显存板载资源m9k不够用) 实现效果如下 ...
- 【小梅哥SOPC学习笔记】sof与NIOS II的elf固件合并jic得到文件
sof与NIOS II的elf固件合并jic得到文件 注意,本方法已经有更加简便的方法,小梅哥提供相应的脚本文件,可以一键生成所需文件,脚本请前往芯航线FPGA技术支持群获取. 7.1 为什么需要将S ...
- 【小梅哥SOPC学习笔记】切换NIOS II CPU的主内存后软件中需要注意的几点设置
切换NIOS II CPU的主内存后软件中需要注意的几点设置 有时候,我们可能面对这样一种情况: 1. 我们创建一个SOPC系统,并在QSYS中设置NIOS II的复位地址和异常地址都指向SRAM: ...
- 【小梅哥SOPC学习笔记】NIOS II处理器运行UC/OS II
SOPC开发流程之NIOS II 处理器运行 UC/OS II 这里以在芯航线FPGA学习套件的核心板上搭建 NIOS II 软核并运行 UCOS II操作系统为例介绍SOPC的开发流程. 第一步:建 ...
- (原創) 如何在Nios II顯示8位數的七段顯示器? (SOC) (Nios II) (SOPC Builder) (DE2-70)
Abstract本文討論如何在Nios II控制8位數的七段顯示器. Introduction使用環境:Quartus II 8.0 + Nios II EDS 8.0 + DE2-70 (Cyclo ...
- 【小梅哥SOPC学习笔记】NIOS II工程目录改变时project无法编译问题
解决NIOS II工程移动在磁盘上位置后project无法编译问题 说明:本文档于2017年3月4日由小梅哥更新部分内容,主要是增加了讲解以Quartus II13.0为代表的经典版本和以15.1为代 ...
随机推荐
- jarvis OJ WEB题目writeup
0x00前言 发现一个很好的ctf平台,题目感觉很有趣,学习了一波并记录一下 https://www.jarvisoj.com 0x01 Port51 题目要求是用51端口去访问该网页,注意下,要用具 ...
- BZOJ-2-4870: [Shoi2017]组合数问题 矩阵优化 DP
就 是 要 我 们 从 n k 件 物 品 里 面 选 出 若 干 件,使 得 其 数 量 模 k 等 于 r 的 方 案 数 . dp方程 f [ i , j ] 表示前 i 件物品拿了若干件使 ...
- Spark 学习笔记 —— 常见API
一.RDD 的创建 1)通过 RDD 的集合数据结构,创建 RDD sc.parallelize(List(1,2,3),2) 其中第二个参数代表的是整个数据,分为 2 个 partition,默认情 ...
- 6. 合并排序数组 II
6. Merge Two Sorted Arrays Description Merge two given sorted integer array A and B into a new sorte ...
- 语音VLAN异常流量分析
现象描述:有线网络里,接入层交换机上,凡是被划入语音vlan的端口,都会呈现出相同的流量表现,而且瞬间流量都很大,30 - 40 MB级别,对有线网络的稳定性有很大的影响. 设备型号: IP 电话:A ...
- C#常用字符串函数
Compare 比较字符串的内容,考虑文化背景(场所),确定某些字符是否相等 CompareOrdinal 与Compare一样,但不考虑文化背景 Format 格式化包含各种值的字符串和如何格式化每 ...
- 洛谷P3375 [模板]KMP字符串匹配
To 洛谷.3375 KMP字符串匹配 题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 为了减少骗分的情况,接下来还要输出子串的前缀数组next.如果 ...
- Scrapy基础(四)————Scrapy的使用Pycharm进行Debuge设置
好比Django的Debuge 与前端进行交互时的方便,但是Scrapy 不自带,所以我们写一个main文件来debuge 作用:通过cmd 命令启动爬虫 #-*-coding:utf-8 -*- # ...
- Java中类加载过程和对象创建过程
类加载过程: 1, JVM会先去方法区中找有没有相应类的.class存在.如果有,就直接使用:如果没有,则把相关类的.class加载到方法区 2, 在.class加载到方法区时,会分为两部分加载:先加 ...
- UOJ#132&bzoj4200[Noi2015]小园丁与老司机
看,这是一个传送门 Part A 把坐标离散化,按照纵坐标为第一关键字,横坐标为第二关键字排序 以$f_i$记录来到$i$这个点最多经过点数,那么答案显而易见就是$f_i$加上该层点数 转移的话就是分 ...