|
我也來寫一個, L6 w& V" I* F- o: C4 k9 @6 U1 ~
輸入:clk, rst
: p* G& r* V R6 [4 ~輸出:tens(十位數), units(個位數)
6 X4 [/ d" u' M9 ~6 c) W$ L
/ b. P: Q' Q, K X, ?& }9 ocode :
6 [( o- j5 r5 d. [& w9 S4 }/ Y. n" c
module BCD(clk, rst, tens, units);6 v; a1 D4 U, Q' p' d& \2 s1 \( I
input clk, rst;
' d1 O. t; [% S) l5 T$ M7 g% s0 o output [2:0] tens;
! A" w4 R$ [9 X, w( y5 E output [3:0] units;8 S+ a- ?* X2 O/ e! A$ A1 S
reg [2:0] tens, xtens;% K+ k9 G5 ~/ T
reg [3:0] units, xunits;/ }+ {5 [+ `; E0 [; X" Q0 s
5 f+ N8 }7 [: _7 e/ m
always@(posedge clk or posedge rst)) ~6 G! W( s2 C
begin* f9 ~2 S. w1 E7 w2 X5 c& j& E
if(rst)
8 N, M3 h8 w+ x9 F begin
* d# O5 k' I R+ C1 l0 D2 X4 \ tens <= 3'b0;3 S% c8 h! U N* M" N# Y8 n
units <= 4'b0;( b# |0 {3 @' P0 i9 i* q
end; r# y$ u1 P9 C3 E$ h5 t9 F, Z
else( Y2 P y; T! o0 b2 `" r0 ]: c
begin
8 }, V# ]# Q) o( z9 M1 F tens <= xtens;5 l5 a- ]& ]% U" l) A7 ?
units <= xunits;
9 F/ k J) z7 @- D) j5 D3 H3 } end9 e; y1 S: ?4 m! q
end
8 S6 Z5 x9 p3 G
) ^! K9 d# G l( r always@(tens or units)8 N3 r" U' U3 N
begin Z3 ]8 n5 R4 G
if(units == 4'd9): x6 I9 J2 \3 A2 [! ?, z3 p( k
begin
8 I @: d/ w* n6 t5 e0 ?: f' m xunits = 4'b0;1 i% @1 f" \. X7 O& H
xtens = tens + 1;
. C" d) v7 j4 m' E/ B8 @) F1 _ if(tens > 3'd5)
/ }+ n# G% ^% u" E3 R xtens = 3'b0;0 b: z1 h+ f5 f$ Z! A
else
4 u, K6 K: I/ [) c% X/ s& _' F5 d' C xtens = tens;
, j+ o9 R6 w! y7 P+ D2 b6 @+ W) N end# G; G' L j* Z x" \4 I; @) S
else/ {' g# ?0 r+ I9 T
begin
! H; j' z4 B& {. v" n5 T xunits = units + 1;
1 |! l# a# L- p% ?( K# T) d xtens = tens;; ^' B4 J' Y x. g" J# R: Q! D4 a
end. H; G. R( F R) Z: ]. p$ c) f. m2 h
end& S9 s# W! C1 p; ]( W
endmodule |
|