zoukankan      html  css  js  c++  java
  • FPGA LE(转)

    http://zhangzhenyuan163.blog.163.com/blog/static/85819389201331774854351/

    1.3.1  可编程逻辑单元(LE)

    图1.12所示是一个典型的LE的结构图。LE包括3个主要部分:查找表(LUT)、进位逻辑和输出寄存器逻辑。

     
    图1.12  典型的LE的结构图

    其中,FPGA用查找表(LUT)替代了CPLD中的乘积项阵列,它是FPGA中组合逻辑输出乘积和的关键。大部分器件使用4输入LUT,而有些器件提供输入数量更大的LUT,以建立更复杂的功能。LUT由一系列级联复用器构成,如图1.13所示。

     
    图1.13  查找表(LUT)结构示意图

    复用器输入可以被设置为高或者低逻辑电平。逻辑之所以被称为查找表,是因为通过"查找"正确的编程级来选择输出,并根据LUT输入信号通过复用器将输出送到正确的地方。

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

    注意:相对于CPLD宏单元,产生LUT输出可能需要更多的逻辑级。但是,它能够灵活地建立函数和LE链,从而提高了性能,有助于减少资源的浪费。

    LE的同步部分来自可编程寄存器,非常灵活,通常由全局器件时钟来驱动它,而任何时钟域都可以驱动任何LE。寄存器的异步控制信号,如清位、复位或者预设等,都可以由其他逻辑产生,也可以来自I/O引脚。

    寄存器输出通过LE后驱动至器件布线通道,还可以反馈回LUT。可以把寄存器旁路,产生严格的组合逻辑功能,也可以完全旁路LUT,只使用寄存器用于存储或者同步。这种灵活的LE输出级使其非常适合所有类型的逻辑操作。

    FPGA LE含有专门的进位逻辑和LAB中的寄存器链布线,为这些信号提供最短链接。进位比特可以来自LAB中的其他LE,也可以来自器件中的其他LAB。产生的进位比特可以输出到其他LE,或者器件互连中。

    LAB中的LUT和进位逻辑可以被完全旁路,链接LAB中的所有LE寄存器,把它们变成移位寄存器,这适合DSP工作。和CPLD相比,进位逻辑和寄存器链布线的通用性进一步提高了性能,增强了对资源的管理。

    注意:由于LUT和寄存器都能够输出至器件中的任一位置,不论是位于相同的LAB中,还是通过器件的布线通道。因此,FPGA LE可以配置完成寄存器封装功能。采用寄存器封装,一个LE可以输出两路不同的函数,一路来自LUT和进位链逻辑,另一路来自输出寄存器。只使用模块的组合逻辑部分,完全不相关的寄存器函数可以封装到一个LE中。因此,这有助于节省器件资源。

    目前为止,所讨论的FPGA LE的确要比CPLD宏单元在设计上更加灵活,但还是需要LE级联和反馈才能产生具有较多输入的函数。为解决这个问题,一些高级FPGA使用自适应逻辑模块(ALM)。ALM和LE相似,但有一些重要优势。

    首先,ALM包括两个输出寄存器,为逻辑链和寄存器封装提供更多的选项,在一个逻辑模块中生成多个函数。ALM还具有内置硬件加法器模块。ALM中的加法器是专用资源,完成标准算术操作,不需要在LUT或者在DSP中生成这些数学函数。这提高了数学性能,简化了LUT逻辑。

    ALM中的LUT和LE的主要不同点是ALM中的LUT是自适应LUT,即ALUT。ALUT与LUT相似,但可以对它进行划分,配置为大小不同的LUT,以适应两种类型不同的函数,包括最简单到非常复杂的函数。所有8个输入都可以用于完成复杂算术函数,而ALUT可以按照不同的方式来进行划分,实现简单函数。

    例如,两个LUT,一个是3输入,一个是5输入。还可以划分ALUT以支持更复杂的7输入函数,其额外的输入用于寄存器封装。分成两个4输入LUT,使ALUT后向兼容标准LE中的4输入LUT技术。最后,如果两个函数之间可以共享输入,还能够进行其他方式的划分。基于ALM的FPGA使用较少的资源和智能资源管理技术,大大提高了逻辑工作的性能。

  • 相关阅读:
    STM32 F4 DAC DMA Waveform Generator
    STM32 F4 General-purpose Timers for Periodic Interrupts
    Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式
    Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块
    查看SQL Server服务运行帐户和SQL Server的所有注册表项
    Pycharm使用技巧(转载)
    SQL Server 2014内存优化表的使用场景
    Python第十天 print >> f,和fd.write()的区别 stdout的buffer 标准输入 标准输出 从控制台重定向到文件 标准错误 重定向 输出流和输入流 捕获sys.exit()调用 optparse argparse
    Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
    Python第六天 类型转换
  • 原文地址:https://www.cnblogs.com/habyjingloveDY/p/3432881.html
Copyright © 2011-2022 走看看