|
我也來寫一個
. c; Q6 l2 u5 l0 a. c0 \輸入:clk, rst
: D7 Q+ K4 c# j' k輸出:tens(十位數), units(個位數)
- H, a- M2 z& T3 `0 W5 a3 L2 @, D' E% y, h& F
code :
' f" X/ ?& U- F% x1 A- K9 u8 M. X* w% n, y! u* {# f
module BCD(clk, rst, tens, units);! t* \- Q i: E. f
input clk, rst;
$ y D8 O( g8 |* N# K4 X$ A- D# j output [2:0] tens;; j* m3 E8 U& z
output [3:0] units;: k7 d% p' c. x- c% n
reg [2:0] tens, xtens; F z0 E Z3 x% N
reg [3:0] units, xunits;7 J% j( ?& X, H+ g. H' F
% v' W9 ]1 y0 A: L, B$ h7 k
always@(posedge clk or posedge rst)
$ q! @$ o* w8 E- X! N1 ?% P begin
$ _$ l* d1 W% h' d if(rst)- O- A t, T, ?; D9 j! l/ ^: ~
begin: K- C) u/ [& e* K G
tens <= 3'b0;
/ w) d5 G0 g* @- p* M units <= 4'b0;
' W; j* F$ X6 B6 W end
9 o& m% \/ s" v5 p+ ]1 _ d* S else
2 _1 j+ Q" r7 v; ] begin7 P6 I0 S; h( `% o. ?% _7 ~
tens <= xtens;7 h( z4 _% N$ ?) x
units <= xunits;
' d; g$ B1 S( r; u# h end+ D* [" r& Q% J8 H4 q% c
end" d/ T. K3 ^3 S' `& U
. H$ P$ {8 o1 _' r! |" g2 f
always@(tens or units), x1 r5 R+ r( C, l5 Y* D: G
begin
5 ?1 m( I: z) H) V6 A4 r1 u. s if(units == 4'd9)' U: C; d5 X- U( C$ u$ b9 z: i
begin
9 k( F( \, F0 B1 B: A xunits = 4'b0;
: t, A5 y$ V* R8 ^) E xtens = tens + 1;; k& u" Y- T4 y9 t7 @5 ?
if(tens > 3'd5), E1 ?% Z- Y, X8 P: N# L F
xtens = 3'b0;* X' l7 Q! F$ u* R
else
8 [# \& B4 {; H xtens = tens;7 o/ x: b7 w" F
end; O v8 x3 |. V- D7 }# b
else. c. [* T8 D! V/ e% F& U
begin
( {6 T5 k. G3 g0 Y( x# h0 h xunits = units + 1;
" H6 D6 Y( P, b, m xtens = tens;
2 Z* j" H2 ]4 U8 z S& F# U7 M2 X end" `; Z3 d4 y9 P' U6 H6 ~2 |9 r! T
end
/ A [9 S/ c0 a% M0 r: ?/ a# w# U7 _endmodule |
|