基于树形Mux的逻辑电路优化.pdf
《基于树形Mux的逻辑电路优化.pdf》由会员分享,可在线阅读,更多相关《基于树形Mux的逻辑电路优化.pdf(7页珍藏版)》请在咨信网上搜索。
1、第36卷第5期,2023年9月 宁 波 大 学 学 报(理 工 版)中国科技核心期刊 Vol.36 No.5,Sep.2023 JOURNAL OF NINGBO UNIVERSITY(NSEE)中国高校优秀科技期刊 DOI:10.20098/ki.1001-5132.2023.0305 基于树形 Mux 的逻辑电路优化 于宗源,廖春柳,胡 张,王伦耀*(宁波大学 信息科学与工程学院,浙江 宁波 315211)摘要:为实现用 case 语句描述的逻辑电路的面积和延迟优化,提出了一种基于树形 Mux 的逻辑电路优化方法.该方法先将 case 语句转换为树形 Mux,通过合并 case 语句实现
2、Mux 树中 Mux门的个数和层级减少,并通过化简地址逻辑实现地址再编码电路的精简,进而实现映射后电路面积与延迟的优化.提出的算法使用 C+语言实现,电路面积和延迟优化结果由常用学术开源EDA 工具 abc,结合国内 EDA 公司提供的映射库得到.实验结果表明,相比于 abc 工具,使用该方法得到的面积和延迟优化分别提升了 26%和 21%.关键词:Mux 树;case 语句综合;逻辑优化;Verilog HDL 中图分类号:TP391.41 文献标志码:A 文章编号:1001-5132(2023)05-0069-07 从电路的功能角度,数字电路内部可以分为数据通路和控制逻辑两大部分.数据选择
3、器(Multiplexer,Mux)可以同时作为构建数据通路和控制逻辑的模块,且可以实现任何逻辑功能1,可以用在加法器2、乘法器3、物理不可克隆函数(Physical Unclonable Function,PUF)4等领域.Mux在现场可编程门阵列(Field-Programmable Gate Array,FPGA)中应用尤其广泛,在传统的岛式FPGA5中,FPGA 的设计指标很大程度上取决于其架构.文献6提出了一种二级 Mux 结构来进行面积和延迟的优化.在对基于 Altera 公司 FPGA 的120 个实际的客户设计分析中发现,FPGA 中 Mux的面积往往占了 25%以上7.文献4
4、通过 Mux 链组建PUF结构来保障硬件安全.另外,在逻辑电路的行为级描述中,使用频率很高的 if、else 与 case语句也可以映射成 Mux 电路.所以基于 Mux 的数字逻辑电路优化是逻辑综合领域中一个重要的研究方向.在对Mux的研究中,Mux的优化方法主要有两种,一种是使用结构变换7-9,即使用不同规格的Mux 或其他门来代替原电路的 Mux,另一种是使用二元决策图(Binary Decision Diagram,BDD)10.文献7使用逻辑共享来优化 Mux 树,是针对于4-LUT 且依赖于 4 选 1 的 Mux 实现优化.文献8指出 n 选 1 的 Mux 可设计方案的数量是一
5、个 NP(Non-deterministic Polynomial)完全问题,随着 n 的增加,n 选 1 的 Mux 设计方案呈指数增加.文献9在此基础上提出了一种树分解方法,从所有可能的分解中选择最佳方案,但该方法的效率受限于电路规模.文献10提出了一种基于 BDD 的优化算法,其优化效果会受变量输入顺序影响.而本文提出的方法具有较好的普适性,可以有效处理规模较大的电路.基于 Mux 的逻辑电路的结构大致由两部分组成,即树形的 Mux 阵列和控制每个 Mux 选通状态的地址电路.因此,针对Mux电路结构的优化可以通过优化 Mux 阵列和地址电路来实现.通过减少Mux 阵列中的 Mux 使用
6、数量和地址电路的逻辑门数量实现电路面积的优化,也可以通过压缩 Mux阵列和地址电路的层级数实现电路延时的优化.基于 Mux 的逻辑电路的结构优化主要利用Mux 逻辑门的如下特性,当一个 Mux 门的数据输 收稿日期:20230303.宁波大学学报(理工版)网址:http:/ 70 宁波大学学报(理工版)2023 入都相同时,该 Mux 的输出与输入之间可以用导线代替而不改变逻辑功能,进而实现电路的简化.因此,实现基于 Mux 的逻辑电路优化的一个有效手段就是确定某个 Mux 门,让它的数据输入都一样,达到省略该 Mux 门的目的.本文主要研究用硬件描述语言 Verilog 中if-else 和
7、 case 语句描述的逻辑电路的优化.此类描述对应的逻辑功能一般可以用 Mux 电路实现.考虑到if-else与case之间可以相互转化,为叙述方便,同时不失一般性,本文以 case 语句为例来说明优化过程.通过将 case 语句描述转化为树形 Mux 结构,然后简化Mux树,实现对case语句描述的逻辑电路的优化.为减少第三方 EDA 工具对实验结果的影响,本文先将优化后的 Mux 树转化为基于assign 语句描述的准网表结构,然后用学术上通用的 EDA 工具 abc 进行逻辑综合,得到优化后电路的性能参数,并将本文结果与 abc 结果进行比较.1 基于基于 Mux 的逻辑电路结构的逻辑电
8、路结构 Verilog 中一个具有 W 个分支的 case 语句常被映射为具有 W 选 1 功能的 Mux 树结构10.通常Mux 树可由具有 2 选 1 或 4 选 1 功能的 Mux 门实现11,本文采用前者,并用 Mux_2 表示具有 2 选 1功能的 Mux 门.图1为基于Mux门的逻辑电路结构,其中包含了两部分,即 Mux 树和地址再编码电路.地址再编码电路MUX树地址输入地址输出数据输入数据输出 图 1 基于 Mux 的逻辑电路结构 以 Verilog 中的一个 case 语句为例来说明图 1中 Mux 树和地址再编码电路的作用.图 2(a)中 case 语句描写的电路功能可以理解
9、为一个具有 8个数据输入端的数据选择器,其地址信号为4位宽的sel.输入的8个数据中部分是相同的.与图 2(a)中 case 语句对应的 Mux 树结构如图2(b)所示.图 2(b)中每个梯形表示一个 Mux_2 门,梯形下部的 2个连线为数据输入,上部的连线为输出,腰部的连线为地址输入.梯形中的“1”和“0”分别表示当地址输入为 1 或 0 时,与“1”端或“0”端相连的数据输入将被选中作为 Mux_2 的输出.图 2 Verilog 的 case 语句及其用 Mux_2 实现的逻辑电路 在图 2(a)中的 sel 为地址输入,sel 中“0”表示输入为反变量,“1”为原变量;同时本文约定,
10、若某一位变量不出现(即无关项),则用“-1”表示.构成地址表达式的变量之间为逻辑“与”关系.如图2(b)中 M1 的地址表达式为“0000”,则该地址表达式为 4 个反变量构成的乘积项.图 2(b)中各 Mux_2 门的地址逻辑用如下方法得到:属于 Mux 树的任意一个 Mux_2 门的地址逻辑可以表示为与该 Mux_2 门“1”端相连的所有可能输入对应的地址逻辑表达式的“或”,因此,最底层 Mux_2 门的地址逻辑表达式等于选中该Mux_2 门“1”端输入的地址逻辑表达式.以 M5为例,若从 M5 的“1”端分析,与 M5 的“1”输入端相连的是 M1,因此,M5 可能的输出就是 M1的两个
11、数据输入之一.它们的地址逻辑表达式分别为“0000”和“0010”.因此,M5 的地址逻辑表达式为“0000|0010”.另外,在图 2(b)中,M1 的两个数据输入均为d0,因此,不管与M1相连的地址如何变化,其输出恒为 d0,所以 M1 可以省略,同时将 M5 与 M1相连的输入改成 d0即可,从而实现电路的简化.2 树状树状 Mux 的逻辑电路创建的逻辑电路创建 将 case 语句转化为树状 Mux 前,需将 case 语句转化为两个矩阵,分别为地址矩阵和数据矩阵.地址 输入 地址 输出 数据 输出 数据 输入 MUX树 地址再编码电路 第 5 期 于宗源,等:基于树形 Mux 的逻辑电
12、路优化 71 因多输出电路可以等效为多个单输出的组合,而单输出电路可以用一个 Mux 树表示,因此本文以单输出 case 语句为例来说明 Mux 树形电路的创建与优化.与图 2(a)case 语句对应的地址矩阵和数据矩阵如图 3 所示.地址矩阵中的“0”和“1”分别表示 case 语句中地址信号 sel 的某个位取值 0 或 1,“-1”表示该位取值任意.数据矩阵中分别用2,4,(2n+2)表示原变量输入 d0,d1,dn,用3,5,(2n+3)分别表示 d0,d1,dn的反变量输入.图 3 case 语句与地址矩阵和数据矩阵对应关系 由于每个 Mux 树只有 1位输出,因此要表示 n位输出的
13、逻辑函数就需要建立 n 个 Mux 树.算法1给出了利用数据矩阵和地址矩阵将case语句转化为对应的树形 Mux 逻辑电路的过程.算法 1 Create_Muxtree_(case_listnm,sel_listmp)Input:case_listnm,sel_listmp Output:M_Tn;for(i=0;in,i=i+1)Num_in=eva(case_listi,sel_list);/step1 M_Ti=gen_T(case_listi,Num_in);/step2 T_addr(M_Ti,sel_list);/step3 cmpat(M_Ti);/step4 算法 1 中 ca
14、se_list 是二维数据矩阵,n 代表输出的位宽,m 表示 case 语句中列出的地址表达式的数量,亦即case包含的分支数量;输入sel_list是二维地址矩阵,m含义同上,p表示某个地址的第p位.生成的 Mux 树用 M_T 表示,其中 M_Ti存储着第 i 个 Mux 树的根节点地址.step1 中,子程序 eva(case_listi,sel_list)用来检测第i个输出对应的输入是否存在任意取值情况,如果有,就删除 case_listi,sel_list 为任意取值所在的行;并计算出第i个Mux树实际的数据输入个数 Num_in.step2 中用二叉树来建立树形 Mux.其中二叉树
15、的每个节点可存储对应 Mux_2 门的地址表达式和 2 个数据输入端数据.子程序 gen_T(case_listi,Num_in)用于生成 Mux 树,过程如下:由根节点自顶向下生成满二叉树,直到最底层的二叉树节点的 2 个输入数据储存单元可以容纳全部的case_listi中数据为止.生成二叉树后,在最底层的二叉树节点上的输入数据存储单元中自左向右依次存入 case_listi中的数据.若最底层的二叉树节点上的数据输入存储单元数超过 case_listi中存储的数据,则用 case_listi中最后一位的数据填满剩余的数据输入存储单元.step3 中子程序 T_addr(M_Ti,sel_li
16、st)用来实现将各 Mux_2 的地址表达式填写到 Mux 树对应的节点中.方法如下:找到 M_Ti最底层二叉树节点,将 sel_list 中与某节点的两输入端数据对应的地址填入到该节点的地址寄存单元中,该存储单元被称为 sel_mat.sel_mat 包含两部分,即 sel_mat1 和sel_mat0,分别用于存储构成 Mux_2 门中“1”输入端和“0”输入端的对应地址表达式的乘积项.step4 中子程序 cmpat(M_Ti)用来删除具有相同两输入数据的节点,以实现对 M_Ti压缩.以图2(a)中的case为例,对应的地址和数据矩阵如图 3 所示,其数据矩阵一共有 8 个数据输入,即
17、Num_in=8.执行子程序 gen_T 时会生成一个满二叉树,由于输入的数据为 8 个,因此底层为 4 个节点时,已满足将 8 个输入存储到最底层二叉树的要求,因此二叉树生成完毕;然后自左向右依次将8 个数据输入填到 4 个节点的“1”输入端和“0”输入端.在执行子程序 T_addr 时,先填入底层 Mux_2门的地址表达式,这些表达式等于这些门的输出为“1”端数据时的地址表达式,其地址表达式可通过查找地址矩阵得到.与根节点 M7 的“1”相连的数据输入来自 M1 和 M2 的 4 个输入,它们的地址表达式分别为“0000”“0010”“0100”和“0110”.因此,M7 的地址逻辑表达式
18、为上述 4 个乘积项的“或”.72 宁波大学学报(理工版)2023 子程序 cmpat 用来检查 Mux 树中有无存在输入相同的节点,如有,则删除该节点.在图 2(b)中,M1满足此条件,可删除.图4为删除M1后的Mux树结构.图 4 执行子程序 cmpat 后的逻辑电路 3 树形树形 Mux 的逻辑电路优化的逻辑电路优化 3.1 case 语句的合并语句的合并 通常情况下,case 语句中存在一定数量的相同赋值操作,即不同地址输入下,输出是相同的.但在创建 Mux 树时依然会按照不同地址创建不同的Mux门.考虑到Mux门的所有数据输入相同时,该Mux 门是可以删除的,因此,若能将相同的赋值操
19、作移动到同一个 Mux 门之下,就可以将对应的Mux 门删除,从而达到电路简化的目的.图5是图3地址矩阵和数据矩阵合并简化后的结果,其中左侧为合并后的地址矩阵,右侧是数据矩阵.图 5 中,对应相同数据的地址被合并在一起,使得数据矩阵只包含 4 个元素,因此只需 3 个Mux_2 门就可以了.0,0,0,0,0,0,1,0,0,1,1,020,1,0,0,1,0,0,1,1,1,1,141,0,1,161,1,1,18 图 5 化简后地址矩阵和数据矩阵的对应关系 图 6 是化简后的 case语句建立的 Mux 树结构.化简之后 Mux 树中 Mux 门的数量和 Mux 树的层级都得到了减少.图
20、6 化简后的 Mux 树结构 算法 2 为 case 语句的合并算法伪代码.其中,输入case_listnm表示n个输出的数据矩阵,输入sel_listmp是地址矩阵.输出hash_listndata用于存储具有 n 个输出的数据矩阵和地址矩阵合并后的结果.算法 2 Case_hash(case_listnm,sel_listmp)Input:case_listnm,sel_listmp;Output:hash_listndata;for(i=0;in;i+)for(j=0;jm;j+)Merg_case_list(case_listij,sel_listj,hash_listidata);子
21、程序 Merg_case_list(case_listij,sel_listj,hash_listidata)实现将第 i 个输出对应的 case 语句进行合并.方法如下:检查 case_listi中所有输出取值情况,然后按取值情况进行分类,将相同输出对应的地址放在一起,实现 case 语句的合并.3.2 地址逻辑表达式的简地址逻辑表达式的简化化 从图 1 可知,树形 Mux 电路包含 Mux 树和地址再编码电路,因此,树形Mux电路的优化除了要简化 Mux 树外,还要简化地址再编码电路.以图 6 中的 M2 为例,由图 2(a)的 case 语句可得,当地址信号sel=4b1011时,M2的
22、输出为d2,当地址信号 sel=4b1111 时,M2 的输出为 d3.用assign 语句可以表示为 1_(4 b1011)?2:3assignMoutseldd(1)或者 1_(4 b1111)?3:2.assignMoutseldd(2)式(1)和(2)中都用到了sel的4位地址进行判断,但分析上面 2个语句的判断条件不难发现,只要判断 sel2就可以区分出选择输出是 d2还是 d3.因此可以将式(1)和式(2)改为 1_(20)?2:3assignMoutseldd,(3)1_(21)?3:2assignMoutseldd.(4)相比于式(1)和(2)用“与”门实现地址逻辑,式(3)和
23、(4)直接用 sel2作为地址逻辑,没有用到任何逻辑门.虽然式(3)和(4)的判断只用到了 4 位地址中的1 位,并没有考虑另外 3 位的变化对数据选择的影响,但与 M1 输出相连的 M3 的地址逻辑已表明有 第 5 期 于宗源,等:基于树形 Mux 的逻辑电路优化 73 且只有另外 3 位地址输入均为“1”时,输出才能是 d2或 d3,因此 M1 地址逻辑的简化不会影响电路的逻辑功能.对于 M_T 中任何一个 Mux_2 地址表达式中的乘积项阵列 sel_mat1 和 sel_mat0 都执行算法 3 的简化操作.算法 3 Reduce_sel(M_T)Input:M_T;Output:si
24、mplified M_T;for any Mux_2 in M_T,named Mi;_1iselmatM _0iselmatM;col_set1=same_col(sel_mat1);col_set0=same_col(sel_mat0);/step1(_1=&_0=)&_1_0!)ifcolsetcolsetcolsetcolset!Y=find_dif(sel_mat1,sel_mat0,col_set1,col_set0);/step2 if(Y!=-1)sel_mat_Rdu(Y,sel_mat1,sel_mat0);/step3 exchang_in(Mi,sel_mat1,sel
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 树形 Mux 逻辑电路 优化
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。