1、实验目的
实现对多个LED灯控制。
2、实验要求
控制 8 个 LED 以 1s 的周期闪烁(0.5s 亮, 0.5s 灭)。
3、实验原理
生活中使用时分秒进行进位计时; 1 小时=60 分钟=3600 秒, 当时针转动 1小时, 秒针跳动 3600 次;
那在数字电路中的时钟信号也是有固定的节奏的, 这种节奏的开始到结束的时间,我们通常称之为周期(T)。
在数字系统中通常关注到时钟的频率,那频率与周期的关系为 f=1/T;逻辑派Z1开发板上有一个50MHz的晶振提供时钟给到PGC4KD。
实验分析:控制LED亮灭需要控制IO输出的高低电平即可(高电平点亮,低电平熄灭),原理图如图所示:
控制LED周期性的维持0.5s亮,0.5s灭,需要控制IO输出0.5s高电平,0.5s低电平周期变化,如下图波形:
外部输入时钟为50MHz时钟周期为20ns(在verilog设计中的计数器的计时原理基本上是一致的,确认输入时钟周期,目标计时时间后可得到计数器的计数值到达多少后可得到计时宽度);
IO输出状态只有两种:1或0;我们可以使用一个计数器,计数满25000000个时钟周期时将IO状态进行翻转,即可完成每0.5S输出状态跳转,即LED灯会以0.5S的间隔亮灭变化;
4、实验源码设计
`timescale 1ns / 1ps
`define UD #1
module led_light(
input clk,
input rstn,
output [7:0] led
);
//==================================================================
//reg and wire
reg [25:0] led_light_cnt = 26'd0 ;
reg [ 7:0] led_status = 8'b0000_0000 ;
//time counter
always @(posedge clk)
begin
if(!rstn)
led_light_cnt <= `UD 26'd0;
else if(led_light_cnt == 26'd24_999_999)
led_light_cnt <= `UD 26'd0;
else
led_light_cnt <= `UD led_light_cnt + 26'd1;
end
//led status change
always @(posedge clk)
begin
if(!rstn)
led_status <= `UD 8'b0000_0000;
else if(led_light_cnt == 25'd24_999_999)
led_status <= `UD ~led_status;
end
assign led = led_status;
endmodule
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
5、实验步骤
逻辑派Z1板卡在使用PDS开发前需要先对PDS进行驱动的下载,请参考驱动安装说明进行驱动的下载。
5.1、打开PDS软件,创建工程
打开PDS软件,单击New Project。
单击NEXT。
创建名为led_light的工程到对应的文件目录,之后单击Next。
选择RTL project,单击Next。
单击Next(也可添加.v文件)。
单击Next。
单击Next。
选择器件系列、型号、封装、速率、综合工具,之后单击Next。
单击Finish,完成工程创建。
5.2、添加设计文件或创建设计文件
创建设计文件:
双击Designs。
点击Create File。
选择Verliog Design File,File Name与module名需保持一致,默认路径,点击OK。
点击OK。
点击cancel。
打开新建好的文件,将设计代码复制进去后,点击保存。
添加设计文件:双击Designs。
Add Files。
5.3、编译
双击Flow下的Compile或右键点击Compile选择run选项,完成编译。
5.4、工程约束
时钟约束:打开UCE后,选择Timing Constraints后选择Create Clock添加基准时钟。
在弹窗中对时钟命名,关联时钟管脚,添加时钟参数,点击OK会创建一条时钟约束,Reset重置该页面。创建完成如下图所示:
物理约束:打开UCE后,选择Device后选择I/O,根据原理图编辑IO的分配。逻辑派Z1管脚IO为3.3V,因此在分配管脚时VCCIO应选择3.3。
编辑好IO分配后,点击保存,完成约束。
5.5、产生bit文件
双击Generate Bitstream或右键点击Generate Bitstream的run选项,PDS软件将自动完成Synthesize、Device Map、Place & Route、Report Timing、Gnenerate Bitstream操作。
综合完成如下图所示:6、下载位流(bit)文件
完成板卡连线,将TYPE-C连接板卡,另一端接入电脑,如下所示:
在下载程序前,我们需要安装一个驱动,电脑才能识别到我们的板载JTAG,驱动安装步骤移植常见问题解决方法。
安装完成之后打开PDS软件,点击页面Configuration。步骤如下所示:
点击Scan Device。
扫描成功后,选择.sbit文件,点击OPEN。
右键点击蓝色区域,点击Program,进行位流的下载。
补充说明:PGC4KD内置flash,因此右键点击带有flash字样的黑色区域,点击Program,可以进行flash的固化操作。
注:若是下载到FLASH没有成功请参考常见问题解决方案PDS 软件固化设置步骤
7、观察实验对象
0.5s灯亮下图所示:
0.5s灯灭下图所示: