|
原帖由 monkeybad 於 2007-8-28 10:40 AM 發表
+ H, R; l5 }: S/ F如題( {- d8 f0 B0 K/ u2 t
小弟我目前在設計一個時鐘電路 需要一個記數器 不知道這個問題是不是屬於這個討論區
( u- a6 j- M0 }- K/ o如果不是麻煩版主修改一下囉9 g0 k$ x" o% n3 ^: N6 B9 c
& t& K( y/ Y0 h5 D目前這個記數器要能數0-9 接著就進位 然後自己reset繼續從0開始 進位後訊號再繼續由一 ...
4 H2 Q C5 @1 x
$ z" @/ b; p5 W* `大大您是要寫Verilog還是電路
1 i. V% U# v3 S
" u7 N5 C: m4 z4 c先PO個RTL Code參考看看% T V3 p4 Z6 s# B# T" Z( g
; W! V& O% ]. K
輸入:N clear load clk
7 S, B, M& t3 @. V- e& p# q輸出:count
& q* b* C2 s! }( e: S6 x$ u8 n% t x6 S2 _ u+ J
行為描述(依照優先順序)8 s f5 b. l R8 m) @
1.如果clear為1,則輸出設為為0
/ T9 B* t6 T8 n2 p2.如果load為1,則輸出設為N
7 i% y: B. n' q/ {! s3.每個時脈輸出遞增一次(BCD)
: c& Z- K2 l' J6 d0 P
$ S) G' \0 Z! G9 U% A! D8 p5 Z- W& [: c' S3 O2 R3 e; [
. r5 k: D" M9 L
程式碼:
+ \9 [; K+ g0 w0 N1 X' TBCDcounter.v6 T- a; n& p% J9 X8 J
0 P0 A) Z) p+ _1 l% M4 n. xmodule BCDcounter(clear,load,clk,N,count);' R- D8 ]4 X+ x8 x. ]" e k# v7 P2 E
input clear,load,clk;
4 ~. ]- K3 m0 winput [3:0] N;9 A8 T& a' z' p, z" s3 B1 r
output [3:0] count;
" T5 ~3 Z3 z0 s; l5 b8 ~reg [3:0] count=0;( j3 D2 p L, E
+ [& w% s/ {. K+ a# S
always @ (posedge clk) begin
6 w- S$ J. V" j. g: J% C if(clear) //clear=1* e# n: t* [1 V7 u: I5 I
count=0;
& Z: o9 G2 B" a ^/ a! `' n else if(!clear) begin //clear=0(共有0 1 X Z四種狀態)
0 a. \; a+ h% k# q6 s, j1 d if(load) begin
( @" Y! h$ y6 o! h9 M; n if(N>9); L( b! L8 e$ I' S
count=0;
; F+ c1 c/ [6 Z else) D4 t% _4 W% ^9 U% N- Z! Z1 ?3 x
count=N;
: \! `- t( d4 o) @ end
6 f2 J, e' T- Q( T4 l8 c: N else if(!load) begin0 h, Y1 |! S# _$ G A
count = count+1;) F+ y# B9 A& O: [$ ]
if(count>9)/ T& m W% E! f7 Y+ H
count=0;4 o4 _* f: ?0 S2 j. d. ~
end
1 [/ G5 G6 d8 V z- | end# y) e; d1 M4 N/ X& Z$ Y2 ^8 S
end% N, U1 ^, U9 I+ q5 d7 ~
endmodule3 s; l% a" d! E& g u
" g% Q: h: M" a0 y x( obcdcounter_tb.v( @8 f% h+ i( V
: V! d p' I8 C; l, R) M- H, V5 J
module bcdcounter_tb;
5 ^- ]+ r4 V/ i* D8 z1 W1 l; @reg clear,load,clk;: ?, ~4 I3 c' V( C, r# R6 O
reg [3:0] N;
) j! @8 |1 g. r3 H5 i5 Hwire [3:0] count;
4 a" @ X" s( E& v: C+ v p, @' \' T6 l. ?* R: d( Z
BCDcounter m1(clear,load,clk,N,count);5 o& E# |1 @5 x
# B% \: Y f6 Q1 g, B$ @
initial( w" A( Q k3 r% i7 e
clk=0;+ u$ f% F. r7 k; w
- ^' f- V6 O/ q% u+ P6 U) u
always #2 clk=~clk;! C- @$ K. H( V; Y5 p6 A% X& d
- z+ `/ H2 s8 {. c1 d2 Y$ o4 }initial
7 c2 D: V9 r' X, m5 E8 @0 F' W#160 $finish;
4 x3 k" g( L" J- E# L6 M& S
d" q1 w |* o/ o) Finitial begin+ s% f/ m, {( @
clear=1;4 O4 A8 U. p+ [9 r* f0 _8 M8 J
#4 clear=0;
7 M* U$ W8 d& {3 @#90 clear=1;6 A. M/ A5 b8 R
#3 clear=0;# z$ d9 a; X7 l' X( }3 K. ?1 v
end1 L+ d t& h) r, {. Q
3 _( g8 e1 D8 V2 Z" x. o; ninitial begin
# V: G8 P. Z- f- } N=6;load=0;" @5 B0 ^, s3 Q# g$ U$ B
#58 load=1;
# a* b( n1 o6 G! x% {3 q0 ~1 k#2 load=0;
+ x5 I' l5 J# B3 ^7 p Y#22 N=12;% A, E, ], _! J: Q
#40 load=1;) f* v+ V& Z$ _4 @' ^2 X
#2 load=0;& V& h/ w' n/ x1 o( Z
end8 r/ O ]3 r1 Y: D& W
+ G& C" M% R6 l8 oendmodule |
評分
-
查看全部評分
|