|
我也來寫一個
* J3 ]1 p- _6 Z輸入:clk, rst( B$ ]6 p2 X4 _
輸出:tens(十位數), units(個位數)
) {: Z% @, k1 ^0 V: {7 r+ [0 |0 p
- @" L8 S4 X, kcode :
) ~! ~1 H M) e$ R
, x0 C$ W: W5 I' dmodule BCD(clk, rst, tens, units);
& f8 t7 ^* L1 t# m" Y q input clk, rst;
3 p0 B7 h" U5 e% M output [2:0] tens;
/ j1 u" B8 q2 d5 x output [3:0] units;
3 j0 ]) t3 u6 \' C7 w& u, r. b reg [2:0] tens, xtens;
$ M4 j6 x! Z. m' s0 R9 A! z, P! i reg [3:0] units, xunits;% E6 S6 G7 {' A% {6 V9 E
0 Y% K; C' J% H always@(posedge clk or posedge rst)6 |# i- ]$ `2 @2 x& h! z
begin1 R" ^0 I5 L) U; B. _7 D
if(rst)
: z. X! g4 f$ m. O4 @ begin0 c" d; E4 W4 l6 x
tens <= 3'b0;% g1 W+ h, W% l* H! \7 Z- c4 `! Z/ l
units <= 4'b0;6 d) x% f7 K5 ?7 ], Q" F0 l0 K
end
- f G* P- y6 v: a else
2 G& [' M8 F0 b! F8 N4 U begin
$ [) ]- f. C6 o8 r- f" Y& G- ^4 x tens <= xtens;" r* q6 u7 c! R% N) B
units <= xunits;
. F! ?& ]' O' I end
$ Q3 x7 {( H7 r f7 { end* B2 `7 Z3 x+ m, X) d6 q( g! D
% g# [3 S5 U8 b, z: x) B0 `
always@(tens or units)0 g; l$ p1 d2 T& @0 ~
begin
& l6 \/ w: y( P0 D if(units == 4'd9)
$ T. T; q, h0 Q) ]$ q8 D3 c begin
) s( L) ]# n8 F/ L xunits = 4'b0;' A0 g3 B% {7 r# s
xtens = tens + 1;$ g' f9 |' i2 f+ g: Z
if(tens > 3'd5)
$ n9 w7 T# b) C, h6 j7 ?2 T9 ] xtens = 3'b0;
6 r7 J. K: h0 q; |9 ~4 Q else: r5 ?* X" C4 l! Q2 c
xtens = tens;
u5 R$ |" u/ ~7 ~$ F' M end. ~8 w; v' d$ M9 A. ~$ N
else
6 C% J5 c) e" |5 Q7 I' _4 W begin
) W# D# W$ X" A5 C xunits = units + 1;
* v2 u7 i5 B) b0 L. G( r% X; K xtens = tens;7 j3 M5 Y6 a8 B& G
end
: K) g4 ?! j1 s- h% ] end5 ]7 v r6 B1 g. {" l8 d
endmodule |
|