如何消除毛刺/

大家好   !!我是vhdl  初学者!!!遇到点小问题,想问问大家.
我在仿真是   隔段时间回出现一个无关数据.这应该是毛刺现象把?应该怎么样消除呢?
谢谢各位指教!! 数据是随即出现的  频率越高   出现的无关数据越多.还有就是  时序仿真是   开始延时得厉害   这可能是频率太高的原因吗?我用的软件是quartus2.代码应该没问题的   功能仿真是正确的.

[ 本帖最后由 liufengyi 于 2008-7-22 10:50 编辑 ]
我也来说两句 查看全部回复

最新回复

  • giyim (2008-7-22 10:32:04)

    具体点,什么叫无关数据,可能是你代码的问题
  • liufengyi (2008-7-22 10:37:19)

    就是正常数据之间出现随即的数据.我也不知道 这对后面的模块有没有影响?
  • 心海的一滴泪 (2008-7-22 11:18:12)

    不知道哦,没碰到过
  • giyim (2008-7-22 11:23:04)

    有无具体代码,能不能说详细点,如果是同步设计是不会出现毛刺的
  • wwxiaobing (2008-7-22 11:23:17)

    http://www.edacn.net/bbs/thread-123683-1-1.html
    看看这个 应该对你有点帮助吧
  • hagelee (2008-7-22 13:04:59)

    毛刺有规律的出现么?应该是代码的问题
  • changqingteng (2008-7-22 14:10:03)

    如果是同步时序,则不会有影响,如果是组合逻辑,最好用D触发器采一下。嘿嘿,俺也是新手,俺是这么觉得的。
  • liufengyi (2008-7-22 15:25:00)

    谢谢了!!!
  • liufengyi (2008-7-22 15:30:56)

    恩  ,我看过了  没任何规律  只是在一些时钟触发边沿会出现,数据是随机的!!!代码应该问题,因为功能仿真 是正确的,应该是因为时序仿真是延时造成的!!
  • liufengyi (2008-7-22 15:33:56)

    这个就是同步时钟的!!!!!
    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;

    entity scanselect is
    port(clk:in std_logic;
            in1,in2,in3,in4,in5,in6:in std_logic_vector(3 downto 0);
            sel:buffer std_logic_vector(2 downto 0);
            daoutut std_logic_vector(3 downto 0));
    end entity;

    architecture bhv of scanselect is
    begin
    P1:process(clk)
    begin
    if clk'event and clk='1' then
       if sel<5 then
        sel<=sel+1;
        else sel<="000";
       end if;
    end if;
    end process P1;
    P2:process(sel)
    begin
    case sel is
    when "000"=>daout<=in1;
    when "001"=>daout<=in2;
    when "010"=>daout<=in3;
    when "011"=>daout<=in4;
    when "100"=>daout<=in5;
    when "101"=>daout<=in6;
    when others=>daout<="0000";
    end case;
    end process P2;
    end bhv;
  • wwxiaobing (2008-7-22 16:05:04)

    P2:process(sel)--使用组合逻辑输出作时钟,是异步设计
  • liufengyi (2008-7-22 20:31:51)

    谢了!!我再改改!!!
  • shun23puppy (2008-7-25 09:09:48)

    刚学这方面的,大家交流
  • outuo (2008-7-25 09:21:49)

    学习  了    多谢
  • tanglu5003328 (2008-8-16 19:15:38)

    可以在输出加一个D触发器解决   如果你的输出不作为下一模块的时钟,复位或启动信号的话   大可以不必管他
  • tangguoge (2008-8-16 19:56:16)

    拿个触发器打一下
  • evador_afren (2008-8-16 21:44:38)

    首先功能仿真没问题,就证明设计理论上是可行的。
    时序仿真时需要确定电路的最高工作频率是多少,时序波形仿真时时钟的频率不应高于此。
    数字系统中竞争冒险(毛刺)现象是必然的,有效的避免毛刺影响的手段主要有:(1)同步法:加入对毛刺不敏感器件(如DFF);(2)选通法;(3)输出RC滤波法。后面的两种方法在《数字电路与系统设计》教材中应该有详细的介绍。
    根据自己的实际情况合理选择避免毛刺影响的解决手段。