FPGA课设实验三:数码管显示电路验证

本设计为开拓者开发板说明书例程的验证

计数器代码如下:

module count(
    //module clock
    input                   clk  ,      // 时钟信号
    input                   rstn,      // 复位信号
    
    //user interface
    output   reg [9:0]     data ,      // 6个数码管要显示的数值
    output   reg [2:0]     point,      // 小数点的位置,高电平点亮对应数码管位上的小数点
    output   reg            en   ,      // 数码管使能信号
    output   reg            sign        // 符号位,高电平时显示负号,低电平不显示负号
);

//parameter define
parameter  MAX_NUM = 23'd5_000_000;      // 计数器计数的最大值(5000000)  仿真时设置为5000即可

//reg define
reg    [22:0]   cnt ;                   // 计数器,用于计时100ms
reg             flag;                   // 标志信号

//计数器对系统时钟计数达100ms时,输出一个时钟周期的脉冲信号
always @ (posedge clk or negedge rstn) begin
    if (!rstn) begin
        cnt <= 23'b0;
        flag<= 1'b0;
    end
    else if (cnt < MAX_NUM - 1'b1) begin // 未达到最大值
        cnt <= cnt + 1'b1;
        flag<= 1'b0;
    end
    else begin
        cnt <= 23'b0; //达到最大值,则计数器清零,标志位赋1
        flag <= 1'b1;
    end
end 

//数码管需要显示的数据,从0累加到999999
always @ (posedge clk or negedge rstn) begin
    if (!rstn)begin
        data  <= 10'd0;
        point <= 3'b000;
        en    <= 1'b0;
        sign  <= 1'b0;
    end 
    else begin
        point <= 3'b000;             //不显示小数点
        en    <= 1'b1;                  //打开数码管使能信号
        sign  <= 1'b0;                  //不显示负号
        if (flag) begin                 //显示数值每隔0.1s累加一次
            if(data < 10'd999) 
                data <= data +1'b1;     
            else
                data <= 10'b0;
        end 
    end 
end 

endmodule 

数码管代码如下:

module seg_led(		//共阳极
    input   clk    ,  
    input   rstn  , 

    in
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值