差别
这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
什么是fpga [2017/09/10 13:23] gongyu 创建 |
— (当前版本) | ||
---|---|---|---|
行 1: | 行 1: | ||
- | [[FPGA]]就是一个神器,貌似在数字世界里无所不能,它就像乐高的积木一样可以搭建各种不同的功能模块,实现你所希望的各种功能,当然,首先你必须掌握最基本的数字逻辑知识,学会一种用来构建各种功能的工具语言(在这里我们推荐广受欢迎的[[Verilog]]),再次你要动脑(考验的是你的逻辑思维是否清晰),一个优秀的建筑师的作品是在脑子里勾画出来的,而不是拿积木碰运气拼凑出来的。 | ||
- | {{ :altera-fpgas.jpg |}} | ||
- | |||
- | 在进入正式的学习之前,先给大家提供两本基础的英文书,同学们可以下载了进行阅读(在无法上网和流量将用尽的时候最好、最让自己不内疚的消遣方式) | ||
- | {{ :fpga_for_dummies.jpg?100|}} {{ :introduction_to_digital_design_top_600_35755.1448322782.1280.1280.png?150|}} | ||
- | * 傻瓜都能掌握的FPGA知识: {{:fpgasfordummiesebook.pdf|FPGA for Dummies}} | ||
- | * 美国大学的数字电路/Verilog教程(基于Digilent的板卡,使用的是Xilinx的芯片){{:intro_to_digital_design-digilent-verilog_online.pdf|Introduction to Digital Design Using Digilent FPGA Boards}} | ||
- | |||
- | 同时建议大家能够大量阅读[[https://en.wikipedia.org/wiki/Field-programmable_gate_array|维基百科]]上面关于FPGA的词条信息,访问维基百科不需要翻墙,但同学们一定要阅读英文的资料,而不是中文的。 | ||
- | |||
- | 来,正式开始宏大的FPGA学习历程。。。 | ||
- | |||
- | ---- | ||
- | ====1 数字逻辑、可编程逻辑及FPGA==== | ||
- | FPGA(Field Programmable Gate Array)译作中文为:现场可编程门阵列,也就是设计者可以在现场对可定制的数字逻辑进行编程的集成电路,相比于其它的硬件构成,它允许你构建你所需要的硬件而不需要[[ASIC]](专用集成电路),而且比采用微处理器内核更简单、快速、省电。 | ||
- | |||
- | 关于FPGA的大概介绍,参考我们的培训文档:{{:ecbc可编程逻辑基础.pdf|ECBC可编程逻辑基础PPT}} | ||
- | |||
- | ===1.1 为什么用FPGA?=== | ||
- | FPGA的技术优势:灵活的开发周期、更低的设计迭代成本、更低的一次性工程费用(NRE),易于评估和实现的可选设计架构,新产品上市时间快。 | ||
- | 相比于[[ASIC]]和[[MCU]]来讲,FPGA具有以下优势: | ||
- | - 功能强大,并大量并行处理结构;可以实现数字设计领域几乎所有的功能 - 组合逻辑、时序逻辑、存储、处理器;现今的FPGA芯片集成了更多功能,比如[[PLL]]时钟产生、分配、驱动,支持各种高速接口规范的可编程IO,硬核化的[[SPI]]/[[I2C]]总线以及[[ARM]]内核等,增强的[[DSP]]单元,Altera公司(现已被Intel收购)的[[https://www.altera.com/products/fpga/max-series/max-10/overview.html|MAX10]]甚至集成了串行[[ADC]]能够对监测环境的温度。 | ||
- | - 开发快,上市时间短,适合原型设计或小批量产品,FPGA高度灵活,设计实现和后续优化的灵活性可以显著影响项目的进度、设计的复杂度,降低项目的风险,便于更改和升级。 | ||
- | - 重复编程/配置,灵活、快速 | ||
- | - 集成度高,可以通过选用不同规模的器件实现自己所需要的功能,内部功能模块之间的通信和接口的速度、性能都会较多个分立的芯片之间互连有明显的改善,节省板卡空间,便于调试 | ||
- | |||
- | ===1.2 FPGA设计需要的技能=== | ||
- | FPGA在各个领域都是必不可少的一种硬件工具,掌握并有效使用FPGA对当代的电子设计工程师来讲是非常必要的,要做到较好的FPGA设计需要具备如下的一些技能: | ||
- | |||
- | ==1.2.1 具备自己设计高速数字电路板(PCB)的能力并且掌握[[DSP]]的基础理论== | ||
- | * [[PCB]]硬件与接口设计 | ||
- | * 逻辑电路设计 | ||
- | * 硬件仿真 | ||
- | * 硬件模块调试 | ||
- | * PCB设计布局 | ||
- | * 信号完整性及终端匹配 | ||
- | * DSP算法的硬件实现 | ||
- | * 功耗与去藕设计 | ||
- | * 板级引脚分配 | ||
- | * I/O特性的定义 | ||
- | * 设计优化权衡 | ||
- | * FPGA器件和封装选择 | ||
- | |||
- | ==1.2.2 还要掌握至少一门硬件描述语言(HDL)== | ||
- | * HDL语言的设计输入 | ||
- | * 测试平台的开发 | ||
- | * 设计约束 | ||
- | * 脚本实现自动化处理 | ||
- | * HDL流程文件的配置管理 | ||
- | * 支持设计复用 | ||
- | |||
- | ==1.2.3 从系统高度设计你的系统 == | ||
- | * 处理器需求分析 | ||
- | * 处理器架构选择 | ||
- | * 系统级设计的层次结构定义 | ||
- | * 系统模块的集成与接口测试 | ||
- | * 数据流的定义 | ||
- | * 硬件/软件实现的权衡 | ||
- | * 功能划分和模块化设计 | ||
- | * 系统级测试、调试和验证 | ||
- | |||
- | ==1.2.4 具体实现 - 通过软件/DSP设计== | ||
- | * 处理器代码模块的定义 | ||
- | * DSP算法的软件实现 | ||
- | * 在处理器上运行操作系统 | ||
- | * 代码的编写和测试 | ||
- | * 常规的代码调试和验证 | ||
- | * 代码的配置管理 | ||
- | |||
- | ===1.3 PLD/FPGA的结构=== | ||
- | ==1.3.1 FPGA基本功能== | ||
- | {{ :fpga_structure.gif |}}<WRAP centeralign> FPGA结构 </WRAP> | ||
- | 组成数字电路的三个基本部分为:门、寄存器以及将这些门(Gate)、寄存器(Register)连接起来的连线(Wire)。 | ||
- | {{ :fpga_cell_example.png |}} | ||
- | <WRAP centeralign> FPGA逻辑单元构成举例 </WRAP> | ||
- | |||
- | ==1.3.2 FPGA增强功能== | ||
- | - 内置处理器:软核 & 硬核 & [[DSP]] | ||
- | - 时钟及管理:[[PLL]]、[[DLL]]、驱动/分配 | ||
- | - IO:多种高速收发、DDR存储器访问、可编程数控阻抗 | ||
- | - 嵌入MAC单元 - 高效浮点运算 | ||
- | - 各种内置存储器:[[双口RAM]]、[[FIFO]] | ||
- | - 各种常用接口:[[I2C]]、[[SPI]]等 | ||
- | - 系统监控:内置ADCs | ||
- | |||
- | ===1.4 主要供应商 === | ||
- | {{ :altera_logo.jpg?100|}} | ||
- | * [[http://www.altera.com|Altera]]是专注于可编程逻辑器件(PLDs)、重配置复杂数字电路的美国公司。该公司于1984年发布器第一款PLD,目前已经是全球最大的PLD供应商,第二大的FPGA供应商,其主要产品线为高端的Stratix,中端Arria以及低端的Cyclone系列FPGA以及MAX系列的CPLDs,其设计软件为Quartus II以及Enpirion 系列的PowerSoC DC-DC电源方案. 2015年12月8日Altera以167亿美元卖给Intel,正式已经成为Intel的一个产品部门 - PSG(可编程系统部)。[[https://en.wikipedia.org/wiki/Altera|更多最新信息参见Wikipedia关于Altera的介绍]]。 | ||
- | {{ :xlnxlogo.jpg?100|}} | ||
- | * [[http://www.xilinx.com|Xilinx]]是专注于可编程逻辑器件的美国公司,FPGA的发明者也是全球第一个采用Fabless生产模式的半导体公司。Xilinx成立于1984年,总部位于美国加州的San Jose。其主要产品线为高端的Virtex, 中端的Kintex,低端的Artix以及Spartan系列,其设计软件包括[[Xilinx ISE]]和[[Vivado Design Suite]], [[https://en.wikipedia.org/wiki/Xilinx|更多最新信息参见Wikipedia关于Xilinx公司的介绍]]。 | ||
- | {{ :lattice_semi_logo.png?100|}} | ||
- | * [[http://www.latticesemi.com|Lattice Semi]]是一家高性能可编程逻辑器件(FPGAs,CPLD,一季SPLDs)的美国公司,成立于1983年,在全球有大约700名员工,为全球第三的FPGA供应商,全球第二的CPLDs & SPLDs。其主要产品线为高端的ECP系列,中端的MACH系列以及低端的ICE系列,其设计软件为[[http://www.latticesemi.com/Products/DesignSoftwareAndIP/FPGAandLDS/LatticeDiamond.aspx|Lattice Diamond]]。更多最新信息参见[[https://en.wikipedia.org/wiki/Lattice_Semiconductor|Wikipedia关于Lattice Semiconductor公司的介绍]]。 | ||
- | {{ :cypress_logo.png?100|}} | ||
- | * [[http://www.cypress.com|Cypress]]是美国一家在嵌入式系统领域(汽车电子、工业控制、网络平台到高交互消费、移动设备)专注于高性能、高质量解决方案的设计和生产企业。它提供比较宽泛但差异化的产品线,比如NOR Flash存储器、F-RAM™以及SRAM, Traveo™ 微控制器, 业界独特的PSoC® 可编程片上系统, 模拟和PMIC电源管理集成电路, CapSense® 电容触摸感知控制器,以及无线低功耗蓝牙BLE 和USB连接方案。更多最新信息参见[[https://en.wikipedia.org/wiki/Cypress_Semiconductor|Wikipedia关于Cypress Semiconductor公司的介绍]]。 | ||
- | {{ :actel_logo.png?100|}} | ||
- | * [[http://www.microsemi.com|Actel]]已经被Microsemi收购,主要产品为非易失, 低功耗的FPGA,混合信号FPGA以及可编程逻辑方案。其产品线有反熔丝结构的FPGA和基于Flash的FPGA两种,主要用于高可靠性的领域,比如航空航天。更多最新信息参见[[https://en.wikipedia.org/wiki/Actel|Wikipedia关于Actel公司的介绍]]。 | ||
- | |||
- | ===1.5 FPGA的选型决策原则=== | ||
- | - 功能/资源:逻辑单元、存储器、处理能力、IO、处理器内核、DSP | ||
- | - 封装:满足管脚数量以及板卡的物理尺寸要求 | ||
- | - 功耗:满足系统对供电的限制需求 | ||
- | - 开发工具/难度:影响设计难度和开发时间,尽可能选择易于开发、调试的器件架构 | ||
- | - 系统成本:包括配置RAM、外供电源、时钟等,除了器件成本之外还要考虑实现成本、支持成本等。 | ||
- | - 购买难度:价钱/数量/供货渠道 | ||
- | - 灵活性:便于将来的产品修改和升级 | ||
- | - 技术支持:供应商是否能够提供良好的技术支持,乃至培训 | ||