三色灯设计代码
// --------------------------------------------------------------------
// >>>>>>>>>>>>>>>>>>>>>>>>> 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