流水灯测试试验设计Verilog代码VIVADO ARTIX-7开发板

名称:流水灯测试试验设计Verilog代码VIVADO  ARTIX-7开发板

软件:VIVADO

语言:Verilog

代码功能:

流水灯测试试验

显示16个LED流水灯,使用计数器产生一定频率的计数,通过计数选择led灯亮或者灭


FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在ARTIX-7开发板验证,ARTIX-7开发板如下,其他开发板可以修改管脚适配:ARTIX-7开发板.png


设计文档:

4.流水灯测试用例说明.docx

1简介

本教程介绍使用计数器产生一定频率的计数,通过计数选择led灯亮或者灭。

2实验原理

流水灯顾名思义就是多个led灯依次被点亮一次,如此循环便成就了流水灯的效果。

3程序设计

//时钟计数

always @(posedge sys_clk_i)

begin

  if(clk_cnt > 32'd20000000)

  begin

     clk_cnt <= 32'b0;

  end

  else

  begin

      clk_cnt <= clk_cnt + 1'b1;

  end

end

//led灯选择计数,用来选择哪个led灯亮

always @(posedge sys_clk_i)

begin

  if(clk_cnt == 32'd20000000)

  begin

      led_cnt <= led_cnt + 1'b1;

  end

end

//led流水输出

always @(posedge sys_clk_i)

begin

  case(led_cnt)

     4'b0000: led_out <= 16'h0001;

     4'b0001: led_out <= 16'h0002;

     4'b0010: led_out <= 16'h0004;

     4'b0011: led_out <= 16'h0008;

     4'b0100: led_out <= 16'h0010;

     4'b0101: led_out <= 16'h0020;

     4'b0110: led_out <= 16'h0040;

     4'b0111: led_out <= 16'h0080;

     4'b1000: led_out <= 16'h0100;

     4'b1001: led_out <= 16'h0200;

     4'b1010: led_out <= 16'h0400;

     4'b1011: led_out <= 16'h0800;

     4'b1100: led_out <= 16'h1000;

     4'b1101: led_out <= 16'h2000;

     4'b1110: led_out <= 16'h4000;

     4'b1111: led_out <= 16'h8000;

  endcase

end      

end

4.实验现象

将目录“... \at7_prj_04\at7_prj\at7_prj.runs\impl_1”文件夹下的 at7_prj.bit 文件下载到开发板上,则在开发板上的 16 个led 会依次向右被点亮,当最右侧的 led 点亮并熄灭后,最左侧的led灯又开始亮起来,实现 LED 流水切换的效果。


部分代码展示:

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date: 2019/04/13 17:54:08
// Design Name: 
// Module Name: at7_prj
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////
module at7_prj(
  input sys_clk_i,//外部输入100MHz时钟信号
  output reg [15:0] led_out 
       );
reg  [31:0] clk_cnt;
reg  [3:0] led_cnt;
//-------------------------------------
   
//时钟计数
always @(posedge sys_clk_i) 
begin
   if(clk_cnt > 32'd20000000)
   begin
      clk_cnt <= 32'b0;
   end
   else
   begin
       clk_cnt <= clk_cnt + 1'b1;
   end
end
//led灯选择计数
always @(posedge sys_clk_i) 
begin
   if(clk_cnt == 32'd20000000)
   begin
       led_cnt <= led_cnt + 1'b1;
   end
end
//led流水输出
always @(posedge sys_clk_i) 
begin
   case(led_cnt)
      4'b0000: led_out <= 16'h0001;
      4'b0001: led_out <= 16'h0002;
      4'b0010: led_out <= 16'h0004;
      4'b0011: led_out <= 16'h0008;
      4'b0100: led_out <= 16'h0010;

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 流水灯测试试验设计Verilog代码VIVADO ARTIX-7开发板

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员