三色灯设计代码

// --------------------------------------------------------------------
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
// --------------------------------------------------------------------
// Module: Color_led
// 
// Author: Step
// 
// Description: Color_led
// 
// Web: www.ecbcamp.com
// 
// --------------------------------------------------------------------
// Code Revision History :
// --------------------------------------------------------------------
// Version: |Mod. Date:   |Changes Made:
// V1.0     |2015/11/11   |Initial ver
// --------------------------------------------------------------------
module Color_led
(
input			clk_in,
input			rst_n_in,
input			key_color,
input			key_up,
input			key_down,
output 			led_R,
output 			led_G,
output 			led_B,
 
output 	[7:0]	led,
output 			led_R2,
output 			led_G2,
output 			led_B2
);
 
assign led = 8'b1111_1111;
assign led_R2 = 1'b1;
assign led_G2 = 1'b1;
assign led_B2 = 1'b1;
 
localparam	RED = 3'b110,
			GREEN = 3'b101,
			BLUE = 3'b011,
			YELLOW = 3'b100,
			CYAN = 3'b001,
			MAGENTA = 3'b010,
			WHITE = 3'b000,
			BLACK = 3'b111;
 
//Debounce for key
wire [2:0] key_pulse;
Debounce1 Debounce_uut
(
.clk(clk_in),
.rst_n(rst_n_in),
.key_n({key_color,key_up,key_down}),
.key_pulse(key_pulse)
); 
 
wire	color_pulse = key_pulse[2];
wire	up_pulse = key_pulse[1];
wire	down_pulse = key_pulse[0];
 
reg [2:0] color = 3'd0;
wire Lightness_out;
Lightness Lightness_uut
(
.clk_in(clk_in),
.rst_n_in(rst_n_in),
.color(color),
.up_pulse(up_pulse),
.down_pulse(down_pulse),
.Lightness_out(Lightness_out)
);
 
reg [2:0] cnt = 3'd0;
always@(posedge color_pulse or negedge rst_n_in) begin
	if(!rst_n_in) begin
		cnt <= 3'd0;
		color <= 3'd0;
	end else begin
		cnt <= cnt + 3'd1;
		case(cnt)
			3'd0: color <= BLACK;
			3'd1: color <= RED;
			3'd2: color <= GREEN;
			3'd3: color <= BLUE;
			3'd4: color <= YELLOW;
			3'd5: color <= CYAN;
			3'd6: color <= MAGENTA;
			3'd7: color <= WHITE;
			default: color <= BLACK;
		endcase
	end
end
 
assign led_R = Lightness_out? color[0]:1'b1;
assign led_G = Lightness_out? color[1]:1'b1;
assign led_B = Lightness_out? color[2]:1'b1;
 
endmodule