Chip123 科技應用創新平台

標題: 用verilog程式控制LED亮暗 [打印本頁]

作者: kb76628    時間: 2008-5-15 06:26 PM
標題: 用verilog程式控制LED亮暗
我是一個verilog新手,最近在想一個問題
. V8 g# K( D2 o6 P9 ?6 K如果我有二個LED燈,1表示亮,0表示暗6 H6 E; O2 ]: k1 L
樣本如下表,如果我想要控制它每一個樣本LED亮二秒
* \* g$ a# i1 z4 B6 X2 S, i並依照此樣本往下依序亮
/ |% |3 x3 l$ [1~2秒 LED1亮,LED2暗, R: Y6 U: _9 N6 R' m+ \: {5 d1 @
3~4秒 LED1亮,LED2亮9 X4 ^' ]. q: e1 S; s  E% L
5~6秒 LED1暗,LED2亮8 a4 H3 U5 y- S$ [7 t0 r1 d
7~8秒 LED1亮,LED2暗1 F8 t( A0 S' f, d" q; a" M# ?
LED1 LED2% k  t6 i1 V; [3 }' j# Q: W
 1  0
8 }0 a! A$ a2 \$ I; l3 q 1  1
5 o! c4 c: r: `9 Z 0  1
/ x7 X: \2 O, K' } 1  0 0 G$ j: \, K/ T+ C% q: L
且用2個指撥開關控制LED關(指撥開關1控制LED1關,指撥開關2控制LED2關)
+ C7 b6 A2 ^1 o3 X' w! r如1~2秒時LED1亮,如果我在1~2秒時間區間內按指撥開關1,LED1熄滅,但在3秒時LED1和LED2又會亮.....一直往下執行8 @/ o7 f' a) Y( g0 |4 [
用verilog程示要怎麼寫呢?4 N9 N/ y4 O- e# n5 u' A# K6 u
有高手可以教我嗎?
$ ]& G. P. B! f& a" B感謝!
作者: tommywgt    時間: 2008-5-18 01:17 AM
"沒聲" 大大在嗎?
; X2 S* N. O& e7 d/ a9 K
2 Q4 N3 K. e: f& `7 K* }; L6 ^不太常用verilog...哈
2 A1 v3 e. q, P6 h& T  Z  H+ C
$ F+ b+ u9 S& h6 t3 i% E不過看起來就是個有條件輸入的counter而已
作者: jerryyao    時間: 2008-5-26 09:55 AM
標題: 回復 1# 的帖子
用state machine配合組何邏輯電路即可。
作者: sakuralaya    時間: 2008-7-3 03:43 PM
標題: 我也是新手 大家一起努力
Dear Sir ,
- ?& K) r  t0 }: m. o9 b我用FSM嘗試,simulation也成功     
4 N2 U( U9 t2 z5 v% {% I2 H! {參考看看吧
0 l8 T  }7 y/ l5 p$ z
* f& H- S3 s8 p9 P% y- Vmodule LED_Ctrl(clk, rst_n, sw, LED);
* P9 a6 P8 n% c" S: p" j7 `  |    input clk;5 W7 ?: |. P) @% i, l6 O
    input rst_n;
8 H! R7 e2 K& e, A- T! Y    input [1:0] sw;
, Q) l" @' l! P( K  \% z    output [1:0] LED;
2 R7 c$ [# t, G1 L1 a8 B( _: |8 C         8 i; C9 s8 x+ T0 |4 K+ n, ], e+ A, [
         reg [1:0] LED ;
2 m6 }8 f& ?: G) }) F         reg [1:0] CS ;
$ O8 F/ ?3 _1 Z( Q+ _5 t& l         reg [1:0] NS ;
0 S( p) U7 [: a         8 x7 s# p" D# h4 D9 Q  ~
////////// STATE //////////////5 w/ z! @6 q. R, M2 ~8 S
         parameter RESET=0 ;( K3 @) D6 c( s2 {( K
         parameter S1=1 ;; w; R* R/ `3 @9 }
         parameter S2=2 ;- Z7 @* J0 M2 a2 F* r3 V
         parameter S3=3 ;  v- X  k, k" ?% B- c: d; K
         
1 u( Y8 A/ h/ N: V* ^1 A( j' E5 l         ( H' c) J  f2 L" A& c) ~
         1 K% e2 H% U! ^- R/ W
         3 @4 F! K# c$ O2 J* S
////////////  FSM  //////////
7 v' Q- _5 X9 T: v6 U' w0 h$ V( N# O, [3 @' X
always@(posedge clk or negedge rst_n)0 E+ A" j# f- q+ H
begin
9 ~, V) u8 T  l2 ~5 G( @) g7 J' r       if(rst_n==1'b0)
5 Y: b9 }* q3 n/ P6 w/ ?! x           CS=RESET ;
* P3 g  L! Q5 S# R2 P1 d       else
3 F9 S1 ^$ P, H' Z" E            CS=NS ;: W+ V0 u: u9 Y2 o: ^) {, o
end 2 P% y6 n0 d1 C6 ]1 f& I
               
