|
原帖由 monkeybad 於 2007-8-28 10:40 AM 發表
$ K' I& J' j, g# @* i2 [ e如題
# _9 D! ~6 E" a' Y1 R) e7 G; k: P2 J& d' `- ]小弟我目前在設計一個時鐘電路 需要一個記數器 不知道這個問題是不是屬於這個討論區
" J2 n8 O( K8 y. t# u如果不是麻煩版主修改一下囉* R4 N) {( l U* J# A2 C! }
" B2 S; k5 H& L+ A! K7 x* X5 T
目前這個記數器要能數0-9 接著就進位 然後自己reset繼續從0開始 進位後訊號再繼續由一 ... + u& A, P+ f5 T9 s: B
; }2 J0 d( M p
大大您是要寫Verilog還是電路
9 l0 `' D5 D W7 V5 h% h! ^ p# y% [* C
先PO個RTL Code參考看看
; m, V) {: u2 C1 x6 y4 L, a' Y: j5 j
輸入:N clear load clk
" D4 |4 @4 s. l* Y% Q輸出:count; {) A& g6 n6 p
) P. S' E F r4 L行為描述(依照優先順序)
, c8 W2 F0 b. p' i/ r1.如果clear為1,則輸出設為為0
$ \) y9 X8 H) z ]2.如果load為1,則輸出設為N
+ i, y# v% ], w n: k3.每個時脈輸出遞增一次(BCD)2 R: V5 u2 E9 X1 ` C6 G
& w! U$ U o2 d$ P7 n! v6 ~$ Q" t8 z& [9 a
% O8 w$ M$ q4 y0 x程式碼:# u( W$ y! T2 ]1 i/ J
BCDcounter.v0 p/ m ^% c/ ~. @1 e5 d/ U
- x( {/ m5 Z- s% {# J. P z! X( amodule BCDcounter(clear,load,clk,N,count);
5 ?7 D# w: I" t9 x; ninput clear,load,clk;( D# v* e# x* i2 y0 @( W5 }
input [3:0] N;) Z4 F+ n! M+ k U2 U
output [3:0] count;% I/ r! U1 V+ A$ i5 C& g
reg [3:0] count=0;
6 l$ ]2 F* _& X% J: O
& a- O t0 V1 G6 s- P; Y5 N" Talways @ (posedge clk) begin8 e5 f2 }% Z" M; l) D& f' D/ Q
if(clear) //clear=1% B5 _1 U; [4 x+ e0 y" c3 J( q) [4 W
count=0;4 C/ y# q; b) U
else if(!clear) begin //clear=0(共有0 1 X Z四種狀態)* m6 q1 e' u5 ?) o5 e( _
if(load) begin5 o: a" u6 N c9 J, c$ u! ^
if(N>9)2 X8 D+ Z$ d8 y
count=0;% ^; M- W/ c2 }
else; P8 o1 @9 A: p5 \
count=N;
9 ^* I7 ~9 ~6 Q end
/ I& T7 _$ X# K* ~" d% H else if(!load) begin* B$ h8 R8 J9 h
count = count+1;' }1 U# [& _2 @- }- |. l, ]9 M
if(count>9)
* X, e# T3 J4 }: a count=0;2 k7 L) ^4 k; O a
end" g4 |5 h2 B' a3 p& L8 K* M
end
# Z" Z( I! ~7 V W, U/ pend
7 \! l5 T) B: v4 D) q3 }( u1 g* |endmodule
0 u/ r. k: E7 {! y* ]$ [2 }% g- G/ m; r! ~" o7 `* }
bcdcounter_tb.v
$ | }0 [' r+ P$ u; H
2 ?9 ^7 G3 O2 _! O" O& v/ f2 Imodule bcdcounter_tb;
# h6 Q d, N# L/ T0 ]7 _1 oreg clear,load,clk;
/ ~, h7 X0 i# p4 kreg [3:0] N;: C# U0 x' B4 n a- w
wire [3:0] count;
2 I7 X# x) U0 V& }0 b0 Y; o8 s/ G
BCDcounter m1(clear,load,clk,N,count);1 g/ ~: Y- X% {( W- y
. k$ Q U9 P! @" R2 [ f; D
initial
) i- ]9 G5 }, z- A3 u/ Wclk=0;3 H5 }- n: Z5 M, x
# G9 P$ ~, f; e
always #2 clk=~clk;5 c/ Q4 \' l1 R: j5 m5 \8 l, ]
+ ?" u% @( S) winitial" r9 w0 B; W' r' ^
#160 $finish;
; R4 i6 ^5 ?& Q9 ~8 N8 D7 Q! B( T) c* r; L5 [% S; O/ V' K
initial begin; |; b, i# `( A& ^& I
clear=1;, m& B3 s5 K4 B& f" i
#4 clear=0;
9 K; w/ E( J- k" g" q* |#90 clear=1;5 C0 m: p' E. |) Z. \3 m+ B
#3 clear=0;
7 k/ w$ |0 R& | o( Y! wend
O, }8 O* T6 V0 e: J6 ?; o- i% W: M. w: r7 Z1 H
initial begin
% l9 x: M+ ?# W N=6;load=0;1 v$ |. z& x9 a% s9 a; Q8 |
#58 load=1;
* T4 X! Y' f H7 G$ ?#2 load=0;
- f' A( r% t0 L1 A. b#22 N=12;3 u& q' K6 K, Y$ F6 T1 z' |. }) Y
#40 load=1;
5 H; L6 l2 E) a0 n" L" {& p5 V Q! c; |#2 load=0;0 n, g) ]( R# [" G, o6 h( l
end
% S8 { Q, W1 p- O
4 l0 Y5 L. @6 g6 E' |$ xendmodule |
評分
-
查看全部評分
|