在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3714|回复: 3

FPGA控制时序问题?

[复制链接]
发表于 2006-11-7 15:48:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
自己开发的一个数据采集卡,用FPGA来控制时序,5M的时钟CLK_5M对模拟信号进行采样,一帧数据是8192个点,触发信号MainTrigger下降沿触发后,每来一个时钟的上升沿,采集一个点,16位计数寄存器Count加一,当计数器计够8192个点后,触发一个帧结束信号FrameEnd(产生一个负脉冲),产生中断。
问题是,开始采集后十几秒或者几十秒(每次时间不等,能正常采集几十帧或几百帧)是正常的,用示波器测帧结束信号的波形是正确的,30Hz的负脉冲,但随后帧结束信号的波形就失去了(没有信号了),用Quartus自带的仿真工具仿真两帧(4ms),波形也是正常的。
第一次使用FPGA设计,找不到问题在哪,卡到这不知如何进行,望高手指点!
附代码如下:
FrameNum为采集点数8191      
assign FrameFullFlag = (Count==FrameNum-1)?1'b1:1'b0;
assign LOAD = ~Q;
always@(posedge CLK_5M or negedge Reset)
begin
    if(!Reset)
       begin
          FrameEnd <= 1'b0;
          Count  <= 16'h0000;
          Q <= 1'b0;   
          CState <= CIdle;
       end
    else
         begin
            Q <= FrameFullFlag;
         case(CState)
             CIdle: begin
                     if(!MainTrigger)
                      begin
                      CState <= CStart;
                      FrameEnd <= 1'b1;
                      Count  <= Count+16'h0001;
                      end
                     else
                      begin
                        CState <= CIdle;
                      end
                    end
             CStart:begin
                     if(!LOAD)
                      begin
                       FrameEnd <= 1'b0;
                       Count  <= 16'h0000;
                       CState <= CStop;
                      end
                     else
                      Count <= Count+16'h0001;
                    end                          
             CStop: begin
                     if(!MainTrigger)
                      begin
                      FrameEnd <= 1'b1;
                      Count  <= Count+16'h0001;
                      CState <= CStart;
                      end
                     else
                      CState <= CIdle;
                   end
          default: CState <= CIdle;
       endcase      
       end
end
 楼主| 发表于 2006-11-7 17:06:37 | 显示全部楼层
小弟不知如何调试,望大侠们指点迷津,告诉如何调试寻找问题的思路也好~
谢过了!
发表于 2006-11-8 08:52:49 | 显示全部楼层
估计很可能是程序的问题吧!!
 楼主| 发表于 2006-11-8 09:15:28 | 显示全部楼层
是的,但是尝试过不用状态机,使用循环计数,计数完毕触发一个FLAG,执行一系列动作,但是也不行,一样是采集一段时间,就消失了FrameEnd信号(30Hz的周期负脉冲变成了持续的高电平),而且效果还不如使用状态机。
请问,应该如何去调试查找错误,试过仿真了,仿真波形正常,大侠们给指个方向吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 12:43 , Processed in 0.022876 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表