多路复用器优化之Mux背景及分类(2)

  • coyoo
  • LV4工程师
  • |      2014-06-20 12:58:45
  • 浏览量 2528
  • 回复:13

综合时如何实现多路复用器

 

         首先二进制多路复用器可以直接使用ALTERA的lpm_mux函数,我们来看4:1多路复用器如何使用四输入查找表来实现,前面我们已经提到实现这种多路复用器需要两个LE,如图1所示。

 


图1: 4:1多路复用器实现

 


图2:4:1多路复用器是如何工作的

         如图2所示显示4:1多路复用器是如何工作的,S0选择复用器的输出是从A/B还是C/D之中产生,即S0等于0意味着C或D被选择输出。S1再在A/B和C/D中选择最终的输出。如图2所示,我们可以利用级联线来实现高速互联,而且这种级联线是一种比较正常的布线资源。

         前面我们提到大的多路复用器,会被综合工具分解成小的多路复用器。现在我们来看如何使用树形2:1多路复用器来组成N:1多路复用器,如图3所示。

 


图3:树形2:1多路复用器组成N:1多路复用器

         图3所示为创建较大多路复用器的标准技术,ASIC中也常用此技术。每一个2:1多路复用器使用了一个查找表,所以N:1多路复用器大体上要消耗N个LE(如果你仔细去数,实际上应该消耗了N-1个LE,这里我们只做大致估算)。如果将图3顶部从左手边开始,按照前面介绍的4:1多路复用器来实现,那么一个4:1多路复用器需要2个LE,那么结果就会如图4所示。

 


图4:树形4:1多路复用器组成N:1多路复用器

         如图4所示,一个4:1消耗2个LE,因为中间合成需要消耗资源,所以N:1总体LE消耗大概是0.66N个LE。

         对于多路复用选择器的实现,前面我们提到选择器就是一个树形的与门和或门,如图5所示,虚线框中为一个LE。该结构实现的N:1多路复用器消耗的LE资源应该也在N的三分之二左右,只是实际上这种结构比起前面的4:1结构要稍微多消耗一点点。

 


图5:多路复用选择器的实现

         最后,对于带优先级多路复用器的实现,我们来看如图6所示的结构,这种实现结果来自于IF-THEN-ELSE代码结构。图中,每个2:1消耗一个LE,所以N:1总共需要N个LE(实际也是N-1个)。需要注意的是,前面也提到过,这种结构的时序延时比较差。

 


图6:带优先级多路复用器实现

         不过,Quartus II可以对图6中结构进行优化,优化后的结构如图7所示。优化后,总体树形结构并未变得更大或更小,但是路径延时变得更小。如果设计中确实需要优先级多路复用器,那么Quartus II会以这种方式来实现。

 


图7:Quartus II对优先级多路复用器的优化

         如图7所示,只要最前面四个选择线中任何一个为高,即选择左手边数据作为输出,否则选择右手边数据作为输出,在其它每两个MUX之间也是按照同样的道理进行选择。Sel 0具有最高的优先级。如此优化之后,LE的消耗没有发生变化,但是却减少了逻辑深度,优化了逻辑延时。

  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:12
雪狼 2014-07-30
很好再次顶起。。。
0   回复
举报
发布
电子大拿 2014-07-16
这位老师讲的很专业啊
0   回复
举报
发布
wengqiang 2014-06-30

支持一下,啊顶。。。

0   回复
举报
发布
laoyaomao 2014-06-24
来逛逛,看有没有可以带走的知识
0   回复
举报
发布
coyoo 2014-06-24
0   回复
举报
发布
wengqiang 2014-06-24
顶起,顶起
0   回复
举报
发布
陌路绝途 2014-06-21
感谢楼主分享,期待楼主新作!!
0   回复
举报
发布
Cigoy 2014-06-20
综合这东西,一言难尽啊。
0   回复
举报
发布
空中翱翔的老虎 2014-06-20
看看 顶顶
0   回复
举报
发布
冰山一角 2014-06-20
顶起。。。
0   回复
举报
发布
查看更多
x
收藏成功!点击 我的收藏 查看收藏的全部帖子