一个用CASE语句描述的4选1选择器,用一些型号的芯片仿真会有莫明其妙的尖峰出现,而有一些芯片又不会出这种现象。如下:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41b IS PORT(a,b,c,d: IN STD_LOGIC; s0,s1: IN STD_LOGIC; y: OUT STD_LOGIC ); END ENTITY mux41b; ARCHITECTURE bhv OF mux41b IS --4选一选择器的CASE语句表达方式描述 SIGNAL s1s0 : STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN s1s0 <= s1 & s0; PROCESS (a,b,c,d,s1s0) BEGIN CASE s1s0 IS WHEN "00" => y<=a ; WHEN "01" => y<=b ; WHEN "10" => y<=c ; WHEN "11" => y<=d ; WHEN OTHERS => NULL ; END CASE; END PROCESS; END ARCHITECTURE bhv;
我的4路输入a,b,c,d都为0.用epm3064alc44时仿真波形如下:---见2楼
用ep20k30etc144时仿真波形:
可以看到用ep20k30etc144时出现了尖峰,搞不明白了,怎么回事呢? 用其他一些型号的也会有这样现象,难道我的代码有问题吗?! |