. T1 f. m% y7 H$ [) P. r               
& i. P, w. `& a1 I! C6 i, w0 Z3 _( Y( P, e# H2 l( T3 f
    always@(CS or sw)
; v/ q3 [6 N4 _* |& X8 {      begin
! _  l0 \  Z; L% ^4 z            case(CS), Z3 O' y, E* `" X( S/ f
             RESET :  begin NS=S1 ; LED=2'b00 ; end
$ [( Q6 {, o, }2 U. i/ g                  S1    :  begin NS=S2 ; //LED=2'b10 ;                  ! [1 `7 B2 j# A
                   if(sw==2'b10). y+ {2 H( p8 R4 O6 J; x% L
                       LED=2'b00 ;; i) u$ j9 T1 C  [2 j$ A+ h1 g
                   else
- I, k+ N" W1 q) ]                                   LED=2'b10 ;  end6 A+ o' j- ]; n9 l( D/ r' k
                  S2    : begin NS=S3 ; //LED=2'b11 ;
8 H# h/ y. y7 d4 a0 k                                if(sw==2'b00)" P0 r( S' N) g. B
                                    LED=2'b11 ;
" l4 h. N& E  s/ ]# s                               else if(sw==2'b01)2 G; b1 A8 d1 q& }  n
                                    LED=2'b10 ;
+ i( C$ S5 x% ?8 _" O0 w' M% \3 N2 N                               else if (sw==2'b10)
9 a0 K: @4 G! _% }! q5 r! ^. t                                    LED=2'b01 ;
( J1 [! ]) `/ ^8 a1 W3 h                               else
4 [, q( C6 |, e, w                                   LED=2'b00 ; end; y0 b" t( ^! t+ J% j4 E
                  S3    : begin NS=S1 ; //LED=2'b01 ;* S1 i# T# n9 R  [' X, I$ G! y
                              if(sw==2'b01)
, ]# S0 S8 k2 x8 t9 f                                   LED=2'b00 ;/ X9 U) J8 v+ O
                              else
( w$ T5 J) D3 B; g8 x  B% \                                  LED=2'b01 ;  end
% A/ |4 T) T" Y) M5 c            default : begin NS=RESET ; LED=2'b00 ; end                   
9 [' p4 X1 _; E  a          endcase                                
" D9 i+ v" @! @* ]/ n" @      end                / o8 G( }2 Y/ y3 d9 A
                - _# m3 Y; V& J+ b0 d4 y
endmodule
作者: zxcv990    時間: 2008-7-6 03:52 PM
頻率快慢可以控制明亮,你可以寫幾組除頻器,來切換~~
作者: jackhsiao    時間: 2011-12-8 09:19 AM
嗯!不錯的建議!可以好好參考!
作者: lypei-mr1987    時間: 2012-3-13 11:04 PM
verilog lejie yidian ....yihou keyi xuexue
作者: leo61532    時間: 2012-3-14 04:02 PM
其實最簡單的方法就是寫個counter,寫個判斷式來控制哪個LED要亮即可。




歡迎光臨 Chip123 科技應用創新平台 (http://www.chip123.com/) Powered by Discuz! X3.2