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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7034|回复: 21

[求助] 求助,Chipscope中遇到的奇怪问题

[复制链接]
发表于 2014-4-5 16:49:39 | 显示全部楼层 |阅读模式

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

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

x
我最近在用Chipscope时发现采样出来的信号波形有点不明白是什么意思,如截图: 截图01.png 其中状态机我只定义了4个状态;IDLE = 4'b0001,
READ = 4'b0010,
BUSY = 4'b0100,
FINISH  = 4'b1000;
为什么会出现0000的状态呢?
而且next_state和cur_state怎么会同时变成0000呢?不明白是怎么回事?请教大家,如需要我可以把部分代码贴上来。
截图00.png
 楼主| 发表于 2014-4-5 17:19:21 | 显示全部楼层




  1. always@(posedge clk or negedge rst_n)
  2. if(!rst_n)
  3.         cur_state<=IDLE;
  4. else
  5.         cur_state<=next_state;
  6.        
  7. always@(cur_state,flaga,flagd,ack,USB_Command,empty)
  8. begin
  9.         next_state = cur_state;
  10. case(cur_state)
  11.         IDLE:
  12.                 begin
  13.                 if(flaga == 1'b1)
  14.                         next_state = READ_COM;
  15.                 end
  16.         READ_COM:
  17.                 begin
  18.                 if((USB_Command[39:32]==8'h7e)&&(USB_Command[7:0]==8'hff))     //receive
  19.                         next_state = BUSY;
  20.                 else if(flaga == 1'b0)
  21.                         next_state = IDLE;
  22.                 end
  23.         BUSY:
  24.                 begin
  25.                         if((ack == 1'b1)&&(empty==1'b1))
  26.                                 next_state = FINISH;
  27.                 end
  28.         FINISH:
  29.                 begin
  30.                         if(ack == 1'b0)
  31.                                 next_state = IDLE;
  32.                 end
  33. endcase
  34. end


复制代码
还是把代码贴上来了吧
发表于 2014-4-5 17:42:39 | 显示全部楼层
主要看你状态机怎么写的 ,还有就是你用什么时钟抓的
 楼主| 发表于 2014-4-5 18:01:19 | 显示全部楼层
回复 3# lyc3981714641


   状态机贴出来了,如何是偶尔有抓错的话可能是抓的时钟问题,但这个波形是直接内部逻辑就错了吧?
发表于 2014-4-5 19:05:46 | 显示全部楼层
楼主啊,这个情况我遇到过,是你状态机信号第二个always块中有未同步化的异步信号,导致状态机跳飞。
 楼主| 发表于 2014-4-5 20:11:52 | 显示全部楼层
回复 5# lwukang


   异步信号进来要先过寄存器才行吗?
 楼主| 发表于 2014-4-5 20:14:11 | 显示全部楼层
本帖最后由 prototyping 于 2014-4-5 20:22 编辑

回复 5# lwukang


  我知道了,异步信号,使得next_state->cur_state产生了亚稳态,那这个异步信号需要打两拍进来啊?
发表于 2014-4-6 12:46:18 | 显示全部楼层
回复 7# prototyping

就是这样,以后设计状态机的时候要记得同步化。
 楼主| 发表于 2014-4-6 21:01:46 | 显示全部楼层
回复 8# lwukang


   恩 对对    但是latency不就大了啊
发表于 2014-4-9 13:15:26 | 显示全部楼层
同意,状态机输入异步信号必须同步处理,否则一定出现跑飞的情况,一般就是进others里了
屡试不爽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


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

GMT+8, 2024-11-20 07:37 , Processed in 0.025749 second(s), 8 queries , Gzip On, Redis On.

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