|
module pwmled(
clk ,
rst_n ,
led
);
input clk ;
input rst_n ;
output [ 7:0] led ;
reg [25:0] cnt_1s ;
wire add_cnt_1s ;
wire end_cnt_1s ;
reg [ 7:0] cnt_10s ;
wire add_cnt_10s;
wire end_cnt_10s;
reg [ 7:0] led ;
always @(posedge clk or negedgerst_n)begin
if(!rst_n)begin
cnt_1s <= 0;
end
else if(add_cnt_1s)begin
if(end_cnt_1s)
cnt_1s <= 0;
else
cnt_1s <= cnt_1s + 1;
end
end
assign add_cnt_1s = 1;
assign end_cnt_1s = add_cnt_1s && cnt_1s==50_000_000 -1 ;
always @(posedge clk or negedgerst_n)begin
if(!rst_n)begin
cnt_10s <= 0;
end
else if(add_cnt_10s)begin
if(end_cnt_10s)
cnt_10s <= 0;
else
cnt_10s <= cnt_10s + 1;
end
end
assign add_cnt_10s = end_cnt_1s;
assign end_cnt_10s = add_cnt_10s && cnt_10s==10-1 ;
always @(posedge clk or negedgerst_n)begin
if(rst_n==1'b0)begin
led[0] <= 0;
end
else if(end_cnt_10s)begin
led[0] <= 0;
end
else if(add_cnt_10s && cnt_10s==1-1)begin
led[0] <= 1;
end
end
always @(posedge clk or negedgerst_n)begin
if(rst_n==1'b0)begin
led[1] <= 0;
end
else if(end_cnt_10s)begin
led[1] <= 0;
end
else if(add_cnt_10s && cnt_10s==2-1)begin
led[1] <= 1;
end
end
always @(posedge clk or negedgerst_n)begin
if(rst_n==1'b0)begin
led[2] <= 0;
end
else if(end_cnt_10s)begin
led[2] <= 0;
end
else if(add_cnt_10s && cnt_10s==3-1)begin
led[2] <= 1;
end
end
always @(posedge clk or negedgerst_n)begin
if(rst_n==1'b0)begin
led[3] <= 0;
end
else if(end_cnt_10s)begin
led[3] <= 0;
end
else if(add_cnt_10s && cnt_10s==4-1)begin
led[3] <= 1;
end
end
always @(posedge clk or negedgerst_n)begin
if(rst_n==1'b0)begin
led[4] <= 0;
end
else if(end_cnt_10s)begin
led[4] <= 0;
end
else if(add_cnt_10s && cnt_10s==5-1)begin
led[4] <= 1;
end
end
always @(posedge clk or negedgerst_n)begin
if(rst_n==1'b0)begin
led[5] <= 0;
end
else if(end_cnt_10s)begin
led[5] <= 0;
end
else if(add_cnt_10s && cnt_10s==6-1)begin
led[5] <= 1;
end
end
always @(posedge clk or negedgerst_n)begin
if(rst_n==1'b0)begin
led[6] <= 0;
end
else if(end_cnt_10s)begin
led[6] <= 0;
end
else if(add_cnt_10s && cnt_10s==7-1)begin
led[6] <= 1;
end
end
always @(posedge clk or negedgerst_n)begin
if(rst_n==1'b0)begin
led[7] <= 0;
end
else if(end_cnt_10s)begin
led[7] <= 0;
end
else if(add_cnt_10s && cnt_10s==8-1)begin
led[7] <= 1;
end
end
endmodule
|