当前位置:   article > 正文

60进制递减计数器Verilog代码vivado ego1开发板_verilog60进制计数器

verilog60进制计数器

名称:60进制递减计数器Verilog代码vivado  ego1开发板(文末获取)

软件:vivado

语言:Verilog

代码功能:

60进制递减计数器

使用按键控制倒计数,按一次减1,减到0后再回到59

数码管显示计数值

本代码已在ego1开发板验证,ego1开发板如下,其他开发板可以修改管脚适配:

ego1开发板.png

1. 工程文件

2. 程序文件

3. 管脚分配

4. 程序编译

5. Testbench

6. 仿真图

部分代码展示:

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2019/10/26 22:23:26
// Design Name: 
// Module Name: adder
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//
module adder(
    input clk,//100M
    input reset_p,//复位清零
    input sub_key,//减键
    output reg [7:0] seg_led,//数码管显示
    output reg [1:0] seg_select//数码管位选
    );
//按键消抖
wire sub_key_posedge;
key_jitter i_key_jitter(
. clkin(clk),
. key_in(sub_key),//输入
. key_posedge(sub_key_posedge)//消抖后按键上升沿
);
reg [7:0] result=8'd0;
always@(posedge clk or posedge reset_p)   
    if(reset_p)//复位
        result<=8'd0;
    else
        if(sub_key_posedge)//按下减键
            if(result==8'd0)
                result<=8'd59;
            else
                result<=result-8'd1;
        else
            ;
reg [15:0]    s1='d0;
//数码管扫描计数
always @(posedge clk)
   begin
      if (s1 == 16'hffff)
         s1 <= 16'h0000;
      else
         s1 <= s1 + 1;
   end
reg [3:0] num_data; 
//控制数码管位选和要显示得数
always @(posedge clk)
   case (s1[15])
      1'b0 :begin
         num_data <= result/10;
         seg_select <=2'b10;            
         end
      1'b1 :begin
         num_data <= result%10;
         seg_select <=2'b01;                
         end
   endcase
//控制数码管段选   
always @(posedge clk)
      case (num_data)//显示数字
         4'b0000 :
            seg_led <= 8'b00111111;
         4'b0001 :
            seg_led <= 8'b00000110;
         4'b0010 :
            seg_led <= 8'b01011011;
         4'b0011 :
            seg_led <= 8'b01001111;
         4'b0100 :
            seg_led <= 8'b01100110;
         4'b0101 :
            seg_led <= 8'b01101101;
         4'b0110 :
            seg_led <= 8'b01111101;
         4'b0111 :
            seg_led <= 8'b00000111;
         4'b1000 :
            seg_led <= 8'b01111111;
         4'b1001 :
            seg_led <= 8'b01101111;
         default :
            seg_led <= 8'b01111001;
      endcase
endmodule
源代码

 扫描文章末尾的公众号二维码

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/731322
推荐阅读
相关标签
  

闽ICP备14008679号