FPGA项目开发实战讲解pdf/doc/txt格式电子书下载
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询
书名:FPGA项目开发实战讲解pdf/doc/txt格式电子书下载
推荐语:
作者:李宪强著
出版社:电子工业出版社
出版时间:2015-04-01
书籍编号:30310346
ISBN:9787121256400
正文语种:中文
字数:263902
版次:1
所属分类:互联网+-产品/运营
版权信息
书名:FPGA项目开发实战讲解
作者:李宪强
出版社:电子工业出版社
出版时间:2015-04-01
ISBN:9787121256400
免责声明:本站所有资源收集整理于网络,版权归原作者所有。
本站所有内容不得用于商业用途。本站发布的内容若侵犯到您的权益,请联系站长删除,我们将及时处理!
内容简介
本书立足于工程实践经验,首先介绍了FPGA的原理、语法、设计技巧,然后详细介绍了7用技术的实现。每项技术从以下几方面介绍:相关技术介绍、FPGA方案框图设计、子模块设计真和测试、项目开发过程中遇到的问题、定位和解决措施,其中插入了大量的状态机转换图和关码,方便读者学习。
本书适合FPGA初学者,或者对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 FPGA的优势
• 运行速度快
FPGA内部集成锁相环,可以实现外部时钟倍频,核心频率可达几百兆,而单片机运行速度则低得多。在高速场合,单片机无法代替FPGA。FPGA运算速度快,编程简易,而且有些高端的FPGA芯片内部集成了很多有用的模块,如串行收发模块,如果不用FPGA而是另搭电路,结构将会比较复杂,用FPGA可以简化设计。
• FPGA引脚多,容易实现大规模系统
单片机IO口有限,而FPGA动辄数百个IO引脚,甚至上千个引脚,可以方便地连接外设,比如一个系统有多路AD、DA,单片机要仔细地进行资源分配与总线隔离,而FPGA由于有着丰富的IO资源,可以用不同IO引脚很容易地连接各外设。
• FPGA内部程序并行执行性
单片机程序是串行执行的,执行完一条才能执行下一条,在处理突发事件时只能调用有限的中断资源;而FPGA的不同逻辑可以并行执行,可以同时处理不同任务,这使得FPGA的工作效率更高。
利用硬件并行执行的优势,FPGA打破了顺序执行的模式,在每个时钟周期内完成更多的处理任务,超越了数字信号处理器(DSP)的运算能力。
• FPGA包含大量软核,可以方便地进行二次开发
FPGA甚至包含单片机和DSP软核,并且其IO数仅受FPGA自身IO限制,所以FPGA又是单片机和DSP的超集,也就是说,单片机和DSP能实现的功能,FPGA一般都能实现。
• FPGA设计灵活
FPGA最大的特点就是灵活,它能够实现你想实现的任何数字电路,可以定制各种电路。减少受制于专用芯片的束缚,真正为自己的产品量身定做,在设计的过程中可以灵活地更改设计。而且FPGA强大的逻辑资源和寄存器资源可以让用户轻松地发挥设计理念,其并行执行、硬件实现的方式可以满足设计中大量的高速电子线路设计需求。FPGA拥有比DSP更快的速度,可以实现非常复杂的高速逻辑,有着比ASIC(专用芯片)更短的设计周期和灵活性,免去昂贵的开版费用,而且可以随时裁减,增加用户想要的功能,达到规避设计风险、回避芯片厂商的限制的目的。另外,知识产权的概念不断涌现,仿制别人抄袭,FPGA能够防止别人抄袭,让设计的智慧得到充分保护,并让公司的利益在较长时间内得到保证。随着FPGA芯片供应商和第三方公司的重视,现在有现成的IP核,这进一步缩短了设计周期,减小了开发成本。现在很多免费的软IP核和硬IP核的出现更是压缩了成本。
1.2 FPGA典型结构图
基于LUT的FPGA具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的时序与逻辑组合的逻辑电路功能,因此其适用于高速、高密度的高端数字逻辑电路设计领域。其组成部分主要有可编程输入/输出单元、基本可编程逻辑单元、内嵌SRAM、丰富的布线资源、底层嵌入功能单元、内嵌专用单元等。FPGA的主要设计和生产厂家有赛灵思、Altera、Lattice、Actel、Atmel和QuickLogic等,其中最大的是美国赛灵思公司,在可编程市场中占有50%以上的份额,比其他所有竞争对手市场份额的总和还多。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。
目前,FPGA市场占有率最高的两大公司——赛灵思公司和Altera生产的FPGA都是基于SRAM工艺的,需要在使用时外接一个片外存储器以保存程序。上电时,FPGA将外部存储器中的数据读入片内RAM,完成配置后,进入工作状态;掉电后SRAM存储的数据丢失,内部逻辑消失。这样,FPGA能反复使用,且无须专门的FPGA编程器,只需配备一片存储代码的FLASH存储器即可。
Actel、QuickLogic等公司还提供反熔丝技术的FPGA,它具有抗辐射、耐高低温、低功耗和速度快等优点,在军品和航空航天领域中应用较多,但这种FPGA不能重复擦写,开发初期比较麻烦,费用也比较昂贵。Lattice是ISP技术的发明者,在小规模PLD应用上有一定的特色。赛灵思公司的早期产品一般不涉及军品和宇航级市场,但目前已经有多款产品进入该领域。
目前主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块。
此处,我们以XC2V3000为例,介绍典型的FPGA结构图。XC2V3000拥有300万门的超大系统容量,采用0.15 µm/0.12 µm CMOS 8层金属混合工艺设计,内核电压为1.5 V,根据输入/输出参考电压的不同设计可支持多种接口标准,内部时钟频率可达420 MHz。XC2V3000的内部结构如图1-1所示,它主要由可配置逻辑(CLB)、用户可编程I/O(IOB )、Block SelectRAM、数字时钟管理模块(DCM)、数字阻抗匹配模块(DCI )和硬件乘法器等组成。其中CLB用于实现FPGA的绝大部分逻辑功能;IOB用于提供封装引脚与内部逻辑之间的接口;BlockRAM用于实现FPGA内部的随机存取,它可配置RAM、双口RAM、FIFO等随机存储器;DCM用于提供灵活的时钟管理功能;硬件乘法器用于提高FPGA的数字信号处理能力。
图1-1 Virtex系列产品XC2V3000的内部结构
1.可配置逻辑块(CLB)
如图1-2所示,XC2V3000的CLB模块由4个相同的Slice和附加逻辑构成,用于实现组合逻辑和时序逻辑。
图1-2 Virtex系列产品XC2V3000的CLB结构
每个Slice由2个4输入函数发生器、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。算术逻辑包括1个异或门(XORG)与1个专用与门(MULTAND),1个异或门可以使1个Slice实现2位全加操作,专用与门用于提高乘法器的效率。进位逻辑由专用进位信号和函数复用器(MUXC)组成,共同实现快速的算术加减法操作。具体结构详见图1-3和图1-4。
图1-3 Virtex系列产品XC2V3000的SLICE结构
图1-4 Virtex系列产品Slice结构
2.可编程输入/输出单元(IOB)
可编程输入/输出单元简称IOB,提供FPGA内部逻辑与外部封装引脚之间的接口,用于完成不同电气特性下对输入/输出信号的驱动和匹配。根据当前使用的I/O接口标准的不同,需要设置不同的接口电压Vcco和参考电压VREF。XC2V3000的I/O引脚分布在8个Bank中,同一个Bank的接口电压Vcco必须保持一致,不同Bank的接口电压Vcco允许不同。
如图1-5所示,XC2V3000的IOB模块含有6个存储单元,可以单独配置为边沿D触发器或锁存器,也可以成对实现DDR(Double-Data-Rate)输入和DDR输出。
DDR寄存器的结构见图1-6。
3.嵌入式块RAM(BRAM)
XC2V3000的Block SelectRAM资源丰富,其单位容量为18Kb双端口RAM,可以自由设定数据宽度和深度纵横比,并支持三种并发读/写(Read-During-Write)模式。
图1-5 Virtex系列产品XC2V3000的IOB结构
图1-6 DDR寄存器结构
4.丰富的布线资源
布线资源连通FPGA内部所有的单元,IOB、CLB、BRAM、DCM等都使用相同的内连阵列。XC2V3000内部共有16条全局时钟线,用于芯片内部全局时钟和全局复位/置位的布线。24条纵横交错的长线资源实现了芯片Bank间的高速通信和第二全局时钟信号的布线。
5.底层内嵌功能单元
XC2V3000集成了丰富的内嵌功能模块,如DCM(数字时钟管理器)、DCI(数字控制阻抗)、MicroBlaze软处理器核等,使其具有软、硬件联合设计的能力,可以用有限的资源完成系统级的设计任务。
1.3 LUT原理
查找表(Look-Up-Table)简称为LUT,其本质就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16×1的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软
....
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询