给你一个例子 , 5个led灯,通过开关来选择显示模式:
led是 1为亮,0为灭
sel是 1为选中,0为不选
led默认状态是 全亮
5'b10000:从左到右每两个LED逐渐点亮
5'b01000:从右到左每两个LED逐渐点亮
5'b00100:从左到右一个LED跳跃式点
5'b00010:从右到左一个LED跳跃式点亮
module led (
input wire Clock,
input wire RESET_N,
input wire SWITCH1,
input wire SWITCH2,
input wire SWITCH3,
input wire SWITCH4,
input wire SWITCH5,
//LED Outputs
output wire LED1,
output wire LED2,
output wire LED3,
output wire LED4,
output wire LED5
);
wire [4:0] sel_mode;
assign sel_mode = {~SWITCH1,~SWITCH2,~SWITCH3,~SWITCH4,~SWITCH5};
// ---- count 0.5s ---------
reg [27:0] cnt_1s;
reg clk_1s_en;
always @(posedge Clock or negedge RESET_N)
begin
if(!RESET_N) begin
cnt_1s <= 0;
clk_1s_en <= 0;
end
else begin
if(cnt_1s == 'd25_000_000-1) begin
cnt_1s <= 0;
clk_1s_en <= ~clk_1s_en;
end
else
cnt_1s <= cnt_1s + 1;
end
end
//--- tx_win_times check negedge --------------
reg clk_1s_reg1;
reg clk_1s_reg2;
reg clk_1s_reg3;
wire clk_1s_pos;
always@(posedge Clock or negedge RESET_N)
begin
if(!RESET_N) begin
clk_1s_reg1 <= 0;
clk_1s_reg2 <= 0;
clk_1s_reg3 <= 0;
end
else begin
clk_1s_reg1 <= clk_1s_en;
clk_1s_reg2 <= clk_1s_reg1;
clk_1s_reg3 <= clk_1s_reg2;
end
end
assign clk_1s_pos = clk_1s_reg2 & ~clk_1s_reg3;
// ----------- mode set --------------
reg [4:0] led_set;
always @(posedge Clock or negedge RESET_N)
begin
if(!RESET_N) begin
led_set <= 5'b00000;
end
else begin
case(sel_mode)
5'b10000: begin
if(clk_1s_pos) begin
if(led_set == 5'b00000)
led_set <= 5'b11000;
else
led_set <= {1'b0,led_set[4:1]};
end
end
5'b01000: begin
if(clk_1s_pos) begin
if(led_set == 5'b00000)
led_set <= 5'b00011;
else
led_set <= {led_set[3:0],1'b0};
end
end
5'b00100: begin
if(clk_1s_pos) begin
if(led_set == 5'b00000)
led_set <= 5'b10000;
else
led_set <= {2'b0,led_set[4:2]};
end
end
5'b00010: begin
if(clk_1s_pos) begin
if(led_set == 5'b00000)
led_set <= 5'b00001;
else
led_set <= {led_set[2:0],2'b0};
end
end
default: led_set <= 5'b11111;
endcase
end
end
assign LED1 = ~led_set[0];
assign LED2 = ~led_set[1];
assign LED3 = ~led_set[2];
assign LED4 = ~led_set[3];
assign LED5 = ~led_set[4];
endmodule
因为硬件平台不一样,需要你自己根据使用的硬件平台来更改代码。