基于verilog语言的跑马灯程序
我想用纯软件的方式让板子上的跑马灯跑起来,我写了如下的代码,请各位大神帮我看看跑马灯为什么不跑:moduleled_run(clk,rst,out);inputclk;i...
我想用纯软件的方式让板子上的跑马灯跑起来,我写了如下的代码,请各位大神帮我看看跑马灯为什么不跑:
module led_run(clk,rst,out);
input clk;
input rst;
output[7:0] out;
reg[7:0] out;
reg[3:0] count;
initial begin
count<=4'h0;
end
always @ (posedge clk or negedge rst)
if(!rst)
begin
count<=4'h0;
end
else
begin
if(count==4'hf)
count<=4'h0;
else
count<=count+1;
end
always @(posedge clk or negedge rst)
if(!rst)
begin
out<=8'hff;
end
else
begin
case(count)
4'h0:out<=8'b11111110;
4'h1:out<=8'b11111101;
4'h2:out<=8'b11111011;
4'h3:out<=8'b11110111;
4'h4:out<=8'b11101111;
4'h5:out<=8'b11011111;
4'h6:out<=8'b10111111;
4'h7:out<=8'b01111111;
4'h8:out<=8'b10111111;
4'h9:out<=8'b11011111;
4'ha:out<=8'b11101111;
4'hb:out<=8'b11110111;
4'hc:out<=8'b11111011;
4'hd:out<=8'b11111101;
4'he:out<=8'b11111110;
4'hf:out<=8'b11111111;
endcase
end
endmodule 展开
module led_run(clk,rst,out);
input clk;
input rst;
output[7:0] out;
reg[7:0] out;
reg[3:0] count;
initial begin
count<=4'h0;
end
always @ (posedge clk or negedge rst)
if(!rst)
begin
count<=4'h0;
end
else
begin
if(count==4'hf)
count<=4'h0;
else
count<=count+1;
end
always @(posedge clk or negedge rst)
if(!rst)
begin
out<=8'hff;
end
else
begin
case(count)
4'h0:out<=8'b11111110;
4'h1:out<=8'b11111101;
4'h2:out<=8'b11111011;
4'h3:out<=8'b11110111;
4'h4:out<=8'b11101111;
4'h5:out<=8'b11011111;
4'h6:out<=8'b10111111;
4'h7:out<=8'b01111111;
4'h8:out<=8'b10111111;
4'h9:out<=8'b11011111;
4'ha:out<=8'b11101111;
4'hb:out<=8'b11110111;
4'hc:out<=8'b11111011;
4'hd:out<=8'b11111101;
4'he:out<=8'b11111110;
4'hf:out<=8'b11111111;
endcase
end
endmodule 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询