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;
如果结束;
结束过程;
结束语;
添加评论