这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » LED 篇作业

共5条 1/1 1 跳转至

LED 篇作业

助工
2014-06-04 21:33:38     打赏
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: Charles Wang 
// 
// Create Date:    05/30/2014 
// Design Name:    led
// Module Name:    led
// Project Name:    led
// Target Devices: EP4CE6E22C8
// Tool versions: Quartus II 13.1 & Modelsim 10.1d
// Description: 使用过程赋值语句间隔点亮LED
//
// Dependencies: 
//
// Revision: 
// Revision 0.01 - File Created
// Additional Comments: 
//
//////////////////////////////////////////////////////////////////////////////////
module led(rst_n,clk,led1,led2,led3,led4);

input clk;//50MHz 总线时钟
input rst_n;//异步复位信号,低电平有效

output led1;//输出LED1,低电平点亮
output led2;//输出LED2,低电平点亮
output led3;//输出LED3,低电平点亮
output led4;//输出LED4,低电平点亮

reg led1;
reg led2;
reg led3;
reg led4;

always@(posedge clk or negedge rst_n)
	begin
	  if(!rst_n)
	  begin             // 复位,4个LED 均不点亮
		    led1 <= 1'b1;
		    led2 <= 1'b1;
		    led3 <= 1'b1;
		    led4 <= 1'b1;
		  end 
		else
		  begin
		    led1 <= 1'b1;
		    led2 <= 1'b0;//点亮LED2
		    led3 <= 1'b1;
		    led4 <= 1'b0;//点亮LED4
		  end
	end       	
endmodule

 

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: Charles Wang 
// 
// Create Date:    06/04/2014 
// Design Name: 	led_flicker
// Module Name:   led_flicker
// Project Name: 	led_flicker
// Target Devices: EP4CE6E22C8
// Tool versions: Quartus II 13.1 & Modelsim 10.1d
// Description: led_flicker
//
// Dependencies: 
//
// Revision: 
// Revision 0.01 - File Created
// Additional Comments: 
//
//////////////////////////////////////////////////////////////////////////////////
module led_flicker(clk,rst_n,led1,led2,led3,led4);

input clk;//50 MHz 鎬荤嚎鏃堕挓
input rst_n;//寮傛澶嶄綅

