搜索
bottom↓
回复: 11

状态机的状态变化为何不是在时钟的边沿呢?

[复制链接]

出0入0汤圆

发表于 2014-9-10 08:01:13 | 显示全部楼层 |阅读模式
本帖最后由 atom100 于 2014-9-10 16:53 编辑

请教:用quartus ii 写了个简单的状态机,如下:
`timescale 1ns / 1ps
module ts(
                        input inclk_50m,
                        input rst_n);
                       
                //wire clk_50m;
          // wire clk_200m;       
pll   u(
        .inclk0(inclk_50m),
        .c0(clk_200m),
        .c1(clk_50m));
       
        reg [4:0]state;
        wire clk_50m;
        always @(posedge clk_50m or negedge rst_n)
                begin
                        if(!rst_n)
                                state <=5'd0;
                        else
                                begin
                                        case(state)
                                                5'd0: state <= 5'd1;
                                               
                                                5'd1: state <= 5'd2;
                                               
                                                5'd2: state <= 5'd3;
                                               
                                                5'd3: state <= 5'd4;
                                               
                                                5'd4: state <= 5'd5;
                                               
                                                5'd5: state <= 5'd2;
                                        endcase
                               
                                end
                end
endmodule

波形如图:



状态机的变化 不是在时钟的边沿 ?什么原因?

本帖子中包含更多资源

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

x

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出20入25汤圆

发表于 2014-9-10 09:00:02 | 显示全部楼层
上面的时钟是50M么,如果是的话这延迟有点大啊

出0入0汤圆

发表于 2014-9-10 09:45:38 | 显示全部楼层
這個應該是 signaltap clock 造成的現象吧!

出0入17汤圆

发表于 2014-9-10 10:22:43 | 显示全部楼层
状态变化实在clk_50m(ts.u.c1)的上升沿,而不是ddr2_ip.u.c1的上升沿

出0入0汤圆

 楼主| 发表于 2014-9-10 16:45:54 | 显示全部楼层
Nuker 发表于 2014-9-10 10:22
状态变化实在clk_50m(ts.u.c1)的上升沿,而不是ddr2_ip.u.c1的上升沿

你好,谢谢回复
开始我定义一个pll ,名字弄错了,写成了ddr2_ip,其实这是个pll的 ip核,后来在上传的时候,只改了程序,截图忘记改了,图中ddr2_ip 就是pll

出0入0汤圆

 楼主| 发表于 2014-9-10 16:54:01 | 显示全部楼层
奇怪的是,同步状态机应该是在  时钟上升沿 改变状态,为何这里不是?

出0入0汤圆

 楼主| 发表于 2014-9-10 16:57:09 | 显示全部楼层
本帖最后由 atom100 于 2014-9-10 18:57 编辑




我还实验了其他的情况,比这个 还混乱,状态变化 在任何位置,既不是 上升沿,也不是下降沿,哪里的问题

出0入4汤圆

发表于 2014-9-10 17:42:58 来自手机 | 显示全部楼层
学习学习

出0入0汤圆

发表于 2014-9-11 08:51:26 | 显示全部楼层
把stp的inputclk也截图出来看一下,这种情况我估计是你的stp的采样时钟与状态机时钟不一致导致的。

出0入17汤圆

发表于 2014-9-11 13:58:13 | 显示全部楼层
SignalTap的采样时钟是200M的C0吧? 它跟50M的C1之间是的相位关系是怎样的?
状态机的时钟是C1, 实际上状态的变化会在C1上升沿之后延迟一点点, 在FPGA内部是ps级的延迟. 所以200M的采样时钟采到的C1上升沿跟状态寄存器之间有1个采样时钟周期的延迟.
严格来讲用C0去采样C1的做法是不正确的,尤其是这两个时钟相位相同的时候,根本满足不了Setup/Hold timing的要求.

出0入0汤圆

 楼主| 发表于 2014-9-13 19:42:23 | 显示全部楼层
感谢大家, 是 siganal tap ii 的显示问题,采样时钟用的不对

出0入0汤圆

发表于 2014-9-19 15:07:32 | 显示全部楼层
siganal tap ii 的显示偏差还是蛮大的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-24 03:27

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

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