標(biāo)題: Verilog流水燈設(shè)計(jì)的時(shí)序問(wèn)題,求大神幫忙解答一下。! [打印本頁(yè)]

作者: qq248658251    時(shí)間: 2018-6-20 17:19
標(biāo)題: Verilog流水燈設(shè)計(jì)的時(shí)序問(wèn)題,求大神幫忙解答一下。。
module yiwei(clk_100hz, clr, led_cs, led_out);
    input clk_100hz;
    input clr;
    output led_cs;
    output reg [7:0] led_out;
  reg dir;
  assign led_cs=1;
  always@(posedge clk_100hz or negedge clr)
  if(!clr)
   begin
    dir<=0;
      led_out<=8'h80;
   end
  else
   begin
    if(dir==0)
     begin
      led_out<=led_out>>1;
      if(led_out==8'h01)
       dir<=1;
     end
    if(dir==1)
     begin
      led_out<=led_out<<1;
      if(led_out==8'h80)
       dir<=0;
     end
   end   
endmodule
輸出時(shí)并沒(méi)有8‘h01這一值,就7個(gè)燈來(lái)回閃爍,希望幫忙解答一下。

作者: 奎爾塞拉    時(shí)間: 2018-6-20 23:05
你這個(gè)100HZ的頻率,你看得清流水的過(guò)程嗎?如果只是原理的話,至少上個(gè)仿真軟件去看看時(shí)序圖吧
你主要是什么問(wèn)題呢, led_out<=led_out>>1;  if(led_out==8'h01)  dir<=1;這三句連在一起,那么led_out=8'h01的一瞬間后,就把dir置1了。這個(gè)時(shí)候最好去仿真里面看時(shí)序圖吧,感覺(jué)是可以的,具體為什么不行我沒(méi)仿真也不清楚
所以兩點(diǎn)建議。第一是一定要仿真,不要老想著編完了直接上板子實(shí)驗(yàn),仿真仿真仿真!
第二,我覺(jué)得用位拼接寫(xiě)會(huì)更好,代碼量會(huì)少,也不會(huì)出現(xiàn)這個(gè)bug(應(yīng)該。。)吧
第三,這是51的論壇,你問(wèn)個(gè)verilog的,問(wèn)錯(cuò)地方了吧?
作者: qq248658251    時(shí)間: 2018-6-21 14:49
奎爾塞拉 發(fā)表于 2018-6-20 23:05
你這個(gè)100HZ的頻率,你看得清流水的過(guò)程嗎?如果只是原理的話,至少上個(gè)仿真軟件去看看時(shí)序圖吧
你主要是 ...

那個(gè)第一次發(fā)帖提問(wèn),不好意思。頻率分的是10hz的,我仿真過(guò),時(shí)序圖上8'h02存在了兩次,并沒(méi)有8'h01這一值,也就是<00000010><00000010><000000100>,邏輯上感覺(jué)沒(méi)問(wèn)題,就是時(shí)序上的問(wèn)題吧
作者: 出來(lái)逛逛    時(shí)間: 2018-6-21 15:03
這你得看一下if語(yǔ)句并行是什么情況了,這種現(xiàn)象可能是dir=1后立即執(zhí)行了第二個(gè)if語(yǔ)句led-out在同一個(gè)時(shí)鐘上升沿從0x02變成0x01又變回了0x02,這樣0x01就看不出來(lái)消失了,你需要調(diào)試一下或者仿真一下看看是不是這個(gè)原因
作者: qq248658251    時(shí)間: 2018-6-21 17:29
出來(lái)逛逛 發(fā)表于 2018-6-21 15:03
這你得看一下if語(yǔ)句并行是什么情況了,這種現(xiàn)象可能是dir=1后立即執(zhí)行了第二個(gè)if語(yǔ)句led-out在同一個(gè)時(shí)鐘上 ...

嗯嗯,就是這問(wèn)題。用if    else if就可以了,非常感謝




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1