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

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

软件:vivado

语言:Verilog

代码功能:

60进制递减计数器

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

数码管显示计数值


FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


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


演示视频:


设计文档:

设计文档.doc

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


代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 60进制递减计数器Verilog代码vivado ego1开发板

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员