前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用香农展开定理进行设计优化

利用香农展开定理进行设计优化

作者头像
Lauren的FPGA
发布2024-03-05 14:53:16
4260
发布2024-03-05 14:53:16
举报
文章被收录于专栏:Lauren的FPGALauren的FPGA

香农展开(Shannon's expansion)或称香农分解(Shannon decomposition)是对布尔函数的一种变换方式。它可以将任意布尔函数表达为其中任何一个变量乘以一个子函数,加上这个变量的反变量乘以另一个子函数,如下两个公式所示案例。

对逻辑函数使用香农展开定理,就可以使用抽取的变量作为一个选择信号,然后用数据选择器来实现该函数。例如:

从而可形成如下电路:

在这个电路中出现了其中某个输入端口恒为1或恒为0的情形,工具在逻辑综合时会对此做进一步的优化,如下图所示。

实际上,对上述电路可重复使用香农展开定理,形成如下图所示电路。

香农展开定理对逻辑环路的改善尤为明显,如下图所示,由于环路的存在,图中红色标记的路径一旦插入流水寄存器,功能就不正确。

流水寄存器只能添加在环路之外,这就要用到香农展开定理。提取出反馈因子,分别将其设定为0和1,从而打开环路形成两条独立路径,而在路径末端添加二选一数据选择器,其控制端由输出反馈提供,最终形成如下图所示电路。

我们看一个案例:如下图所示代码片段,注意其中的第17行,形成了反馈环路,而恰恰是反馈环路成为了时序性能的瓶颈。这条路径上既有查找表又有DSP(实现乘法操作)且均没有额外的流水寄存器。

我们依据香农展开定理,将代码优化为如下形式,注意代码的第13行和第14行,新增了两个变量,分别对应internal_total大于target和小于target的情形,从而将环路打开。

对比上述两种电路,目标芯片均为xcvp1502,时钟频率为400MHz,采用Vivado2023.2,最终性能如下图所示。可以看到采用香农展开定理之后,WNS由原来的-0.719提升至-0.210。但仍然没有达到目标的400MHz。此时我们还可以进一步优化。

由于此时环路已经打开,那么我们就可以插入适当的流水寄存器,如下图所示。图中红色方框代表流水寄存器。从而可进一步改善WNS,最终WNS为0.841,意味着这部分路径至少可以运行至500MHz。

Copyright @ FPGA技术驿站

转载事宜请私信 | 获得授权后方可转载

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA技术驿站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档