赞
踩
名称:60进制递减计数器Verilog代码vivado ego1开发板(文末获取)
软件:vivado
语言:Verilog
代码功能:
60进制递减计数器
使用按键控制倒计数,按一次减1,减到0后再回到59
数码管显示计数值
本代码已在ego1开发板验证,ego1开发板如下,其他开发板可以修改管脚适配:
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
扫描文章末尾的公众号二维码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。