|
原帖由 monkeybad 於 2007-8-28 10:40 AM 發表
5 f$ s! D" Y( X% w如題) r. A7 e- y; q- O, E& b
小弟我目前在設計一個時鐘電路 需要一個記數器 不知道這個問題是不是屬於這個討論區
$ g8 Q$ E. V3 n; q# Z如果不是麻煩版主修改一下囉9 @/ G' v7 G! }4 B+ m
: |, S) j8 C3 c1 J$ _+ B
目前這個記數器要能數0-9 接著就進位 然後自己reset繼續從0開始 進位後訊號再繼續由一 ... ! m- }1 G' H# T
& L- l9 ?3 P' R$ j
大大您是要寫Verilog還是電路
( @% G9 v' i& d7 b" ?4 c% T9 O8 A+ ]. w4 {, o+ g
先PO個RTL Code參考看看
1 v" c* ^3 ^" O i( [- @$ S2 x0 `/ M% \8 r
輸入:N clear load clk
! m6 E1 ~- O; C7 q輸出:count4 {( K9 y7 I9 P# B
0 l; O! {- U/ K- C; S. g" Y9 {
行為描述(依照優先順序). D! q7 ~7 _9 ~0 `
1.如果clear為1,則輸出設為為0) {, {9 J* g5 {, _" |
2.如果load為1,則輸出設為N& e g& F8 E' p6 h0 v1 J" `5 s
3.每個時脈輸出遞增一次(BCD)
- g% B5 C+ |6 w1 p$ J. Q J; |2 [9 U1 L1 e
' z. J) p! u# y& A3 n' Q- D% l) ?& D$ o1 X* Q; {: g7 c
程式碼:
) U( f6 n7 N' J4 ^% X& O# |+ c( FBCDcounter.v
9 k! u: g, ^; z
+ _$ H+ C* x5 smodule BCDcounter(clear,load,clk,N,count);, A5 ~# ]% V, _' P8 i
input clear,load,clk;5 z3 L T1 `6 h7 s/ P1 b7 H! `
input [3:0] N;6 X# T4 T5 h- q; L$ J+ X
output [3:0] count;
' Y; g3 f4 T' P6 A1 p" Nreg [3:0] count=0;1 D" g5 t, e* t1 {9 E
0 f% v5 A5 Y, v$ i1 f
always @ (posedge clk) begin
: t) K M: d' y9 T if(clear) //clear=17 o7 Y, L b5 A' m* {; N
count=0;
% T- r1 u, H( V) M) H else if(!clear) begin //clear=0(共有0 1 X Z四種狀態)
( X3 c- p, _6 j2 E2 w( b if(load) begin/ ?% k. c6 S# s0 Z d
if(N>9)9 g/ o$ U* e$ J" q' D
count=0;4 M6 `3 ]; s3 q; X) O1 M2 f
else; G7 u* J. |! B
count=N;
7 T/ a" Y5 {+ q end/ e ^- }$ K, H* z) p7 S" C* E( J
else if(!load) begin
) y4 J9 X9 S; e! T count = count+1;4 B- q: W+ k: }- V2 `1 X, m6 K. d
if(count>9): M* R( V$ S! R" V) U% ]2 v; \+ u5 C1 `
count=0;
3 ]" r# a7 p! G9 r3 h' C9 C end2 j' W# c. d" n8 o
end7 \! \6 R; x5 i6 a, o* `4 F
end
) K8 l- n7 a; N! k; Q$ Dendmodule& S: [. Z/ w4 Z' e, |
# k' S7 S6 w+ m: `; M) Cbcdcounter_tb.v
e9 m0 ]0 _/ l
: [1 q8 |3 |. \7 x9 O4 kmodule bcdcounter_tb;
5 D6 f0 t" ~* q" Ereg clear,load,clk;/ \: W0 _) ]1 K' @: z3 F
reg [3:0] N;
: [8 e* z# k" l7 X4 Iwire [3:0] count;
7 C. A/ P9 X# E7 [& ]7 L$ k& h6 H8 X
BCDcounter m1(clear,load,clk,N,count);; z5 d) V" w" `( o! B
& v3 T! s3 A' W% ^1 k b
initial
# I$ U6 w4 b5 oclk=0;
* D1 z4 a( m7 F; f, G$ M, q" c& \: V4 _: c
always #2 clk=~clk;
9 p, Z; b P2 {2 H6 r3 B% p( P. }8 G5 r) E3 k6 u$ `6 f' p
initial8 V+ F0 O2 f0 n; z# D
#160 $finish;3 ~2 c# n3 c, R! v, }* |2 k7 n
( N% ]. W. }/ T" |initial begin
% v" j/ Y3 B2 ~& m2 g* \0 C clear=1;! W8 f1 y3 t5 c4 _+ S B8 c
#4 clear=0;
4 K. m% i8 K( U8 ?5 I#90 clear=1;
. G( J, l/ L7 \/ x$ \# N. g0 {#3 clear=0;
& \2 I. {* u# t5 P" K" `- ]end
* O1 W; v$ d3 P$ m X) }8 y, d5 |2 h- }9 C" F
initial begin
1 [ c# f6 D( r+ d9 p6 _$ D1 w. m N=6;load=0;% y2 k! Y8 W) [
#58 load=1;
2 @4 _+ z6 }' H' w! N( \#2 load=0;6 C" Q |* `; V, E# E: K6 }( c; T
#22 N=12;
3 }" m) y- J0 T7 [' k0 F) U#40 load=1;
8 l" n/ W4 G" r8 b# o#2 load=0;2 t& V0 r( k! n$ j, G
end
3 J% C0 q% j( j+ }5 w& `% @' G
' j# `/ J, O6 d1 g/ p Uendmodule |
評分
-
查看全部評分
|