|
我也來寫一個
3 ?; o- S3 E* ^7 N) n4 Y輸入:clk, rst
6 @! U8 q% q" }輸出:tens(十位數), units(個位數)
3 U8 O) x% g) w
z: n+ Q/ n( Jcode : . `" |8 k# _7 d, Z* X
4 }0 Q$ G2 i, G: _2 O5 ?
module BCD(clk, rst, tens, units);
$ C( t* f' k$ \ input clk, rst;2 K% f, Z3 e/ B& g% U& [/ ?
output [2:0] tens;- D# f" [' W9 [2 h3 D N
output [3:0] units;! C* G5 l! g7 S R2 i$ l
reg [2:0] tens, xtens;6 G2 W( I+ \8 a) W+ D
reg [3:0] units, xunits;
6 f2 n/ v8 C6 ^2 l# L/ Z( U8 m! N; T1 S" d8 s. c
always@(posedge clk or posedge rst)' i! C& k' ? A3 U G+ {
begin
3 H/ h5 I! J5 U5 B" w if(rst)+ \0 `5 i% M. q8 P. D) C" ~
begin+ F2 W$ n& V! w" o8 m/ _
tens <= 3'b0;
- t$ m h5 o3 Y; X- [ H( A units <= 4'b0;
3 C0 y5 Y( c R" H g end
7 O% {' z4 d* Z/ R+ |& z) T else! f3 Y/ i) z3 X, d
begin8 v) l4 a2 v1 E3 Z5 g3 S5 c+ ?
tens <= xtens;+ A: L5 i }) D. C1 \
units <= xunits;2 ^0 e1 x' c$ n: ]; k. C
end, t- S0 } K v: p
end
+ L% S( P0 @- Z* d& f
u; z1 r7 A# b+ M7 @/ N" o always@(tens or units)
" l: w, {9 c# v2 M4 |, T# K# v begin: i1 z" B) e9 }, ^6 A
if(units == 4'd9)
& M% b5 W! R* D0 [( L t5 w( Y begin
0 D/ l/ P3 F/ Y+ o' E xunits = 4'b0;* m+ m$ y, v1 `& g) {; d
xtens = tens + 1;& w4 v; q: ~$ }% M- [3 W' ? Y
if(tens > 3'd5) O9 o; i& s" s: z/ ~$ l' `
xtens = 3'b0;3 ~" j9 a# b D% d
else3 E, v1 f2 ~ D2 N
xtens = tens;
8 Y, L# \/ c: v; a end
( H4 B: a* [9 W2 Q, R else) B, \1 _/ m5 ?! I- G z% I
begin" i8 B2 p- q& d& b
xunits = units + 1;
- `) F1 Z9 A+ W8 j' y9 A# [ xtens = tens;7 m' G# O$ e- f) O: \
end
8 h" V. `! x% y+ U t* x end. C# o0 H, E/ S2 }0 c8 ~
endmodule |
|