VHDL综合:三态多路复用器与组合多路复用器。

描述


许多VHDL综合器能够推断三态复用器。

以及组合多路复用器(内置查找表)。一种风格的运用

相对于另一个,可以在速度和/或密度方面影响结果。



一个常见的错误是使用case语句来构建三态多路复用器。

而不是使用简单的WHON子句。

解决方案


下面的第一个例子描述了三态复用器:



库IEEE;

使用IEEE.STDYLogiCy1164.ALL;



实体三态

端口(BUSA,BASB,BUSC,BUD,BUEST,BISF:STDLogLogic矢量(7下降到0);

ValID:在StdLogLogic向量(5下降到0);

CLK:在STDYLogic中;

结果:STD Logistic向量(7下降到0);

末端三态;



三态结构



信号三总线:STdLogLogic向量(7下降到0);



开始



TIIIAL BUS & lt;=BUAL当ValIDE(0)=“1”时“ZZZZZZZ”;

TuriBuff& lt=当ValIDE(1)=“1”时“BuSB”“ZZZZZZZ”;

TurixBuff& lt=当ValIDE(2)=“1”时“BuSC”“ZZZZZZZ”;

TIIIL BUS & lt=当ValIDE(3)=“1”时“BZD”“ZZZZZZZ”;

当ValIDE(4)=“1”时,BiSe=BuSE;

TIIIUBUS & LT=当ValIDE(5)=“1”时“BuSF”“ZZZZZZZ”;



RealStestOutlook输出:进程(CLK)

开始

如果CLK'事件和CLK = '1 ',那么

结果和lt=三总线;

如果结束;

结束过程;

末端三元复用器;





第二个例子描述了一个组合多路复用器。

案例陈述。



库IEEE;

使用IEEE.STDYLogiCy1164.ALL;



实体三态

端口(BUSA,BASB,BUSC,BUD,BUEST,BISF:STDLogLogic矢量(7下降到0);

ValID:在StdLogLogic向量(5下降到0);

CLK:在STDYLogic中;

结果:STD Logistic向量(7下降到0);

末端三态;



三态建筑



信号LutiBux:STdLogLogic向量(7下降到0);



开始

MuxLuT:过程(ValIDE)

开始

诉讼案件是

当“00000 1”=gt;

当“000010”=gt;LutuBub & lt;

当“000100”= & Gt;LutuBub & lt;= BUSC;

当“001000”=gt;LutuBub & lt;

当“010000”=;

当“100000”= & Gt;LutuBub & lt;= BISF;

当其他=& LutyBub & lt=“ZZZZZZZ”时;

结束情况;

结束过程;



RealStestOutlook输出:进程(CLK)

开始

如果CLK'事件和CLK = '1 ',那么

结果& lt=LutuBUS;

如果结束;

结束过程;

结束语;
编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-29 13:52:16 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它