|
我也來寫一個
! v. O* z( F& I) O; o: v+ a) ]輸入:clk, rst, t7 C& F% R7 }
輸出:tens(十位數), units(個位數)
. z$ u; w! c# J5 {7 y3 M7 G3 O% v; u; G
3 s4 D- _) X: H, T' H, qcode :
: F6 Z6 Q! L; Z2 ^5 I; t& v) m
$ k! `, ?) W/ \8 \/ smodule BCD(clk, rst, tens, units);& y# F+ `) t# Q" G4 f1 m* \
input clk, rst;
' u& o/ n1 X: A3 E8 k6 R output [2:0] tens;% ` n. ~: ~+ ~4 B8 _0 c
output [3:0] units; q$ d# T- _% F* ]& F3 {
reg [2:0] tens, xtens;! R- K% K% [9 L
reg [3:0] units, xunits;# Z! |6 |5 K- C1 v- W5 L* s
1 y0 |# a9 X3 |/ H/ L always@(posedge clk or posedge rst)
' v# i; x! }( ^8 Q: \; Y begin' k! D" A. N+ k+ h' M; ?
if(rst)
* h1 t p5 g+ t+ u3 p$ X1 B/ p begin `5 {8 ^" o" [" {& f. d
tens <= 3'b0;
E4 R4 a7 c9 b units <= 4'b0;% X0 ]% {% A$ j: H4 u( C5 c3 e
end* e; |/ g4 d" ~( q# _
else
0 r: i1 @- G* c begin. c% _' Z2 u2 U) n
tens <= xtens;
. |4 k2 H' F0 ^# o/ F units <= xunits;% O6 `" ^: ~; A( { O, A
end+ N4 _7 j8 r5 C" h/ h6 E* H
end& e1 i) d9 t7 q$ n4 \
8 J7 z9 E! h4 N7 K1 T7 o always@(tens or units)
3 `( x# I0 g0 G" Y; z/ n8 X begin
! X+ b# [2 A' \* w$ ~ if(units == 4'd9)
( | |$ \2 Y( L5 \2 y" F1 t begin1 j: y3 x3 F+ ]: Y# R+ @ K/ s
xunits = 4'b0;* _: [4 y# D L) M# r4 T: ?4 j4 m$ e
xtens = tens + 1;3 r& ^5 l" ?* S# i& q: |6 l
if(tens > 3'd5)
' b5 `% X( S& k6 H; R" T xtens = 3'b0;% M2 c7 D: Z/ x
else
% P% r' ]! U4 G$ m% i xtens = tens;# `+ T4 o, V9 I0 A! j
end$ Z5 D! A4 B3 `
else k/ l: K2 F a; V" [
begin
; j! `& z q/ w! w- I- c xunits = units + 1;, K0 U: D) R3 b" B/ b
xtens = tens;
0 R. S1 T6 x# x1 \ end
# K6 I3 R M+ _& S: M$ e* I& G5 G end
# C% c! |3 [' y# a( G/ Rendmodule |
|