特级茶叶 2022-10-27 13:37 采纳率: 78.6%
浏览 54
已结题

用verilog HDL语法编写

在QuartusⅡ上进行程序设计,设计50MHz转1Hz的分频器,并作为含异步清0和同步时钟使能的十进制加法计数器(0~9)的输入时钟,数字通过数码管显示

  • 写回答

1条回答 默认 最新

  • 老皮芽子 2022-10-27 18:05
    关注

    代码分 5 部分
    1Hz 分频
    0-9 计数
    7段LED数码管译码
    整合在一起的 TOP
    测试激励代码

    module clk_fp1s #    //输出 1Hz
    (
        parameter CLK_IN_FREQ    = 50*1000*1000    //50MHz
    )
    (
        input    clk,
        output    clk1s            //1Hz
    );
    
    reg            clk1    = 0;
    reg    [31:0]    cnt        = 0;
    assign        clk1s    = clk1;
    
    always @(posedge clk)
    begin
        if(cnt < CLK_IN_FREQ/2-1)
            cnt    <= cnt + 1;
        else
        begin
            cnt        <= 0;
            clk1    <= !clk1;
        end
    end
    
    module cnt_10    //0-9 同步计数器,异步清零
    (
        input    clk,
        input    rst_n,
        output    [3:0]    dat
    );
    
    reg    [3:0]    cnt = 0;
    assign        dat = cnt;
    
    always @(posedge clk or negedge rst_n)    //rst_n 异步复位
    begin
        if( rst_n == 0 )
            cnt <= 0;
        else if(cnt < 9)
            cnt    <= cnt + 1;
        else
            cnt <= 0;
    end
    endmodule
    
    module led_7s    //led 7 段数码管译码 0-F
    (
        input        [3:0]    dat,
        output reg    [6:0]    led7s    //{a,b,c,d,e,f,g} //7段LED 排列 a->led7s[6] g->led7s[0] 
    );
        always@(*)
        begin
            case(dat)
                4'b0000:led7s=7'b0111111;    //0
                4'b0001:led7s=7'b0000110;    //1
                4'b0010:led7s=7'b1011011;    //2
                4'b0011:led7s=7'b1001111;    //3
                4'b0100:led7s=7'b1100110;    //4
                4'b0101:led7s=7'b1101101;    //5
                4'b0110:led7s=7'b1111101;    //6
                4'b0111:led7s=7'b0000111;    //7
                4'b1000:led7s=7'b1111111;    //8
                4'b1001:led7s=7'b1101111;    //9
                4'b1010:led7s=7'b1110111;    //A
                4'b1011:led7s=7'b1111100;    //B
                4'b1100:led7s=7'b0111001;    //C
                4'b1101:led7s=7'b1011110;    //D
                4'b1110:led7s=7'b1111001;    //E
                4'b1111:led7s=7'b1110001;    //F
            endcase
        end
    endmodule
    
    
    module top_led_10
    (
        input            clk,
        input            rst_n,
        output    [6:0]    led7s_a        //个位
    );
    wire    clk1s;
    wire    [3:0]    cnts;
    
    clk_fp1s u1
    (
        .clk    (clk),        //输入 50MHz
        .clk1s    (clk1s)        //输出 1Hz
    );
    
    cnt_10    u2    //0-49 同步计数器,异步清零
    (
        .clk    (clk1s),
        .rst_n    (rst_n),
        .dat    (cnts)
    );
    
    
    led_7s    ua    //个位
    (
        .dat    (cnts),
        .led7s    (led7s_a)
    );
    
    endmodule
    
    
    `timescale 1ns / 1ns
    module led_cnt10_sim();
    reg             clk;
    reg             rst_n;
     
    initial begin
        clk        = 0;
        rst_n    = 0;
        #100 rst_n    = 1;
    end
     
    always #20 clk = ~clk;    //50MHz
    
    wire    [6:0]    led7s_a;    //个位
    
    top_led_10 u1
    (
        .clk        (clk),
        .rst_n        (rst_n),
        .led7s_a    (led7s_a)
    
    );
    
    endmodule
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月4日
  • 已采纳回答 10月27日
  • 创建了问题 10月27日

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?