搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
FPGA设计技巧与案例开发详解
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787121242540
  • 作      者:
    韩彬,于潇宇,张雷鸣编著
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2014
收藏
编辑推荐
    FPGA应用设计属于工程设计范畴,所谓工程,势必涉及技术细节,涉及操作流程,涉及具体问题的具体解决,往往不能由理论推理直接得到具体解决方法步骤。此书以FPGA设计案例做引导讲解,设计步骤循序而下,无一遗漏,非常适合FPGA入门初学者自学。在案例设计分析过程中,此书又时不时附加一些技术技巧,适合FPGA已经入门的设计者提高设计效率。换句话说,此书很实用,照着书来,FPGA设计就变得不是那么难学了。
展开
作者简介
韩彬,网名CrazyBingo,2012年在杭州电子科技学取得学士学位,2014年在西安电子科技大学获得硕士学位,长期从事FPGA逻辑开发研究,对LCD图像显示与摄像头采集开发有敏锐的嗅觉及丰富的设计经历,积累了大量的开发技巧,活跃于电子设计各大网站、论坛与QQ群,尤其是Chinaaet。
展开
内容介绍
本书由浅入深,由表及里,从FPGA技术的探索,到资源的发现与利用,从硬件版图规划与设计,到逻辑电路验证与实现;从模块化功能的研究与积累,到系统集成的综合与完善,系统、全面地介绍了Altera FPGA的开发流程。本书的所有例程均经过千锤百炼,相关FPGA设计的资源均为笔者多年整理归纳,均可在本书配套资料包(下载地址详见前言)中找到,希望读者能够妥善利用及更高效、直观地学习。
展开
精彩书摘
    名字可以一笔一划一蹴而就,但是FPGA的PCB电路设计也许不行。笔者虽说也算是拥有多年FPGA设计经验,但很少有一下子成功的设计,多多少少都需要适当的调试。铁杵磨成针,是因为功夫深;而FPGA/CPLD电路设计的调试能力,也是经验总结。没有谁生来就是天才,天才是因为比常人花费了更多的血汗,天才之路充斥了狂风暴雨。只有经历过地狱般的洗礼,才能达到天堂的力量。
    前些日子一个由软件开发,走向销售,继而开始创业做产品的前辈告诉我,“创业、奋斗,就是读博,一旦进入,只有黑暗没有光明,很多人知难而返。你不知道何时会遇到光明,也许就在那一瞬间,抑或也许遥不可及;但重点是,如果你坚持走下去,总共遇到光明的转角,但如果你不敢走下去,那你就注定是输。”敢打敢拼不服输,才能成功。即便是“赌博式”奋斗,最重要的也是方向。即便在FPGA/CPLD电路设计中,路途坎坷四处碰壁,但是没有不能调试成功的电路,就看你愿不愿意花费功夫。也许Bug就在那一瞬间,抑或也许你直接放弃,永远找不到迷失的方向。
    对于FPGA/CPLD驱动电路设计,首先我们得设计原理图与PCB,接着投产打样,拿到板子后进行焊接调试以及相关的测试,如果电路基本功能验证OK,就可以进行项目工程设计,反之,如果出现了这个那个的问题,继而发现原理图设计的问题,只能重新设计电路图。硬件开发流程如下图所示。
    笔者有时候这个流程要循环好几遍,刚开始由于设计上的问题导致了得重新设计电路,抑或是后来发现可升级的部分,在基本功能完成后在此进行修改。不就得将来发现有更好的方案,为了性能不惜以再次设计、调试电路的代码重新进行优化。笔者有一个基于EP2C8Q208C8N的VIP_Board视频开发平台,不停地优化升级,少说也进行过4个版本的升级。总是,完美是没有极限的,电路设计也一样,不断地升级、优化,才能做出苹果这样的产品。
    笔者在这里想重点总结一下关于FPGA/CPLD电路焊接、调试经验。也许会有遗漏或者,不符合常规的部分,但至少这些是笔者认为相对于DIY或者手工焊接调试电路,进行开发的比较有效的流程。为此笔者专门设计了一整套的PCB焊接、调试、排错、到最终硬件定型的流程(当然这不仅仅只适用于FPGA/CPLD,而是一个基本的思维),如下图所示(CPLD根据需要可以相应的精简):
    1) PCB的检查
    在拿到厂家打样好的PCB后,一定不要急着进行焊接。虽说现在的制版工艺,以及飞针测试技术,一般电路不会有问题,但也不排除以外。笔者当年一个沉浸的板子倍某厂家做短路了;笔者当年还有2个FPGA板子也被做短路过。当然现在的技术,这个是小概率事件。不过宁可信其有,不可信其无,首先大致的检查一下PCB是否有问题(主要是短路)。如果小概率事件发生,板子被做短路了,立即与厂家联系。笔者的经验,一般厂家都会通过免费加急重做一次的途径,来给客户做出补偿。
    2) 电源与主芯片的焊接主次
    原本焊接电路应该有主到次,从主芯片到外围电路。但是如果电源方案是最新尝试的,同时恰好出现了设计问题。而这个我们已经将FPGA/CPLD焊接在上面了,徒劳而又费钱伤神的事情,笔者当年也层冒昧过。
    因此,如果方案是成熟的,并且经过了多次验证,这都无所谓。反之如果方案(尤其是电源方案)如果是最新的,一般先焊接电源进行测试,在保证板载电压(5V、3.3V、1.2V、2.5V等)都正常的情况下,继而进行FPGA/CPLD的焊接,以保证风险的最小化。如果焊接后发现电源有问题,只能通过割线、跳线等方法来临时解决,最终在下一版本中进行优化。同时,焊接完FPGA/CPLD之后,也必须进行短路、虚焊等的测试(可以用放大镜辅助观察,也可以用玩表表短路档进行点测,这些都是硬件工程师需要掌握的最基本的能力)。
    当然产品焊接中,硬件电路均已验证通过,一般机器都会遵循由主到次,由贴片到直插的顺序进行焊接,这主要是为了焊接的方便。
