1 点亮流水灯

具体要求:每隔1s钟点亮1个led灯,依次点亮开发板上的四个led灯,当按下复位按键时灯全灭。

Verilog HDL:代码如下

`timescale 1ns/1ps
module led_run(clk,rst_n,led);
input clk;
input rst_n;
output[3:0] led;
reg[31:0] timer;
reg[3:0] led;
//================================
//计数器计数:循环计数0-4s
//================================
[email protected](posedge clk or negedge rst_n)
begin
if(~rst_n)
timer<=0;
else if(timer32’d199_999_999)
timer<=0;
else
timer<=timer+1’b1;
end
//
==============================
//led灯控制
//================================
[email protected](posedge clk or negedge rst_n)
begin
if(~rst_n)
led<=4’b1111; //四个灯全灭 ,4个灯为共阳极二极管
else if(timer32’d49_999_999)
led<=4’b1110; //第一个灯亮
else if(timer
32’d99_999_999)
led<=4’b1101;
else if(timer32’d149_999_999)
led<=4’b1011;
else if(timer
32’d199_999_999)
led<=4’b0111;
end
endmodule

使用ModelsimSE进行仿真

将定时器添加入观测波形中(add wave)指令
并且使观测结果以16进制来显示,仿真效果如下:
我的FPGA学习例程练习
由运行结果知,灯的变化分别为1111,1110,1101,1011,0111顺序点亮,与板子上的模拟效果完全相同达到了实验目的。

相关文章:

  • 2022-12-23
  • 2022-02-08
  • 2022-01-13
  • 2021-04-14
  • 2021-12-12
  • 2021-11-17
猜你喜欢
  • 2022-01-19
  • 2022-01-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-07
  • 2021-11-23
相关资源
相似解决方案