[問題] 16個led跑的問題
我要作一個 從右亮到左 然後在從左亮到右的跑馬燈
總共有16個,然後當跑馬燈在最右邊或最左邊亮時,後來的out就會等於
原先out加上輸入的數字(stepsize)
這是我的程式碼(我只想到這種笨方法 所以很長)
不知道哪裡寫錯了 那個1的值都不會跑...
還是用狀態機比較好呢?
麻煩知道的人教我 謝謝!!
module runled(out,led,speed1,clk2,stepsize);
output led;
reg [15:0]led;
input speed1;
input clk2;
input stepsize;
output out;
reg [6:0]out;
always@(posedge clk2 or speed1)
begin if(speed1==1)
out=7'b0;
led=0;
led[15]=1;
if(led[15]==1)
begin
led[14]<=led[15];
led[15]<=0;
end
else if(led[14]==1)
begin
led[13]<=led[14];
led[15]<=0;
end
else if(led[13]==1)
begin
led[12]<=led[13];
led[13]<=0;
end
else if(led[12]==1)
begin
led[11]<=led[12];
led[12]<=0;
end
else if(led[11]==1)
begin
led[9]<=led[10];
led[10]<=0;
end
else if(led[9]==1)
begin
led[8]<=led[9];
led[9]<=0;
end
else if(led[8]==1)
begin
led[7]<=led[8];
led[8]<=0;
end
else if(led[7]==1)
begin
led[6]<=led[7];
led[7]<=0;
end
else if(led[6]==1)
begin
led[5]<=led[6];
led[6]<=0;
end
else if(led[5]==1)
begin
led[4]<=led[5];
led[5]<=0;
end
else if(led[4]==1)
begin
led[3]<=led[4];
led[4]<=0;
end
else if(led[3]==1)
begin
led[2]<=led[3];
led[3]<=0;
end
else if(led[2]==1)
begin
led[1]<=led[2];
led[2]<=0;
end
else if(led[1]==1)
begin
led[0]<=led[1];
led[1]<=0;
end
if(led[15]==1)begin
out<=out+stepsize;
end
else if(led[0]==1)
out<=out+stepsize;
end
endmodule
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.217.238
※ 編輯: papa2958 來自: 140.115.217.238 (04/25 22:25)
推
04/25 22:43, , 1F
04/25 22:43, 1F
→
04/25 22:45, , 2F
04/25 22:45, 2F
→
04/25 22:46, , 3F
04/25 22:46, 3F
推
04/25 22:51, , 4F
04/25 22:51, 4F
→
04/25 22:54, , 5F
04/25 22:54, 5F
→
04/25 22:54, , 6F
04/25 22:54, 6F
推
04/25 23:04, , 7F
04/25 23:04, 7F
→
04/25 23:05, , 8F
04/25 23:05, 8F
→
04/25 23:07, , 9F
04/25 23:07, 9F