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- V
module 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! C
6 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 ; end
6 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