shiqianwei 发布于 2007-11-5 22:19:00 一个用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时出现了尖峰,搞不明白了,怎么回事呢? 用其他一些型号的也会有这样现象,难道我的代码有问题吗?!
* - 本贴最后修改时间:2007-11-5 22:22:02 修改者:shiqianwei 
shiqianwei 发布于 2007-11-5 22:20:00 ---

amtek 发布于 2007-11-9 0:01:00
尖峰是永远存在的,如果有时仿真没出来,只能说明仿真不准,而硬件都是有的,要在硬件中减少尖峰,需要功底。
shiqianwei 发布于 2007-11-10 12:28:00 看来CPLD/FPGA也不是那么完美滴咯
qinxg 发布于 2007-11-13 13:30:00 如果内部有时钟,可以用时钟把s1s0和y都锁存一下,就没有任何尖锋了.
|