微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 新人请教一个时序问题

新人请教一个时序问题

时间:10-02 整理:3721RD 点击:
新手,时序方面搞不太清楚,要做一个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仿真波形如下:



怎么去掉3750和0多余的一个时钟周期

刚刚突发奇想,自己搞定了,想知道,怎么删帖
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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top