|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
自己开发的一个数据采集卡,用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 |
|