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, w
3~4秒 LED1亮,LED2亮
# N# Q" @0 F; q9 }: I8 z/ y
5~6秒 LED1暗,LED2亮
! o9 p: q- [9 V# g
7~8秒 LED1亮,LED2暗
& D8 K4 Y& D" ?3 V
LED1 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 I
module 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 h
begin
6 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 ; end
1 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