|
我也來寫一個
" R9 N* K0 h5 D1 w3 N輸入:clk, rst
" [$ ]6 P8 ~+ n9 V+ J+ |; c6 x: }( `輸出:tens(十位數), units(個位數)* k/ C9 w1 w8 ?, \ ~0 x4 x
7 U' K( }/ l @/ p, Lcode : ' j$ |. B1 ~( O2 \1 c( s J9 K
+ ^ I- J' W& I; e$ e8 fmodule BCD(clk, rst, tens, units);
a( ]7 }- p9 S( [6 d% o3 N! I input clk, rst;2 n" u) A1 \1 R0 k2 u7 ^
output [2:0] tens;
2 Z, a4 r+ k/ E& G$ p output [3:0] units;
- `" H# M6 V8 T5 l reg [2:0] tens, xtens;
' I5 t- m) P3 D reg [3:0] units, xunits;* {. ?- Q1 E$ U5 A# N
" E4 C+ q7 ]9 K% W always@(posedge clk or posedge rst)& `+ t, _9 w% A1 i3 b$ M0 s
begin" z. Q" ]1 e+ [
if(rst)
9 {5 g& y+ B+ e' w$ ^- ~ begin
; l" ~3 t5 j5 x" e# W: L1 w4 t" A3 g tens <= 3'b0;, ~ p8 j# y. P& H5 T
units <= 4'b0;. b Y" f$ F7 b3 t4 ], h! i6 h* C
end9 @5 p4 w$ l, W; E, J
else
7 o1 l: \( j. J& Q2 w2 I* T6 F begin4 j5 ?* [2 H/ H2 g R
tens <= xtens;7 q+ ]# ?3 M) H! H5 y
units <= xunits;5 U/ i! N; b) U6 ~+ U
end
" T" M, _( E' x* y) m end
7 \( E' M8 }& ?: @; b, n
3 g9 P/ u5 F* P8 j( ^$ N always@(tens or units)6 {, t6 c/ W. ^- B* {) i
begin; Q) {7 h4 W! {3 }
if(units == 4'd9)
1 S9 K* r( ` q1 k9 t( W/ A0 k begin
4 y2 I: T1 J" W3 \: n xunits = 4'b0;
: \; p: ?0 `2 c: s3 @) ]# H5 H; W) l, | xtens = tens + 1;
% x6 m: a; R2 J4 x0 v if(tens > 3'd5)1 S2 ^- W0 O1 n) X+ W o
xtens = 3'b0;
# ?" e9 z2 D- ^& L else4 ~ F ~ b1 X3 Q" j- w$ `1 ^
xtens = tens;) c) U& Z' Y; o0 j, c6 u( v) k9 s
end; A3 \+ r: W; P; D
else
" g' @. r7 L; Y. L# r4 j5 d5 v8 q begin
i8 S+ B. a/ V xunits = units + 1;
: d' A7 o7 |8 v# J2 |3 E* v xtens = tens;
9 C6 B( p: }' M7 d0 E end
! W' e5 t: E) d end; k6 j$ X/ }. r" ~7 X n
endmodule |
|