Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] 用verilog程式控制LED亮暗

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-5-15 18:26:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我是一個verilog新手,最近在想一個問題1 U! }! \/ @- j* |0 k2 q
如果我有二個LED燈,1表示亮,0表示暗: X- _" B8 ^- Q7 }# n  V  n: g
樣本如下表,如果我想要控制它每一個樣本LED亮二秒
8 o6 `9 }. }: I# }$ Q並依照此樣本往下依序亮
7 r2 G; U0 P& h3 p8 a1~2秒 LED1亮,LED2暗) W9 u' d/ V; ^; w
3~4秒 LED1亮,LED2亮' K# Q& e2 g3 J8 |% j3 {- X: ^7 m. H
5~6秒 LED1暗,LED2亮; {' q0 i& @0 ]9 Y5 W) K, {" V
7~8秒 LED1亮,LED2暗$ M) ]- z$ ]0 C& b* z; E
LED1 LED2/ J0 [( ~/ h3 X0 B/ I% n
 1  0
- b( O  c( U& y  e+ o7 ` 1  13 e( @6 J6 H9 M% b0 i
 0  1
  R; v+ t" c$ v) h; [) m$ Z 1  0 ) ?; q0 {: m  S* }, A9 z2 t
且用2個指撥開關控制LED關(指撥開關1控制LED1關,指撥開關2控制LED2關)
  f) `. O! Y; a0 V" p0 X: S如1~2秒時LED1亮,如果我在1~2秒時間區間內按指撥開關1,LED1熄滅,但在3秒時LED1和LED2又會亮.....一直往下執行
: Z% M' S# ^1 O; H% g用verilog程示要怎麼寫呢?2 d9 Y" @6 }" D6 \+ V
有高手可以教我嗎?" ~8 [2 M  r  i; z4 j" `$ ?) e# S
感謝!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-5-18 01:17:08 | 只看該作者
"沒聲" 大大在嗎?
& B) M, [: e0 e) P
5 c7 f$ K) [9 k4 h. l- w8 t不太常用verilog...哈
) k) b- b' q& I/ Q6 _+ A( i( t; T, e
不過看起來就是個有條件輸入的counter而已
3#
發表於 2008-5-26 09:55:34 | 只看該作者

回復 1# 的帖子

用state machine配合組何邏輯電路即可。
4#
發表於 2008-7-3 15:43:32 | 只看該作者

我也是新手 大家一起努力

Dear Sir ,! Z5 X- S, R6 l- J+ y6 B+ D9 v: d
我用FSM嘗試,simulation也成功     
  _8 j7 R+ ?% W5 M1 h9 r參考看看吧! D5 ~) C5 D8 ?
' \! l1 L( l" c# M1 ~: B
module LED_Ctrl(clk, rst_n, sw, LED);' p: f% {, T0 _5 Y1 I
    input clk;
; _/ B% t6 j/ u) ^" A- K) e    input rst_n;7 B& {  w; V9 R8 M; F
    input [1:0] sw;
. L$ }; _) e6 F+ x# P" L5 H9 |    output [1:0] LED;, \: z. n8 O0 r/ Q0 d
         " j4 \) a3 ^7 Z* Q6 n( P
         reg [1:0] LED ;# q7 Z8 F2 ^! c) y
         reg [1:0] CS ;
9 k+ c& v" n" p$ U         reg [1:0] NS ;* ~' Y; Z5 J2 Z; s% Q, T
         # V$ d1 I& A! V
////////// STATE //////////////) F% W; @7 a3 l5 z
         parameter RESET=0 ;7 \2 n# i" i$ K* e4 c6 [
         parameter S1=1 ;
