OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7825|回复: 9

毛刺信号怎么解决?刚学

[复制链接]

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
发表于 2016-11-1 14:06:08 | 显示全部楼层 |阅读模式
1金钱
fff.png

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity test is
port(
        clkin:in std_logic;
        en:in std_logic;
        data_in:in std_logic_vector(15 downto 0);
        clk_outut std_logic;
        data_outut std_logic);
end entity;

architecture behave of test is
signal ien:std_logic;
signal clk_temp:std_logic;
signal clk_out_temp:std_logic;
signal reset:std_logic;
signal icnt:std_logic;
signal iicnt:std_logic;
signal cnt:integer;
begin
clk_out<=iicnt and clkin;
process(clkin)
begin
if rising_edge(clkin) then
        ien<=en;
end if;
end process;


process(clkin)
begin
        if rising_edge(clkin) then
                iicnt<=icnt;
        end if;
end process;

process(clkin,en)
begin
        if rising_edge(clkin) then
                if en='1' and ien='0' then
                        reset<='1';
                else
                        reset<='0';
                end if;
        end if;
end process;



process(clkin,en,reset)
begin
        if rising_edge(clkin) then
                if reset='1' then
               cnt<=0;
               icnt<='1';
            elsif icnt='1' then
                                data_out<=data_in(cnt);
                                cnt<=cnt+1;
                                if cnt>=15 then
                                        icnt<='0';
                                        cnt<=cnt;
                                end if;
                else
                        if icnt='0' then
                                data_out<='0';
                        end if;                       
                end if;
        end if;

end process;
end behave;

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6291

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11406
金钱
11406
注册时间
2014-4-1
在线时间
1282 小时
发表于 2016-11-1 16:11:32 | 显示全部楼层

是仿真出毛刺,还是实际电路?


回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-11-1 16:48:04 | 显示全部楼层
xuande 发表于 2016-11-1 16:11
是仿真出毛刺,还是实际电路?

时序仿真
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-11-1 18:59:14 | 显示全部楼层
帮顶
回复

使用道具 举报

58

主题

6291

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11406
金钱
11406
注册时间
2014-4-1
在线时间
1282 小时
发表于 2016-11-1 21:59:27 | 显示全部楼层


仿真有毛刺,基本是程序问题。


回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-11-2 10:10:34 | 显示全部楼层
xuande 发表于 2016-11-1 21:59
仿真有毛刺,基本是程序问题。

这个是可编程逻辑器件啊大哥。。。。就是硬件设计语言化。。。。这个仿真是根据实际的逻辑门电路的延时时间来的。图和程序都给出来了,我是想知道怎么解决而已,这个就基本是器件运行时候的效果。上图就是延时造成的在时钟上升沿的时候,那个icnt信号还是之前的状态,所以末尾与门得出了那个毛刺。
回复

使用道具 举报

58

主题

6291

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11406
金钱
11406
注册时间
2014-4-1
在线时间
1282 小时
发表于 2016-11-2 11:11:34 | 显示全部楼层
zhoujianwen 发表于 2016-11-2 10:10
这个是可编程逻辑器件啊大哥。。。。就是硬件设计语言化。。。。这个仿真是根据实际的逻辑门电路的延时时 ...


CPLD/FPGA我现在就在用。

我用verilog,不懂你这VHDL,
而且图上没有标出信号名称,也没有指出哪个部位是你说的毛刺,看起来更费劲,

我说的程序有问题,就是指你的代码,你设计的逻辑。

回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-11-2 11:24:29 | 显示全部楼层
你的程序从来没有毛刺的情况吗
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-11-2 11:24:47 | 显示全部楼层
xuande 发表于 2016-11-2 11:11
CPLD/FPGA我现在就在用。

我用verilog,不懂你这VHDL,

你的程序从来没有毛刺的情况吗
回复

使用道具 举报

58

主题

6291

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11406
金钱
11406
注册时间
2014-4-1
在线时间
1282 小时
发表于 2016-11-2 11:37:48 | 显示全部楼层
zhoujianwen 发表于 2016-11-2 11:24
你的程序从来没有毛刺的情况吗


有过,我不认为它是毛刺,
而是代码有问题造成的必然结果。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 18:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表