[問題] 16個led跑的問題

看板Electronics作者 (噹噹是藍 妳是白)時間16年前 (2009/04/25 22:25), 編輯推噓3(306)
留言9則, 3人參與, 最新討論串1/1
我要作一個 從右亮到左 然後在從左亮到右的跑馬燈 總共有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
把led[15:0]當做shift register, reset給16'h8000
04/25 22:43, 1F

04/25 22:45, , 2F
要有一個register記著左移或右移
04/25 22:45, 2F

04/25 22:46, , 3F
然後就 "shift過來 shift過去" 就好了...
04/25 22:46, 3F

04/25 22:51, , 4F
怎麼好像最近都只有verilog討論 學VHDL比較少嗎 哭哭
04/25 22:51, 4F

04/25 22:54, , 5F
reset給16'h8000?? 這個看不太懂 我這樣寫不是就是
04/25 22:54, 5F

04/25 22:54, , 6F
shift register了?
04/25 22:54, 6F

04/25 23:04, , 7F
抱歉, 我的意思是, shift用這樣的寫法:
04/25 23:04, 7F

04/25 23:05, , 8F
led[15:0] <= {1'b0, led[15:1]}; // right shift
04/25 23:05, 8F

04/25 23:07, , 9F
reset時把16'h8000 assign給 led[15:0]
04/25 23:07, 9F
文章代碼(AID): #19ynr8BJ (Electronics)