Zedboard---实验五点亮另一个数码管

Zedboard—实验五点亮另一个数码管

本节实验将点亮上节实验中的另一个数码管。通过频率为500kHz的ssdcat信号来选通两位数码管。开关输入将用到低位switch[3:0]和高位switch[7:4]

计数1ms

输入时钟信号频率为100MHz,计数器计数100000个周期,产生一个脉冲。这里使用一个寄存器来实现:

integer count = 0;
reg ms_pulse = 0;
always @(posedge clk)
  if (count == 99999)
    begin
      count <= 0;
      ms_pulse <= 1;
    end
  else
    begin
      count <= count+1;
      ms_pulse <= 0;
    end

上述代码实现每隔1个毫秒产生一个脉冲,由此产生ssdcat信号:

always @(posedge clk)
  if (ms_pulse) ssdcat <= ~ssdcat;

不要忘了初始化ssdcat为零:

initial ssdcat = 0;

如上设计,可以看到两个数码管同时显示,但是没有之前那么亮。当然,显示数字是相同的,因为驱动ssd输出值都是通过Switch[3:0]

是两个数码管显示不同

交替显示两个数码管,同样输入也使用case语句。声明digit的4位输入:

wire [3:0] digit;

接下来设置数字显示值,并且适应位选信号:

assign digit = ssdcat? switch[3:0] : switch[7:4];

代码文件

top.v

`timescale 1ns / 1ns
module top
  (
   input clk,
   input [7:0] switch,
   output reg [7:0] led,
   output reg [6:0] ssd,
   output reg ssdcat
   );

  always @(posedge clk) led <= switch;

  wire [3:0]  digit;
  always @(posedge clk)
    case (digit)
      0: ssd <= 7'b1111110;
      1: ssd <= 7'b0110000;
      2: ssd <= 7'b1101101;
      3: ssd <= 7'b1111001;
      4: ssd <= 7'b0110011;
      5: ssd <= 7'b1011011;
      6: ssd <= 7'b1011111;
      7: ssd <= 7'b1110000;
      8: ssd <= 7'b1111111;
      9: ssd <= 7'b1110011;
      10: ssd <= 7'b1110111;
      11: ssd <= 7'b0011111;
      12: ssd <= 7'b1001110;
      13: ssd <= 7'b0111101;
      14: ssd <= 7'b1001111;
      15: ssd <= 7'b1000111;
    endcase

  integer     count = 0;
  reg         ms_pulse = 0;
  always @(posedge clk)
    if (count == 99999)
      begin
    count <= 0;
    ms_pulse <= 1;
      end
    else
      begin
    count <= count+1;
    ms_pulse <= 0;
      end

  always @(posedge clk)
    if (ms_pulse) ssdcat <= ~ssdcat;

  assign digit = ssdcat ? switch[3:0] : switch[7:4];

endmodule

硬件效果

这里写图片描述


原文连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值