Chip123 科技應用創新平台

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

作者: kb76628    時間: 2008-5-15 06:26 PM
標題: 用verilog程式控制LED亮暗
我是一個verilog新手,最近在想一個問題
- o8 k& e5 _( u! }6 [0 B如果我有二個LED燈,1表示亮,0表示暗9 J- A: C, E/ ?
樣本如下表,如果我想要控制它每一個樣本LED亮二秒
- F& a# S  h& Y' K5 a+ _" t並依照此樣本往下依序亮
2 Y" A8 M2 X: x! m+ }1~2秒 LED1亮,LED2暗
' r0 e$ B5 q! n1 k: H4 s% I! Y4 v3~4秒 LED1亮,LED2亮
9 U) q/ P# T  S) o# U" b5~6秒 LED1暗,LED2亮
1 r3 g: _2 {( [9 B/ o7~8秒 LED1亮,LED2暗3 z# p( {* v! ?
LED1 LED2
8 g- A+ ~4 P+ _ 1  0# F; [/ z8 [% H+ \
 1  1
9 h6 W1 w: r& u+ P8 T6 ^! s 0  1
& ], [3 s4 o1 \# f 1  0 8 e' [) d  C- q, U* \9 Q* L4 x
且用2個指撥開關控制LED關(指撥開關1控制LED1關,指撥開關2控制LED2關)
+ p: b( K0 Q  }$ a如1~2秒時LED1亮,如果我在1~2秒時間區間內按指撥開關1,LED1熄滅,但在3秒時LED1和LED2又會亮.....一直往下執行
/ {8 m, v& R1 o- x4 r2 V8 ^/ [; \用verilog程示要怎麼寫呢?( o1 A4 [0 A% p  P% J! a
有高手可以教我嗎?6 q+ j/ o. h6 A  k; f! d6 J! ~2 c
感謝!
作者: tommywgt    時間: 2008-5-18 01:17 AM
"沒聲" 大大在嗎?
# @) i9 s* E5 h& A' e( F$ B1 b
. b* \; M) x/ W- O  Q5 Y不太常用verilog...哈
, Q% q5 W# w  Z4 g# O" {: I% L/ y6 u2 I' v0 |) c( [$ R
不過看起來就是個有條件輸入的counter而已
作者: jerryyao    時間: 2008-5-26 09:55 AM
標題: 回復 1# 的帖子
用state machine配合組何邏輯電路即可。
作者: sakuralaya    時間: 2008-7-3 03:43 PM
標題: 我也是新手 大家一起努力
Dear Sir ,1 _$ ?+ c) u! d6 m4 U( P- N
我用FSM嘗試,simulation也成功     & y3 g# T% z. N3 q$ }
參考看看吧/ f: X8 [; e& [
( b4 a/ d+ k9 n0 }
module LED_Ctrl(clk, rst_n, sw, LED);
8 {7 X$ b. B0 K. x% p7 T. g" H    input clk;
- s5 d) y" S5 e8 |6 Z# J  ^    input rst_n;
- b7 {2 ~5 a" M% h7 X/ O) V    input [1:0] sw;
% {. X3 v7 _$ ?7 C    output [1:0] LED;9 {8 l: `* t3 O
         
9 v% W3 C0 }/ f& W- e         reg [1:0] LED ;$ f6 B5 F4 n8 T- ~; Y
         reg [1:0] CS ;1 Z; n$ D2 b3 B1 d6 b
         reg [1:0] NS ;: Z4 `) d& v+ q; N" `3 Y" R6 j
         
0 G6 j1 f0 ~, ~5 [) C( O4 u////////// STATE //////////////
* X$ u. X6 C' w/ f4 {/ h* S! B         parameter RESET=0 ;/ p. |6 H2 i( f# H, I0 ^
         parameter S1=1 ;4 r  s; O4 U. u$ r9 s1 b
         parameter S2=2 ;3 Q: k2 H6 e: n
         parameter S3=3 ;
% f1 [8 Y2 H7 E/ T1 D, p8 _         
+ g  A/ e1 a: W- V. Q! H/ ]+ ]  I4 V         1 `: O, ^3 ~" f; E# t9 I) D5 l9 S
           s  u/ U6 P0 A0 g( c
         8 }6 ?/ C3 p- c2 k+ u
////////////  FSM  //////////( [# l5 P3 a5 }4 q! F- M' ^1 r/ ]
- T/ v6 E# M- o
always@(posedge clk or negedge rst_n)
6 a' `; ]8 ]7 _4 }& K+ Xbegin
" u  ~0 |" H/ T+ ^- O4 N6 \       if(rst_n==1'b0)
% k2 _3 k/ _4 N/ a; P           CS=RESET ;
8 y; M# y; n2 I2 ?! a$ q, D2 c# x       else" `8 ]# x) F+ H/ S" A
            CS=NS ;4 {. @$ N/ }4 O6 T4 B0 \. m
end
5 E. G3 u: ?) v8 e! I                ! w0 ~$ Q8 r" K9 d; Y8 }$ k
                5 I+ I) Q: [7 |' R% `8 L5 O3 q! r3 L

8 p; V9 L) g. ^8 F; A  M    always@(CS or sw)
1 V8 L* [- O! o: r( s      begin
2 ]2 @1 o5 p1 j4 z/ K2 \            case(CS), E" c$ n6 y9 o8 q3 L1 E. `- P
             RESET :  begin NS=S1 ; LED=2'b00 ; end " V( o7 O/ c5 j4 x# s
                  S1    :  begin NS=S2 ; //LED=2'b10 ;                  
8 i, |* ^! Z3 C" {" e9 a                   if(sw==2'b10)
8 a+ ?+ l1 w. G: S* E9 H1 {                       LED=2'b00 ;
2 b& w; u2 B9 g2 t4 c9 O! B+ N0 E                   else
; n4 i  g/ i$ l                                   LED=2'b10 ;  end& u4 W! F/ P% }8 z
                  S2    : begin NS=S3 ; //LED=2'b11 ;
8 w8 A+ L8 F- ~4 a% [8 H$ u                                if(sw==2'b00)
- `* s5 f& d+ R' q7 v0 B3 G. K                                    LED=2'b11 ;0 o- Z9 o2 S  N( n+ G7 i$ y
                               else if(sw==2'b01)0 U4 [: T) J% s8 U: {7 z) L
                                    LED=2'b10 ;" ]& X6 {+ x7 A
                               else if (sw==2'b10)
2 Z4 V' K( S0 [1 B                                    LED=2'b01 ;
* k. Y  o2 \  C                               else # w" m, U' p: Y4 @, c* Z5 c8 \+ l
                                   LED=2'b00 ; end7 S7 f/ d  W/ G& P1 y7 h
                  S3    : begin NS=S1 ; //LED=2'b01 ;
: n) J$ E7 y/ t" n                              if(sw==2'b01)
0 t) l2 {' R" n* j. }                                   LED=2'b00 ;
4 V; g* Q/ w1 W# M) `6 t3 n* o                              else , V* s1 E" O4 Q& H# Y( c) ]
                                  LED=2'b01 ;  end
0 F5 R. P" O- L' l, R' B            default : begin NS=RESET ; LED=2'b00 ; end                   
& J; `. `8 `" B0 B! l          endcase                                 8 D/ H4 [5 L" _
      end               
# n. o7 @/ S- x* m4 m* C8 ?                9 M, n* d2 d! t+ B+ ]
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