|
我也是新手 大家一起努力
Dear Sir ,9 t2 @7 m6 Z& a. w/ ]6 s
我用FSM嘗試,simulation也成功 + i: `4 L3 P, M
參考看看吧
7 C* p, x* v! t5 s) m
- E& U/ n6 f. I5 ?/ H, Q( Y) Hmodule LED_Ctrl(clk, rst_n, sw, LED);
i9 K8 t. `6 t8 }1 L% ^+ D( } input clk;8 G& h" i, ^% E0 r" k- |+ v- M
input rst_n;
; D# x, G7 W( N input [1:0] sw;- b, V" U5 E- J7 P2 E5 F8 a
output [1:0] LED;, }6 i6 i* ]$ P7 `
4 _. U4 H+ |8 \- t: c reg [1:0] LED ;
9 T6 A A, n2 e6 r0 j& c9 C1 O( ^& U reg [1:0] CS ;
" t* b+ Q* t6 G. T3 @. O reg [1:0] NS ;2 N0 u( B' }# J+ t* V7 a
, a0 K. I" Q' l6 G3 }/ _ A2 V
////////// STATE //////////////, c& |8 e+ @6 j/ a: q8 V8 w
parameter RESET=0 ;
$ w* b: x: u! b: B6 @ parameter S1=1 ;
, Y) {; C+ M$ A- B3 X" J parameter S2=2 ;
7 G, |- e; p- Q5 V7 w parameter S3=3 ;! O% n y+ J6 z6 S, S: Y' u$ c
& N/ I: t- D2 {& y# U- A$ V
$ W; G3 b6 J. H' d( t : q5 \% c. O, i; r) a# ^9 Z
& m R. t$ i2 I" U6 S
//////////// FSM /////////// Y2 V3 u( d9 ?
! {3 x' D8 U f a, P' [
always@(posedge clk or negedge rst_n)2 f: m) e8 W$ F0 ]
begin9 g2 W7 d; [$ i/ S1 z6 Z
if(rst_n==1'b0): B7 s+ C4 j% T8 x0 l8 o5 |. G1 S
CS=RESET ;$ c- j! \7 ?6 B, ]
else
3 s& A+ t7 v7 W- F+ M* V CS=NS ;
, Q) R) `" @1 x9 X' iend
. D U" {5 T+ ]' T% Q3 E) D 0 l+ B" N9 j# N1 f# Q# B; H: a
: W! z. Z* n- s# q) ^: |
# y2 [6 n4 w1 M4 I; i
always@(CS or sw)8 E3 ^ v4 Z; O4 }! O& D; b
begin
! `, h9 `0 D9 z' v' d; ]7 k" e# o case(CS)
o% \8 s$ F" h+ W0 C' v) `$ u RESET : begin NS=S1 ; LED=2'b00 ; end
/ l; l3 q/ j# j0 \1 M5 B4 e S1 : begin NS=S2 ; //LED=2'b10 ;
) I9 I8 \2 I& F: c- a# ^$ V% d M if(sw==2'b10)2 ~9 L6 J7 i; t+ Y$ ^- S1 @2 _' z5 \
LED=2'b00 ;8 H C( [8 M, }8 Q
else
) o+ u% \ M& N( @ LED=2'b10 ; end# e8 Z1 U8 ~+ s9 j# A! `. H; V8 C
S2 : begin NS=S3 ; //LED=2'b11 ;
. h- l$ j4 R! W, L if(sw==2'b00)9 N/ H- \7 n% U3 a
LED=2'b11 ;; c J) D' K5 {8 }5 p" }
else if(sw==2'b01)" p0 V' _4 u5 B$ W% r( {* C
LED=2'b10 ; D2 A2 ` z; B: R2 ~$ d+ E* r
else if (sw==2'b10)7 K3 f0 `2 f; r
LED=2'b01 ;, `. u" `3 w* @# v$ S2 c0 f
else 4 l2 P; ?5 L; `- a `$ S. U
LED=2'b00 ; end
7 z6 W* b; K: c7 K8 i( B S3 : begin NS=S1 ; //LED=2'b01 ;9 N5 A5 ~8 S9 z& a: B* J: B
if(sw==2'b01)" Q( E: E1 h3 F1 v: K5 T8 f
LED=2'b00 ;
) d; Q1 u; d, x+ E6 ` else
1 h) o1 x, p' H' c& M: X2 M8 | LED=2'b01 ; end- o0 b @/ S" k
default : begin NS=RESET ; LED=2'b00 ; end
/ |! a: {3 x$ L# X endcase & }7 {' f0 c. h+ J! |$ _
end 2 M4 H" B2 `( O* K% _; O/ g ]( L
6 a% A$ ~( F! g2 y4 B
endmodule |
評分
-
查看全部評分
|