|
我也來寫一個- I6 q" |$ ]7 m$ h' Z" T) `, Y( |
輸入:clk, rst
: D& r4 F x, l# ]輸出:tens(十位數), units(個位數), R- f/ E% L% i; a! p: t
+ W2 w' ~. C5 K+ l
code : # N$ {$ n* L2 {% q0 }7 N/ V
, p2 m4 Z$ d; S2 O) Y* h
module BCD(clk, rst, tens, units);
# `, D4 L) n+ e1 ] input clk, rst;9 }9 ^ U, Q* ^7 c D5 H% o( k* _
output [2:0] tens;
: T! o* L$ d8 h. _ output [3:0] units;, J( ^/ l+ M- x
reg [2:0] tens, xtens;
7 I* I3 c/ @4 |8 `. i reg [3:0] units, xunits;
- V C# L" T1 {/ Q: z6 K
( Z' Q9 i4 M g9 { always@(posedge clk or posedge rst)
6 ^+ R1 ?% j! ? begin
; i7 f+ P/ S& ]* T# k3 Z" k6 ^ if(rst)
) Z$ ?5 k7 A( ?. M5 U- ]& Z begin. ?: P4 x$ k+ P; k
tens <= 3'b0;
% A' j3 T% z( @ units <= 4'b0;5 A8 Z4 C2 @" l K
end% I* I" c' p" ~# l7 \# @0 M$ N
else
. r) S n% d' @# Z C5 K# h begin
* i! Y9 y* \1 K tens <= xtens;
3 T7 u' z8 z% }' M% P- B) ` units <= xunits;
' J8 ~% s) j& | end
$ K9 _9 v- e" m8 |" F" ` end1 D2 d& @# Z) ]% @* H% C
; u: _2 c( n! }: P always@(tens or units)- L1 y( G8 O5 c
begin3 Y# {; o. K4 U
if(units == 4'd9)
6 d( w+ Y& g+ P! d0 |. Y E! q3 L begin- C0 W3 l6 S; v+ ?8 A3 p8 |. w
xunits = 4'b0;
e- P; e `8 m0 ]- n: e xtens = tens + 1;
# Z4 x2 q) f/ d# n0 m! g& d+ j5 a if(tens > 3'd5)3 t% w% b! k$ @, {+ O
xtens = 3'b0;) P9 H6 C* g _: @# K0 B" a
else
( g/ I. [) L! m' X" m xtens = tens;
- }0 ]/ }0 `3 w7 K$ k, k( u+ v end8 A& v: F1 _( ~- F4 s
else
- x, B7 [& N7 ?4 v4 \# t begin
/ ~- z* v# [; N' U/ R5 G xunits = units + 1;) d; g" D. G3 _1 {$ ^% f$ C
xtens = tens;
3 b2 y8 h; B1 i8 @. { end" a# n/ y8 D; ~, U. E3 n3 y! V; h6 B4 K
end) O( Q! R3 j J0 s) q1 L( r
endmodule |
|