|
我也來寫一個, h3 ]3 [) k+ ]- [' S& a
輸入:clk, rst* g/ D( W K8 r
輸出:tens(十位數), units(個位數)
* s/ x# U- I7 P7 E" e9 I5 W
5 i$ c! H0 c& f4 o L% Gcode :
- F" L/ u# x7 u% k6 O W1 p# ^5 l$ u2 J4 a. G6 @4 D
module BCD(clk, rst, tens, units);
3 ?1 O3 ~2 L# R3 p input clk, rst;# }" B# }. Y- r
output [2:0] tens;
6 k; _3 o# {( N. y7 R output [3:0] units;. q$ B3 D" u' ], C; i
reg [2:0] tens, xtens;
; S$ E Q9 Q6 Z7 J reg [3:0] units, xunits;0 |5 E! l) \1 G
1 B7 L9 s& Y7 ^/ b z0 {# D8 p always@(posedge clk or posedge rst)
, _7 c8 h0 U3 M" q7 q/ r A3 d begin, ^+ P+ \, R9 e& }4 f
if(rst)
9 w' B0 c& M( {# d& m begin
7 K* ~6 h; N2 \- P- |' U& g6 Y% ? tens <= 3'b0;
. ]' C- g- t! u7 F) U units <= 4'b0;
, |) s+ g! A6 b% w# G end L& z( R. Q# y* n) x
else; U9 t0 J2 R7 c
begin' h+ R) p J0 M8 `/ O# v0 p
tens <= xtens;
- G/ N8 R8 O8 D* c1 }3 T9 Q% n1 D units <= xunits;6 p# X# G. x& |: j7 m
end/ W. J2 d1 j v7 l
end' A$ G; {% ]# A. I+ A$ a
5 a: C' p" u1 @$ f9 j% N, d always@(tens or units)
2 [" M& v5 L) X+ B, ]0 Y6 F- k$ O begin6 ?; r* u/ _( T$ }+ `
if(units == 4'd9)& B; B- y" [8 X! I
begin7 O ?$ E! Y' t9 H7 Y
xunits = 4'b0;. o. R v5 u: Z: x' Z) P7 c3 f
xtens = tens + 1;9 y% H. w3 |* I
if(tens > 3'd5)* X3 C k0 w' l0 J5 d0 V' i
xtens = 3'b0;/ u0 ?' U6 F; m3 z7 l+ f
else
$ w' D* k' ?5 j& x3 {/ d: ? xtens = tens;0 B. b1 w- G- G& ^3 i" @9 F- Z
end
/ t& h; B8 P. m3 B else
H L* u. n/ U, G. ` begin# f- W! ]. g1 Y' h+ X* u; [$ J. ~
xunits = units + 1;" m8 U) }+ y4 r9 K ]6 h
xtens = tens;
# U9 f+ D% t8 V/ r) A, ` end2 R9 P4 H$ r2 b1 {7 Q5 P, B% m9 S3 f
end
6 {6 d X1 I) u+ @% Z5 Zendmodule |
|