|
我也是新手 大家一起努力
Dear Sir ,
" {" S; j* `: W. O* V8 q2 D我用FSM嘗試,simulation也成功
$ Z3 ~8 R1 \/ w8 K2 D) y3 ^$ i5 t參考看看吧$ c+ q" j9 j; a
; K& W/ v4 S; ]4 R
module LED_Ctrl(clk, rst_n, sw, LED);6 t, A- r5 n1 u
input clk;' x+ n7 w: E6 B# ?* R9 g/ l
input rst_n;
R, Q' v* n2 r9 W. L! C: ] input [1:0] sw;
. N) G; u+ ?* b% d output [1:0] LED;# W9 `, r# }4 f" ^' v: L; I
5 N+ Z% A; M) P0 M# s7 E5 q, `
reg [1:0] LED ;
$ J' T ?5 c9 v; B reg [1:0] CS ;, K7 F1 ~ i7 } w' [5 w l l7 L
reg [1:0] NS ;3 D l% }0 R/ [
$ F* n6 d3 p* q. Y////////// STATE //////////////8 }0 \7 m( ~- V$ m% S v' G! L% k
parameter RESET=0 ;
& a1 t( a2 g% J9 z parameter S1=1 ;5 d/ w7 I) b7 A
parameter S2=2 ;
2 v% ]9 d' L: P M0 Y) ~1 k parameter S3=3 ;
! B8 Y$ v: H! g, a( M4 r1 K
7 }7 e9 i+ `6 K6 `
. [; M8 v- y. g8 d; B5 r. V & z. X/ j& l2 o8 n
! O3 Q# |2 K6 f, x, m& L
//////////// FSM //////////) g' y1 J' g3 h. @
3 F! l) k/ r# e2 _ Q7 l
always@(posedge clk or negedge rst_n)
8 b7 M) z3 g! {, p# F' dbegin
; j* `/ O: O1 u9 \" K if(rst_n==1'b0)
; e$ N: r1 d0 h* W( y: M CS=RESET ; m7 v. S( ~/ j! {6 A' P+ c
else7 c3 U- T3 ^2 z6 q
CS=NS ;' F+ V; T8 k% [8 Q/ H
end
9 B" X1 x. m% J, v* p - S3 h2 m: R: d- T9 M
; e0 l$ s0 ~8 {8 u& a2 N2 Y
, x8 M( u0 [+ U% H8 V always@(CS or sw); s# y2 o; v* C5 O1 H
begin
6 d% J5 D) D; j: o- ? case(CS)
2 _1 q9 W4 p- E: P9 h' Y* ] RESET : begin NS=S1 ; LED=2'b00 ; end
! J) r7 Y: X' M9 k3 i2 S S1 : begin NS=S2 ; //LED=2'b10 ;
9 e$ \" L8 ^' s- _: R2 X5 `5 I if(sw==2'b10)' K: i) o- y2 T. ], O
LED=2'b00 ;* Y" D8 e0 N: E) m+ B( ~
else
* L; o9 i; s5 y3 C7 L4 [ ?5 S, ? LED=2'b10 ; end" c9 r& @' p1 m7 B" ^0 i
S2 : begin NS=S3 ; //LED=2'b11 ;
w# @/ l9 N7 P# y0 o) I if(sw==2'b00)
( d' i2 p1 F V( D; u* {# B$ \ LED=2'b11 ;
2 [9 j4 g" I! P, b6 h$ ~; u else if(sw==2'b01)$ l: Z2 @% x! N
LED=2'b10 ;
# l+ @8 O& l& g N/ A7 n: R else if (sw==2'b10)
N7 d3 B8 B' O4 @3 I4 f6 W LED=2'b01 ;, x9 m7 M8 {/ N& M/ l
else
' r' O: l! l/ R* f3 X/ m( L LED=2'b00 ; end
$ x$ {; s! N V" Z0 B9 S$ j3 n! F S3 : begin NS=S1 ; //LED=2'b01 ;: c7 O: z( v9 u9 V: u3 i
if(sw==2'b01)
5 ]8 }- I2 v: U: C, b( {3 y LED=2'b00 ;: z, V% x7 j" m5 `9 R" d8 I
else
/ P5 y. n* T9 m4 P* q2 e8 [ c LED=2'b01 ; end8 E: H/ ^/ X/ @: d
default : begin NS=RESET ; LED=2'b00 ; end
1 S, t& K5 r& X7 l# }7 z endcase
9 ?- k2 E) D& x# {8 E1 F2 i end 9 n3 T& R6 S2 Y1 g
! H, k0 Z/ b* W0 F: ?endmodule |
評分
-
查看全部評分
|