搜索
bottom↓
回复: 0

简单的滤波程序仿真出问题,求大神解答

[复制链接]

出0入0汤圆

发表于 2012-10-23 11:09:42 | 显示全部楼层 |阅读模式
以下是我在上次论坛两个高手指点后的改进程序,但是在仿真时两个计数器还是偶尔会有一到两个周期的红颜色的错误,求大神给解答一下啊
PS:当我改两个计数器N1和N2的值后,仿真时的结果有时都很好,有时两个计数器countb1和countb2就会有显示红色的X一到两个周期,输出fu是没有问题的

--****************************************************************************
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity filter_unbalance is
        port(        delayu,u,clku: in std_logic;
                           fu : buffer std_logic);
end entity;
architecture behav of filter_unbalance  is
    constant N1:integer:=50;
         constant N2:integer:=103;
                signal countb1: integer range 0 to N1+1;
                signal countb2: integer range 0 to N2+1;
                signal fb1:integer range 0 to 1;
                signal fb2:integer range 0 to 1;               
begin
        process(delayu,clku,u)
                begin
                        if(delayu ='0')then
                                countb1<=0;       
                                fb1<=0;
                        elsif(rising_edge(clku)) then
                                        if(u ='1' and countb1<=N1)then
                                                countb1<=countb1+1;
                                        elsif(u='0')then
                                                countb1<=0;               
                         else
                       countb1<=countb1;       
                                        end if;               
                                        if(countb1 >= N1)then
                                                fb1<=1;                             --输入信号高电平保持一段时间后输出变为高电平
                                        else
                                                fb1<=0;
                                        end if;
                                end if;
                end process;
       
        process(delayu,clku,u)
                begin
                        if(delayu ='0')then
                                countb2<=0;       
                                fb2<=0;
                        elsif(falling_edge(clku)) then
                                        if(u ='0' and countb2<=N2)then
                                                countb2<=countb2+1;
                                        elsif(u='1')then
                                                countb2<=0;               
                         else
                       countb2<=countb2;       
                                        end if;               
                                        if(countb2 >= N2)then
                                                fb2<=0;                             --输入信号低电平保持一段时间后输出变为低电平
                                        else
                                                fb2<=1;
                                        end if;
                                end if;
                end process;
               
fu<= '1' when (fb1=1)   else
          fu  when ((fb1=0)and(fb2=1))   else
     '0' when (fb2=0)         else
          fu  when ((fb1=1)and(fb2=0))   else
          'Z';
               
end behav;
--****************************************************************************

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 09:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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