当前位置:首页-技术文章/快讯-课程-正文

基于ZYNQ ECO开发板的跑马灯实验

基于ZYNQ ECO开发板的跑马灯实验

1.理论学习

如果大家之前玩过单片机肯定知道,跑马灯实验绝对是一个经典的例程,其效果是让排成一排的led灯依次闪亮,像“流水”一样循环不止,

看上去很舒服,其原理就是依次控制每个连接到led灯的I/O电平的高低,我们本次的实验是让led灯依次闪亮的间隔为1s,也就是让led灯

每次只亮一个,每次亮的时间为1s ,本文档我们还会涉及到让led灯依次闪亮的新语法。

2.实战演练

2.1 实验目标

依次点亮板载的4个LED灯,实现跑马灯的效果,两灯之间点亮间隔为1s,LED灯一次点亮持续时间1s。

2.2 程序设计

2.2.1模块框图

我们给模块取名为water_led,因为我们要让led灯亮的时间为1s,肯定少不了计数器,既然用到计数器,那时钟和复位信号也是必须有的,

所以输入为时钟和复位信号。我们只需要控制led灯亮的时间和哪一个led灯亮,流水的过程会无限循环下去,所以不需要额外的其他输入

信号,而输出为4bit的led_out,用于控制板子上的4个小灯,使它们依次闪亮产生流水的效果。

设计框图如下图所示

 

基于ZYNQ ECO开发板的跑马灯实验 - 第1张

端口列表与功能总结如表格

基于ZYNQ ECO开发板的跑马灯实验 - 第2张

led跑马灯状态图

基于ZYNQ ECO开发板的跑马灯实验 - 第3张

2.2.2实现步骤

2.2.2.1Vivado使用

创建项目以及芯片选型

基于ZYNQ ECO开发板的跑马灯实验 - 第4张

基于ZYNQ ECO开发板的跑马灯实验 - 第5张

基于ZYNQ ECO开发板的跑马灯实验 - 第6张

基于ZYNQ ECO开发板的跑马灯实验 - 第7张

基于ZYNQ ECO开发板的跑马灯实验 - 第8张

基于ZYNQ ECO开发板的跑马灯实验 - 第9张基于ZYNQ ECO开发板的跑马灯实验 - 第10张  

基于ZYNQ ECO开发板的跑马灯实验 - 第11张基于ZYNQ ECO开发板的跑马灯实验 - 第12张

添加源文件 :基于ZYNQ ECO开发板的跑马灯实验 - 第13张

基于ZYNQ ECO开发板的跑马灯实验 - 第14张基于ZYNQ ECO开发板的跑马灯实验 - 第15张基于ZYNQ ECO开发板的跑马灯实验 - 第16张  基于ZYNQ ECO开发板的跑马灯实验 - 第17张

基于ZYNQ ECO开发板的跑马灯实验 - 第18张基于ZYNQ ECO开发板的跑马灯实验 - 第19张  

代码如下:

[rihide]

`timescale 1ns / 1ps

module water_led(

input clk, //系统时钟50MHz

input rst_n, //全局复位

output [3:0] led //输出控制led灯

);

parameter clk_1s=32'd50_000_000;

reg [31:0] cnt;

//------1s计时模块------

always@(posedge clk)

if(!rst_n)

cnt<=0;

else if(cnt==clk_1s-1)

cnt<=0;

else

cnt<=cnt+1;

//------跑马灯实现模块------

reg[3:0]led_out;

always@(posedge clk)

if(!rst_n)

led_out<=4'b0001;

else if(cnt==clk_1s-1)

led_out<={led_out[2:0],led_out[3]} ;

else

led_out<=led_out;

assign led=led_out;

endmodule

[/rihide]

可将此代码复制粘贴过去保存文档后,按下面步骤操作进行综合,并进行管脚约束

基于ZYNQ ECO开发板的跑马灯实验 - 第20张

基于ZYNQ ECO开发板的跑马灯实验 - 第21张

 在上面的操作完成后,需等待综合完成,综合完成后会出现下图弹窗:基于ZYNQ ECO开发板的跑马灯实验 - 第22张

 

管脚约束:

[rihide]上板验证之前先要进行管脚约束。工程中各输入输出信号与开发板管脚对应关系如表格所示。  基于ZYNQ ECO开发板的跑马灯实验 - 第23张进行管脚分配:

基于ZYNQ ECO开发板的跑马灯实验 - 第24张每个端口的电压都要选择为LVCMOS33基于ZYNQ ECO开发板的跑马灯实验 - 第25张

[/rihide]

选择好之后按CTR+S键进行保存,保存时会出现弹窗让你命名,可按照喜好命名,但不能用中文命名,完成后继续按照下图进行操作

基于ZYNQ ECO开发板的跑马灯实验 - 第26张

此时出现的弹窗全部点击ok就行,然后进行等待比特流完成,之后将进行硬件连接

基于ZYNQ ECO开发板的跑马灯实验 - 第27张

上板验证:如烧录后led灯进行流水效果则证明实验成功基于ZYNQ ECO开发板的跑马灯实验 - 第28张

基于ZYNQ ECO开发板的跑马灯实验 - 第29张

此时你将看到视频中的流水效果:

 

3.总结

本章通过一个最经典的跑马灯例子重点引入了位拼接这个新语法,位拼接操作符是很常用的运算符,在串并转换、

移位寄存器的设计中都很常用,希望大家一定掌握它的用法。

3.1 重点掌握

1.{}(实现拼接功能的位拼接运算符)

3.2 知识点总结

1.能够熟练根据时钟计算出任意精确计时所需要计数的个数;

2.掌握位拼接运算符的使用。

4.拓展训练

1、本次思考给大家布置一个学习的任务,自行查阅相关资料,用左移(<<)的方法实现同样的功能,

并与使用位拼接操作符进行的移位方式进行对比,总结各自的特点与优点。

2、本例我们实现的是向左流水效果,我们尝试将其改为双向往复循环移动,并上板验证。

本文原创,作者:shaonianxue_taox,其版权均为FPGA在线课程-FPGA在线学习-成电国芯|成电少年学®FPGA智库-FPGA学习资料-z.shaonianxue.cn所有。
如需转载,请注明出处:https://z.shaonianxue.cn/blog/330.html