[学习] 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)三个部分。FPGA的基本特点主要有:

a) 采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。

b) FPGA可做其它全定制或半定制ASIC电路的中试样片。

c) FPGA内部有丰富的触发器和I/O引脚。

d) FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。

e) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。

可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。

加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。这个过程,在资料中称为“加载”或者“装载”,是不是有点怪怪的?类似于arm系列的芯片中bootrom加载bootloader到internal sram中。掉电后,FPGA恢复成白片,内部逻辑关系消失,因 此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一 片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。


>> lut

 

      查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。 目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16x1的RAM。 当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。

下面是一个4输入与门的例子,

实际逻辑电路
LUT的实现方式

a,b,c,d 输入

逻辑输出
地址
RAM中存储的内容

0000

0
0000
0
0001
0
0001
0
....
0
...
0
1111
1
1111
1

 

>> 基于查找表(LUT)的FPGA的结构

 

      通过上面对lut的描述,如果你联想到可以使用这个来实现fpga,那么就恭喜你,你简直是太聪明了。

      下面由小郭同志帮你以几个fpga为例来说明基于lut的fpga结构。

 

我们看一看xilinx Spartan-II的内部结构,如下图:

xilinx Spartan-II 芯片内部结构
Slices结构

Spartan-II主要包括CLBs,I/O块,RAM块和可编程连线(未表示出)。在spartan-II中,一个CLB包括2个Slices,每个slices包括两个LUT,两个触发器和相关逻辑。 Slices可以看成是SpartanII实现逻辑的最基本结构 (xilinx其他系列,如SpartanXL,Virtex的结构与此稍有不同,具体请参阅数据手册)

altera的FLEX/ACEX等芯片的结构如下图:

 

 

altera FLEX/ACEX 芯片的内部结构

 

 

 

逻辑单元(LE)内部结构

FLEX/ACEX的结构主要包括LAB,I/O块,RAM块(未表示出)和可编程行/列连线。在FLEX/ACEX中,一个LAB包括8个逻辑单元(LE),每个LE包括一个LUT,一个触发器和相关的相关逻辑。LE是FLEX/ACEX芯片实现逻辑的最基本结构(altera其他系列,如APEX的结构与此基本相同,具体请参阅数据手册)

 

>> lut结构的fpga的基本工作原理

 

      上电后,程序加载到fpga中的internal ram中,接下来lut就可以工作了,据spec中讲述,这个过程很快,基本可以忽略。在军工和航天类的fpga中,可以把程序直接搞到flash或者eeprom中,不需要这个load的过程,实现上电运行的特性,类似于pld。

       下面接着描述基于lut结构的fpga的基本原理。

 

我们还是以这个电路的为例:

A,B,C,D由FPGA芯片的管脚输入后进入可编程连线,然后作为地址线连到到LUT,LUT中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的数据然后输出,这样组合逻辑就实现了。 该电路中D触发器是直接利用LUT后面D触发器来实现。时钟信号CLK由I/O脚输入后进入芯片内部的时钟专用通道,直接连接到触发器的时钟端。触发器的输出与I/O脚相连,把结果输出到芯片管脚。这样PLD就完成了图3所示电路的功能。(以上这些步骤都是由软件自动完成的,不需要人为干预)

这个电路是一个很简单的例子,只需要一个LUT加上一个触发器就可以完成。对于一个LUT无法完成的的电路,就需要通过进位逻辑将多个单元相连,这样FPGA就可以实现复杂的逻辑。

由于LUT主要适合SRAM工艺生产,所以目前大部分FPGA都是基于SRAM工艺的,而SRAM工艺的芯片在掉电后信息就会丢失,一定需要外加一片专用配置芯片,在上电的时候,由这个专用配置芯片把数据加载到FPGA中,然后FPGA就可以正常工作,由于配置时间很短,不会影响系统正常工作。 也有少数FPGA采用反熔丝或Flash工艺,对这种FPGA,就不需要外加专用的配置芯片。

