课题:流水灯
一、实验思路
1.熟悉Verilog HDL语言的编程和调试方法
2.熟悉ISE Design Suite 14.7软件平台的基本操作,使用该平台进行逻辑部件的输入、编辑和调试
3.集合Sptran-3开发板进行布线,对开发板进行编程与操作
掌握Sptran-3开发板的基本I/O应用
二、实验设备
1.ISE Design Suite 14.7
2.EDK-3 SA ISE实验平台
三、实验任务
1.通过板上晶振提供的时钟,控制8个LED灯轮流点亮与熄灭,实现流水灯。
2.具有一个开关用于流水灯的复位。
3.学会看懂Verilog HDL代码并进行简单的修改。
四、主要代码
module FlowLamp(
input clk,
input reset,
output [7:0] led
);
reg[7:0] led_out;// 变量led_out 定义为寄存器型
reg[25:0] buffer;// 中间变量buffer定义为寄存器型
always@(posedge clk or negedge reset)
begin
if(~reset)//定义复位
begin
buffer=26'd0;
led_out=8'b00000001;
end
else
begin
buffer=buffer+1;
if(buffer==26'd10000000)
begin
buffer=26'd0;
led_out=led_out<<1;// led 向左移位,空闲位自动添0补位
if(led_out==8'b0)
led_out=8'b00000001;
end
end
end
assign led=led_out[7:0];//取反输出
endmodule
五、问题自答
1.如果想加快LED灯流动速度应该如何更改,变慢呢?
修改 “buffer=buffer+1”这个语句,+5可以加快速度,+0可以减慢速度。引文这一语句是用于控制累计到末尾的速度,每次加的越多,越容易达到限定的重置值。
2.如果想增加LED灯流动个数怎么办?
修改类似“b00000001”语句中“1”的个数。
3.复位按键是如何起作用的。
通过if语句,定义了复位键等于立即满足了“led_out=8’b00000001”,即等于马上到了末尾,便返回最开始。
4.简述LED灯工作原理。
Led是一种能够将电能转化为可见光的固态的半导体器件,即发光二极管。依据本次实验,其工作原理近似于一种寄存器,当缓冲区的值满足了设定的值,便回到开始位置,重新发光,也可以通过代码控制速度、发光灯个数等。