最简单的LED流水灯(含源码)

一、文档实现功能介绍

本文档实现在 VIVADO 下面新建一个 FPGA 开发工程,然后采用时序和计数实现 LED 的流水显示, 工程新建方法请参考文档《开发软件安装和介绍/VIVADO简介及软件下新建ZYNQ工程教程》。

二、ZYNQ 工程建立

起始页(或file->Project->New)创建新工程(CreateNew Project)
向导起始页面点击 Next- >
ProjectName(工程名)工程名:fpga_01 _pl_led_stream工程路径: (自己选择,不要有中文路径)勾选Create ProjectSubdirectory,点击Next- >
AddSource(添加设计源文件)点击 Next- >
AddExsixtingIP(添加已有的 IP)点击 Next- >
AddConstraints(添加已有约束文件)点击 Next- >
DefaultPart(默认配置,芯片选型)Family->Zynq-7000 Package- >clg400Speed->7010选-1,7020选-27010版本选择目标器件:xc7z010clg400-1  7020版本选择目标器件:xc7z020clg400-2点击 Next- >
NewProjectSummary(新建工程概况)确认工程信息,选型等,点击 Finish 完成

三、具体实现步骤

首先工程管理栏点击 Add Sources 添加我们需要编写设计的流水灯代码文件:

最简单的LED流水灯(含源码) - 第1张

弹出的界面勾选Add or create design sources,表示添加或者新建一个设计文档,然后点击next:

最简单的LED流水灯(含源码) - 第2张

然后点击Create File,弹出的子对话框中,File Type默认是verilog,如果采用VHDL编写,则选择为VHDL。我们默认采用verilog。File Name填入verilog文件名,我们这里填入的是led_stream。然后点击OK。

最简单的LED流水灯(含源码) - 第3张

点击Finish完成文档创建。

最简单的LED流水灯(含源码) - 第4张

点击Finish之后,弹出对应文档的模块名称。这里我们默认led_stream,然后点击OK。

最简单的LED流水灯(含源码) - 第5张

然后在弹出的对话框默认点击OK。

最简单的LED流水灯(含源码) - 第6张

我们可以看到,led_stream模块和文档已经在设计文件层次窗口中。

最简单的LED流水灯(含源码) - 第7张

我们双击打开led_stream然后对其进行编辑,添加如下代码(代码请从对应的demo拷贝,这里拷贝pdf文字格式会发生变化):

  1. module led_stream(
  2. output reg [3:0] led, // LED4 to LED1, 1 on, 0 off
  3. input clk, // FPGA PL clock, 50 MHz
  4. input rst_n // FPGA reset pin
  5. );
  6. reg [31:0] cnt;
  7. reg [1:0] led_on_number;
  8. //clock input 50000000
  9. parameter CLOCK_FREQ =50000000;
  10. parameter COUNTER_MAX_CNT=CLOCK_FREQ/2-1; //change time 0.5s
  11. always @(posedge clk, negedge rst_n) begin
  12. if(!rst_n) begin
  13. cnt <= 32'd0;
  14. led_on_number <= 2'd0; end
  15. else begin
  16. cnt <= cnt + 1'b1;
  17. if(cnt == COUNTER_MAX_CNT) begin//计数0.5s
  18. cnt <= 32'd0;
  19. led_on_number <= led_on_number + 1'b1;
  20. end
  21. end
  22. end
  23. always @(led_on_number) begin
  24. case(led_on_number)
  25. 0: led <= 4'b0001;
  26. 1: led <= 4'b0010;
  27. 2: led <= 4'b0100;
  28. 3: led <= 4'b1000;
  29. endcase
  30. end
  31. endmodule

代码中,晶振使用的外部晶振,50M频率,所以CLOCK_FREQ为50*1000*1000,我们让一个计数器cnt从0计数到50M晶振频率下的半秒钟时间的值改变led输出,所以计数器最大值等于CLOCK_FREQ/2-1=24999999,即让led_on_number自动加1,然后清零重新计数。led_on_number为2位,到3之后变为0重新计数,led_on_number状态数值对应0-3范围,最终通过代码的case语句来选择点亮哪一个led,将四个LED对应的LED位置1。

开始综合,点击工程管理栏的Run Synthesis:

最简单的LED流水灯(含源码) - 第8张

然后弹出的对话框点击Save:

最简单的LED流水灯(含源码) - 第9张

