科技>电子技术>单片机与嵌入式系统
FPGA项目开发实战讲解

FPGA项目开发实战讲解"

作者:李宪强
ISBN:9787121256400
定价:¥48.0
字数:416千字
页数:260
出版时间:2015-04
开本:16(185*260)
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书立足于工程实践经验,首先介绍FPGA的原理、语法、设计技巧,然后详细介绍了7项常用技术的实现。每项技术从以下几方面介绍:相关技术介绍、FPGA方案框图设计、子模块设计、仿真和测试、项目开发过程中遇到的问题、定位和解决措施,其中插入了大量的状态机转换图和关键代码,方便读者学习。

前言

前言 笔者发现市场上关于FPGA的书籍有以下几种:介绍语法、介绍软件安装和使用、介绍FPGA芯片本身、介绍FPGA小项目(如开发100例,这样的小项目不能使读者学会真正的FPGA开发)、介绍FPGA大项目(如以太网开发、PCI_E系统开发,但介绍太笼统,没有介绍读者关心的具体操作步骤,最终读者还是不能掌握实际的开发技巧),所以笔者立足于让读者真正能掌握FPGA的开发技巧,以中等难度的项目为例,详细介绍开发中的每个环节,读者读完后,完全可以亲自动手完成一个中等难度的项目,建立自信,真正学会FPGA开发。 本书涉及的所有技术点都是笔者在项目设计中亲自完成的。7个章节从易到难介绍了7个开发项目,每个项目从以下几方面介绍:相关技术、FPGA方案设计、子模块设计、仿真和测试、项目开发过程中遇到的问题、定位和解决措施。在编写过程中,插入了大量的状态机转换图、仿真结果和关键代码,方便读者学习,同时还加上了笔者在开发过程中遇到的实际问题及解决问题的手段、机理分析。 本书的读者群是FPGA初学者,或者对FPGA设计有一定经验,但对复杂的项目经常感到束手无策的开发人员,以及想进一步提高的朋友。 在7个开发项目中,异步FIFO控制器是每个FPGA开发人员都需要面对的问题,一些从事FPGA开发多年的朋友仍然不能掌握其中的细节,虽然看似简单,但真正弄清楚后能提高很多。 串口通信控制器是比较常用的模块,80%以上的项目都需要用到串口进行通信、控制、参数配置等,所以串口的开发比较有代表性。 A/D采集控制器也是非常常用的,但不同A/D芯片的工作模式不太一样,笔者在开发过程中遇到了一些障碍,所以拿出来和读者分享,希望对读者有一定的启发作用,遇到调试不顺的时候,需要慢慢分析,不能轻易打退堂鼓,也不能对技术指标打折扣,要100%完成才可以。 HDLC也是非常常用的技术,在商用网络通信及军工领域中应用非常广泛。 SDRAM应用也非常广泛,学会了这个模块,理解DDR SDRAM就容易很多了。 NAND FLASH作为大容量存储器,在开发中有一定的难度,第9章将告诉读者面对一个相对复杂的项目,如何一步步分解,把复杂的工程分解成多个相对简单的模块。 1553B控制器在航空航天领域中用得非常多,目前,在这个领域实现1553B控制器主要用进口ASIC芯片,但价格昂贵,国产化和FPGA化的趋势正在一步步加深,军工类院校和研究所对这项技术会非常感兴趣。 本书的编写重点不是介绍语法,而是讲解实际项目,每个项目的编写都有大量的状态转移图、时序仿真图和测试结果,异步FIFO、串口控制器、A/D和D/A控制器、HDLC控制器四部分给出了完整的源代码,后面几章限于篇幅只列出了实现的关键代码,但是读者根据比较详细的设计描述和状态机,可以轻易地将代码编写出来。对照代码,用心领悟,沉下心,集中精力搞定其中一两个项目,就会有质的提高。 我的联系方式:lxqiang_2008@aliyun.com,期待和读者进一步沟通交流。

目录

