|
我也來寫一個
Z3 m3 b, I2 r) y1 z: }1 [; w輸入:clk, rst
8 g0 r9 @. H; ~+ m- y8 p" z3 Z% l7 b5 x輸出:tens(十位數), units(個位數). x4 g9 g" |* j! c- ~
5 u4 f: i$ I. }. u' ^code :
9 L2 i& N6 `$ c& C$ t% H7 W9 E' v; D
module BCD(clk, rst, tens, units);- r! k: W& h3 b7 y! w; M
input clk, rst;
8 S8 }" z& I0 j output [2:0] tens;
" E9 u" ]5 T# v6 M. m& K output [3:0] units;4 |# {% ~; X! G" ^# _% m" ~6 y
reg [2:0] tens, xtens;
( ]$ H7 k5 J) t8 W* k reg [3:0] units, xunits;
* `+ g6 x# s) m. {5 \) r$ `; y% M9 j6 N3 W
always@(posedge clk or posedge rst)
- w, E) }9 O. C! n begin
7 S* ^1 Q) d i if(rst)
( d/ o2 o/ X, A8 O6 a begin2 e* O5 @" N2 W& `
tens <= 3'b0;
& d A, c/ T3 ] units <= 4'b0;, |1 C* \; R3 T7 }; ~
end8 g' `9 M" R7 ^9 u5 b& l9 J; E0 B
else8 `$ M- {" M1 q( ^7 R
begin
1 I- x+ z8 i, F/ v tens <= xtens;
+ B1 b/ `. i; p: O& k8 A0 v0 P# V units <= xunits;
1 [) [% k3 F0 d8 k end: z8 u; ^# q: l: Q
end
3 b& b0 F: F) s6 b: h
. \8 k+ K3 d! o; Z; C+ y: P9 j4 M' K always@(tens or units)
" z6 H; A$ k/ M% I$ ?) D begin2 X+ j# X! i" {
if(units == 4'd9)
3 K' c7 p& ]+ i4 _7 d% ? begin
, w" j2 W8 M. P5 f3 Z6 G% R xunits = 4'b0;' f+ e! q, c) F* v/ `& q0 M
xtens = tens + 1;7 ?) T0 k5 F, f0 M1 R, h7 S- O% n: z
if(tens > 3'd5)
0 F a% w: d5 m+ X# | xtens = 3'b0;
: t4 d$ P u2 O2 L# F! ^9 c6 a else/ w# W8 G) ], J& y1 r ?% c
xtens = tens;, y5 N. x. N0 B; d; o
end3 }/ E& {, O; ~/ J! i6 v
else
9 p! r/ V- K7 N begin
. S/ Z. ], j; M. O# J xunits = units + 1;9 g. e/ k* W- I
xtens = tens;- }" s1 |; b$ a+ P9 z
end2 W# j$ N1 c) o) ?% O
end
% T- g9 w* r+ Pendmodule |
|