|
我也來寫一個
9 t J7 `$ ^) H6 N* d) a( F' L6 y輸入:clk, rst' m: [7 u/ d$ G6 `1 S! r+ r7 P
輸出:tens(十位數), units(個位數)
8 C/ ?; v6 x1 `& R r9 D+ l5 u2 d2 {+ |! Y9 j( x
code :
0 h( [0 o' @" \' u7 P: T
- s9 D" W3 c' \- nmodule BCD(clk, rst, tens, units);$ U) M V y: W3 L
input clk, rst;
- x5 z7 @. r: R7 J. Z/ l1 L output [2:0] tens;
5 `# V& s4 P3 [7 Q output [3:0] units;
8 G8 r, `# N5 L! U. D reg [2:0] tens, xtens;
/ t) V4 D- S% D reg [3:0] units, xunits;' J$ X2 m' Z T4 y# A$ ^$ W6 t, d
6 h8 ]) P! ?" m3 V5 |7 n) s' M always@(posedge clk or posedge rst)
! }! r! L) H2 u& P& ^( E begin
5 s T" o& q# R4 s if(rst)% C. T2 P) t9 H
begin' r. ~3 }, b) K* R" p1 M' Q' a
tens <= 3'b0;
$ X: x5 ]% O1 d7 `' Z3 ? units <= 4'b0;( g2 r; u. b2 @' k$ G
end' q1 I, i' n( ~/ F
else
" I: w8 c' G8 v# v begin
% ] U& s8 s: s D( Y8 z tens <= xtens;
7 C2 g: Q& c# d) M/ I units <= xunits;4 r, k! u x" T0 p9 b }
end6 z' [# ~* N* a( z0 { _# i
end; J2 s/ {2 _* u
4 a# K0 V; ^$ w. y" R1 c
always@(tens or units)1 g9 u; k' [8 m9 C
begin0 n5 V' E9 R4 R- k
if(units == 4'd9)
6 V9 O/ K8 O. B* f; X4 a3 j begin7 ~$ D; ^2 Z- h+ X. G# w
xunits = 4'b0;
* }$ D0 y$ \! M, J9 w* \$ q. ] xtens = tens + 1;) i" j+ b% Y% x5 U; G) V/ a6 U% g
if(tens > 3'd5)+ u- K8 @$ p8 q
xtens = 3'b0;5 r7 Q5 P D5 l, f# N! x# w4 L( g# z) b
else9 j8 H5 \3 Z8 s" D- k* W0 f
xtens = tens;- i ?- i- C7 u
end4 P$ F Z/ l2 h: e5 L$ ^
else7 h: g2 U3 F# ~
begin) l# f) f, X7 n
xunits = units + 1;/ a, J# N9 o1 `) ~( r* \* q
xtens = tens;
& R% p; C5 l/ \0 _9 _. k9 O end f% s- h' l7 ^; E* n
end: t0 x9 E* _) y; B# W* K
endmodule |
|