|
我也來寫一個; r9 R0 U# Y% g# L2 l) Q0 h' z
輸入:clk, rst
3 ~! ]+ x! _( a8 G) v. |* x" x$ H輸出:tens(十位數), units(個位數)
! ^- z/ {3 d1 g, p2 N) h
2 _% F6 _% s0 E: v. Ocode :
6 S4 j0 x6 s5 a; f. k
- I6 G% R3 r8 f& h0 [module BCD(clk, rst, tens, units);
* v8 T3 a0 C' t8 h input clk, rst;
' K6 i. V, y1 m" t+ o* ~' ^ output [2:0] tens;# ]1 C0 J* [- _) m# x! f O7 f
output [3:0] units;
2 m' P4 c3 u$ F1 N reg [2:0] tens, xtens;
/ j; a f- |' m; a/ n reg [3:0] units, xunits;/ `2 Q+ r) e) l
; _& j: `7 E& O( R/ y always@(posedge clk or posedge rst). d8 ?( {$ @0 O6 n: Y0 F
begin; `% V2 U5 X7 z- O b
if(rst)
. J0 J2 [( z9 Y+ a# G9 _3 [ begin
# Y A/ w) `& {) O0 h tens <= 3'b0;6 n* l" E, V" H, H4 [
units <= 4'b0;( b$ d+ P: s3 }* E0 ~
end6 w& Q7 ?7 ~# c. \ B" g
else
; l4 r6 E* l, M: s9 \8 K begin X, q4 F: I. _5 V
tens <= xtens;3 w/ V, s3 I I1 w/ g
units <= xunits;
* d$ A% M- L9 \$ @$ P$ ?! \; V/ g end+ }' v9 Y! Q! c+ v: A
end8 F( @4 |& F4 m4 m5 F% | A
. {: x% y1 S& @5 w
always@(tens or units)
3 A& l; t$ k3 e8 ] begin
% w- s2 k! c5 V$ @5 I _ if(units == 4'd9)& }6 N3 V# j/ d Y- r% h5 Y! p/ \- C
begin' \) _) ^+ O) I! J$ ?! o8 a- Z
xunits = 4'b0;
" ~0 t9 n' j" Q/ F xtens = tens + 1;
7 @3 d- ^ ~" } if(tens > 3'd5)
8 t# }, {5 _6 j! i% X xtens = 3'b0;% t+ q- d8 \* v$ z
else
# A! P5 V9 @. W, J. @ e xtens = tens;
0 M' {3 X4 ~$ | end
6 [3 ^. L7 v/ j. _+ ] else5 \& l* D6 w3 g Z( X# r
begin
8 l( }3 B# M7 p! [. V# o# q5 n+ g xunits = units + 1;
4 H- y9 q' M" g! k xtens = tens;1 l9 ^& B0 U, N: }7 B( A+ v
end7 T, U% y( P$ ]& b( T/ b
end
* B C* r9 P1 t+ f; tendmodule |
|