4位加法器的设计代码verilog_FPGA高速设计(二)

本文深入探讨了FPGA内部结构,特别是针对xilinx K7芯片,解析了SLICE和LUT的工作原理。文章通过4位加法器的实现为例,介绍了加法器在FPGA中的逻辑层级和资源利用,揭示了如何优化设计以减少逻辑层级和提高速度。此外,还讨论了不同位宽加法器的逻辑层级计算,并对比了不同FPGA架构下的资源差异。
摘要由CSDN通过智能技术生成

针对FPGA工程师,要设计出好的代码,必须了解FPGA内部的结构,所以开始也就稍微啰嗦一些书本上的基本知识。要说明所有涉及到的实例都是基于xilinx公司的K7芯片,总结出的逻辑层级在其他结构的FPGA芯片不能通用,需要自行计算得出,本文中也会给出计算方法。

一、FPGA内部结构

xilinx的FPGA基本逻辑单元叫CLB或者CLE(反正含义都差不多),对于K7芯片,每个CLB中有两个SLICE,SLICE分为SLICEM和SLICEL,通常SLICEM中的LUT更多作为分布式RAM进行使用,逻辑主要靠SLICEL来搭建,所以可以认为SLICE才是真正可重用的基本单元。展开SLICE后,发现内部包含4个6输入的LUT、3个MUX、1个4输入进位链和8个FF。SLICE内部结构随着芯片架构不同而不同,下图列出K7和VU9P的LUT结构,可以看到vu9p的SLICE更为强大,拥有8个6输入的LUT,而K7只有4个6输入LUT,别的不说,单凭这一点就是质的改变。(上图为K7,下图为vu9p)

45ba8746ceac7e801a190d309e30b890.png

9930b2de87d3194408e98531ef19f13d.png

我们深挖一下LUT,LUT翻译过来叫查找表,它的作用是实现所有逻辑函数的功能模块。更通俗一点,我们知道对于ASIC是用门电路搭建而成的,而对于FPGA来说,无论什么逻辑都可以用LUT来实现。数字电路中学过与非门、异或门、选择器等等基本单元,但是LUT可以把这些功能全部实现,只要输入够多,它可以实现任何复杂的bit运算。乍一看确实感觉它很神奇,那为什么ASIC也不这么做呢?我们再简单剖析下LUT的内部结构。

对于6输入的LUT而言,你可以认为它的本质就是6bit位宽的存储器(不够严谨但是可以这么理解),能够存储2^6=64位数据,如下图所示,6个输入表示6位地址线,一个LUT只有一个输出,这1bit的输出值就存储在存储器中,当输入特定地址后将对应的值读出,所以LUT的延迟比一般的专用逻辑电路要大,而且对于FPGA来说,即使综合出一个反相器,也需要使用一个LUT实现,根本上同样的逻辑, FPGA使用的资源要远大于ASIC。

a1fc5bc5750684ce28e0030fd0de656b.png

在设计中,大量的资源都是用逻辑来实现功能,而逻辑都是使用最简单的加减乘除、比较、条件判断和循环等运算搭建的,这也是我们使用FPGA设计电路最重要、重复性最高的部分。提到加法器,就会想到进位链,如果学过数字电路,就会知道常用的有串行进位链以及更快速的超前进位链,很不巧FPGA厂商选择了前者,因为可重用行更高。下图显示出K7中的4输入CARRY的结构图,乍一看有点小复杂ÿ

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值