2 j$ T0 j& r4 O2 e  W) v: X' S         parameter S2=2 ;
& x2 _' {" }5 G5 O  J. T- L( Q         parameter S3=3 ;
; [: _8 G  U# v! d: X1 n         
# w  w5 g# M7 f0 O         6 B7 y6 ~( C" Z8 y1 k7 ]
         0 F# t  |% P5 y3 T3 L9 F. d# W* G
         " f* ~: R5 V4 F) o$ @$ q  a
////////////  FSM  //////////
" j" D& ]6 Q7 L: ?" U6 n. ?, G; L
1 @4 L6 ]+ \* p; S3 ^- `always@(posedge clk or negedge rst_n)
9 `* [- x7 f) J. k, Sbegin
/ M5 W. s2 M& O- }  v: J8 A8 ~( G       if(rst_n==1'b0), I- d" I  ^) `$ T3 p
           CS=RESET ;# Y5 U  A9 H# k4 D# E+ y
       else
# G! C& D# X  F6 H- N8 z: ?+ ~            CS=NS ;, I1 R8 q# r, a
end
3 \3 X( ?- ^0 x3 i- H- T+ P               
8 x) o5 S" ]5 J  \. V! F                : |) V  K  W7 B- O, M2 m9 E
$ `" K, o: Q" ]$ i
    always@(CS or sw)# }( m3 M) c6 x' x# ?6 A
      begin1 z6 b( `. O  ^3 l; l1 W
            case(CS)
2 n  o  C' L9 B, I             RESET :  begin NS=S1 ; LED=2'b00 ; end ' e" q" j2 @0 g$ n4 n
                  S1    :  begin NS=S2 ; //LED=2'b10 ;                  
% v0 n. H& R- r                   if(sw==2'b10)
, U' _6 Y" S6 j# o6 n                       LED=2'b00 ;
/ w& h5 v8 W  n, R: O8 f                   else
. a7 U$ }' s# Z, a" u                                   LED=2'b10 ;  end3 l# `, p8 c3 P. C/ T6 \
                  S2    : begin NS=S3 ; //LED=2'b11 ;& g; `" q0 n4 V) I
                                if(sw==2'b00)
# w! S' b$ G2 C: \1 P) ?                                    LED=2'b11 ;- l7 Z! F& G' D) |! ~  N8 V
                               else if(sw==2'b01)
; i0 a  V3 P) i# k                                    LED=2'b10 ;% N% p  Z1 j% v7 v2 Q) g$ y
                               else if (sw==2'b10)
' m6 r. i, ~3 o+ Z                                    LED=2'b01 ;
5 {  D; f8 C6 r' e: E5 w9 k% M3 j/ }                               else
: W( l, J1 m5 T! F                                   LED=2'b00 ; end! f4 \0 S& o+ J9 e6 J
                  S3    : begin NS=S1 ; //LED=2'b01 ;4 i. f: ]& I9 Q' i; i* W- o: T/ ~6 a5 Z/ }
                              if(sw==2'b01)" i0 i& Z  M& c, E: A
                                   LED=2'b00 ;
/ @/ u# b+ h* x! N" c                              else
) u6 O$ W% \: O3 j                                  LED=2'b01 ;  end- G6 x1 L0 Q& c. E2 ^, q
            default : begin NS=RESET ; LED=2'b00 ; end                   % Q! [1 H% ?0 \' y2 C5 }% h9 c
          endcase                                 * Q$ |% X  g: [' O+ {
      end               
( U' O4 J9 \* H, v3 o# u+ j# M$ w                " K% E- ]% a: p
endmodule

評分

參與人數 1Chipcoin +3 收起 理由
masonchung + 3 熱心回覆!

查看全部評分

5#
發表於 2008-7-6 15:52:24 | 只看該作者
頻率快慢可以控制明亮,你可以寫幾組除頻器,來切換~~
6#
發表於 2011-12-8 09:19:28 | 只看該作者
嗯!不錯的建議!可以好好參考!
7#
發表於 2012-3-13 23:04:23 | 只看該作者
verilog lejie yidian ....yihou keyi xuexue
8#
發表於 2012-3-14 16:02:27 | 只看該作者
其實最簡單的方法就是寫個counter,寫個判斷式來控制哪個LED要亮即可。
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-16 05:19 AM , Processed in 0.131016 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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