|
我也來寫一個
+ v( s4 G0 t' U6 r4 ]輸入:clk, rst1 A: x2 z- r' J4 }0 R
輸出:tens(十位數), units(個位數)/ {+ k7 L3 D$ F1 Q5 K5 ]# ^: g
3 E2 H! Y4 N/ }code : 8 n# A2 C; m9 Y
) M; t* ^& v8 W, Nmodule BCD(clk, rst, tens, units);
# F% ?5 o; N! t- g: Z input clk, rst;; W2 C, I2 C9 |
output [2:0] tens;
; K( {! Q- C( K& X output [3:0] units;! ?' P3 k* q9 y( `, B
reg [2:0] tens, xtens;
2 m# X/ r+ b3 q/ P4 B reg [3:0] units, xunits;
( C+ M/ U) z) x: z9 n- a. o5 @$ u( C0 I1 G# ^9 j
always@(posedge clk or posedge rst)
' d2 O% s' g0 o8 w$ p; r- ~7 k begin1 b8 N0 A) O* p! `. F
if(rst)2 w. S( k @4 k) ^; j$ x
begin
* c1 Z9 R6 w \1 b' M4 H tens <= 3'b0; W# Z% {6 U1 q( ~/ F
units <= 4'b0;
2 I1 ?3 Z7 W1 c4 q% Q) f end; Y" D+ b6 r. G# _
else( n/ M. f; j$ A
begin
: F8 E3 q1 N0 d$ @1 l# V# a: s tens <= xtens;
# @0 n5 w: C+ T" m3 K% X units <= xunits;; g9 \: R/ s) h% C" ^' t. z; ^: C
end
2 i2 S% e( o; h' P end, B) ~) \4 r' q5 S
" A% b( U( a/ u% Z9 E always@(tens or units)9 T2 b/ O- G; h' R* L
begin
+ b# L" X" y" ]8 D9 h6 d0 u4 ^6 p+ h if(units == 4'd9)
0 B2 r7 M6 o) D/ Y. ~1 | begin
) p# F9 ?5 Y+ y! Y xunits = 4'b0;
4 _2 I% }8 u+ w! H6 f& |: m xtens = tens + 1;; I6 x2 N. |: t! w9 S
if(tens > 3'd5)
9 A: }( j2 y" t$ d" ^8 Z( y6 F xtens = 3'b0;& A7 o4 Q3 H( [- [+ }5 a, N
else
/ ~" p& Y4 u. D& r( `. ~ xtens = tens;5 Q$ D4 i; l; F( T5 O
end1 l# M" f, h( g' b8 i
else
6 ` X: Y+ P7 ?, V' s begin; m" P$ |8 \: M! F$ |
xunits = units + 1;
! ?7 _& F' p0 K* v, Z8 r2 n xtens = tens;
- W* V6 K4 b( z2 _9 a end4 {7 u4 i) V, q- l( x( Y
end
9 E, b( W e( I. L, f0 _endmodule |
|