由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。查找表可以很好地满足这一要求,目前主流FPGA都采用了基于SRAM工艺或者是基于FLASH工艺的查找表结构,通过每次烧写改变查找表内容的方法实现对FPGA的重复配置。
       那么查找表取代与非门电路的原理是什么呢?我们知道,一个n输入的逻辑运算,不管是与或非运算还是异或运算等等,最多只可能存在2n种结果,若我们事先将相应的结果存放于一个存贮单元,不就相当于实际了与非门电路的功能了吗?FPGA的原理正是如此,它通过烧写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能。
以例1为例,它的真值表如表1所示。我们只需用将输出y的值事先存放在一个1x16的SRAM或者FLASH中,然后用a、b、c、d做地址索引查找输出,就可以代替与门运算,得到等价的结果。

【例1】 一个四输入与门电路
assign y = a&b&c&d;

      表1   例1对应的真值表
输入                               输出
a b c d y
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 0
0 1 1 0 0
0 1 1 1 0
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 0
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 1

 

>> fpga中的宝贵资源
io资源:其决定了gpga的扩展性;
dcm:数字时钟管理器,用来实现倍频,并且可以消抖;
ip核:这个就不用说了吧
bram:可以用来实现成堆栈/fifo/ram等(这个怎么实现我就不明白了,没有做过)
      上面有些是自己总结,不可全信哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/243335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

忧云:喻红艺术展观后

长征空间。喻红的个展《忧云 wondering clouds》,中文标题似过诗意,而英文可能更准确表达其意图。这幅连体大画至少有15米长,非常壮观,色彩变化,人物的形态,复杂而有序。既有写实也有表现,既有真…

故乡的路:十位少数民族摄影师联展

故乡的路:10位少数民族摄影师联展。映艺术中心。参展的有蒙古族、维吾尔族、回族、纳西族、傣族、白族、彝族、拉祜族、藏族等。民族是一个视点,故乡也是一个视点,两者的交叉,透过现代化的相机和镜头,获得了一种独特的…

使用GDI+保存图像为8bpp的灰度图像

使用GDI保存图像为8bpp的灰度图像,GDI真的有些特殊。。。。。 // Greyscale conversion #define GREY(r, g, b) (BYTE)(((WORD)r * 77 (WORD)g * 150 (WORD)b * 29) >> 8) // .299R .587G .114B //#define GREY(r, g, b) (BYTE)(((WORD)r * 169 (WORD)…

尺度空间(Scale space)理论

尺度空间方法的基本思想是:在视觉信息处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得不同尺度下的视觉处理信息,然后综合这些信息以深入地挖掘图像的本质特征。尺度空间方法将传统的单尺度视觉信息处理技术纳入尺度不断变化的…

图像拉普拉斯金字塔融合(Laplacian Pyramid Blending)

转摘的&#xff0c;修改了下程序&#xff0c;图像融合看不太懂 。。。。http://blog.csdn.net/abcjennifer/article/details/7628655#comments // 转摘的别人的程序 // #include <stdio.h> #include <cv.h> #include <cxcore.h> #include <highgui.h>…

ASA 9.21 in Vmware Workstation 10

There is old post “ASA 8.02 in Vmware Workstation “ in this blog posted on Dec 2011. Anothe post “How to Make your own ASA 8.42 in VMware”. Here are all related posts in this blog: ASA 8.02 in Vmware WorkstationASA 8.42 in VMware WorkstationASA 9.21 i…

状态机在VHDL中的实现

状态机在VHDL中的实现 1、Moore状态机的VHDL描述 输出仅取决于所处的状态 LIBRARY IEEE; --库、程序包的说明调用 USE IEEE.STD_LOGIC_1164.ALL;ENTITY Moore IS PORT (RESET,CLOCK,DIN : IN STD_LOGIC;DOUT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0) ); END;ARCHITECTURE Mo…

VHDL仿真

VHDL仿真 仿真(Simulation也称模拟),不接触具体的硬件系统利用计算机对电路设计的逻辑行为和运行功能进行模拟检测,较大规模的VHDL系统设计的最后完成必须经历多层次的仿真测试过程,包括针对系统的VHDL行为仿真、分模块的时序仿真和硬件仿真,直至最后系统级的硬件仿真测…

关于结构体的内容

关于结构体的内容 结构体使用类似于C语言的语法来定义 结构体使用struct关键字声明。结构体内的成员可以是任何数据类型&#xff0c;包括用户自定义类型和其他的结构体类型。 struct{int a,b; //32位变量opcode_t opcode;//用户定义类型logic [23:0] adress;//24位变量bit er…

