|
我也來寫一個3 N1 H$ ` u: ]: `! ]* h( n" G
輸入:clk, rst
/ l, Y) b: ^% j. i* ^5 A輸出:tens(十位數), units(個位數)* |+ H) a& m/ G4 l9 p! A
% ]' l1 r% N. A! V: r& G% ~: P
code :
5 }2 I9 G, V: A# e+ m; {3 [# _
8 E1 l0 [# w2 Y; ]2 Qmodule BCD(clk, rst, tens, units);
: N2 v* D- O$ b( ^* J input clk, rst;
; S5 X: D1 B# K* A5 ^ output [2:0] tens;7 e& ~9 L9 e: c! `: o" u$ u2 X
output [3:0] units;1 ~ k. p+ e( t. e" M
reg [2:0] tens, xtens;
9 G6 N7 B9 M# R: Z/ y reg [3:0] units, xunits;
- ?3 N0 p8 |! t; I" i5 f2 |
9 B1 K; l0 j$ C9 G6 E K always@(posedge clk or posedge rst)
+ e; F; n- Z- ^8 P5 T x begin, e) O) i2 U* F/ s+ }
if(rst)
) {; `; D6 t- S& Z7 R8 U+ G1 c begin
' B0 O p+ B; A% X- l* W" O) k tens <= 3'b0;7 \1 R9 E# W V* Z) R5 U+ z6 I1 ~* A
units <= 4'b0;
- F) h; h3 W+ l( w4 y! q, d end2 C5 W$ G5 X- O m
else" f% I# U \; }' G8 l$ _% ]
begin! K( M+ r1 ?: }& D: e
tens <= xtens;1 o' o8 t, Z7 c& d. Z2 V" T
units <= xunits;
$ Y3 h3 U2 q# F0 W end
n4 y' f% G+ z7 @! j' {! l end
& f( f* R; k# |* C: U* O+ X1 A
. a1 W% T% M: N! F3 { always@(tens or units)* a% |. M$ t! P5 K/ r9 D+ L7 C1 h
begin
4 }/ P' Y+ B+ F if(units == 4'd9)5 q! Z* n6 I X. O
begin% t& d5 o/ `; E* R$ _; |* `
xunits = 4'b0;
' B. l2 b& c1 @+ R' K, x xtens = tens + 1;
' w, q% M( y- p1 @$ P if(tens > 3'd5)
7 B% {( _$ C8 O xtens = 3'b0;
7 q, ]. O) H; z: A* u* h: Z else |; O9 T5 p3 G& e4 v' O5 k5 _
xtens = tens;
3 n' }. }1 n3 S8 \ `. E' q end
: I. D+ C2 e3 t; u! u9 x else
, w/ x# c, _, D( D$ B begin+ S/ Q1 `8 X" l" R2 V- g5 K
xunits = units + 1;
' m0 X) q9 K% S5 A# s xtens = tens;% d" p: M+ e- v m0 z
end! Z. s! O7 Q, e; \) m
end2 ?. ^5 r, S0 @ V8 _
endmodule |
|