新人请教一个时序问题

2019-07-15 22:59发布

新手,时序方面搞不太清楚,要做一个10KHz的三角波,自己写的程序如下:

module triangle(clk_75M,rst,en_10K,q);


        input clk_75M;
        input rst;
        output reg en_10K;
        output reg [15:0] q;                //16Q0 format
       
        always @ (posedge clk_75M or posedge rst)
        begin
                if(rst)
                        q<=0;
                else if(en_10K==0)
                        begin
                                if(q==16'd3750)
                                        en_10K<=1;
                                else
                                        q<=q+16'd1;
                        end
                else if(q==0)
                        en_10K<=0;
                else
                        q<=q-16'd1;
        end


endmodule







用modelsin-ase做RTL仿真波形如下:
QQ截图20160318162554.png
1.png
怎么去掉3750和0多余的一个时钟周期
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
XX学生的师傅
2019-07-16 02:19
刚刚突发奇想,自己搞定了,想知道,怎么删帖

module triangle(clk_75M,rst,en_10K,q);

        input clk_75M;
        input rst;
        output reg en_10K;
        output reg [15:0] q;                //16Q0 format
       
        always @ (posedge clk_75M or posedge rst)
        begin
                if(rst)
                        q<=0;
                else if(en_10K==0)
                        begin
                                if(q==16'd3750)
                                        begin
                                                en_10K<=1;
                                                q<=q-16'd1;
                                        end
                                else
                                        q<=q+16'd1;
                        end
                else if(q==0)
                        en_10K<=0;
                        q<=q+16'd1;
                else
                        q<=q-16'd1;
        end

endmodule

一周热门 更多>