Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 23006|回復: 8
打印 上一主題 下一主題

[問題求助] verilog 跑馬燈問題

  [複製鏈接]
1#
發表於 2012-7-26 22:57:19 | 顯示全部樓層
本帖最後由 card_4_girt 於 2012-7-26 11:24 PM 編輯
( N+ S4 z. d" A" B& v' r0 J5 `
+ S' X( S) S7 L7 c$ Q: e6 Clucky大,感覺您的程式有些錯誤,在此我更正一下,您參考看看3 P" f% Y0 C2 Z+ E* }
首先關於您提到的Syntax錯誤,應該是您忘記把reg [2:0] cont後面加上";"所致
% K( m+ s6 ~- c- ]* Q" m$ ^那個錯誤的意思是在always區塊附近少了分號 (對不同行或不同類型輸出入之分界)或逗號(對相同類型的輸出入分界)! O# G1 l& \- K: ]$ ?; o

% v% D8 B% Z  D1 t1 ?; M5 S% tmodule led_shift(clk,reset,led);//reset應該要加入input當會比較好,比較合理
! C, p2 e9 C9 O0 h7 G' Winput clk;
) q. ^; g1 {( f9 ninput reset;' Q. L0 K" s9 J. y* w# b
output [7:0] led;
/ u, q1 A8 d3 a0 dreg [3:0] rdd; //rdd如果沒用到就不用設
) S" B0 W0 ?+ j: @$ Y8 d1 U$ W9 G- treg [7:0] led;& r/ X# X% d1 M3 A) ]9 _
reg [2:0] cont; //記得要加分號
. X% a% A/ B7 y/ k4 V: ialways@(posedge clk) //同步計數程序宣告
. l; k" T6 I- G* i; X# H  begin
3 ~2 {5 E) X( |1 n      if (reset) cont = 0;$ S8 }1 v1 e+ p2 [9 L$ b
      else cont = cont + 1;
0 h9 @- J: C( p* V  end5 M# u# u! c, a
  
; `; J/ R2 a3 m8 Zalways@(posedge clk)- s& m+ Y+ R! ?/ n
  begin
+ |. {* h, [; S0 s: |      case(cont)
) }& \& \! b! b' }2 ~      3'b000 : led = 8'b00000001; //cont為3 bit register,不是2 bit,後面的也應一併更改
1 |. b: _( i* v& p+ B      3'b001 : led = 8'b00000010;
) ^$ j9 Z4 J/ a; z+ _& K8 k      3'b010 : led = 8'b00000100;9 v- Z6 t4 w8 S! V. S7 R  M( ~
      3'b011 : led = 8'b00001000;3 O9 ~  w! W  v/ C+ ^# C
      3'b100 : led = 8'b00010000;
* ^3 H# e6 s  h      3'b101 : led = 8'b00100000;" Q6 k# N& Z- E" T  P. ^: L
      3'b110 : led = 8'b01000000;2 Y4 @6 C) l6 W5 h, ^
      3'b111 : led = 8'b10000000;/ r6 M( b9 u4 A
      default : led = 8'b00000000; //設default避免出現無法預期的值,使用case最好要有,以防萬一1 e) v* e3 T% i9 T! c
      endcase" D0 x% G* ?& ?
  end* K( a$ @+ W( _* x6 m

: X/ h6 p! v) |- B. X0 ]endmodule
( n" I+ h. d1 E7 r* b+ a
' i  \2 k2 q* @7 \  d+ K順便附上電路與模擬檔案/ s  }1 A* U( x6 z, G- ]
電路檔(led_shift.v)與模擬檔(test_led_shift.v):! r! Z) y$ u/ D3 O0 ~/ f
, h, p6 I2 K4 \% \  p
模擬結果:. x% E0 W& p4 o
(這裡reset = 1超過1個clock週期[也可不要超過1個clock週期],所以在2週期後才開始計數,reset = 0之後便每過一個clock週期就上數一次)
, @5 e, ?* p3 j; [

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?申請會員

x

評分

參與人數 1感謝 +10 收起 理由
lucky + 10 非常感謝

查看全部評分

2#
發表於 2012-7-27 11:24:56 | 顯示全部樓層
回復 3# lucky
+ ^5 ~# T& _4 s* u# e& P! @- S% U
( s9 s" U" Q  I抱歉我還沒用過這套軟體
4 n, f1 U; ^4 v5 y沒辦法幫你什麼忙
" n0 d! N2 B( A; n' [. m- ]你這種問題我還是第一次碰到
$ b2 y/ @& i; Y+ M照理說沒宣告型別或輸出入埠才會有這樣的問題
3#
發表於 2012-7-27 11:46:38 | 顯示全部樓層
本帖最後由 card_4_girt 於 2012-7-27 12:16 PM 編輯 ) l/ I) M9 V/ G4 K
& W7 `" y. E2 C' n/ F
回復 4# lucky ( G' A$ |. p6 j9 d' B' i
! `. c! C# a5 S" i5 U# D4 y
你的這個問題edaboard或Xilinx討論版有人提過
; @: ~/ \5 o2 g7 [2 D1 j& V似乎是有些port出現loading的問題
. s. q) G* E7 z  k8 B! ?4 d
" K* p7 f" E* o6 \2 u7 i' _# T& l2 x1 I5 I; M5 ?: @
可以參考:  P7 p5 g; ^( Y" _! o, Z
http://forums.xilinx.com/t5/Spar ... question/td-p/44794 (沒有用到或合成時被刪除)" H0 o6 w# }- B7 K$ Y4 b0 U" q
http://forums.xilinx.com/t5/Spar ... 01-clock/m-p/157910 (增加clock的delay time,讓週期變長)
1 `- k: x) R$ b4 x% `- o8 ]: jhttp://forums.xilinx.com/t5/Hier ... s-design/m-p/202469 (每個always block用不同的clock signal來trigger); K7 M. p6 D( S; t* I, [+ z; @6 g: n

7 k1 Q2 {" G0 _# m( phttp://www.edaboard.com/thread64628.html

評分

參與人數 1感謝 +10 收起 理由
lucky + 10 非常感謝您

查看全部評分

您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-5-18 10:29 AM , Processed in 0.121016 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表