展开
目录
第1章 浅谈FPGA技术、优势、学习途径 (1)
1.1 FPGA的诞生、发展 (1)
1.1.1 FPGA的诞生 (1)
1.1.2 FPGA的发展与未来 (4)
1.1.3 博弈,在入门之前 (7)
1.2 Altera FPGA介绍及发展、应用 (8)
1.2.1 Altera公司介绍 (8)
1.2.2 Altera产品介绍 (9)
1.2.3 Altera FPGA的开发平台 (15)
1.2.4 Altera FPGA的动态与应用 (17)
1.2.5 Altera FPGA的应用 (20)
1.2.6 对比ARM与DSP,认清FPGA (23)
1.3 善用网络资源,不断总结自我 (26)
第2章 Quartus II 13.0套件的下载及安装 (29)
2.1 写在前面的话 (29)
2.2 Quartus II 13.0软件下载 (30)
2.3 Quartus II 13.0组件安装 (32)
2.4 Quartus II 13.0 Device安装 (36)
2.5 USB Blaster下载器驱动程序的安装 (39)
第3章 Verilog HDL设计与Testbench文件架构 (43)
3.1 Verilog HDL设计 (43)
3.1.1 Verilog HDL与VHDL的对比 (43)
3.1.2 Verilog HDL的发展 (44)
3.1.3 Verilog HDL代码设计风格 (45)
3.2 Testbench文件架构 (50)
3.2.1 Testbench的介绍 (50)
3.2.2 Testbench代码设计风格 (51)
3.3 Quartus II工程目录文件夹的定制 (54)
第4章 MAX II CPLD/Cyclone II/IV FPGA PCB Layout设计 (56)
4.1 浅谈PCB Layout (56)
4.2 MAX II CPLD核心电路设计 (57)
4.2.1 MAX II CPLD背景及简介 (57)
4.2.2 EPM240T100C5N设计需求研究及分析 (59)
4.2.3 EPM240T100C5N核心板原理图设计 (63)
4.2.4 EPM240T100C5N核心板布局布线 (67)
4.3 Cyclone II FPGA核心电路设计 (68)
4.3.1 Cyclone II FPGA背景及简介 (68)
4.3.2 Cyclone II数据手册解读与EP2C8Q208C8N的设计研究 (69)
4.3.3 EP2C8Q208C8N核心板原理图设计 (81)
4.3.4 FPGA核心板Layout注意事项 (90)
4.4 Cyclone IV FPGA核心电路设计 (93)
4.4.1 Cyclone IV FPGA简介 (93)
4.4.2 Cyclone IV FPGA数据手册分析与EP4CE6E22C8N的设计研究 (95)
4.4.3 Cyclone IV FPGA核心电路设计 (101)
4.5 FPGA/CPLD电路焊接、调试经验总结 (105)
4.6 本书配套FPGA开发平台硬件介绍 (108)
4.6.1 VIP_Board 3.0硬件资源介绍 (109)
4.6.2 VIP_Board 3.0相关外设实物介绍 (110)
第5章 4位计数器的设计与仿真验证 (115)
5.1 写在前面的话 (115)
5.2 FPGA/CPLD开发流程 (115)
5.3 基于Quartus II 13.0的4位计数器设计流程 (117)
5.3.1 Quartus II 工程的创建 (117)
5.3.2 4位计数器的逻辑电路设计 (120)
5.3.3 Quartus II编译流程与工程设置分析 (123)
5.4 基于Modelsim-Altera 10.1d的4位计数器仿真验证流程 (134)
5.4.1 关于FPGA设计的各种仿真概念分析 (135)
5.4.2 Modelsim版本的简要介绍 (136)
5.4.3 Modelsim工程的创建 (136)
5.4.4 Testbench激励文件的编写 (139)
5.4.5 Modelsim波形的仿真与分析 (142)
5.5 设计思路的验证与总结 (149)
第6章 LED驱动电路设计 (151)
6.1 LED驱动电路设计方案1――入门 (151)
6.1.1 LED驱动电路设计方案 (151)
6.1.2 8位LED的自加显示实验 (153)
6.2 LED驱动电路设计方案2――升级 (164)
6.2.1 LED电路设计方案 (164)
6.2.2 74HC595驱动分析与实现 (166)
6.3 8位LED跑马灯显示实验 (176)
6.4 LED特效呼吸灯的设计 (183)
6.4.1 PWM协议的基本介绍 (183)
6.4.2 LED呼吸灯的设计 (184)
第7章 独立按键与矩阵键盘的FPGA驱动电路实现 (195)
7.1 按键及其工作模式介绍 (195)
7.1.1 按键抖动原理分析 (196)
7.1.2 硬件消抖动 (196)
7.1.3 软件消抖动 (198)
7.2 独立按键的FPGA驱动电路设计 (198)
7.2.1 独立按键电路设计 (198)
7.2.2 FSM状态机的Verilog HDL介绍 (199)
7.2.3 FPGA按键驱动设计方案1 (202)
7.2.4 FPGA按键驱动设计方案2 (216)
7.3 矩阵键盘的FPGA驱动电路设计 (221)
7.3.1 工作原理及电路设计 (221)
7.3.2 FPGA矩阵键盘驱动设计 (223)
第8章 “Hello World”的LCD1602显示驱动实现 (235)
8.1 LCD1602介绍及硬件设计 (235)
8.1.1 LCD1602字符液晶介绍 (235)
8.1.2 LCD1602硬件电路设计 (236)
8.1.3 LCD1602的时序及初始化分析 (239)
8.2 LCD1602的FPGA驱动电路实现 (243)
8.2.1 LCD1602的C语言实现方案 (244)
8.2.2 LCD1602的Verilog HDL实现方案 (245)
第9章 优化设计FPGA全局时钟管理模块 (258)
9.1 异步复位,同步释放机制 (258)
9.1.1 组合电路中的竞争-冒险 (259)
9.1.2 时序电路中的竞争-冒险 (260)
9.2 PLL的全局时钟管理模块设计 (264)
9.3 Quartus II IP核介绍及PLL的定制 (273)
9.3.1 Quartus II IP核的介绍 (273)
9.3.2 PLL IP核的定制与分析 (279)
9.4 带PLL的全局时钟管理模块设计 (287)
第10章 基于FPGA与MCU通信的SPI协议设计 (293)
10.1 SPI总线协议介绍及硬件的设计 (293)
10.1.1 SPI总线协议介绍 (293)
10.1.2 STM8的硬件电路设计 (295)
10.1.3 SPI总线协议时序分析 (297)
10.2 SPI总线协议的通信实现 (298)
10.2.1 STM8的SPI总线收发设计 (298)
10.2.2 边沿检测电路的FPGA实现 (300)
10.2.3 SPI通信的数据接收模块设计 (302)
10.2.4 SPI通信的数据发送模块设计 (311)
第11章 基于FPGA与PC通信的UART串口设计 (319)
11.1 追根溯源透析串口通信 (319)
11.1.1 串口通信简介 (319)
11.1.2 串口波特率 (322)
11.1.3 串口协议分析 (322)
11.2 串口电路的设计 (323)
11.2.1 TTL转RS-232电路的设计 (323)
11.2.2 USB→UART转换电路设计 (324)
11.2.3 UART电路的调试 (325)
11.3 细说真正的任意分频 (326)
11.3.1 分频电路的重要性 (326)
11.3.2 任意频率发生器原理 (326)
11.3.3 任意频率发生器的验证 (328)
11.4 串口通信的硬件实现 (332)
11.4.1 uart_receiver接收模块的设计 (332)
11.4.2 uart_transfer发送模块的设计 (340)
11.4.3 PC2FPGA UART联调测试 (344)
第12章 基于FPGA的VGA驱动显示设计 (351)
12.1 VGA接口、时序及驱动电路设计 (351)
12.1.1 VGA接口介绍 (351)
12.1.2 VGA时序分析 (353)
12.1.3 RGB三原色模型 (356)
12.1.4 VGA驱动电路设计 (359)
12.2 VGA驱动的FPGA实现 (364)
12.2.1 VGA驱动时序电路的设计 (364)
12.2.2 任意分辨率的VGA显示控制器设计 (376)
12.3 “Hello World”的VGA显示驱动实现 (379)
12.3.1 “Hello World”字模的提取 (379)
12.3.2 C2Mif软件的介绍与Mif文件的生成 (382)
12.3.3 VGA字符显示的FPGA实现 (386)
第13章 基于SDRAM的VGA显示控制器的设计与实现 (391)
13.1 跨时钟域数据交互 (391)
13.2 SDRAM的介绍及其控制器的移植与优化 (395)
13.2.1 SDRAM的特性及时序驱动介绍 (395)
13.2.2 SDRAM的硬件驱动电路设计 (399)
13.2.3 SDRAM控制器的移植与优化 (401)
13.2.4 Sdram_Control_2Port的封装与协议制定 (418)
13.3 基于SDRAM的VGA显示控制器的实现 (423)
第14章 基于OV7725的摄像头视频图像采集系统 (435)
14.1 系统框架设计思路分析 (436)
14.1.1 系统框架分析 (436)
14.1.2 算法的实现流程 (437)
14.2 OV7725摄像头介绍与视频采集实现 (440)
14.2.1 CMOS摄像头的简介 (440)
14.2.2 OV7725的特性介绍及驱动电路设计 (442)
14.2.3 OV7725 SCCB接口及寄存器介绍 (447)
14.2.4 OV7725感光阵列与视频时序分析 (456)
14.2.5 OV7725寄存器I2C初始化设计 (459)
14.2.6 OV7725的视频采集模块设计 (474)
14.3 OV7725视频图像显示的实现 (492)
14.4 本章小结 (502)
第15章 基于FPGA的系统设计 (504)
15.1 FPGA芯片选型 (504)
15.2 FPGA的与众不同――PCB布局在设计原理图之前 (511)
15.3 存储器的选型 (512)
15.4 FPGA外围器件的选择与设计 (513)
15.4.1 电阻 (514)
15.4.2 电容 (514)
15.4.3 磁珠 (517)
15.4.4 保险丝 (519)
15.5 基于核心板的系统设计 (521)
15.6 基于低功耗系统的电源选型 (522)
15.7 高速系统的PCB设计要点 (527)
15.7.1 结构布局 (527)
15.7.2 电路板的多层设计 (527)
15.7.3 过孔设计要点 (528)
15.7.4 防止串扰的布线原则 (529)
15.7.5 差分线布线原则 (529)
15.7.6 开关电源PCB设计要点 (530)
15.8 本章小结 (531)
第16章 基于高速相机的嵌入式视觉处理系统设计 (532)
16.1 视觉处理系统概述 (532)
16.2 嵌入式视觉处理系统结构设计 (533)
16.3 芯片选型 (535)
16.4 基于Camera Link工业相机接口的硬件设计 (537)
16.5 基于Camera Link接口的FPGA程序设计要点 (541)
16.6 基于VGA接口的图像的实时缩小与算法结构 (542)
16.7 FPGA与DSP的协同工作模式 (545)
16.8 乒乓操作的进阶――零延时数据传输 (545)
16.9 系统调试 (546)
16.10 本章小结 (547)
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证