|
我也來寫一個* e1 u/ e. b" J8 K$ i
輸入:clk, rst
2 ^ K1 r) v7 I& \: O+ D輸出:tens(十位數), units(個位數), D6 ]7 ^, C+ _0 |' l
. v: h/ K2 S9 ^1 C, _code :
4 i' _: T7 O1 S* o
g$ O5 g' A' g9 Nmodule BCD(clk, rst, tens, units);
3 A5 d/ O. [8 G+ ~7 R6 u' B input clk, rst;4 n% G* A5 T P8 \& Q
output [2:0] tens;
$ @1 E. J$ K2 A% c output [3:0] units;: r4 E3 V' L4 @* j2 | u8 J
reg [2:0] tens, xtens;- n* G* N( _& W. _) q' i
reg [3:0] units, xunits;# l! A: r/ M0 c7 w, a4 |7 b$ k$ u
9 M# U) G( I) l
always@(posedge clk or posedge rst)
& a5 B- W/ n/ V- Y$ E: O begin
- C2 e s; {# h' H if(rst)4 q/ O+ _) ?# x
begin/ c& ^$ S* V! r0 N0 ~* g; `7 ]& F; i/ X
tens <= 3'b0;
) Y' u1 ?) F: I6 I$ i+ o) E units <= 4'b0;
# v1 S5 o/ t# E' s end
- Z; W+ z" U1 O! g4 p' S: J else
8 {" O- o1 k/ D C begin
8 ^) H: F7 l# m$ R) B tens <= xtens;8 r# }- ~/ w8 u+ q
units <= xunits;
6 ~* W. y. v( ~+ j7 R: _6 w end" Z- n; X% D+ X
end
. x& F- M9 N' P I% v% U. Q
" ^& B, F+ k7 m' I% v$ m( i4 _ always@(tens or units)0 H+ l: H. k* W; `0 F
begin: o! r% r) z6 P9 j+ v/ w
if(units == 4'd9)+ p0 O4 U6 z% v1 C2 y6 B
begin3 N" B& I6 Z- m0 A
xunits = 4'b0;
6 ?% Q! @4 c$ X9 g$ @ xtens = tens + 1;3 k j" F9 y# R$ A
if(tens > 3'd5)
8 ^( c o) Y5 ]2 a3 }9 q1 n& E" c xtens = 3'b0;: _: W$ c5 S+ d5 w4 m
else
. U* B/ P0 k, g3 N- D7 g( y xtens = tens;
3 P9 Q" [2 f& H3 } end
% w3 X4 B8 F6 B$ i. N else
* B3 Z( W, I, r: p6 a begin8 ?9 g5 V- n: z, I
xunits = units + 1;
, Y! o, E9 j b xtens = tens;
' z- u6 V6 Z2 j$ W4 O0 ^& W( F% Q; J end
0 {% E. [( a) W3 \# P8 s end
# J7 L2 p/ F$ r, b G; |endmodule |
|