zoukankan      html  css  js  c++  java
  • clock_lexin

    `timescale 1ns / 1ps
    //////////////////////////////////////////////////////////////////////////////////
    // Engineer: connor jiao
    // Create Date: 14:02 2020/6/10
    // Design Name: 
    // Module Name: 
    // Function   :  
    //请基于f = 100Hz的Clock设计一个数字时钟,用Verilog实现以下功能
    
    //1、产生时、分、秒的计时
    
    //2、可通过3个按键来设置时、分、秒值
    // Revision 0.01 - File Created
    // Additional Comments:
    //////////////////////////////////////////////////////////////////////////////////
    module clock(
        input clk ,
        input rst_n ,
        input hour_set,
        input [4:0] hour_set_value ,
    
        input minute_set,
        input [5:0] minute_set_value ,
    
        input second_set ,
        input  [5:0] second_set_value ,
    
        output [5:0] second_out ,
        output [5:0] minute_out ,
        output [4:0] hour_out 
    );
    
        reg [5:0] second_reg ;
        reg [5:0] minute_reg ;
        reg [4:0] hour_reg ;
        always@(posedge clk or negedge rst_n ) begin
            if(!rst_n) begin
                second_reg <= 0 ;
            end
            else if(second_set) second_reg <= second_set_value ;
            else if(second_reg == 59) second_reg <= 0;
            else second_reg <= second_reg +1 ;
        end
    
        always@(posedge clk or negedge rst_n ) begin
            if(!rst_n) begin
                minute_reg <= 0 ;
            end
            else if(minute_set) minute_reg <= minute_set_value ;
            else if(minute_reg == 59 && second_reg == 59) minute_reg <= 0;
            else if(second_reg == 59) minute_reg <= minute_reg +1 ;
        end
    
        always@(posedge clk or negedge rst_n ) begin
            if(!rst_n) begin
                hour_reg <= 0 ;
            end
            else if(hour_set) hour_reg <= hour_set_value ;
            else if(hour_reg == 23 && minute_reg == 59 && second_reg == 59)   hour_reg <= 0;
            else if(minute_reg == 59 && second_reg == 59 ) hour_reg <= hour_reg +1 ;
        end    
    
    assign second_out =  second_reg ; 
    assign minute_out =   minute_reg; 
    assign hour_out =   hour_reg; 
    endmodule
    module  clock_tb ;
        reg clk ;
        reg rst_n ;
        reg hour_set ;
        reg [4:0] hour_set_value ;
        reg minute_set ;
        reg [5:0]minute_set_value ;
        reg second_set ;
        reg [5:0]second_set_value ;
     
        wire [5:0] second_out  ;
        wire [5:0] minute_out  ;
        wire [4:0] hour_out  ;
    
    initial begin
        clk = 0 ;
        rst_n = 0 ;
        hour_set = 0 ;
        hour_set_value = 0;
        minute_set = 0 ;
        minute_set_value = 0;
        second_set = 0 ;
        second_set_value = 0;
        
        #101 rst_n  = 1  ;
    
        @(posedge clk ) begin 
    
            hour_set = 1 ;
            hour_set_value= 10 ;
            minute_set = 1 ;
            minute_set_value = 10 ;
            second_set= 1 ;
            second_set_value = 10 ;
        end
        @(posedge clk ) begin 
            hour_set = 0;
            //hour_set_value= 0 ;
            minute_set = 0 ;
            //minute_set_value = 0 ;
            second_set= 0 ;
            //second_set_value = 0 ;
        end
    end
    
        always #5 clk =~clk ;
    
     clock clock(
        .clk(clk) ,
        .rst_n(rst_n) ,
        .hour_set(hour_set) ,
        .hour_set_value(hour_set_value) ,
    
        .minute_set(minute_set),
        .minute_set_value(minute_set_value) ,
    
        .second_set(second_set),
        .second_set_value(second_set_value) ,
    
        .second_out(second_out) ,
        .minute_out(minute_out) ,
        .hour_out(hour_out) 
    );
    
    endmodule

    YKJIAO
  • 相关阅读:
    C# DataGridView 与 datatable 之间数据传递
    C# 调用命令行命令 net use
    C# 链接 sql server 数据库字符串
    winform窗口关闭,进程没有关掉的解决办法
    select 中的逻辑判断 sql server
    C#中的abstract 类和方法!!!
    c# ComboBox绑定枚举
    C#与C++类型互转
    DllImport
    TCP三次握手四次挥手详解
  • 原文地址:https://www.cnblogs.com/ajiaoa/p/13084866.html
Copyright © 2011-2022 走看看