|
我也來寫一個
" f q7 s4 H! y" ?" a% S輸入:clk, rst/ O5 @- [8 ?- P. L$ H
輸出:tens(十位數), units(個位數)" f9 T. q0 s5 T! |0 ~
9 Q7 W. x5 ]/ T
code :
5 s) u! Y! f3 R% J& j; t7 N( X# L) J) S; r+ z& `& ?
module BCD(clk, rst, tens, units);
, k5 P5 B, C4 o% f5 H2 V' z' T input clk, rst;# g2 j1 t' y# j4 F5 j) k* n* S7 i
output [2:0] tens;
$ D' c: F4 i; P: A: x output [3:0] units;
8 P+ G r: ]6 o0 |7 [ reg [2:0] tens, xtens;! [: @9 P/ a- O: f$ K, n2 M
reg [3:0] units, xunits;
3 ?6 t+ A. ]7 n: ]& q
0 g$ t/ R* B$ s1 |& \& s4 g# |8 M always@(posedge clk or posedge rst)
7 C+ Z2 H8 O3 v$ g' Z" K begin% o' g2 Y3 R* z" _: D: ]4 ?
if(rst)5 m' n9 y" U {
begin4 w$ s- [" j! R/ n
tens <= 3'b0;
3 B2 L) A/ s) N8 g units <= 4'b0;
! c- t& e. s+ S. n" i8 {7 j, \# e end9 X. T/ }, l( S' m
else
# s4 @# k4 c7 r2 \& i& }! k begin8 J& u1 ?2 V6 J- h; ]: F
tens <= xtens;
- Y2 @5 u0 O: p( Q. `: o- O units <= xunits;
% d$ ^8 e) H( ?* X+ w. f end
~3 f/ J% F2 i5 Y$ D end
. m7 b2 _4 L0 Y/ V& @* m- Q4 m
* E, ~* [3 p3 \5 I; R) D! x" U always@(tens or units)2 F( y/ G& J2 L5 g) G
begin# n8 \5 c8 Z! b' T' o! ]7 u( R
if(units == 4'd9)
( Z2 M: o7 }# R1 L9 ^ begin+ Y$ y. R/ G% b b; p, k& }
xunits = 4'b0;1 r# \$ n5 K6 H% N
xtens = tens + 1;+ J% h- Z# r: y/ O6 H8 |5 F4 c
if(tens > 3'd5)
$ x- b2 p* L! [# u% p. L5 s, m xtens = 3'b0;8 G( [$ C) _. K/ w, _% X9 Q' f
else& W3 D+ T* m0 j' Q7 p2 u
xtens = tens;
$ P1 v/ ~4 J, u& L9 Y& E3 {) e end
* m' V# ?# {- |. f% } else, h; G" o8 Y3 l7 f" E: f
begin9 Z! ?3 b" t0 {0 K% ?7 {- w1 v7 d
xunits = units + 1;) ?) n$ d% Q) `9 w
xtens = tens;& y! x$ Z9 C" m' a0 Z
end# W) i( `) j0 e) X: P
end. ?, p+ V# O t1 S. Q) Y7 r
endmodule |
|