计数时序求助

2019-03-25 09:08发布

各位专家,小弟新手一枚。遇到个问题,在此求助指导下,谢谢。
在我FPGA设计中,有两个时钟信号, 一个74.25MHz,一个400MHz。两信号周期比为5.38倍左右。小弟要对400MHz信号上升沿进行计数,但计数周期为一个74.25MHZ的 时钟。即每当74.25MHz上升沿到来时,计数清零,从新开始记数,即为0、1、2、3、4、0、1、2、3、4、0、1、2、3、4……循环下去,恳 请各位不吝指导。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
碧水2012
2019-03-26 05:35
哦 因为400m频率比74m快相当于在74m为高的时候扫描了高信号几次所以在此期间都被值0 了 用另外这个看看能不能达到要求:
always@(posedge clk_400m)
                begin
                        if(ret)
                                begin
                                        count <= 3'd0;
                                        state_74m_pg <= 0;
                                end
                        else
                                begin
                                        case(state_74m_pg)
                                                0:begin
                                                                        if(clk_74m)
                                                                                begin
                                                                                        count <= 3'd0;
                                                                                        state_74m_pg <= 1;
                                                                                end
                                                                        else
                                                                                begin
                                                                                        count <= count + 3'd1;
                                                                                        state_74m_pg <= 0;
                                                                                end
                                                                end
                                                1:begin
                                                                        if(!clk_74m)
                                                                                begin
                                                                                        count <= count + 3'd1;
                                                                                        state_74m_pg <= 0;
                                                                                end
                                                                        else
                                                                                begin
                                                                                        count <= count + 3'd1;
                                                                                        state_74m_pg <= 1;
                                                                                end
                                                                end
                                                default:begin
                                                                        count <=  3'd0;
                                                                        state_74m_pg <= 0;
                                                                  end
                                        endcase
                                end
                end
因为是用400m扫描74m所以在clk_400m上升沿来之前如果74m的上升沿来了那么count值0 要等到clk_400m的上升沿来的时候 不知道能不能用 希望对你有所帮助

一周热门 更多>