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 v
3~4秒 LED1亮,LED2亮
9 U) q/ P# T S) o# U" b
5~6秒 LED1暗,LED2亮
1 r3 g: _2 {( [9 B/ o
7~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+ X
begin
" 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 ; end
7 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