我的大学之计算机组成原理系列NO.1

课题:流水灯
一、实验思路
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是一种能够将电能转化为可见光的固态的半导体器件,即发光二极管。依据本次实验,其工作原理近似于一种寄存器,当缓冲区的值满足了设定的值,便回到开始位置,重新发光,也可以通过代码控制速度、发光灯个数等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值