FPGA数码管显示固定数字

效果:

light(设置为顶层) 

`timescale 1ns / 1ps
module light(
input syck,
input rest_n,
output reg [3:0] sel,
output  [7:0] seg

    );
 reg [3:0] num;
 parameter number=5959;
 parameter IDLE = 5'b0000_1,
                 S1 = 5'b0001_0,
                 S2 = 5'b0010_0,
                 S3 = 5'b0100_0,
                 S4 = 5'b1000_0;
 reg [4:0] cur_state,next_state;
    parameter delay = 125_000;
    reg [22:0] cnt;
    //计时器
    always@(posedge syck or negedge rest_n)begin
        if(!rest_n)
            cnt<=0;
        else if(cnt==delay-1)
            cnt<=0;
        else
            cnt<=cnt+1;
    end       
    //模块一
     always@(posedge syck or negedge rest_n)begin
        if(!rest_n)
            cur_state<=IDLE;
        else
            cur_state<=next_state;
    end  
   always@(*)begin
        if(!rest_n)
            next_state=IDLE;
        else
            case(cur_state)
                IDLE:begin
                        if(cnt==delay-1)
                            next_state=S1;
                        else
                            next_state=IDLE;
                     end
                S1:begin
                        if(cnt==delay-1)
                            next_state=S2;
                        else
                            next_state=S1;
                     end
                S2:begin
                       if(cnt==delay-1)
                           next_state=S3;
                       else
                           next_state=S2;
                    end
                 S3:begin
                       if(cnt==delay-1)
                           next_state=S4;
                       else
                           next_state=S3;
                    end                    
                 S4:begin
                       if(cnt==delay-1)
                           next_state=IDLE;
                       else
                           next_state=S4;
                    end
                  default:next_state=IDLE;
                  endcase
    end    
 
 always@(posedge syck or negedge rest_n)begin
        if(!rest_n)begin
            sel<=4'b0000;      
             num<=1;
        end
        else
            case(cur_state)
                IDLE:begin
                       sel<=4'b1110;      
                       num<=1; 
                     end
                 S1:begin
                        sel<=4'b1110;
                         num<=number%10;
                     end 
                  S2:begin
                        sel<=4'b1101;
                         num<=number/10%10;
                     end
                   S3:begin
                        sel<=4'b1011;
                        num<=number/100%10;
                        end
                   S4:begin
                        sel<=4'b0111;
                        num<=number/1000;
                        end
                  default:  begin
                            sel<=4'b0001;      
                            num<=9; 
                            end
                 endcase
    end   
    
yima yima_u(
.    syck   (syck) ,
.    rest_n (rest_n) ,
.    seg    (seg) ,
.    num    (num)
    );    
    
    

  
endmodule

yima译码模块 (注意:在连接时要注意两个seg类型不能相同)

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2023/12/15 15:31:29
// Design Name: 
// Module Name: yima
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module yima(
input syck,
input rest_n,
output reg [7:0] seg,
 input [3:0] num
    );
always@(*)begin
    case(num)
    0:seg<=8'b0011_1111;
    1:seg<=8'b0000_0110;
    2:seg<=8'b0101_1011;
    3:seg<=8'b0100_1111;
    4:seg<=8'b0110_0110;
    5:seg<=8'b0110_1101; 
    6:seg<=8'b0111_1101;
    7:seg<=8'b0000_0111;
    8:seg<=8'b0111_1111;
    9:seg<=8'b0110_1111; 
    default:seg<=8'b1111_1111;
    
   endcase
 end
endmodule
 

 连接配置

 

  • 22
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值