FPGA学习汇总(五)----FPGA实现流水灯

如何创建工程 新建一个测试平台 如何模拟 如何编译 如何配置引脚 如何导入程序 前面文章都已经介绍过了 这里不赘述了 大部分朋友已经学会了 很简单 如果又忘记了 可以看前面的文章复习一下

实验目的

每一秒钟状态改变一次 实现流水灯效果

代码

module lsd410(
rst_n,
clk,
led, 
);

input clk;   
input rst_n;
output reg [3:0]led;
 reg [1:0]state;
  reg clk_1s;
 reg [25:0]cnt; 
//计数部分 (可以直接引用上篇的计数部分)
always@(posedge clk or negedge rst_n)

begin
     if(!rst_n)
    cnt<=0;
else if(cnt==26'd24_999_999)//(因为是时序逻辑 下面是上升沿控制 所以0.5s改变一次时钟即可)
cnt<=0;
else 
cnt<=cnt+1;
end
//1s周期控制部分
always@(posedge clk or negedge rst_n)

begin 
     if(!rst_n)
    clk_1s<=1;
 else if(cnt==26'd24_999_999)
      clk_1s<=~clk_1s;
else 
  clk_1s<=clk_1s;  
end
always@(posedge clk_1s or negedge rst_n)
begin 
  
   if(!rst_n)
  begin 
   led<=4'b11111;
	state<=0; 
  end
  
  else 
  begin
  case(state)//利用case来实现流水灯
  0:begin
  led<=4'b0111;
  state<=1;
  end
  1:begin
   led<=4'b1011;
  state<=2;
  end
  2:begin
   led<=4'b1101;
  state<=3;
  end
  3:begin
   led<=4'b1110;
  state<=0;
  end
  
  default:
   
  state<=0; 
    endcase
  
  end

  
end 


endmodule

 

我们如同上篇一样 定义一个计数器 然后利用计数器定义一个新时钟 利用新时钟来实现流水灯

流水灯的实现主要利用case语句 凡是always里面用到的变量 都要是reg形式  在上面定义

然后配置引脚

 全局编译后 导入板子

可以观测自己的板子来判断效果 经验证 无误 


版权声明:本文为qq_50652615原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。