Pushing Policy Failed because Checkpoint Firewall “Load on module failed – no memory”

One day when pushing firewall policy from Checkpoint management server to UTM 272 cluster gateways, it failed and I got error message “Load on module failed – no memory” on one of cluster members. “Network Security Policy ‘Montreal_DMZ’ was prepared …

Point-BERT:一种基于Transformer架构的点云深度网络

目录 1. 前言 2. Point Tokenization 3. Transformer Backbone 4. Masked Point Modeling 5. Experiments Reference 1. 前言 从PointNet [1] 开始&#xff0c;点云深度网络逐渐成为解决点云特征提取与语义分析的主要研究方向。尤其在OpenAI的GPT模型获得了突破性成果后&#…

GNS3 VoIP Lab (Cisco 3725 and CME 4.3)

Here is a simple VoIP Lab in GNS3 environment. It is only used for my lab test and recorded here for future reference. 1. Topology: GNS3 Topology:Logic Topology:xp(192.168.2.60)——–C3725 Router(192.168.2.10) 2. Enviroment: ESXi 5.5 (or Vmware Workstation…

关于数组的内容

关于数组的内容 Verilog数组声明的基本语法 <data_type><vector_size><array_name><array_dimension> 例如&#xff1a; reg[15:0] RAM [0:4095];//储存器数组SystemVerilog允许任何数据类型的非压缩数组 SystemVerilog将非压缩数组的声明进行了扩展…

BreadCrumb控件

BreadCrumb控件&#xff0c;如上图所示&#xff0c;即面包屑导航控件&#xff0c;类似于TreeCtrl&#xff0c;但不是一次显示所有的Item&#xff0c;VC 2010可以编译通过&#xff0c;稍微修改一下其他的也可以编译&#xff0c;源代码下载&#xff1a; http://download.csdn.net…

Android简介

最近Android很火&#xff0c;小弟也想了解一下它的结构。跟CE或者Mobile比起来&#xff0c;它的结构是有点凌乱&#xff0c;也难怪&#xff0c;毕竟是基于别人的内核在上层开发了一些应用 ---------------------------------------------------------------------------------…

说不尽的刘恒

认识刘恒快三十年了&#xff0c;作为曾经的同事和他小说的责任编辑&#xff0c;我只写过他一篇文章&#xff0c;还是在二十多年前。有时候特别熟悉的人反而不知道从何写起&#xff0c;因为一想起往事&#xff0c;各种记忆像开闸的水一样涌满眼前&#xff0c;让人很难落笔。1985…

外行看Flash的存储原理

突然在网上看到别人两年前写的一篇关于nor和nand的好文章&#xff0c;做为csdn的合法公民&#xff0c;有必要转 一、存储数据的原理 两种闪存都是用三端器件作为存储单元&#xff0c;分别为源极、漏极和栅极&#xff0c;与场效应管的工作原理相同&#xff0c;主要是利用电场的…

快速计算整数的二进制表示法中1的个数

快速计算整数的二进制表示法中1的个数 题目&#xff1a;给定一个无符号32位整数x&#xff0c;求x的二进制表示法中含1的个数&#xff1f; 第一种算法&#xff1a; int OneCount(unsigned int x){ for(int count0; x>0; count) x&x-1;//把最后面的1变0 return …

在C/C++代码中使用SSE等指令集的指令(1)介绍

http://blog.csdn.net/gengshenghong/article/details/7007100我们知道&#xff0c;在C/C代码中&#xff0c;可以插入汇编代码提高性能。现在的指令集有了很多的高级指令&#xff0c;如果我们希望使用这些高级指令来实现一些高效的算法&#xff0c;就可以在代码中嵌入汇编&…

赋值操作符

赋值操作符 和其他赋值操作符 out in;//将out和in相加并将结果赋值给out //out out in;注意&#xff1a;这些操作符都是阻塞赋值packdage definitions;typedef enum logic[2:0] {ADD,SUB,MULT,DIV,SL.SR} opcode_t;typedef enum logic{UNSIGNED,SIGNED}operand_type_t;typ…