首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FPGA入门(1)

FPGA入门(1)

什么是FPGA?    Field-Programmable Gate Array 即现场可编程门阵列,作为一种可编程器件,既解决了ASIC(专用集成电路)的不足,又克服了原有可编程器件门电路数有限的缺点。它集成了大量的原始逻辑资源(触发器、查找表LUT和布线),并提供了可配置的I/O口及硬IP(Block RAM、PLL、DSP、通用接口等)依赖工程师采用HDL(Hardware Description Language,硬件描述语言)进行编码,各个逻辑并行工作来实现指定的功能。它是基于硬件描述的芯片。


为什么FPGA可编程    一提到编程,大家肯定想到的是coding的那套软件编程的概念,但FPGA的编程是硬件编程,要理解这些需要看FPGA的内部结构和工作原理。
1)FPGA基本结构


    FPGA内部集成了很多逻辑块(Logic Block),这些逻辑以阵列的形式排布着,散步在各个逻辑块之间的内部互联线(Interconnect),它们就好比PCB板上的导线,将FPGA内部的各个相关逻辑进行互联,它们的起点和终点都是IOB(I/O Block),IOB是FPGA和外部器件的物理接口,有丰富的电平接口。
    Altera FPGA片上逻辑主要由logic Array Blocks(LAB)与Route组成,每个LAB包含一定数量的logic Element(LE),LE可以认为是FPGA中最基本的逻辑单元。Route可以认为是许多连接节点的导线段,这些连接节点不仅用来连接片上逻辑,也用来连接走线本身。

    咱们从外往内部说,首先是IOB,IOB是芯片与外部电路的物理接口,主要完成不同电气特性下输入/输出信号的驱动与匹配要求,比如从基本的LVTTL/LVCMOS接口到PCI/LVDS/RSDS甚至各种各样的差分接口,从5V兼容到3.3V/2.5V/1.8V/1.5V的电平接口,下面是ALTERA公司的Cyclone IV EP4CE115F29设备的IOB结构。






    FPGA的IOB按组分类,每组都能够独立地支持不同的I/O标准,通过软件的灵活配置,可匹配不同的电器标准与IO物理特性,而且可以调整驱动电流的大小,可以改变上/下拉电阻,Cyclone IV设备有8个IO blank(组),见下图:



    然后是LAB,LAB是FPGA的基本逻辑单元,其实际的数量和特性依据所采用的器件的不同而不同,EP4CE115F29设备的每个LAB的布局包括16个LE、LAB控制信号、LE carry chains、Register chains和Local interconnect,其LAB结构图如下:


    最后是最基本的单元LE,LE是Cyclone IV设备最小的逻辑单元,每个LE主要有LUT和寄存器组成的。


    查找表LUT(Look-Up-Table)其本质是一个静态存储器SRAM,目前FPGA多采用4输入的LUT,每个LUT可以看作一个有4位地址线的16x1的RAM。当我们通过原理图或HDL语言描述了一个逻辑电路后,FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM。这样,在FPGA工作时,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出。





Interconnect
    FPGA内部连接线很丰富,根据数据手册的描述,主要有图3中的Row interconnect、column interconnect、Direct link interconnect、和Local interconnect和Register chain interconnect(寄存器之间连接的连接线)。
    内部连接线联通FPGA内部的所有单元,而连线的长度和工艺决定着信号再连接线上的驱动能力和传输速度。在实际开发中,设计者不需要直接选择连接线,布局布线器可自动地根据输入逻辑网表(这由综合生成)的拓扑结构和约束条件选择连接线来连通各个逻辑单元,所以,从本质上来说,布线资源的使用方法和设计的结果有密切和直接的关系。

2)FPGA工作原理
    FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端(见图),触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。



    知道了FPGA的结构和工作原理后再理解为什么FPGA能编程就不难了,HDL(Hardware Description Language)之所以叫Description而不叫Design,就是因为工程师用HDL语言描述一个功能、一个行为、一个过程,然后在通过EDA工具把这种描述语言综合布局布线成实际的硬件电路。可以说FPGA编程是设计数字电路,而不是真正意义上的软件编程。HDL设计输入其实就是电路设计的抽象输入,编译工具的综合就是将这些设计输入翻译成由与、或、非门及RAM、触发器、寄存器等基本逻辑单元组成的逻辑连接,即网表。这些网表文件作为厂家布局布线工具的输入。

    除了上述资源外,FPGA内部还包含一些嵌入式块RAM、底层内嵌功能单元(DLL、PLL、DSP和CPU等软核)、硬核(乘法器和串并收发器等)等资源,大大方便了系统级的设计。

返回列表