|
原帖由 monkeybad 於 2007-8-28 10:40 AM 發表
8 e) O: n( U" w2 W如題5 H- I8 f" V' x8 e/ f T; V9 q! w
小弟我目前在設計一個時鐘電路 需要一個記數器 不知道這個問題是不是屬於這個討論區
- E6 [9 c; k' q: y4 t如果不是麻煩版主修改一下囉
8 w1 O @4 X5 o( I1 \( `# D3 G; A& v( u0 b0 k$ B
目前這個記數器要能數0-9 接著就進位 然後自己reset繼續從0開始 進位後訊號再繼續由一 ... 1 s3 D* E. U% o* _
- l4 J* m0 o. l' N大大您是要寫Verilog還是電路
0 ?! r5 i3 |, y8 y. e: v
% Z* I" N! y% ^: N6 x先PO個RTL Code參考看看5 l1 d% S; ]1 x8 |9 I: ~7 D
1 ^* k5 b. V) ~& L" F6 ^
輸入:N clear load clk
0 C; x. j/ l6 {輸出:count( R4 G) n# F$ h5 `& e1 O. s7 }
3 S$ J3 r* f, V' ~
行為描述(依照優先順序)
5 k7 |. U5 c- v. {0 P S1.如果clear為1,則輸出設為為0
/ m$ d/ W- E' K9 A' I2.如果load為1,則輸出設為N
- ]% {% k2 N# u3.每個時脈輸出遞增一次(BCD)
- c# H$ N: t0 N1 V' a. u1 G; N" P8 D3 {
4 S1 |; z# N# E; p
0 g/ b' ?8 j4 P; s; ]
程式碼:: g, s/ @2 \7 G- r O
BCDcounter.v
9 I$ N4 N( C, Y) ^8 {' f" Z2 E
* q" p, s9 n: M) nmodule BCDcounter(clear,load,clk,N,count);/ P$ I, p$ p3 ~
input clear,load,clk;
6 x( p# u/ W$ I" d( uinput [3:0] N;7 R3 p+ g: r, }# X) k* Z
output [3:0] count;
: A' q0 c3 k& }) D6 j" }$ F7 ureg [3:0] count=0;
9 E0 L8 t, N" m% c2 X
n0 P: E4 T" b: U. Halways @ (posedge clk) begin7 s6 j7 n7 K, [4 q5 t$ ^2 L
if(clear) //clear=1
! j4 T! B' `+ P count=0;( i, h" v; j: k
else if(!clear) begin //clear=0(共有0 1 X Z四種狀態)
& J# N5 _) C9 o4 d- Z if(load) begin
0 J6 Y& t) s$ Z8 Z+ E8 I# G if(N>9)
7 A; G) v( D# N! J+ \( j% u count=0;5 O4 {5 q% E. ?& r7 U6 U
else! W) U/ E& C/ D5 u9 G
count=N;
" M& ]8 f/ j5 G: D" f end. @" \. D3 L. I U
else if(!load) begin
+ ]. S/ T0 ]6 A& S* L count = count+1;
! j0 w6 V3 a/ p# ] if(count>9)
& F5 m' h8 O/ S count=0;
4 e S, I' r) c9 Z" Z7 b! P end
. p# |. L& G% ^; x5 o9 b end
: O- P7 ]0 b; q7 z" W, Nend
/ d+ {. n! k. L, w) Jendmodule8 L! Z6 f) o, g
1 k8 X7 T9 Y4 E: f, h0 Vbcdcounter_tb.v
+ X9 W$ C9 [$ _9 s0 P5 Y* g+ t% L6 E, Q6 ]9 c$ t& c
module bcdcounter_tb;
7 p+ j! Q8 ^% Ereg clear,load,clk;
; q: Y+ V; j5 N+ r( Creg [3:0] N;
8 c9 N/ F4 J+ J N& n/ c; n0 ]wire [3:0] count;
; i" u4 I% n: H+ q; Z+ t+ J4 O" B" P' K% e5 l
BCDcounter m1(clear,load,clk,N,count);
! C) [ C9 ?7 g0 q+ U4 E6 i; d1 X, a
initial7 o' A# N1 H5 B6 q6 w
clk=0;3 G% R' d9 P- N* G. s( Y
* h T0 J: ?; j5 N3 G
always #2 clk=~clk;$ W! i2 O. j+ q8 m
: m( |6 H% B6 a: Ginitial
! m4 u* |5 c& F( X#160 $finish;) y: W1 C Z: `! R4 N
- ~. p g3 D" V1 M. \
initial begin% U' x% ~1 y3 p% I5 D3 E6 p' N
clear=1;
- h' t% {5 \+ r+ Y#4 clear=0;
; M+ a6 ~6 Y" {/ s5 E#90 clear=1;
4 u/ a* V' N8 |* j; h* t4 Z5 Z#3 clear=0;
! `5 O6 `; E3 J. A* kend5 y6 [( m% W7 Q: w
5 h: j; o& Q) T8 D5 G) T/ Q
initial begin
@1 q/ f x# m0 v N=6;load=0;
0 I+ R# f" C9 q3 w#58 load=1;
$ L5 b H( x' \#2 load=0;8 d4 I5 N8 W( T3 q, N; h
#22 N=12;2 r/ _5 [/ z7 S! e! N
#40 load=1;
* Z" M! }$ l* W/ H$ {" |4 |. {#2 load=0;
4 k/ g- m8 K H6 N/ d2 Y4 Qend7 `3 g+ R5 S: n0 ?' Y
* o3 z) `& t* M5 H: Z. b; q Vendmodule |
評分
-
查看全部評分
|