|
我也來寫一個
5 S( v, L3 }) P I輸入:clk, rst
# Z9 K1 Q1 [ g4 x9 W& Z1 F! X輸出:tens(十位數), units(個位數)( I2 a+ k2 Z& Y. Q
. v; G' T4 V& d& O! ]$ dcode :
! D( o$ H+ l( [" Z: g
) s. ~. L u- a4 u8 X/ omodule BCD(clk, rst, tens, units);
) j6 b0 I Z! ]5 y8 g/ p input clk, rst;# w7 G! k: U0 l: C2 A
output [2:0] tens;
4 P: a1 O! h8 H. M/ K4 y' w5 _; Z output [3:0] units;) J7 s3 C7 a$ t. I3 s/ Q
reg [2:0] tens, xtens;
6 }% o+ _ b/ ^4 R# N+ \ reg [3:0] units, xunits;3 b+ T$ ~2 H# J/ s: `; M& f/ n2 j2 C
: ^0 A. A: T4 \; Q always@(posedge clk or posedge rst)
6 s9 ?# z \, V$ }* ]" x' Q- q begin e, q) j6 M7 V% p& r
if(rst)
0 \# [' H" B! [- N- a- ?2 }6 [ begin; d) c( O. f! ~( L* v' C7 R
tens <= 3'b0;
8 o' [* S( C' B0 u3 u units <= 4'b0;, d+ @ O6 f4 v6 N, R9 d
end
$ `. E' c$ i) B& g5 z, v1 r6 v/ c" | else
: [( B$ _- l6 L" | begin
% o8 }. d1 n, |; d1 z7 ^8 F tens <= xtens;2 A$ X* q0 A1 Z2 Q, I
units <= xunits;/ ~7 D! D8 }5 u% F) N5 i( S" j
end
+ `. e& x. Z" a" y end
# h1 v3 g- _: d6 L0 M
) J8 Q: u1 l5 n0 V" T always@(tens or units)' k( s" l# s: ]2 o: o, c; ]
begin9 D N; }" N8 b1 i9 Y n
if(units == 4'd9)
% `( w z3 a' P. h begin' U4 H9 Z4 f7 a- o, o" [' r
xunits = 4'b0;" ]! c" ^- Z# H
xtens = tens + 1;
; o/ \0 h8 \ T8 ]9 f) v if(tens > 3'd5)
5 E3 Q# u! Y" }. |8 }8 j% A xtens = 3'b0;$ ]0 r& ^7 B, f; X9 }9 b! U
else
# d8 b* k5 s; C2 Z# @ xtens = tens;+ y- j8 T- e& ~$ h/ f4 @
end
; t; O6 r: d% |+ S' d else
* `( a, Y- N. i- l" j2 a: w begin
& q$ Z# y8 G, K- g6 U1 o xunits = units + 1;
4 C p# O d2 V+ d- @ xtens = tens;, T- z( ?4 H2 E& S) |8 j
end0 x7 s# d7 G. G; E) T3 X
end
8 [# m/ d, A( O2 P+ H/ y( @endmodule |
|