【FPGA】相关介绍
什么是 FPGA ?
FPGA是Field Programmable Gate
Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列LCA(Logic
Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input
Output
Block)和内部连线(Interconnect)三个部分。可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。
什么是 CPU ?
中央处理单元(Central Processing
Unit),是整个系统的核心,也是整个系统最高的执行单位。它负责整个系统指令的执行,数学与逻辑的运算,数据的存储与传送,以及对内对外输入与输出的控制。
什么是 MCU(单片机)?
微控制单元(Microcontroller Unit;MCU) ,又称单片微型计算机(Single Chip Microcomputer )或者单片机,是把中央处理器(Central Process Unit;CPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制。诸如手机、PC外围、遥控器,至汽车电子、工业上的步进马达、机器手臂的控制等,都可见到MCU的身影。
什么是 ASIC ?
ASIC(Application Specific Integrated Circuits,专用集成电路),是指应特定用户要求或特定电子系统的需要而设计、制造的集成电路。
《《《《《
可以这样说,
- CPU不用说了,就是用于处理数据的已经固化的数字电路;
- MCU里边装了个CPU还有其它各个外设,这个都是已经作死了的,不能再修改;
- ASIC是针对特定用途,做好了相应的电路逻辑,然后在里边作死了,不能更改;
- 而FPGA里边全是能够构成数字电路的资源,
- 自由:可以用它构建CPU(资源足够的话可以构建很多个同时用都行),构建纯数字外设(也可以结合外部构建数模混合等)。
- 灵活:而它的资源是可以用画电路图的方式来配置的(可反复擦写),而这种方法没有代码的方式好,所以现在基本上都是用HDL语言来描述它内部数字电路(注意,是描述,相当于画电路)。而其它三种都是固定的内部逻辑,不能更改。
- 强大:所以FPGA可以做出一些芯片的功能,也可以把单片机在其内部实现,这样假设一块板上是单片机和一堆数字芯片的话,就可以用一片FPGA芯片来实现整个系统了。
- 高速:而且单片机的速度低,最高100多兆,而FPGA轻松上几百,是单片机望尘莫及的。
》》》》》
工作原理
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括 可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
FPGA基本特点:
1) 采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。
2) FPGA可做其它全定制或半定制ASIC电路的中试样片。
3) FPGA内部有丰富的触发器和I/O引脚。
4) FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5) FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
应用方向/领域
- IC设计的功能验证
- 逻辑粘合与实时控制
- 协议实现与信号处理
- 片上系统(SoC)
- 具体的用途
- 占有的份额
未来的趋势
- 最先进的生产工艺广泛应用于以FPGA为代表的可编程逻辑器件
- 越来越多的FPGA产品将包含CPU或DSP内核
- 传统ASIC和FPGA进一步融合
- 低成本的FPGA密度越来越高,价格越来越合理
[掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用FPGA可以让设计变得非常有灵活性。掌握了FPGA设计,单板硬件设计就非常容易(不是系统设计),特别是上大学时如同天书的逻辑时序图,看起来就非常亲切。但FPGA入门却有一定难度,因为它不像软件设计,只要有一台计算机,几乎就可以完成所有的设计。FPGA设计与硬件直接相关,需要实实在在的调试仪器,譬如示波器等。这些硬件设备一般比较昂贵,这就造成一定的入门门槛,新人在入门时遇到一点问题或者困难,由于没有调试设备,无法定位问题,最后可能就会放弃。其实这时如果有人稍微指点一下,这个门槛很容易就过去。]本段转自http://www.21ic.com/wyzt/201208/135414_2.htm
实际上以前FPGA对大家造成的价格贵的概念根深蒂固了,其实现在价格也越来越平民了,甚至低于一些单片机。
开发流程
1.功能定义/器件选型
2.设计输入
3.功能仿真
4.综合优化
5.综合后仿真
6. 实现与布局布线
7.时序仿真
8. 板级仿真与验证
9.芯片编程与调试
厂商/工具
- Xilinx
- Altera
- Lattice
- (Actel)
- (atmel)
开发语言
- verilogHDL 最常用的,容易入门,和C语言长的像
- VHDL
【FPGA】相关介绍的更多相关文章
- ppDelegate的相关介绍
// AppDelegate的相关介绍// IOS笔记 //@interface AppDelegate : UIResponder <UIApplicationDelegate>// ...
- 【个人笔记】002-PHP基础-01-PHP快速入门-02-PHP语言相关介绍输
002-PHP基础-01-PHP快速入门 02-PHP语言相关介绍 1.PHP是什么 Hypertext Preprocessor超文本预处理器 是一种通用开源脚本语言 Personal Home P ...
- Android HttpClient HttpURLConnection相关介绍
Android HttpClient HttpURLConnection相关介绍 遇到一个问题 在android studio上用HttpClient编写网络访问代码的时候,发现该类无法导入并使用.. ...
- 【导航】FPGA相关
[博客索引] FPGA相关 数字电路实现上,较多的经验是基于Xilinx/Altera的FPGA,使用Verilog语言,实现光传输SDH.OTN通信协议,DDR3控制器应用,以及视频分割.合并.sc ...
- Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解
前言 大家好,给大家带来Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解的概述,希望你们喜欢 Activity是什么 作为一个Activ ...
- CSS3 Backgrounds相关介绍
CSS3 Backgrounds相关介绍 1.背景图片(background images)是在padding-box的左上角落脚安家的,我们可以使用background-position属性改变默认 ...
- 一 hadoop 相关介绍
hadoop 相关介绍 hadoop的首页有下面这样一段介绍.对hadoop是什么这个问题,做了简要的回答. The Apache™ Hadoop® project develops open-sou ...
- Django day 33 vue中使用element-ui的使用,课程的相关介绍,vue绑定图片,课程列表接口,课程详情页面
一:vue中使用element-ui的使用, 二:课程的相关介绍, 三:vue绑定图片, 四:课程列表接口, 五:课程详情页面
- SONiC项目的发展及其相关介绍(转载)
SONiC作为一个开源项目,理论上是包含了SAI(switch abstraction interface,交换机抽象接口),SAI是没有开源的,厂商自己完成统一的API,提供给上层sonic用户来调 ...
- 转载:Nginx 相关介绍
转载自:https://www.cnblogs.com/wcwnina/p/8728391.html Nginx 相关介绍(Nginx是什么?能干嘛?) Nginx的产生 没有听过Nginx?那么 ...
随机推荐
- [POJ2069]Super Star(模拟退火)
题目链接:http://poj.org/problem?id=2069 题意:求一个半径最小的球,使得它可以包围住所有点. 模拟退火,圆心每次都去找最远那个点,这样两点之间的距离就是半径,那么接下来移 ...
- centos 带S权限的二进制
早上写的一个用find查找带S权限的,感觉不记一下可惜了. [root@iZ28wg1kditZ ~]# find / -type f -exec ls -al {} \;|awk 'BEGIN {p ...
- C头文件
#include<cstdio>#include<iostream>#include<cstdlib>#include<cmath>#include&l ...
- nignx 负载均衡的几种算法介绍
负载均衡,集群必须要掌握,下面介绍的负载均衡的几种算法. 1 .轮询,即所有的请求被一次分发的服务器上,每台服务器处理请求都相同,适合于计算机硬件相同. 2.加权轮询,高的服务器分发更多的请求 ...
- 使用reflux进行react组件之间的通信
前言 组件之间为什么要通信?因为有依赖. 那么,作为React组件,怎么通信? React官网说, 进行 父-子 通信,可以直接pass props. 进行 子-父 通信,往父组件传给子组件的函数注入 ...
- 不再为Apache进程淤积、耗尽内存而困扰((转))
本篇文章是为使用Apache+MySQL,并为Apache耗尽内存而困扰的系统管理员而写.如果您没有耐心读完本文,请参考以下步骤: 修改/etc/my.cnf,加上这样一行: log-slow-que ...
- 漂亮的Linux命令提示符
漂亮的Linux命令提示符 每天面对着白底黑字(黑底白字)的命令行是否枯燥泛味呢?生活应给是五彩缤纷的,何不为单调无味的生活增添一抹色彩? 下面一起体验一下Linux命令行提示符惊险的整容之旅 惊鸿一 ...
- css3 transition动画
CSS3: 一.transition: <property> <duration> <animation type> <delay> eg: .div{ ...
- 使用 StringBuilder
嘿嘿,请不要说我是偷取,我只是借鉴一下.. String 对象是不可改变的.每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串 对象,这就需要为该新对象分配新的空间 ...
- python实现查看目录下重复的文件
该python 脚本有以下三个功能: 1. 实现查看目录下重复的文件,输出文件按修改时间升序排列 2. 将按修改时间排列比较旧的.可删除的文件列出来 3. 按目录对重复文件进行统计,比如,目录/tmp ...