第一篇:FPGA调研报告-FPGA在航天领域的应用
FPGA技术调研:FPGA在航天领域的应用
1.引言
现 场 可 编 程 门 阵 列(Field programmable gatearrays,FPGA)是一种可编程使用的信号处理器件,用户可通过改变配置信息对其功能进行定义,以满足设计需求。与传统数字电路系统相比,FPGA 具有可编程、高集成度、高速和高可靠性等优点,通过配置器件内部的逻辑功能和输入/输出端口,将原来电路板级的设计放在芯片中进行,提高了电路性能,降低了印刷电路板设计的工作量和难度,有效提高了设计的灵活性和效率。设计者采用 FPGA 的优点:
(1)减少对所需器件品种的需求,有助于降低电路板的体积重量;
(2)增加了电路板完成后再修改设计的灵活性;
(3)设计修改灵活,有助于缩短产品交付时间;
(4)器件减少后,焊点减少,从而可提高可靠度。尤其值得一提的是,在电路运行频率越来越高的情况下,采用 FPGA 实现的复杂电路功能减小了板级电路上 PCB 布线不当带来的电磁干扰问题,有助于保证电路性能。
FPGA 也 是 现 阶 段 航 天 专 用 集 成 电 路(ASIC, Application specific integrated circuit)的最佳实现途径。使用商用现货 FPGA 设计微小卫星等航天器的星载电子系统,可以降低成本。利用 FPGA 内丰富的逻辑资源,进行片内冗余容错设计,是满足星载电子系统可靠性要求的一个好办法。目前,随着对卫星技术的不断发展、用户技术指标的不断提高以及市场竞争的日益激烈,功能度集成和轻小型化已经成为星载电子设备的一个主流趋势。采用小型化技术能够使星载电子设备体积减小、重量减轻、功耗降低,提高航天器承载有效载荷的能力以及功效比。采用高功能集成的小型化器件,可以减小印制板的尺寸,减少焊盘数量,还有利于充分利用冗余技术提高系统的容错能力。星载数字电路小型化的关键是器件选用,包括嵌人式高集成度器件的选用,其中,高密度可编程逻辑器件 FPGA 的选用是一个重要的实现方式。
目前,在航天遥感器的设计中,FPGA 被广泛地应用于主控系统 CPU 的功能扩展CCD 图像传感器驱动时序的产生以及高速数据采集。本文回顾了 FPGA 的发展,分析了其主要结构,并对航天应用 FPGA 进行了综述。指出了航天应用对FPGA 及其设计的要求,重点分析了空间辐射效应对FPGA 可靠性的影响,并总结了提高 FPGA 抗辐照的可靠性设计方法。最后,对航天应用 FPGA 的发展进行了展望。
2.FPGA 航天应用
可编程逻辑器件以其设计方便、设计便于修改、功能易于扩展,在航天、空间领域中得到了越来越广泛的应用。一种是以 Actel 公司产品为代表的一次编程反熔丝型 FPGA,一种是以 Xilinx 公司产品为代表的基于 SRAM 的可重新配置的 FPGA。
2.1 航天应用 FPGA 的分类 FPGA 按其编程性,目前具有航天成功应用经验的 FPGA 主要有两类: 一类是只能编程一次的一次性编程 FPGA。另一类是能多次编程的可重编程 FPGA,如 SRAM 型 FPGA、Flash 型 FPGA,这类 FPGA 一般具有在系统编程(ISP, In system programming)能力。
2.1.1 一次性编程 FPGA 此类产品采用反熔丝开关元件,具有体积小、版图面积小、低抗辐射抗干扰、互连线特性阻抗低的特点,不需要外接 PROM 或 EPROM,掉电后电路的配置数据不会丢失,上电后即可工作,适用于航天、军事、工业等各领域。这类产品中,具有代表性并已取得航天应用成功经验的产品是 ACTEL 公司的抗辐射加固反熔丝型 FPGA。与传统 FPGA平面型散布 的 逻 辑 模 块、连 线、开关矩阵的布局不同,反熔丝型 FPGA 采用紧凑、网格化密集布局的平面逻辑模块结构。利用位于上下逻辑模块层之间、金属对金属的可编程反熔丝内部连接元件实现器件的连接,减小了通道和布线资源所占用的空间。在编程之前,该连接元件为开路状态,编程时,反熔丝结构局部的小区域内具有足够高的电流密度,瞬间产生较大的热功耗,融化绝缘层介质形成永久性通路。
2.1.2 可重编程 FPGA 此类产品采用 SRAM 或 Flash EPROM 控制的开关元件,其优点是可反复编程。配置程存放在 FPGA外的存储器中,系统上电时,配置程加载到 FPGA中完成硬件功能的定制化。其中,SRAM 型 FPGA 还可以在系统运行中改变配置,实现系统功能的动态重构。但是,此类 FPGA 掉电后存储的用户配置逻辑会丢失,只能上电后重新由外部存储器加载。FlashEPROM 型 FPGA 具 有 非 易 失 性 和 可 重 构 的 双 重 优点,但不能动态配置,功耗也比 SRAM 型 FPGA 高。此类 FPGA 由于配置数据存储在 FPGA 内 的 SRAM存储器中,可编程逻辑开关采用多路选择器实现,内部逻辑功能采用基于 SRAM 结构的查找表实现,这些部位都属于单粒子翻转效应敏感型半导体结构。因此,在航天应用中要特别注意。具有代表性的、并取得航天应用成功经验的产品是 Xilinx 公司的基于SRAM 型 Virtex 系列的 FPGA 产品。
2.2 FPGA 航天应用现状
FPGA 在国内外的航天、空间领域,特别是商用卫星得到了广泛的应用。据统计,在国内外深空探测、科学及商用卫星共 60 个项目中都用到了 FPGA,军用卫星项目中也有多个项目用到 FPGA。
2.2.1 Acte FPGA 的航天应用
Actel 的耐辐射和抗辐射 FPGA 自从在 1997 年火星探路者(Mars Pathfinder)以及随后的勇气号、机遇号任务中取得成功后,其 FPGA 继续用于 NASA、ESA 的火星探测任务。Actel 的耐辐射和抗辐射器件用于火星探测器的控制计算机,执行从地球到火星6 个月飞行的导航功能。在火星探索者漫游器(ExplorerRover)的照相机、无线通信设备中均采用了 Actel 器件。ESA 的火星快车轨道卫星中,固态记录器使用了 20 多个 Actel FPGA 器件。Actel 公 司 的 FPGA 器 件 已 用 于 德 国 航 天 领 域(DLR)双光谱红外探测(BIRD)卫星中。BIRD 是全球首个采用红外传感器技术的卫星,以探测和研究地球上的高温事件,如森林山火、火山活动、油井和煤层燃烧等。超过 20 个高可靠性 FPGA 用干卫星有效载荷数据处理、存储器管理、接口和控制、协处理以及红外摄影机的传感器控制等多个关键性功能中。
2.2.2 Xilinx FPGA 的航天应用
同 ACTEL 相比,Xilinx 公司用于航天、空间领域的产品研制较晚,但是,其功能强大、性能高、可重新配置的民用塑封产品向宇航级产品的过渡、全面提高抗空间辐射能力,逐渐成为空间电子产品设计中常用的 FPGA 产品,并将获得越来越广泛的应用。Xilinx 的 Virtex 耐辐射 FPGA 被用于 2003 年发射的澳大利亚的军民混用通信卫星 Optus CL,在卫星的 UHF 有效载荷中,Xilinx Virtex FPGA(XQVB300)用来实现地球数据的信号处理算法,并使用了 Xilinx提供的 IP 核。
Xilinx 的加固 FPGA XQR4062XL 被用于 2002 年发射的澳大利亚科学卫星 Fedsat(联合卫星,用于研究磁层)的高性能计算有效载荷。HPC-1 是第一例在星载计算机系统的标准运行中采用 FPGA 实现了可配置计算技术 RCT。目前正在开发的 RHC-II 将使用Xilinx FPGA 实现星上数据处理。
此 外,GRACE(NASA)的 敏 感 器 中 使 用 了XQR4O36XL 产品。
在火星探测漫游器 Discovery 和 Spirit 中都成功应用了 Xilinx FPGA 产品。两片宇航 FPGA VirtexTMFPGA XQVR100O 被用于火星漫游器车轮电机控制、机械臂控制和其他仪表中,4 片耐辐照 4000 系列的FPGA XQR4062XL 用于控制火星着陆器的关键点火设备,保证着陆器按规定程序下降及成功着陆。欧洲第一个彗星轨道器和着陆器 ROSETTA 上总共有 45 片 FPGA,都选用 ACTEL RT14I00A,承担了控制、数据管理、电源管理等重要功能,并且飞行中任何一片 FPGA 都不得断电。
Xilinx 最新发布的 Virtex-5QVFPGA 具有非常高的抗辐射性,TID 耐性为 700 kraD 以上,SEU(Sin-gle Event Upset,单粒子翻转)闩锁(Latch Up)耐性超过 100 MeV·cM2/Mg,主要面向人造卫星和宇宙飞船上的遥感处理、图像处理以及导航仪等用途。因此,基于 FPGA 系统构成无需为了辐射措施而增加冗余,可以削减系统开发所需要的时间和成本。其规模也达到了 13 万个逻辑单元,集成了最高速度为 3.125 Gbit/s的高速收发器,并强化了 DSP 功能,作为航天领域用 FPGA 中属业界最高水准。
3.辐射效应及其影响
航天、空间电子设备由于其所处的轨道以及使用环境的不同, 受到的辐射影响也不相同。从总体上来说,对 FPGA 影响比较大的辐射效应主要有: 总剂量效应(TID: Total ionizing Dose)、单粒子翻转(SEU: Single event upset)、单 粒 子 闩 锁(SEL: Single event latchup)、单粒子功能中断(SEFI: Single event func-tional interrupt)、单 粒 子 烧 毁(SEB: Single eventburnout)、单 粒 子 瞬 态 脉 冲(SET: Single event tran-射效应产生的机理不尽相同, 引起 FPGA 的失效形式也不同。总剂量效应: 光子或高能离子在集成电路的材料中电离产生电子空穴对,最终形成氧化物陷阱电荷或者在氧化层与半导体材料的界面处形成界面陷阱电荷,使器件的性能降低甚至失效。单粒子翻转: 具有一定能量的重粒子与存储器件或逻辑电路 PN 结发生碰撞, 在重粒子运动轨迹周围形成的电荷被灵敏电极收集并行成瞬态电流,如果电流超过一定值就会触发逻辑电路, 形成逻辑状态的翻转。单粒子翻转敏感区域是指 FPGA 中易于受到单粒子效应影响的区域,包括 FPGA 的配 置 存 储 器、DCM、CLB、块存储区域。
单粒子闩锁: CMOS 器件的 PNPN 结构成了可控硅结构。质子或重粒子的入射可以触发 PNPN 结导通, 进入大电流再生状态,产生单粒子闩锁。只有降低电源电压才能退出闩锁状态。单粒子功能中断: 质子或重粒子入射时引起器件的控制逻辑出现故障,进而中断正常的控制功能。FPGA 中单粒子功能中断的敏感部分为配置存储器、上电复位电路、SelectMAP 接口和 JATAG 接口。
单粒子烧毁: 入射粒子产生的瞬态电流导致敏感的寄生双极结晶体管导通。双极结晶体管的再生反馈机制造成收集结电流不断增大,直至产生二次击穿,造成漏极和源极的永久短路,烧毁电路。FPGA发生单粒子烧毁的概率较小。单粒子瞬态脉冲: 带电粒子入射产生的瞬态电流脉冲影响到下一级逻辑电路的输入,造成该逻辑电路输出紊乱。单粒子瞬态脉冲可能引起 FPGA 内部逻辑电路的短时错误。单粒子瞬态脉冲对于<0.25 μM 工艺的 FPGA 影响较大。
位移损伤: 单粒子位移损伤是单个粒子入射引起晶格原子移位、形成缺陷群、引起的永久性损伤。
上述辐射效应对 FPGA 造成的影响有的是永久性的,如总剂量效应、单粒子烧毁、位移损伤; 有的是能够恢复的,如单粒子翻转、单粒子功能中断、单粒 子 瞬 态 脉 冲。以 上 单 粒 子 效 应 中 SEL、SEB 和SEGR 均有可能对器件造成永久性损伤。因此,一般星上系统都会采用抗 SEL 的器件。SEU 和 SET 虽然是瞬时影响,但其发生率远高于以上 3 种,反而更应引起重视。接下来根据对上述辐射影响的分析,研究提高 FPGA 抗辐射效应的可靠性设计方法。
随着 SRAM 型的 FPGA 随 着 工 艺 水平的 提 高、规模的增大和器件核电压的降低,抗总剂量效应性能不断提高,但是更容易受 SEU 和 SET 的影响。针 对 单 粒 子 效 应 的 问 题,MAPLD、NSREC、RADECS 会议提交的报告认为,Virtex-II 系列产品抗总 剂 量 辐 射 能 力 达 到 200 krad,抗 SEL 的 能 力 为LET 160 MeV·cm /mg 以下无闩锁,同时,需要考虑SEU、SET、SEFL 等单粒子效应
4.航天应用 FPGA 的可靠性设计
在航天、空间电子设备中,FPGA 主要用于替换标准逻辑,还用于 SOC 技术,提供嵌人式微处理器、存储器、控制器、通信接口等。其中,可靠性是FPGA 设计的主要需求。
根据功能及其重要性的不同,空间电子系统设计分为关键与非关键两大类,航天器控制为关键类,科学仪表为非关键类。航天器控制系统对 FPGA 的一般需求: 高可靠、抗辐射加固和故障安全。科学仪器对 FPGA 的设计要求一般为高性能、耐辐射和失效安全,其可靠性则是由性能需求决定的,对 FPGA 的需求也因系统而异,如测量分辨率、带宽、高速存储、容错能力等。航天用 FPGA 的可靠性设计主要通过器件自身的硬件设计以及软件设计来实现。4.1 FPGA 的硬件可靠性设计
FPGA 的硬件可靠性设计主要是针对空间辐射效应的影响,借助制造工艺和设计技术较为彻底地解决了单粒子效应防护问题。一般从以下几个方面进行设计[6]: FPGA 整体设计加固、内部设计间接检测辐射效应的自检模块、引入外部高可靠性的监测模块。
整体加固设计是指在电子设备的外面采用一定厚度的材料进行整体辐射屏蔽,减少设备所受的辐射效应,经常采用的材料有铝、钽和脂类化合物等。这种方法在航天电子元器件中使用较多,也比较成熟。例如,作为美国军用微电子产品主要供应商的Honeywell,加固 ASIC 技术覆盖范围宽。Aeroflex 采用 “设计加固、商用 IC 工艺线流片” 的方式提供性能先进的加固 ASIC 产品,具备数模混合加固 ASIC的研制能力。这种采用商业线流片生产军用和加固微电子产品的技术线路,既有利于摆脱工艺加固对器件发展的约束,又有利于满足用户对先进加固器
件的需求,降低成本,缩短供货时间。Atmel 为用户提供了高性能、小尺寸、低功耗的各类器件的工艺资源,包括用于航天的耐辐照高速、低 功 耗 数 模 混 合 CMOS 工 艺 以 及 内 嵌 EEPROM 的CMOS 工艺。国内从事军用微电子器件研制的单位很多,包括国有科研单位和非国有 IC 研制公司。但是,能够完成抗辐照加固 IC 研制的单位并不多。国内自行研制的加固 ASIC 产品已经在卫星中得到了成功应用。采用体硅外延层,也可以防止发生 SEI。例如,Xilinx 的 virtex-II 耐辐射产品是在军品等级器件的基础上进一步采用外延衬底设计,抗总剂量电离效应能力按照 MIL-STD-883 Method 1019 进行批次采样考核。自检模块的目的是通过某些模块的正常运行来预测整个 FPGA 运行的正常性。自检模块由分布在FPGA 重要布线区域附近的简单逻辑电路实现,也可以由多模冗余模块表决结果或者余数检测法以及奇偶校验法等其他产生的结果直接提供输出。4.2 FPGA 的软件可靠性设计
航天应用 FPGA 的软件可靠性设计是指应用软件程序配置来屏蔽辐射效应造成的运行失常。其中,冗余设计方法是被公认为比较可靠的对付辐射效应的方法。常用的冗余设计有三模冗余法(TMR,Triplemodule redundancy)和部分三模冗余法(PTMR,Partialtriple module redundancy)。虽然 TMR 能够提高系统的可靠性,但也会使模块速度降低、占用资源和功率增加。综合考虑其他设计指标,可以根据实际情况对关键部分使用部分三模冗余法。冗余结构尽管可以保证系统可靠性,但却不能及时发现并纠正错误,或为发现错误而引入了过多的组合逻辑,当应用于 FPGA 时,增加了容错电路自身出错的可能性。除此之外,星载系统无人值守的运行特点使得系统重构与故障恢复也非常困难。
对配置存储器的回读校验和重配置[6](或局部重配置)是一种有效的抵抗辐射效应的方法,通过对部分配置的重加载能够修复 SEU 效应造成的影响,其频率应是最坏情况 SEU 效应发生率的 10 倍。在重加载逻辑设计中,需要对重加载的实现方式、加载内容进行仔细设计,并不是所有的内容都可以重加载,也不是所有的内容都需要重新配置。
在系统设计中,采用高可靠性的反熔丝 FPGA负责从非易失大容量存储器中读取 Xilinx FPGA 的配置数据对其进行配置。在运行期间,对最容易受辐射效应影响的配置存储器按列进行读操作,然后与标准数据进行比对,对出现错误的列进行局部重配置。FPGA的可编程IO也容易受到辐射粒子影响产生 SEU 和 SEL。对输入输出脚设计三模冗余设计方法是一种非常有效方法,但是这种方法将需要占用 3 倍的 I/O 资源。如果 SET 作用在时钟电路或者其他数据、控制线上容易产生短脉冲抖动,有可能会造成电路的误触发或者数据锁存的错误,在设计时可采用同步复位设计内部复位电路、控制线使能信号线,逻辑数据在锁存时尽可能配合使能信号。
5.FPGA 航天应用发展趋势
目前,在深微亚米半导体工艺下,传统的 FPGA设计技术在器件良率、功耗、互联线延时、信号完整性、可测性设计等方面面临挑战[9]。基于传统技术的 FPGA 仍然在向高密度、高性能、低功耗的方向发展,使得 FPGA 从最开始的通用型半导体器件向平台化的系统级器件发展。基于异步电路的 FPGA 设计、3D 集成技术、新型半导体结构的应用将是 FPGA 技术发展的热点。航天、空间应用方面,国外航天对 FPGA 空间应用的总结和预测分析表明,空间应用对 FPGA 选用呈现出以下趋势:
(1)器件工作电压从 5 V 变为 3.3 V、2.5 V 甚至l.8 V;(2)从使用总剂量加固 FPGA 发展到使用耐总剂量 FPGA 产品;
(3)从 SEU 敏感寄存器 FPGA 的应用发展为使用内建寄存器 TMR 结构的 FPGA;(4)从只使用一次编程的反熔丝型 FPGA 发展为使用基于 SRAM/EEPROM 的可重置型 FPGA。这种选用趋势带来的突出问题是: 从寄存器对SEU 敏感变为 FPGA 对 SEU 敏感; 配置存储 FPGA的设计复杂性已经同 ASIC 的复杂程度相当。
6.结论
本文对航天应用中 FPGA 的使用进行了 综 述。分析了 FPGA 的结构特点,针对航天、空间环境的辐照条件,分析了航天应用 FPGA 的失效模式及可靠性设计方法。最后,对航天应用 FPGA 及其可靠性设计技术的发展进行了展望。
第二篇:FPGA芯片(技术)发展现状及应用调研
FPGA芯片(技术)发展现状及应用调研
1引言
1.1背景
1.2FPGA简介
FPGA全称是现场可编程门阵列(Field Programmable Gate Array),结构是什么?
有哪些分类?
基本的作用?
1.3比较
MS 把 CPU,GPU,FPGA 和 ASIC 放在 Flexibility VS Efficiency的角度进行对比,这个也是我们经常使用的方法。再次强调,灵活性(通用性)一定意味着效率的损失,反之亦然[2]
这几个相比的优缺点又各是什么
1.4国家战略
中国从2006年到2020年实施的《国家中长期科学与技术发展规划纲要》[3]中,明确指出重点领域中的第7条信息产业与服务业,要重点发展集成电路及关键元器件。集成电路及芯片是计算机的核心部件,随着中美两国在科技上的竞争愈加激烈,为遏制我国电子信息产业向高端、核心领域发展,如中兴华为大疆等高科技公司接连被美国制裁。实现核心技术和装备的国产化和自主可控已上升到国家战略层面。
FPGA国产化是实现集成电路国产化的重要一环,同时也作为十二五核高基重大专项——千万门FPGA设计,2发展历史
FPGA是PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)、PLD(可编程逻辑器件)等可编程器件的基础上发展起来的。
FPGA与ASIC(专用集成电路)、GPU(中央处理器)的比较
[5]ASIC芯片尺寸小、功能强、功耗低,但其设计复杂,并且由批量要求
FPGA价格较低廉,能现场编程,但体积大、能力有限且功耗比ASIC大
2.1起源
可编程电路发展历程1、20世纪70年代 基于与或阵列的PLD(可编程逻辑器件)
特点:结构简单,只能实现用少量乘积项表示的小规模电路2、1984年 Altera公司制造出紫外线可擦写的EPLD
特点:可重复编程3、1985年 Lattice公司制造出电可擦写的GAL
特点:设计灵活、高速、低功耗和改写迅速方便等4、1985年 Xilinx公司制造出FPGA
特点:结合PLD可编程性与MPGA(掩膜可编程门阵列)通用连线结构,因而具备可编程性和高逻辑密度。
中国FPGA技术的追赶历程列出引用文献
1、反向研制
2、正向研制
3、完备化的正向研制
据不完全统计显示,国内目前有以高云半导体、京微齐力、上海安路、紫光同创、AGM和上海复旦微电子等为代表的数家国产FPGA企业
国内研究文献大多从1992年开始出现FPGA技术的介绍
早先的介绍书籍 朱明程.FPGA 原理及应用设计
复旦大学专用集成电路与系统国家重点实验室
2004研制10万门针对数据通信的FPGA芯片“FDP100K”
成果转化-复旦微电子企业
2.2
(1)(embedded)eFPGA(嵌入式现场可编程门电路)
eFPGA思想由2014年王成诚博士等人提出,作者随后成立FlexLogix公司并将其商业化,(2)
2.3 FPGA的结构[5]
采用逻辑单元阵列的新概念,包括可配置逻辑模块(CLB)、输入输出模块(IOB)和内部连线三个部分
2.4 FPGA的设计流程
利用开发软件和编程工具对器件进行开发的过程,2.5 发展趋势[5]
2003年文章指出几点
1、大容量、低电压、低功耗FPGA2、系统级高密度FPGA3、FPGA与ASIC相互融合4、动态可重构FPGA
不仅在系统重新配置电路功能,而且在系统动态重构电路逻辑,比如对于时序逻辑系统,动态可重构FPGA的意义在于其时序逻辑的发生不是通过调用芯片内不同区域、不同逻辑资源来组合而成,而是通过对FPGA进行局部或全局的芯片逻辑的动态重构而实现的。
3发展现状
2014年[6]
三种编程方式的对比
3.1 企业
两大两小
Xilinx、Intel(Altera)、Lattice、Microsemi
Altera(被Intel收购)和Xilinx
深耕eFPGA也有前两个公司FlexLogic 和 QuickLogic
调研Xilinx公司产品系列
主流是28nm工艺,属于芯片产业中绝大多数的产品制程,而且国内上海微电子近年内已经突破28nm光刻机的研制,可以满足大部分的芯片替代生产需求。
Xilinx公司在28nm制程上推出7系列的四大类型芯片,覆盖低端中端高端市场,分别是Spartan系列(低端)、Artix系列(中低端)、Kintex(中高端)及Vertex系列(高端)产品。
系列 | 应用 |
Spartan7 | 汽车消费类应用,传感器融合人以及嵌入式视觉 |
Artix7 | 各类成本功耗敏感型应用,软件定义无线电、机器视觉照相及低端无线回传 |
Kintex7 | 3G/4G无线、平板显示器和video over IP解决方案 |
Vertex7 | 10G-100G联网、便携式雷达及ASIC原型设计 |
在20nm工艺上推出UltraScale系列
3.2 行业分析
2021年在倪光南院士的电子信息产业发展建议中[4],整理了最新国产核心电子器件的研制进展
4前景
4.1 应用前景
4.2 前沿进展
5总结
5.1优缺点分析
5.2启示
5.3可行的工作
由于FPGA与中央处理器的接口存在高延迟,高性能计算受限[1]
参考文献
[1]冯园园,张倩.嵌入式FPGA技术发展现状及启示[J].集成电路应用,2018, 35(08):1-4.[2]唐杉.可编辑门阵列FPGA在智慧云中的应用案例分析[J].集成电路应用.2018(01).[3]中华人民共和国国务院.国家中长期科学和技术发展规划纲要(2006—2020年)[EB/OL].(2006-02-09)[2021-04-01].http://
[4]倪光南,朱新忠.自主可控关键软硬件在我国宇航领域的应用与发展建议[J].上海航天(中英文).2021, 38(03):30-34.[5]陆重阳,卢东华.FPGA 技术及其发展趋势[J].微电子技术,2003,31(01):5-7.[6]Yang Haigang, Zhang Jia, Zhang Jia,etc.REVIEW OF ADVANCED FPGA ARCHITECTURES AND TECHNOLOGIES[J].JOURNAL OF ELECTRONICS(CHINA).2014,31(5).
第三篇:FPGA抢答器设计报告
Vb开办上海电力学院
课程设计报告
信息工程系
抢答器设计报告
一、设计目的:
本课程的授课对象是电子科学与技术专业本科生,是电子类专业的一门重要的实践课程,是理论与实践相结合的重要环节。
本课程有助于培养学生的数字电路设计方法、掌握模块划分、工程设计思想与电路调试能力,为以后从事各种电路设计、制作与调试工作打下坚实的基础
二、实验器材和工具软件:
PC机一台、QuartusII软件、DE2板。
三、设计内容:
(1)抢答器可容纳四组12位选手,每组设置三个抢答按钮供选手使
用。
(2)电路具有第一抢答信号的鉴别和锁存功能。在主持人将系统复位并发出抢答指令后,蜂鸣器提示抢答开始,时显示器显示初始时间并开始倒计时,若参赛选手按抢答按钮,则该组指示灯亮并用组别显示器显示选手的组别,同时蜂鸣器发出“嘀嘟”的双音频声。此时,电路具备自锁功能,使其它抢答按钮不起作用。
(3)如果无人抢答,计时器倒计时到零,蜂鸣器有抢答失败提示,主持人可以按复位键,开始新一轮的抢答。
(4)设置犯规功能。选手在主持人按开始键之前抢答,则认为犯规,犯规指示灯亮和显示出犯规组号,且蜂鸣器报警,主持人可以终止抢答执行相应惩罚。
(5)抢答器设置抢答时间选择功能。为适应多种抢答需要,系统设有10秒、15秒、20秒和3O秒四种抢答时间选择功能。
四、设计具体步骤:
首先把系统划分为组别判断电路模块groupslct,犯规判别与抢答信号判别电路模块fgqd,分频电路模块fpq1,倒计时控制电路模块djs,显示时间译码电路模块num_7seg模块,组别显示模块showgroup模块这六个模块,各模块设计完成后,用电路原理图方法将各模块连接构成系统。
各模块功能及代码:
1、组别判别模块
(1)功能:可容纳四组12位选手,每组设置三个抢答按钮供选手使用。若参赛选手按抢答按钮,则输出选手的组别。此时,电路具
signal rst : std_logic;begin
h<=“0000” when(a=“000” and b=“000” and c=“000” and d=“000”)else
“0001” when(a/=“000” and b=“000” and c=“000” and d=“000”)else
“0010” when(a=“000” and b/=“000” and c=“000” and d=“000”)else
“0100” when(a=“000” and b=“000” and c/=“000” and d=“000”)else
“1000” when(a=“000” and b=“000” and c=“000” and d/=“000”)else
“0000”;process
begin
wait on clock until rising_edge(clock);
if clr='1' then
rst<='1';
g<=“0000”;
end if;
if h/=“0000” then
if rst='1' then
g<=h;
rst<='0';
end if;
end if;
end process;
end behave_groupslct;
2、犯规判别与抢答信号判别模块
(1)功能:若参赛选手在主持人按开始键之后按抢答按钮,则使该组指示灯亮并输出选手的组别,同时蜂鸣器发出响声。
选手在主持人按开始键之前抢答,则认为犯规,犯规指示灯亮并输出犯规组号,且蜂鸣器报警。
(2)原理:c[3..0]接组别判别模块的g[3..0],即此时c为按键组别的信息。go接主持人的“开始”按键。由于无论是在正常情况还是犯规情况下按下按键,都必须显示按键的组别且蜂鸣器响,所以将c的值给hex以输出按键组别,且在有按键按下(c/=“0000”)时输出fm为‘1’,否则为‘0’。若在开始之前有按键按下时,即go='0'且c/=“0000”,输出ledfg为‘1’,否则为‘0’。若在开始之后有按键按下,将c的值给led,使该组指示灯亮,开始之前led输出“0000”。
(3)程序代码:
library ieee;
use ieee.std_logic_1164.all;
entity fgqd is port(c:in std_logic_vector(3 downto 0);
go:in std_logic;
hex:out std_logic_vector(3 downto 0);
led:out std_logic_vector(3 downto 0);
ledfg,fm:out std_logic);
end fgqd;
architecture behave_fgqd of fgqd is begin);end djs;
architecture behave_djs of djs is begin
process(clock,aclr,s)
begin
if(aclr='1')then
if(s=“00”)then
q<=“01010”;
elsif(s=“01”)then
q<=“01111”;
elsif(s=“10”)then
q<=“10100”;
else
q<=“11110”;
end if;
else
if rising_edge(clock)then
if en='1' then
q<=q-1;
if(q=“00000” and grpsl=“0000”)then
time0<='1';
else
time0<='0';
end if;
end if;
end if;
end if;
end process;end behave_djs;
4、分频器模块
(1)功能:实现50MHz—1Hz的分频,为倒计时模块提供时钟。
(2)程序代码
library ieee;
use ieee.std_logic_1164.all;
entity fpq1 is port(clkin :in std_logic;
clkout:out std_logic);end fpq1;
architecture behave_fpq1 of fpq1 is constant N: Integer:=24999999;signal Counter:Integer RANGE 0 TO N;signal Clk: Std_Logic;begin
process(clkin)
begin
if rising_edge(clkin)then--每计到N个(0~n-1)上升沿,输出信号翻转一次
if Counter=N then
Counter<=0;
Clk<=NOT Clk;
else
Counter<= Counter+1;
end if;
end if;
end process;clkout<= Clk;end behave_fpq1;
5、时间显示译码器
(1)功能:将时间信息在7段数码管上显示。
(2)程序代码
library ieee;
use ieee.std_logic_1164.all;
entity num_7seg is port(c:in std_logic_vector(4 downto 0);
hex:out std_logic_vector(13 downto 0));
end num_7seg;
architecture behave_num_7seg of num_7seg is begin
with c(4 downto 0)select
hex<= “10000001000000” when “00000” ,--“0”
“10000001111001” when “00001” ,--“1”
“10000000100100” when “00010” ,--“2”
“10000000110000” when “00011” ,--“3”
“10000000011001” when “00100” ,--“4”
“10000000010010” when “00101” ,--“5”
“10000000000010” when “00110” ,--“6”
“10000001111000” when “00111” ,--“7”
“10000000000000” when “01000” ,--“8”
“10000000010000” when “01001” ,--“9”
“11110011000000” when “01010” ,--“10”
“11110011111001” when “01011” ,--“11”
“11110010100100” when “01100” ,--“12”
“11110010110000” when “01101” ,--“13”
“11110010011001” when “01110” ,--“14”
“11110010010010” when “01111” ,--“15”
“11110010000010” when “10000” ,--“16”
“11110011111000” when “10001” ,--“17”
“11110010000000” when “10010” ,--“18”
“11110010010000” when “10011” ,--“19”
“01001001000000” when “10100” ,--“20”
“01001001111001” when “10101” ,--“21”
“01001000100100” when “10110” ,--“22”
“01001000110000” when “10111” ,--“23”
“01001000011001” when “11000” ,--“24”
“01001000010010” when “11001” ,--“25”
“01001000000010” when “11010” ,--“26”
“01001001111000” when “11011” ,--“27”
来。然后就是将选出的组别锁存。将按下按键的组别赋给一内部信号“h”(没有按键按下时h=“0000”),当复位键按下时(clr=‘1’)输出g=“0000”并且将另一内部信号rst置1。当复位后(rst=‘1’)有按键按下时将h的值给输出信号g,并且将标志信号rst清零。这样就实现最快按键组别锁存功能。
六、心得体会
通过此次设计,我掌握了数字电路的设计方法,尤其是模块划分、工程设计思想与电路调试能力,都有了一定的提高。为以后从事各种电路设计、制作与调试工作打下坚实的基础。
第四篇:plc和fpga实习报告
【Ⅰ】FPGA
一、实习目的:
1、了解FPGA基本内容。
2、熟悉Quatus II编程环境。
3、熟悉Verilog编程语言。
二、实验设备:
硬件:计算机一台。软件:相关的Quatus II编程环境。
三、实验内容:
电子秒表的设计
四、设计思路及程序:
设计思路:
假设系统时钟为50MHz,PLD器件为EP1S10F780C6。
设计思路:采用自顶向下的设计方法:需要两个分频器,将50MHz分频为10KHz,将10KHz分频为100Hz; 需要一个BCD码计数器,可分别对秒和百分秒位循环计数;需要一个译码器,将BCD计数器的输出译码为7段显示器的7段输入。分频器模块:
module clkdiv100(clr,clkin,clkout,count);input clr,clkin;// 输入端口声明,清零端和时钟输入 output clkout,count;// 输出端口声明,时钟输出和计数端 reg[6:0] count;//定义数据为七位,从第0位到第7位 reg clkout;always @(posedge clkin or negedge clr)//条件为:上升沿输入或下降沿清零 begin if(!clr)count<=0;// 异步清零!低有效,将0赋值给count else if(count[6:0]==99)begin clkout<=1;// 如果count端为99时,将1赋值给clkout count[6:0]<=0;//同时将0赋值给count end else begin clkout<=0;// clkout在其他时候都为“0” count[6:0]<=count[6:0]+1;//自加 end end endmodule BCD计数器模块:
module bcdcnt(dsec,sec,secd,secm,cn,clkin,clr);input clkin,clr;//Tclkin = 0.01s output[3:0] dsec,sec,secd,secm;//定义输出为四位,分别为秒高位,秒低位,百分秒高位,百分秒低位
output cn;//秒高位向分钟的进位,高有效 reg[3:0] dsec,sec,secd,secm;reg cn;always @(posedge clkin or negedge clr)//时钟输入上升沿有效或清零下降沿有效。begin if(!clr)//(1)异步清零!begin cn<=0;//进位信号也必须清零!dsec[3:0]<=0;sec[3:0]<=0;secd[3:0]<=0;secm[3:0]<=0;end //将输出清零
else //(2)计数,采用4个if语句的嵌套 begin if(secm[3:0]==9)//百分秒低位是否为9? begin secm[3:0]<=0;if(secd[3:0]==9)//百分秒高位是否为9? begin secd[3:0]<=0;if(sec[3:0]==9)//秒低位是否为9? begin sec[3:0]<=0;if(dsec[3:0]==5)//秒高位是否为5? dsec[3:0]<=0;else dsec[3:0]<=dsec[3:0]+1;//自加功能 end else sec[3:0]<=sec[3:0]+1;//自加 end else secd[3:0]<=secd[3:0]+1;//自加 end else secm[3:0]<=secm[3:0]+1;//自加
if((dsec[3:0]==5)&&(sec[3:0]==9)&&(secd[3:0]==9)&&(secm[3:0]==9))//如果显示的是59.99秒 cn<=1;//产生分钟进位 else cn<=0;end end endmodule 7段数码管显示(共阳极): module p7seg(out,data);input [3:0]data;//7段显示器输入为四位 output [6:0] out;//7段显示器字段输出为7位 out[6:0]//相当于a,b,c,d,e,f,g reg [6:0] out;always @(data)//7位输出 case(data)4'd0: out <= 7'b0000001;//输出0 4'd1: out <= 7'b1001111;//输出1 4'd2: out <= 7'b0010010;//输出2 4'd3: out <= 7'b0000110;//输出3 4'd4: out <= 7'b1001100;//输出4 4'd5: out <= 7'b0100100;// 输出5 4'd6: out <= 7'b0100000;//输出6 4'd7: out <= 7'b0001111;//输出7 4'd8: out <= 7'b0000000;//输出8 4'd9: out <= 7'b0000100;//输出9 default:out <= 7'b1111111;//当data为4'hA~4'hF时,七段显示器不亮 endcase endmodule 【Ⅱ】PLC
一、实验目的:
1、了解PLC基本内容和试验台的应用。
2、熟悉FXGP_WIN_C编程软件的使用。
3、掌握定时器和计数器的应用。
二、实验设备:
硬件:PLC试验台一台,计算机一台。软件:FXGP_WIN_C开发环境。
三、实验内容:
1、PLC实验台的认识,并且了解一些再实验台上才会看到和了解到的知识,特别是急停按钮的认识。PLC的输出有三种类型,继电器型、晶体管型、晶闸管型,并且无故障工作时间平均三十万,电波最多可用三年。
2、应用FXGP_WIN_C开发环境在PLC实验台完成实验,要经过编程-转换-PLC-传送-生成机器码。
3、按下x0键,y0输出,断开x0键,y0停止,按下x1,y0输出并保持,按下x2,y0停止。
4、X0控制y0,x1控制y1,停止是x2,要求y0,y1任何时候只有一路输出。
5、按下启动按钮,三个灯依次间隔3秒启动,逆序间隔3秒自动停止,循环三次,循环中间间隔1秒(不需要按启动按钮)自动停止(计数器和定时器为主)。
四、实验程序及结果分析
3、实验程序:
实验结果分析:
按键x0控制y0输出,按键x1控制y0输出并保持,按键x2控制y0,按下x2时y0输出停止。
4、实验程序:
实验结果分析:
这个程序是建立在输入的基础上完成的。当按下x0时,y0有输出,y1没有输出,按下x1时,y1有输出,y0没有输出,也就是y0与y1不能同时输出,只有一路输出。
5、实验程序:
实验结果分析:x0控制y0输出,利用中间变量M0加入定时器,使结果按不同时间输出,从而达到间隔3秒闪亮,最后再加入计数器使循环次数为3.五、实习心得
这次实习共分为两个重要的环节,FPGA的学习和PLC的实践环节。通过本次实习,我系统的学习了fpga的基本内容,并对这部分内容有了一定的了解,而且通过实例熟悉了Quatus II编程环境。校外实习,让我们初次接受到了在PLC实验台上的作业,从最开始的不懂到最后可以写出一些简单的程序,做到理论与实际相结合。在这一个月的实习中,我看到了自己的不足和不成熟地方,在今后的学习和工作中,会有更好的表现。
第五篇:FPGA学习心得大报告
《FPGA技术基础》学习报告--课程内容学习心得
姓名:
学号:年级专业:
指导教师:
瞿麟201010401128自动化101薛小军
摘要从开始学FPGA到现在粗略算来的话,已经有3个多月了,就目前而言,我并不确定自己算不算高手们所说的入门了,FPGA学习总结。但是不管现在的水平如何,现在就总结一下自己学习它的感受或一些认识吧。
关键词
FPGADE2板 QuartusII软件Verilog语言
引言
FPGA是什么?FPGA现状?怎样学习FPGA?
FPGA是现场可编程门阵列的简称,FPGA的应用领域最初为通信领域,但目前,随着信息产业和微电子技术的发展,可编程逻辑嵌入式系统设计技术已经成为信息产业最热门的技术之一,应用范围遍及航空航天、医疗、通讯、网络通讯、安防、广播、汽车电子、工业、消费类市场、测量测试等多个热门领域。并随着工艺的进步和技术的发展,向更多、更广泛的应用领域扩展。越来越多的设计也开始以ASIC转向FPGA,FPGA正以各种电子产品的形式进入了我们日常生活的各个角落。
正文
(1)掌握FPGA的编程语言
在学习一门技术之前我们往往从它的编程语言开始,如同学习单片机一样,我们从C语言开始入门,当掌握了C语言之后,开发单片机应用程序也就不是什么难事了。学习FPGA也是如此,FPGA的编程语言有两种:VHDL和Verilog,这两种语言都适合用于FPGA的编程。
(2)FPGA实验尤为重要
除了学习编程语言以外,更重要的是实践,将自己设计的程序能够在真正的FPGA里运行起来,这时我们需要选一块板子进行实验,我们选择使用DE2板才进行试验。
初识DE2开发板
DE2的资源
DE2的资源非常丰富,包括
1.核心的FPGA芯片-Cyclone II 2C35 F672C6,从名称可以看出,它包含有35千个LE,在Altera的芯片系列中,不算最多,但也绝对够用。Altera下载控制芯片-EPCS16以及USB-Blaste对Jtag的支持。
2.存储用的芯片有: 512-KB SRAM,8-Mbyte SDRAM,4-Mbyte Flash memory
3.经典IO配置:拥有4个按钮,18个拨动开关,18个红色发光二极管,9个绿色发光二极管,8个七段数码管,16*2字符液晶显示屏,4.超强多媒体:24位CD音质音频芯片WM8731(Mic输入+LineIn+ 标准音频输出),视频解码芯片(支持NTSC/PAL制式),带有高速DAC视屏输出VGA模块。
5.更多标准接口:通用串行总线USB控制模块以及A、B型接口,SD Card接口,IrDA红外模块,10/100M自适应以太网络适配器,RS-232标准串口,PS/2键盘接口
6.其他:50M,27M晶振各一个,支持外部时钟,80针带保护电路的外接IO
7.此外还有:配套的光盘资料,QutuarsII软件,NiosII 6.0IDE,例程与说明文档。
关于管脚分配
当我们创建一个FPGA用户系统的时候,到最后要做的工作就是下载,在下载之前必须根据芯片的型号分配管脚,这样才能将程序中特定功能的管脚与实际中的FPGA片外硬件电路一一对应。
FPGA简单的说,就是现场可编程逻辑阵列。它的内部是逻辑单元,它们之间可以用线连接,至于以怎样的形式相连,则可以根据应用者写入的逻辑决定。每次布线都会重新组合逻辑单元,从而可以任意的编写不同的逻辑。当然,前提是定义的逻辑块不超出它可读写的最大值。
总结在学习FPGA时,遇到的问题有许多,譬如,写代码时的警告,特别是一些不能忽视的警告,每次遇到时,总是还要检查一会儿才能改过来,或者有的警告已经出现了几次,但是就是解决不掉。每次在学一个模块时,只要是看懂了,它的一些重点就没有及时的记录在本子上,只有个别的想起来时,才会做笔记。每做完一个模块,没有及时记录下自己从这个模块中学到了什么。上面的不足,都是在写模块的过程中,自己逐渐暴露出来的。我很庆幸自己的一些问题能及时的被发现,避免类似的事情再次发生。像遇到警告时,都要记录下来,通过改正后,要注释,写下警告的原因,定期看一下。每次写模块的时候,都要记下重点知识,即使是自己懂得的,好记性都是比不过烂笔头的。
关于以上的总结,我相信在以后的学习中一定会对自己有莫大的帮助,它会时刻警醒自己,在以前的学习中,自己有哪些不足,以后千万不能再去犯同样的错误,不断地纠正,不断地进步,相信自己一定会学好FPGA的。