想要实现通过输入信号控制任意分频,不知道是哪里问题?

2020-01-27 12:55发布

代码如下:clk为系统时钟20MHz,rst_n为系统复位,clk_num为输入控制输出时钟频率的输入变量,clk_out为输出时钟。
不知道是思路问题还是代码问题,始终不正确

//系统时钟20MHz,单位时间为50ns

`timescale 1ns / 1ps

module max7418
(
        input       clk,
        input       rst_n,
        input       clk_num,
        output reg  clk_out
);

reg[24:0] cnt;
reg[24:0] clk_cnt;

always @(clk_num)        
begin
        if(!rst_n)
        begin
                clk_cnt <= 25'd0;
        end
        else
        begin
                clk_cnt <= 20_000_000 / clk_num;
                clk_cnt <= clk_cnt - 1;
        end
end


always @(posedge clk or negedge rst_n)        
begin
        if(!rst_n)
        begin
                cnt <= 25'd0;
        end
        else if (cnt == clk_cnt)
        begin
                cnt <= 25'd0;
        end
        else
        begin
                cnt <= cnt + 1'd1;
        end
end

always @(posedge clk or negedge rst_n)        
begin
        if(!rst_n)
        begin
                clk_out <= 0;
        end
        else if (cnt == clk_cnt)
        begin
                clk_out <= !clk_out;
        end
end

endmodule
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
hj19910310
1楼-- · 2020-01-27 14:31
尝试了parameter传递参数,还是不行,在实例化的时候,它只能接受整形常量数值,但实际上传递的应该是一个形式参数,。。。
有点懵逼了
爱上0在路上
2楼-- · 2020-01-27 15:57
 精彩回答 2  元偷偷看……

一周热门 更多>