|
我也來寫一個
! {8 d5 w4 _/ T; o1 H+ C輸入:clk, rst
) K7 i1 a: _* A$ j% t( X0 N1 w輸出:tens(十位數), units(個位數)
: h1 G: x6 P; P' B; {3 r
+ g# T5 B# N. Kcode : 1 `0 p; o( _$ w7 i6 Q
( m L' U% S3 V5 L/ fmodule BCD(clk, rst, tens, units);
( Y; O% o$ A" @ input clk, rst;9 Q* d# o5 i# N* M6 N! i
output [2:0] tens;
2 H" V' D1 o, R: C output [3:0] units;
) n+ W$ B" ?# O* E& V8 h& s reg [2:0] tens, xtens;$ Z: M( Z& Y5 o4 l, o: O! M% ?( L
reg [3:0] units, xunits;0 F0 F5 x! z' ]+ L* ^
; q! p1 U. n) V7 \% [ always@(posedge clk or posedge rst)
8 s5 g5 F5 s+ g# S2 f% o' g begin v6 e& e0 p4 B% z) v
if(rst)
7 s: p# L3 _* t begin
; @ R( M. S4 W tens <= 3'b0;- B# p, x' }+ e. |& M$ a6 O
units <= 4'b0;( Q% k; q, x& V+ V0 J/ |% y
end
+ ]2 i1 C) v X" O, i+ A else4 q8 z( A' z, L; `( d5 }3 h
begin
! g" v1 w, m1 a) t6 t tens <= xtens;. O# Y2 F' @) K8 x6 v
units <= xunits;8 G1 z8 ~9 `: S0 q) C( |/ G0 @
end/ Y, v3 n3 V- j, O2 ~+ {7 d
end2 c) S) q) Q. r
, I0 Q* k% Q* o% {/ A* ]+ f2 b always@(tens or units)
& g# X9 y3 W4 v1 P- \9 |# T ^ begin+ w8 w" ~" P) ~: K4 s3 m3 f
if(units == 4'd9)8 d4 L8 c& c+ J# j1 d- Y
begin
; \6 [! @; E' a' g3 a j xunits = 4'b0;6 F8 X. O/ F9 |: a0 q; M9 h
xtens = tens + 1;
" Q+ f* i3 e( g' @/ \ if(tens > 3'd5)
/ b) G x( S N, D. W4 ^ xtens = 3'b0;2 e2 n, V+ R; x
else' e" o7 q w: E8 k
xtens = tens;2 t- Z7 R# ^8 I/ I. ]+ |* J! Z3 M j; D
end
8 Z6 ?; K- n6 c! }2 I/ `- \ else
6 ]; v4 q! E. }; v$ c) s begin
8 A( x) |/ d6 e- _! F, ~8 ~ xunits = units + 1;
& `# v( @; n4 s6 u6 D: r5 A6 S xtens = tens;4 f, e% ~* _# V. w* [
end1 T/ n; x# [1 E
end" R' A% u* F6 U. Q2 v
endmodule |
|