第1章 FPGA介绍 1 1.1 FPGA的优势 1 1.2 FPGA典型结构图 2 1.3 LUT原理 6 1.4 FPGA上电配置过程时序图 7 1.5 FPGA基本开发流程 10 第2章 Verilog语法介绍 13 2.1 Verilog HDL语言简介 13 2.1.1 什么是Verilog HDL 13 2.1.2 Verilog HLC的历史 13 2.2 Verilog HDL和VHDL语言比较 14 2.3 Verilog语法介绍 15 2.3.1 模块 15 2.3.2 常量 16 2.3.3 parameter与define的区别 18 2.3.4 reg和wire 19 2.3.5 操作符 21 2.3.6 assign和always语句 21 2.3.7 if和case语句 23 2.3.8 循环语句 25 2.3.9 模块实例化 25 2.3.10 预处理指令 26 2.3.11 系统任务 26 2.3.12 task和function语句的区别 29 2.3.13 文件操作 30 第3章 FPGA开发必要的技术积累 33 3.1 锁存器、触发器 33 3.2 时序的基本概念 34 3.2.1 建立和保持时间 34 3.2.2 同步系统中时序分析 34 3.3 异步时钟域和亚稳态 37 3.3.1 什么是亚稳态 37 3.3.2 亚稳态发生场合 37 3.3.3 亚稳态危害 38 3.3.4 怎么减少亚稳态的发生 38 3.3.5 案例:亚稳态导致通信异常 39 3.4 状态机的设计 39 3.5 复位信号 40 3.5.1 同步复位和异步复位比较 40 3.5.2 案例:和复位信号相关的项目 41 3.6 串并转换和并串转换 42 3.7 流水技术 42 3.7.1 流水技术原理 42 3.7.2 案例:NAND FLASH流水实现高速存储 43 3.8 乒乓操作 44 3.9 双向端口使用 45 3.9.1 数据总线的设计 45 3.9.2 程序设计 45 3.9.3 案例:MCU接口程序 46 3.10 Xilinx原语介绍 49 3.10.1 时钟组件 49 3.10.2 吉比特收发器组件 50 3.10.3 I/O端口组件 50 3.10.4 IBUFDS 51 3.10.5 IDELAY 52 3.10.6 OBUFDS 53 3.11 DCM原理 54 3.12 RAM核的使用 56 3.13 FPGA时序约束 60 3.13.1 FPGA约束介绍 60 3.13.2 案例:500MSPS的A/D转换器 63 3.14 生成IP核 70 3.14.1 生成IP核的方法 70 3.14.2 案例:生成IP核的具体操作过程 71 3.15 保持层次关系 73 3.16 Chipscope ICON和ILA 75 3.16.1 Chipscope介绍 75 3.16.2 案例:以DSP接口程序为例介绍使用流程 77 3.17 Verilog编码风格注意事项总结 79 3.18 FPGA学习步骤 80 3.19 FPGA工作方式 81 第4章 FIFO控制器设计 83 4.1 FIFO相关的概念 83 4.2 设计指标 84 4.3 同步FIFO设计 84 4.3.1 双端口RAM介绍 84 4.3.2 同步FIFO设计 85 4.4 异步FIFO设计 88 4.4.1 空/满标志的产生 88 4.4.2 亚稳态问题 88 4.4.3 格雷码 89 4.4.4 异步FIFO设计及结果 90 第5章 串口通信模块设计 95 5.1 串口通信概述 95 5.1.1 串口介绍 95 5.1.2 串口帧格式 96 5.2 设计指标 97 5.3 串口通信模块方案 97 5.3.1 原理框图 97 5.3.2 FPGA方案 98 5.4 串口通信各个模块设计 99 5.4.1 MCU配置模块设计 99 5.4.2 发送模块设计 106 5.4.3 接收模块设计 114 5.4.4 顶层模块 123 5.5 串口通信模块调试注意事项 126 第6章 数/模及模/数转换控制模块设计 127 6.1 相关技术介绍 127 6.1.1 数/模转换器(DAC)介绍 127 6.1.2 模/数转换器(ADC)介绍 129 6.1.3 数/模转换芯片AD5641介绍 131 6.1.4 模/数转换芯片ADS7230介绍 132 6.2 技术指标要求 135 6.3 D/A模块设计 136 6.4 AD模块设计 141 6.5 遇到的问题、排查及定位 148 第7章 HDLC总线控制器设计 149 7.1 HDLC协议介绍 149 7.2 CRC校验 150 7.3 设计技术指标 150 7.4 HDLC电路图 150 7.5 HDLC总线控制器模块划分 151 7.6 HDLC总线控制器各个模块设计 152 7.6.1 CRC模块设计 152 7.6.2 发送编码设计及结果 152 7.6.3 接收解码设计及结果 163 7.7 遇到的问题及解决办法 174 第8章 SDRAM控制器设计 175 8.1 SDRAM简介 175 8.2 SDRAM芯片介绍 176 8.3 SDRAM设计方案 178 8.3.1 刷新周期的问题 180 8.3.2 初始化模块 183 8.3.3 定时刷新请求信号产生模块 184 8.3.4 读/写请求产生模块 185 8.3.5 读/写状态机 187 第9章 NAND FLASH控制器设计 195 9.1 NAND FLASH介绍 195 9.1.1 NAND FLASH信号功能介绍 195 9.1.2 芯片存储阵列结构和地址寻址 196 9.1.3 NAND FLASH时序图介绍 197 9.2 设计技术指标 201 9.3 原理图介绍 202 9.4 NAND FLASH控制器方案 202 9.5 NAND FLASH各个模块设计 203 9.5.1 MCU接口模块 203 9.5.2 FLASH管理模块 205 9.5.3 NAND FLASH坏块表查找模块设计 209 9.5.4 NAND FLASH页查找模块设计 210 9.5.5 NAND FLASH读模块设计 211 9.5.6 NAND FLASH写模块设计 212 9.5.7 NAND FLASH块擦除模块设计 214 9.6 遇到的问题及解决办法 217 9.6.1 对FLASH的读/写不能完成 217 9.6.2 读/写不稳定 217 第10章 1553B总线控制器设计 218 10.1 1553B总线介绍 218 10.1.1 总线拓扑结构 219 10.1.2 编码方式 220 10.1.3 1553B数据格式 220 10.1.4 总线数据传输过程说明 223 10.2 设计技术指标 224 10.3 原理图介绍 224 10.4 收发器芯片介绍 224 10.5 1553B总线控制器方案 225 10.6 1553B总线控制器各个模块设计 226 10.6.1 曼彻斯特编码模块设计 226 10.6.2 曼彻斯特解码模块设计 230 10.6.3 协议处理模块设计 231 10.6.4 RT接收模块设计 238 10.6.5 RT发送模块设计 242 10.6.6 RT-RT模块设计 243 10.6.7 Broadcast模块设计 243 10.7 测试结果 245 10.8 遇到的问题及解决办法 246 参考文献 247 后记 248

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个