|
我也來寫一個
H/ @8 e' X) S4 }: `- J輸入:clk, rst
2 k: b H8 R& v1 k4 I輸出:tens(十位數), units(個位數)0 N: o5 l/ R9 T/ Q( g$ {6 f7 B
) R) H. R0 v% t+ jcode :
R* `( |4 a; a# N( @$ W) r
9 @9 y; K, i1 X/ m& dmodule BCD(clk, rst, tens, units);5 R7 U6 {) o, r+ S2 A7 p- D
input clk, rst;6 _$ a' l: A/ v
output [2:0] tens;
2 [ r0 P& f# ?; M2 m output [3:0] units;2 ~, X8 f6 r# g0 X9 Y
reg [2:0] tens, xtens;
$ n" Z O7 g, o, ~5 c2 q1 H i reg [3:0] units, xunits;
4 Z( [3 y0 W( b- ?
4 B( p( ]3 f8 i1 s always@(posedge clk or posedge rst)- X) x7 |; B- S) X P( w' v
begin
# k5 k8 H) F8 U& T6 I if(rst)# d+ B( b8 E# ?# L* F
begin' ?+ \% ]5 B; k. p+ y5 a# V% q
tens <= 3'b0;# w0 E8 l+ A( T$ @4 Y1 Y
units <= 4'b0;
9 l3 T. s4 r4 f3 i% `+ T8 { end& O7 \! i6 t8 Q+ V% |# y
else
+ @4 _7 {1 G" A* }' y begin
}( L1 l4 h! I9 P6 P/ i% G tens <= xtens;! |3 Q' e8 Y j. P6 x M, I! K
units <= xunits;: ^4 l( t+ Y& |1 i$ H; t
end
3 j7 d5 f' \3 b* D7 w ^6 J end! m, j# M% T; T$ H
4 A; _& F/ ?4 y8 b3 g: }& }
always@(tens or units)
) G' b# o& s5 I6 z6 Q/ ` begin
- O+ R. K2 C$ r4 ~) u0 J/ l; v+ k if(units == 4'd9)$ U5 O" Y3 S. \
begin
9 q& I3 l' V; R: W) ^4 m* H xunits = 4'b0;
; H/ M n6 t& `" Q xtens = tens + 1;
# h3 X5 x# {3 y2 \) \9 F4 q if(tens > 3'd5) a$ N3 W4 ?4 Q# \8 l$ l( X8 d
xtens = 3'b0;
1 D9 k! _' I, x) q# N else* q. i1 H0 d8 ^2 G, {
xtens = tens;7 F; t H# z& p$ Y( ]
end G- J& u9 l! j' P& ~( `4 ?! Y9 X, {
else, l& X( [ r7 z3 Y- \( T
begin
$ `2 H5 q6 O+ ?2 g# H# o" S! L3 C xunits = units + 1;
' Y7 p/ i! k5 ?( D) ` xtens = tens;
2 z5 @# j+ C2 }4 U, l end1 Y$ x$ H5 f: @ k# K
end
3 ~, X+ S- m1 oendmodule |
|