然后弹出的Launch Runs对话框根据电脑配置选择Jobs数量(代表综合消耗的进线程,VIVADO目前已验证过支持12线程,采用锐龙的R5-2600X处理器,因为它是6核12线程),由于这里电脑配置是I7-7700K,四核八线程,所以最多可以选择8个。综合过程很耗CPU性能,所以如果想要综合过程中流畅使用电脑,可以少选两个线程。选完线程数量,点击OK进行综合(综合过程很慢,请耐心等待):

最简单的LED流水灯(含源码) - 第10张

综合状态可以在右上角看到已经开始运行。

最简单的LED流水灯(含源码) - 第11张
最简单的LED流水灯(含源码) - 第12张

四、引脚绑定

由于我们还没有进行管脚绑定,所以我们需要先绑定管脚在进行Implementation实现,最后布局布线最后生成BIT文件。我们接下来进行绑定管脚。我们点击工程管理栏的RTL ANALYSIS下面的>open Elaborated Design:

最简单的LED流水灯(含源码) - 第13张

弹出的对话框我们选择OK:

最简单的LED流水灯(含源码) - 第14张

然后右上角,软件运行状态下面的视图选择。我们默认是Default Layout,但是我们要进行IO绑定,我们选择I/OPlanning。

最简单的LED流水灯(含源码) - 第15张

选择I/OPlanning之后出现如下视图,在下面窗口部分,I/OPorts即可进行IO管脚绑定。根据原理图绑定的管脚如下所示,LED和时钟,按钮复位信号均为3.3V电平标准,LVCMOS33,关于引脚,大家可以查阅原理图和硬件手册,下图:复位使用我们板子的KEY3(FPGA_KEY2),引脚绑定如下图:

最简单的LED流水灯(含源码) - 第16张

按下ctrl+s保存,弹出的保存对话框,填入管脚约束文件名。我们这里取为led_stream:

最简单的LED流水灯(含源码) - 第17张

五、生成BIT文件

我们点击工程管理栏的PROGRAM AND DEBUG下面的Generate Bitestream生成BIT文件。(也可以先点击IMPLEMENTATION下面的Run implementation先进行实现,实现包括布局布线,这里直接省车bit文件包含了实现操作)。弹出的对话框为综合信息过期。这里默认点击OK(由于软件综合后才能有模块的顶层引脚信息,才能进行绑定管脚。我们绑定管脚之后,软件认为工程信息发生了变更所以需要再次综合)。

最简单的LED流水灯(含源码) - 第18张

接着还会弹出综合线程数量对话框。我们也选择默认(这里使用的电脑最大是8),然后点击OK。然后软件开始了生成比特流的一系列工作。总流程是:综合->实现(布局布线)->生成bit文件。

我们等待软件运行这些操作结束,结束后弹出如下对话框,这里我们选择打开硬件管理器Open Hardware Mnager:

最简单的LED流水灯(含源码) - 第19张

六、下载验证

上一节步骤,弹出的硬件管理界面,这个时候可以插上我们的ZYNQ开发板的下载器USB接口(TYPE-C的JTAG口),开发板上电。

最简单的LED流水灯(含源码) - 第20张

我们打开VIVADO硬件管理的方式也可以从左下角Open hardware manager打开。我们点击上方Opentarget:

最简单的LED流水灯(含源码) - 第21张

弹出的下拉界面选择点击Auto target,自动连接目标开发板。点击之后待连接完成。

最简单的LED流水灯(含源码) - 第22张

连接完成之后,可以看到Hardware窗口出现了两个设备,一个是arm的dap,一个是xc7z20芯片。上方我们点击Program Device进行烧写配置(断电就丢失。需要下载到FLASH的方法成我们在后面专门的教程继续详细介绍步骤),除了点击上Program device,还可以选中xc7z020右键选择program来烧写BIT:

最简单的LED流水灯(含源码) - 第23张

弹出的烧写对话框,默认都不改动,其中Bitstream file表示选择的bit文件,也就是上面我们生成的bit文件。点击program:

最简单的LED流水灯(含源码) - 第24张

烧写完成。我们可以看到四个PL的LED以0.5秒周期流动亮起。本节教程结束。

相关文件下载地址
*该资源需回复评论后下载,马上去发表评论?
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!
本文原创,作者:FPGA小白,其版权均为FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训所有。
如需转载,请注明出处:https://z.shaonianxue.cn/9174.html

"愿我的文字能带给您一丝美好"

还没有人赞赏,支持一下

评论

A 为本文作者,G 为游客总数:0
加载中…

提交评论

游客,您好,欢迎参与讨论。

我的购物车

购物车为空

优惠券

没有优惠券