output led1;//LED1,浣庣數骞崇偣浜
output led2;//LED2,浣庣數骞崇偣浜
output led3;//LED3,浣庣數骞崇偣浜
output led4;//LED4,浣庣數骞崇偣浜
reg led1;
reg led2;
reg led3;
reg led4;
/////////////////////////////////////////////////////////////////////////////////
reg [27:0]cnt;
always@(posedge clk or negedge rst_n)
	begin     //鍒嗛,50HMz 鈫1Hz
		if(!rst_n)
			cnt <= 28'h0000000;
		else if(cnt == 28'd49999999)
			cnt <= 28'h0000000;
		else
			cnt <= cnt + 1'b1;
	end
always@(posedge clk or negedge rst_n)
	begin
		if(!rst_n)
			begin
				led1 <= 1'b1;
				led2 <= 1'b1;
				led3 <= 1'b1;
				led4 <= 1'b1;
			end
		else if(cnt == 28'd49999999)//浣縇ED 姣忛殧1s 浜伃涓€娆			
			begin
				led1 <= ~led1;
				led2 <= ~led2;
				led3 <= ~led3;					
				led4 <= ~led4;
			end
		else
			begin
				led1 <= led1;
				led2 <= led2;
				led3 <= led3;
				led4 <= led4;
			end
	end
endmodule
			
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: Charles Wang 
// 
// Create Date:    06/04/2014 
// Design Name: 	led_water
// Module Name:   led_water
// Project Name: 	led_water
// Target Devices: EP4CE6E22C8
// Tool versions: Quartus II 13.1 & Modelsim 10.1d
// Description: 4个LED流水灯,向左流水点亮
//
// Dependencies: 
//
// Revision: 
// Revision 0.01 - File Created
// Additional Comments: 
//
//////////////////////////////////////////////////////////////////////////////////
module led_water(clk,rst_n,led1,led2,led3,led4);
input clk;//50Mhz 总线时钟
input rst_n;//异步复位,低电平有效

output led1;//输出LED1 低电平点亮
output led2;//输出LED2 低电平点亮
output led3;//输出LED3 低电平点亮
output led4;//输出LED4 低电平点亮

reg led1;
reg led2;
reg led3;
reg led4;
/////////////////////////////////////////////////////////////////////////////////
reg [27:0] cnt;
always@(posedge clk or negedge rst_n)
	begin     //分频 50MHz → 1Hz
		if(!rst_n)
			cnt <= 28'h0000000;
		else if(cnt == 28'd49999999)
			cnt <= 28'h0000000;
		else 
			cnt <= cnt + 1'b1;
	end
always@(posedge clk or negedge rst_n)
	begin
		if(!rst_n) //复位
			begin
				led1 <= 1'b1;
				led2 <= 1'b1;
				led3 <= 1'b1;
				led4 <= 1'b1;
			end
		else if(cnt == 28'd49999999)
			begin
				if({led1,led2,led3,led4} != 4'b0000)
					{led1,led2,led3,led4} <= {led1,led2,led3,led4} << 1'b1; //LED 灯向左流水灯
				else
					begin
						led1 <= 1'b1;
						led2 <= 1'b1;
						led3 <= 1'b1;
						led4 <= 1'b0;
					end
			end
		else			
			begin
				led1 <= led1;
				led2 <= led2;
				led3 <= led3;
				led4 <= led4;
			end
	end
endmodule

 

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: Charles Wang 
// 
// Create Date:    06/04/2014 
// Design Name: 	led_run
// Module Name:   led_run
// Project Name: 	led_run
// Target Devices: EP4CE6E22C8
// Tool versions: Quartus II 13.1 & Modelsim 10.1d
// Description: 4个LED向右的跑马灯
//
// Dependencies: 
//
// Revision: 
// Revision 0.01 - File Created
// Additional Comments: 
//
//////////////////////////////////////////////////////////////////////////////////
module led_run(clk,rst_n,led1,led2,led3,led4);
input clk;
input rst_n;

output led1;
output led2;
output led3;
output led4;

reg led1;
reg led2;
reg led3;
reg led4;
//////////////////////////////////////////////////////////////////////////////////
reg [27:0]cnt;
always@(posedge clk or negedge rst_n)
	begin     //分频50Mhz → 1Hz
		if(!rst_n)
			cnt <= 28'h0000000;
		else if(cnt == 28'd49999999)
			cnt <= 28'h0000000;
		else
			cnt <= cnt + 1'b1;
	end
always@(posedge clk or negedge rst_n)
	begin
		if(!rst_n)
			begin
				led1 <= 1'b0;
				led2 <= 1'b1;
				led3 <= 1'b1;
				led4 <= 1'b1;
			end
		else if(cnt == 28'd49999999)//LED 向右跑马灯,时间间隔1s		
			begin
				{led4,led3,led2,led1} <= {led3,led2,led1,led4};
			end
		else
			begin
				led1 <= led1;
				led2 <= led2;
				led3 <= led3;
				led4 <= led4;
			end
	end
endmodule

 

下面是testbench(对于上面四个project使用的同一个testbench,仿真结果OK,只是不知道符不符合规范):

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: Charles Wang 
// 
// Create Date:    06/04/2014 
// Design Name: 	
// Module Name:   
// Project Name: 	
// Target Devices: EP4CE6E22C8
// Tool versions: Quartus II 13.1 & Modelsim 10.1d
// Description: 
//
// Dependencies: 
//
// Revision: 
// Revision 0.01 - File Created
// Additional Comments: 
//
//////////////////////////////////////////////////////////////////////////////////
module led_water_tb();
reg clk;
reg rst_n;

wire led1;
wire led2;
wire led3;
wire led4;
/////////////////////////////////////////////////////////////////////////////////
led_water water(clk,rst_n,led1,led2,led3,led4);

initial
  begin
    #10 clk = 1'b0;
    #20 rst_n = 1'b0;
    #10 rst_n = 1'b1;
    forever
    #10 clk = ~ clk;
  end
endmodule

 

请老师指点谬误,谢谢!




关键词: 作业     电平     output    

助工
2014-06-04 21:35:34     打赏
2楼
请老师指点谬误哦,希望能够慢慢成长起来。

助工
2014-06-04 22:29:23     打赏
3楼

LED 作业.rar

LED 篇作业源代码及工程文件,请老师查阅哦


高工
2014-06-05 08:56:45     打赏
4楼
完成的不错哦,加油继续

助工
2014-06-11 20:52:20     打赏
5楼
嗯嗯,谢谢

共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]