• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

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

09/30 08:46
1109
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24110Q93T0336.docx

共1个文件

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

软件:VIVADO

语言:Verilog

代码功能:

流水灯测试试验

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

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

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

设计文档:

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_04at7_prjat7_prj.runsimpl_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;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1330

  • 2-24110Q93T0336.docx
    下载

相关推荐