|
我也來寫一個4 s) L6 |: r: [
輸入:clk, rst/ Z! c1 \7 a* N( {% ?0 E
輸出:tens(十位數), units(個位數)
- j* O% h/ C4 ^8 y; z: S3 O; D" R1 M8 \# }
code :
6 g0 ]8 r2 f# U* w9 A( R" Q4 x, u
$ a5 H6 R& l" }! a3 p2 fmodule BCD(clk, rst, tens, units);! M* k; }7 R7 ~7 u3 I& e
input clk, rst;* W) A0 O8 S N" _* z, E4 M9 T
output [2:0] tens;0 u5 z3 @ |3 p% z/ ?7 _4 a2 v
output [3:0] units;
* b, g M8 q [1 f+ h4 m! \ reg [2:0] tens, xtens;1 P4 X3 h/ C1 p
reg [3:0] units, xunits;
, c$ i* Y) p2 @# y& ~5 L R
4 g& C9 e# D7 U always@(posedge clk or posedge rst)" Y8 l& q" ?5 h- L
begin
# \1 }4 M6 K6 L+ [$ {0 G if(rst)
: m; P, P( Q! m8 f8 d begin
# `& _2 D& H# C, B- T tens <= 3'b0;. H: b7 I I# l" a) X+ E
units <= 4'b0;
2 H3 D4 W% p7 S: v: a end
5 p8 v, H/ T% R/ r. ?# J else7 j$ z1 `" [7 R# ~
begin6 D8 n/ k( |3 p3 Z8 B
tens <= xtens;7 v6 S, t' c5 A* P% p: K5 N- M
units <= xunits;
, @' c9 Z3 J# _$ b. ] end
5 a+ f5 b$ F4 o" C" \! x9 I end
% B2 N: h' J J8 c8 f. d$ W1 a6 s4 R2 P5 }/ V
always@(tens or units)
6 C6 m9 W3 g4 h9 ?0 t begin
2 D; Y _4 T$ J! l+ Y if(units == 4'd9)
6 q. @6 n; K& g* l begin
3 n0 X: v3 q% ~2 B7 i: }8 r xunits = 4'b0;% s4 H# z0 L1 j8 ~& U
xtens = tens + 1;
: N! u9 x: A4 B* s5 I if(tens > 3'd5)
# l+ K7 \( R4 Q5 N4 O; _! x xtens = 3'b0;
% }# V; q2 E1 m% O* H else" Q: F' q. D+ _ A& w: S) Q
xtens = tens;
9 f7 ~- x4 E2 w end$ f p1 g5 m% `( _. }1 ^7 c
else6 U' K0 \% \4 A: r+ p& t0 ^
begin: ^# u) d. r) h, }0 ]. y3 h( Y
xunits = units + 1;! [, s8 ~) W6 @! C: ^3 N8 s) a
xtens = tens;
S7 E0 S w; H# N" t$ k end0 U8 z+ Y; C1 ]# Q4 }1 Y
end) \. h: ?* L$ j9 n; H7 Y
endmodule |
|