Chip123 科技應用創新平台

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

作者: kb76628    時間: 2008-5-15 06:26 PM
標題: 用verilog程式控制LED亮暗
我是一個verilog新手,最近在想一個問題4 m7 ]' |" N, \- s1 X0 x7 c% L
如果我有二個LED燈,1表示亮,0表示暗
% B8 r: `9 |, d樣本如下表,如果我想要控制它每一個樣本LED亮二秒
, I  Y7 y5 _) Y9 m: v4 F- q並依照此樣本往下依序亮' G% F! _, d  {0 P' r
1~2秒 LED1亮,LED2暗
7 h" W5 ?9 r$ X  S/ `8 W. V& s, w3~4秒 LED1亮,LED2亮# N# Q" @0 F; q9 }: I8 z/ y
5~6秒 LED1暗,LED2亮
! o9 p: q- [9 V# g7~8秒 LED1亮,LED2暗
& D8 K4 Y& D" ?3 VLED1 LED2
; t! ?/ X$ U7 k. n1 V) ~ 1  0# T. u7 U6 X/ F3 X& l
 1  1) X4 c4 U. E0 I) L! R; T
 0  1
% `+ P. x5 m) @5 _( V) x& b4 N 1  0
6 T9 d$ K: C) t: D! l) v& q且用2個指撥開關控制LED關(指撥開關1控制LED1關,指撥開關2控制LED2關)9 P4 x9 j  Z4 w% I, n, e! B
如1~2秒時LED1亮,如果我在1~2秒時間區間內按指撥開關1,LED1熄滅,但在3秒時LED1和LED2又會亮.....一直往下執行
/ [/ ]" @  l: v7 l2 o用verilog程示要怎麼寫呢?
* e6 n% |; M, w$ i8 u: k. Y; ~有高手可以教我嗎?8 G& v1 k# ^6 Y5 o& d' v
感謝!
作者: tommywgt    時間: 2008-5-18 01:17 AM
"沒聲" 大大在嗎?
/ j3 q2 e# [( I, d* u$ S- c- {0 }" \9 L
不太常用verilog...哈
: L8 i, b* k7 T/ C
) }# r# |/ R# ?7 r+ `4 }不過看起來就是個有條件輸入的counter而已
作者: jerryyao    時間: 2008-5-26 09:55 AM
標題: 回復 1# 的帖子
用state machine配合組何邏輯電路即可。
作者: sakuralaya    時間: 2008-7-3 03:43 PM
標題: 我也是新手 大家一起努力
Dear Sir ,
7 O5 h5 m% Z  v- K8 o4 u我用FSM嘗試,simulation也成功     
9 r) P* T0 U  C. J. ?. Z8 `參考看看吧
# w* j- ]2 p; W3 Y3 X- Y
5 G7 x& E2 b; ~# l6 {5 [6 Imodule LED_Ctrl(clk, rst_n, sw, LED);+ ]; B0 y% V/ `4 Y
    input clk;& C+ Y5 ^# O3 w
    input rst_n;4 }' v+ b# `* |9 y
    input [1:0] sw;
$ R# ], s  \  s    output [1:0] LED;$ y8 z( l# ~, e+ d' m1 v
         
& X) r/ u& j5 _         reg [1:0] LED ;7 O3 @7 {; Q1 f% y2 a% `
         reg [1:0] CS ;
9 C: X3 M4 ~7 E         reg [1:0] NS ;; H: H9 b* R7 R# t
         8 j4 U& `$ Q$ K8 }# O( U
////////// STATE //////////////) U& `( ~% n% G- t, L! ?' h( M; t
         parameter RESET=0 ;3 J% C; X. p/ D0 V1 T( ]& |' x+ k+ D( o& u
         parameter S1=1 ;1 X$ ~2 i/ c  Q
         parameter S2=2 ;# y! a4 e. b: |3 y
         parameter S3=3 ;) I- G8 l; t' j% }) D, J
         
% f, x3 }! \  C6 D         
  n) C; L& e8 t4 y4 |2 w         * O' v$ Z$ e/ p6 k0 M
           u6 H# f" {4 e9 O4 N
////////////  FSM  //////////( w$ ~0 L/ m* ]7 S1 b, |' Y
+ E: V+ E  W# K
always@(posedge clk or negedge rst_n)
1 b* ^; B* H7 hbegin6 a4 U3 N" O) R5 z: i- v7 ^& Q
       if(rst_n==1'b0)
- X; G7 g$ f& Y+ S9 G           CS=RESET ;0 d& |; c% r0 s: E
       else
2 l5 l) d3 [2 Z, A' e' }( g/ s3 b            CS=NS ;
1 B  W7 ?* D& \6 b- T! W4 j0 ~end
, V1 \$ v! t0 V1 ~1 [7 T: {                4 Z1 @9 H# c1 L- S6 S
                9 S5 W+ p- R, C7 \' B# c$ B; z$ i
6 a  @8 O1 e5 u* F% T) p( a
    always@(CS or sw)
5 B, h: U5 H! p2 Q  J* r  _+ \      begin# I1 f7 d; s+ {# M: k) a" v+ y
            case(CS)
* }  j! I3 i4 q             RESET :  begin NS=S1 ; LED=2'b00 ; end ( V( x$ {7 m3 \
                  S1    :  begin NS=S2 ; //LED=2'b10 ;                  
* D5 X* _% N3 X$ c                   if(sw==2'b10)
$ V% e! b# ?- s2 }! ]# p                       LED=2'b00 ;. s) W( A+ Q/ X
                   else $ D; d$ ]$ {' c5 T6 x
                                   LED=2'b10 ;  end! L: b6 E! F0 V' F
                  S2    : begin NS=S3 ; //LED=2'b11 ;; }4 ~) y4 n& w6 r% p
                                if(sw==2'b00)9 g' h2 d# l8 u! q, h. f# l
                                    LED=2'b11 ;8 x, b4 v6 D8 |2 t8 I( w. c
                               else if(sw==2'b01)
" w# L( @& \1 \) g1 e( _: k& \                                    LED=2'b10 ;" \* a) F8 u3 B  [+ p# n
                               else if (sw==2'b10)
. k) B$ r- i  U# h4 Q1 _                                    LED=2'b01 ;
! T7 x1 q* T7 ~7 q  ?                               else
7 v! l# ]" B3 V8 H+ o                                   LED=2'b00 ; end
) d0 e! t! R2 q                  S3    : begin NS=S1 ; //LED=2'b01 ;
/ Y  q& e6 @. d1 E6 ?/ b8 o8 f- ?. ~                              if(sw==2'b01)# J6 C7 ~. }6 r; U
                                   LED=2'b00 ;( a/ P: V& h/ A' Y; e7 m: Y
                              else
* ?0 ]; @' g; O9 Z) T/ n                                  LED=2'b01 ;  end1 w" T9 b& y5 x* d
            default : begin NS=RESET ; LED=2'b00 ; end                   ! K4 }! S8 q6 ]) F
          endcase                                
. q9 B# Z) @! A      end                ' ]% I2 O9 \5 T
                $ j" U: b+ [2 ~( R' k* f
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://chip123.com/) Powered by Discuz! X3.2