|
我也來寫一個, b; u4 \8 j2 }: r- z6 t
輸入:clk, rst/ {& ~" |; Y! U% K$ m' X3 A) X
輸出:tens(十位數), units(個位數), n# v. f, Q; C9 K9 Q: p0 p3 P1 d0 s
3 i. A2 a! H: m3 P5 z6 I
code :
4 T7 i6 ]) w5 R3 I3 @# Q0 J7 r8 f( v* R$ S+ ]( \' Z+ }- ]! o- b; W
module BCD(clk, rst, tens, units);. f- B' m! T% e1 a$ Y
input clk, rst;
1 l, X: d+ g& j) o! F2 V output [2:0] tens;) u6 R1 X7 p/ r
output [3:0] units;
8 i% |) w# o# p* d4 O reg [2:0] tens, xtens;- L( |# d& x7 i0 c# X$ p; ^
reg [3:0] units, xunits;6 a! j8 C1 r/ M
' e: q5 S, R% T. \
always@(posedge clk or posedge rst) [. _( w" ~0 M( p5 T/ V8 N
begin ]+ z8 t; y$ X- c
if(rst)
! }: {8 J2 }' Q+ b6 _- {# t. h begin# Y6 |& p$ m( \) a* H
tens <= 3'b0;' n9 W+ M# J3 C' ^+ z1 r4 r
units <= 4'b0; H2 w# r( z! n6 i
end% d8 Z' s* C4 x* v, ]4 C
else
* b3 F' n. k# [. q/ ?* ~ begin
4 Y6 ?2 ]% L/ E7 d tens <= xtens;2 i! e; x0 U |$ G8 m1 h
units <= xunits;! Y5 j# z. Z7 D+ ]) x9 [* j) N. A
end: v5 o& `4 x1 J' Y
end
+ f9 V% [* T$ \9 v* A3 E4 E a8 G: z# ^1 V8 s
always@(tens or units)! _. P. C2 L T* O' E0 ]
begin
! L; m2 j* W2 l% p2 s if(units == 4'd9)0 R( x2 B1 j3 N6 M/ C, m! s1 q3 r9 ^
begin; `, A' {% j9 i) K6 c* A/ c
xunits = 4'b0;+ {) A o& L% ], j% N4 s* ~1 H: j. k8 Q
xtens = tens + 1;
1 R$ l0 p5 R# b& j0 F& k if(tens > 3'd5)" k5 w$ y8 w# S8 A4 O
xtens = 3'b0;
" g2 F; n O7 M, l4 w else
4 q9 U6 W m( U8 l0 Q, i, f xtens = tens;
4 t# z8 \1 i) g; s. [6 | end
* u: }2 h1 S$ d& z# G% O2 {# X5 V else
' g* g" k6 C/ ~1 j" I% `% M begin$ {7 f9 Q/ N: J" ]6 g; s
xunits = units + 1;8 }+ V6 r% ] j& z: X
xtens = tens;
$ v& g) ?* H T) h7 x9 b end
( M2 g$ Y# ^: T0 a; v, G end
/ f* V+ {! I/ O9 }endmodule |
|