|
我也來寫一個, _9 j# b8 V/ w9 X6 `& N" s
輸入:clk, rst- ~' ~2 I# P3 {, _; h
輸出:tens(十位數), units(個位數); e* _% G; M$ z( p8 ~* m8 @3 v
2 N* A2 z* r$ u& c; ncode :
: O+ L9 Y8 `: b: `; H
0 b2 P7 t, K! S2 ~; jmodule BCD(clk, rst, tens, units);& n" P, h7 A* I
input clk, rst;
! l$ W( Y8 R8 C0 T8 V3 ~9 P output [2:0] tens;; Q# U e& _9 x# p- n/ g' ~( h% |
output [3:0] units;- m3 c% V" \& z { x" y
reg [2:0] tens, xtens;
& t$ ^- ?' b4 W% | reg [3:0] units, xunits;
: p, C7 W7 z) z9 r, |- ?0 B7 j$ j* C2 G# I" `
always@(posedge clk or posedge rst)
5 i. u3 o$ M0 y' L- D begin
- d0 w$ t4 P5 y3 Q* I0 h: W if(rst). _2 \, G7 z& L3 ^/ z
begin5 O" M7 f' n% E! r& |* C* Y: a
tens <= 3'b0;
7 P( [/ {0 j9 l8 D! J# | units <= 4'b0;0 \$ O2 @) q7 v( Y, Q* k7 `
end. F( w) {# @+ J" Z
else
1 n6 }( b% ?- @ T N- P3 n begin
' p" r) t6 ~; b9 K7 H3 }8 v tens <= xtens;
4 m6 W: E9 b' I- p0 c& L% d& q units <= xunits;
" [3 T, a% n0 I! Q c, [ end
& E+ E4 {4 g$ |1 A4 y8 G* ^8 E9 } end! l3 j. M0 u K9 M* J
1 p* |! k g; h# S1 n always@(tens or units)
- {, g$ i3 D- ]# E, \) C. b5 g begin0 r5 t" c1 g; y4 w) \- i; E
if(units == 4'd9)
) [& @ g; f% }# u3 J) ? begin# I; x* J( n* s. n; x% R% v
xunits = 4'b0;1 E) O3 f& t2 G5 B$ R# x
xtens = tens + 1;1 l% [+ u0 J W% }! b
if(tens > 3'd5)
& C& ]2 g& A% a6 }) Z4 j* Y3 I xtens = 3'b0;" u2 Y0 m3 ?+ t, O5 e, ]0 \4 D
else% B" c: I; [& a, ~
xtens = tens;9 s, E$ c& p5 x$ k
end
) f- Y V- z5 }& [' Y+ c" d else
9 `" P. i. U# S begin
+ W8 T2 {$ f+ {. E xunits = units + 1;4 E6 H5 Q) ~, h: q: a( Q) f1 l
xtens = tens;
5 Z% a0 Z! W# ]/ G& e" j end
0 d3 Y4 Y {. B6 o0 _- Q. }# ^9 { end
( z) }. r, a/ \- X( B- I9 x: fendmodule |
|