基于Xilinx LUT6设计高效紧凑的2:1 Bus Mux

基于Xilinx LUT6设计高效紧凑的2:1 Bus Mux

                       (成都欧开科技有限公司)

在FPGA逻辑设计中,从两组总线数据源中,根据某个条件选择其中一组输出,是一个十分常见的设计需求。例如我司PXI总线的DA模块/通讯总线模块等,通常支持输出(发送)的数据来源于PCI BAR2寄存器或片内Buffer,即为一个典型的2:1 Bus Mux设计需求。

依据Xilinx手册UG384可知,其LUT6由两个共用A[5:1]地址线的LUT5 + 1个Mux构成,并提供两个独立输出,如下图:
在这里插入图片描述
Xilinx在其UG384中明确指出:“在一个LUT6内可实现两个5输入的独立的任意逻辑表达式,唯一的限制是这两个表达式的输入是共用的”,如下图:
在这里插入图片描述
那么,理论上Spartan-6的一个LUT6可以实现共用选择信号的2-bits的2:1 Mux,共5个输入:A[1:0]、B[1:0]、SEL,两个输出AO、BO分别由LUT6的O5、O6输出,从而在Spartan-6的一个Slice内可实现高效、紧凑的,并带一级寄存器的8-bits 2:1 Bus Mux,一个非常常用的32-bits 2:1 Bus Mux仅需4个Slices即可实现

以我司PXI-4021(32Rx/32Tx ARINC-429总线模块)为例,查看XST的实现结果。PXI-4021发送通道的数据源(THR)需要从PCI BAR2的寄存器数据和片内Block RAM中选择一种输出,设计代码如下:
在这里插入图片描述
需要注意的是:XST在综合时,无论其属性参数“LUT Combining”设为Auto还是Area,以及两种代码风格对综合结果没有影响,始终按照1-bit 2:1 Mux的方式综合,即综合的原理图和综合资源报告均显示以上代码需要64个LUT3 + 64个FDE,按此综合结果,结合Spartan-6 Slice的原理,将消耗16个Slices来完成以上代码的功能,更进一步地,Spartan-6 Slice的8个触发器分为两组,每组4个,其中一组触发器的D输入端限制为只能连接Slice内对应LUT6的O5输出端,而如果布局布线时采用了LUT6 O6到对应触发器的策略,将导致与此LUT6 O5输出端相连的触发器不能再被其它逻辑使用。关于Spartan-6 Slice的触发器使用限制见UG384,如下图:
在这里插入图片描述
根据以上分析,有必要通过实验的方式确定XST的布局布线策略是否能够将这样的共用选择信号的总线型2:1 Mux按照一个LUT6实现2-bits选择的方式优化?设计编译完成后,利用Xilinx FPGA Editor查看最终布局布线的结果,可以看到,XST在布局布线阶段确实按照在1个Slices内实现8-bits 2:1 Bus Mux的方式实现的,本例中Tx CH0的DataMux[7:0]即布局于Slice_X42Y158,如下图:
在这里插入图片描述
放大局部,可以看到TxCH0/DataMux<0>来自其触发器对应LUT6的O6输出,TxCH0/DataMux<1>来自其触发器对应LUT6的O5输出,1个LUT6加上Slice内与其相连的两个触发器,实现了共用选择信号的2-bits 2:1 Mux,满足设计预期,如下图:
在这里插入图片描述
更进一步地,Xilinx 7系列FPGA同样基于LUT6的架构,其UG474中对LUT6的描述如下:
在这里插入图片描述
Xilinx UltraSCALE及UltraSCALE+系列FPGA同样基于LUT6的架构,其UG574中对LUT6的描述如下:
在这里插入图片描述
故,本例中的设计思路同样适用于Xilinx 7系列、UltraSCALE及UltraSCALE+系列FPGA。

下载链接:基于Xilinx LUT6设计高效紧凑的2:1 Bus Mux.pdf

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值