|
我也來寫一個
# Y3 `( l2 a% q輸入:clk, rst
y: _% Q& x9 \& o輸出:tens(十位數), units(個位數)
+ D4 ~1 ?% t: \; t( t$ }" S2 D. J! R+ U, M. X, Q- A4 n
code :
; X& \* n% K a$ n
1 c: W* o8 z0 } L4 ?/ k$ h umodule BCD(clk, rst, tens, units);
; ^( J4 B7 U. D/ z$ B- p7 s input clk, rst;
3 X1 C* k% ~9 ? output [2:0] tens;
4 k4 o O$ ]9 ^$ ` output [3:0] units;
+ K9 i R) ~# V reg [2:0] tens, xtens;
! M0 L/ V( y0 g, ]% Q; A reg [3:0] units, xunits;% B1 w9 Q* M4 u$ w
( Q( `7 Z; ]) \% D& Q1 y always@(posedge clk or posedge rst)
2 d; |0 [/ F; g# b ? begin7 ^ M# k6 H% S& D" ^
if(rst)0 K$ @2 z6 x6 Y3 f
begin" C Z+ t' u: }% }
tens <= 3'b0;
0 x" X1 [3 w$ V6 a$ y0 w0 _# N& P F units <= 4'b0;$ I: A% e2 j( W4 U3 e J
end) j7 V+ Q8 `; m, I
else3 w) k7 l* q% U. v7 r5 n
begin
7 I7 R, G; f* a. q8 x. ~) b tens <= xtens;
, C+ D9 S+ |$ l" ]4 o4 L( w/ X+ D; G units <= xunits;
$ _/ U. V, | C. j$ P. a- Z _' O2 T* | end
) f1 Q# l" I, V% o# z end
3 o* f6 N. |1 C) i% P
5 S7 F4 h" H" J+ L' K) U/ d always@(tens or units)3 \- H- h& R+ C9 p" g
begin: Z, t2 V% s9 y! U0 S3 K
if(units == 4'd9)' K+ k7 p$ L* Z3 K7 e0 n
begin
: R* b9 L& f0 H" v2 ^ xunits = 4'b0;0 d& J( [7 X8 V3 J
xtens = tens + 1;
# v; x" S* ~7 u4 f8 {6 X+ j if(tens > 3'd5): [7 e h$ |7 h0 N' u
xtens = 3'b0; e& O4 b% u5 Q2 k# Q
else8 p/ q+ P* B0 R; ]/ C4 h$ ?8 {) z
xtens = tens; H; u6 p @* U& O) ^
end1 s$ ^4 ?" A% d. r8 S
else$ F9 \; C. O. O4 Y3 R5 X
begin
# a" u3 Z. O% d5 M xunits = units + 1;& K# K$ B0 l3 E, q4 K
xtens = tens;
+ ^3 ^6 K# a* {8 n% Y! ^; s! P end z. d- i* m5 h- w
end5 }) f, Z+ k: n5 n1 H, V3 x: ]
endmodule |
|