新手关于分频

2020-02-27 21:19发布

module clk16x
(
    clk16x,
    CLK_3M125,
    CLK_25M,
        FPGA_nRESET_reg1
);

output clk16x ;
input CLK_3M125 ;
input CLK_25M ;
input FPGA_nRESET_reg1 ;

reg [15:0] clk16x_cnt ;
reg [7:0] cnt;
reg clk16x ;

always @(posedge CLK_3M125)
        begin
                if(!FPGA_nRESET_reg1)
                        begin
                                clk16x_cnt  <= 16'h0000;       
                                cnt <= 8'h00;
                        end
                else
                        begin
                                if(cnt == 8'h7D)
                                        begin
                                                cnt <= 8'h00 ;
                                                if(clk16x_cnt == 16'h63)
                                                        begin                                       
                                                                clk16x_cnt  <= 16'h0000;                                               
                                                        end
                                                else
                                                        clk16x_cnt <= clk16x_cnt + 1;
                                        end
                                else
                                        cnt <= cnt + 1 ;
                        end
        end

always@(posedge CLK_25M)
        begin
                if(!FPGA_nRESET_reg1)
                        begin
                                clk16x <= 16'h0000 ;
                        end
                else if(!clk16x_cnt)
                        begin
                                clk16x <= ~clk16x ;
                        end
        end

代码有什么错误嘛?
仿真不出想要的结果呢?clk16x_cnt和cnt 两个量始终没数,新手求解答,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
xins_n
2020-02-28 14:49
Backkom80 发表于 2013-8-14 16:45
是,你这是同步复位,复位时间都没有一个时钟,没起作用

同样的问题,再问一下,clk16x 8MS   
always@(posedge clk16x or posedge FPGA_nRESET_reg1)        begin
                if(!FPGA_nRESET_reg1)
                        begin
                                clkdiv <= 4'b0000 ;
                        end
                else if(clk1x_enable)
                        begin
                                clkdiv <= clkdiv + 1 ;
                        end
        end

assign clk1x = clkdiv[3] ;

不论是clk1x驱动还是clk16x驱动的    初值都没有附上,复位给的时间也足够长了,
不知道还有什么要注意的,大虾给点指点,谢谢!

一周热门 更多>