|
原帖由 monkeybad 於 2007-8-28 10:40 AM 發表 . T0 t+ j% E, T4 p) d% o8 U" Q
如題
* \" {9 F" u* b- P/ @; \+ ~& P9 i; g' H小弟我目前在設計一個時鐘電路 需要一個記數器 不知道這個問題是不是屬於這個討論區
2 y, ~) d! y c$ r如果不是麻煩版主修改一下囉. J" p2 P; a Z0 t; h# I
/ ~9 o# u1 M# f) _4 C2 r) t
目前這個記數器要能數0-9 接著就進位 然後自己reset繼續從0開始 進位後訊號再繼續由一 ... 2 I& V3 l, P& f2 S' A) i
' v! a. p' f: i大大您是要寫Verilog還是電路
+ e) A( R6 h( w ^0 F' m5 D
# |; ]# g6 A! H3 W) K M- D先PO個RTL Code參考看看
$ E, v3 W! G) o6 F2 ^ x$ ]& F; A1 f" }% K- k6 x5 t
輸入:N clear load clk
* d* c" u( i7 ?& T0 d; `( s輸出:count
3 R) A e* F8 b4 ~/ P8 y4 N6 }5 s/ u' c9 o
行為描述(依照優先順序)
% ~: Q& ^% C. k A, V* R1.如果clear為1,則輸出設為為0) Q) @. m0 r. I7 W: ^; i/ g' `' h
2.如果load為1,則輸出設為N
& N$ u! o7 i1 ?) ^5 c1 {1 G3.每個時脈輸出遞增一次(BCD)
( \' v- B1 P2 a9 h4 f! E6 A4 n0 }2 @) t3 t4 l- W
k" Y2 W( Q3 V( o$ l! x! J
0 H5 j9 W' r' `( T/ w程式碼:. z- j( q) p' c% {( L' q5 P8 f3 t
BCDcounter.v) e, v! J* p9 x; K1 I) r' d7 S
: M! t/ a$ @( a( Q `2 z
module BCDcounter(clear,load,clk,N,count);
# @) `( a1 i! B, F! [: ainput clear,load,clk;
% m& \' G9 @4 D# x, c# D1 ]input [3:0] N;
& T8 b( ~; b" M u/ toutput [3:0] count;
! r W" t$ R* r. Nreg [3:0] count=0;
0 T7 J8 Q' @2 R5 D) ~# h! j7 g3 B# a/ n U0 m& Q7 g3 [
always @ (posedge clk) begin
3 h7 }! k) z) a( p- [9 O6 x if(clear) //clear=1
" J5 {+ Z/ Y- y5 C$ ?" I count=0;
- L6 N/ o: K5 d0 q5 f else if(!clear) begin //clear=0(共有0 1 X Z四種狀態)
& `$ n" t1 U' [8 i1 }$ {' p if(load) begin% X1 K6 V" T7 b. T& E2 Z: e
if(N>9)
/ K2 z1 Y7 c$ r8 y% k count=0;
9 z' [ P* }( h! V" i$ V else. I" K" N! [. E) ^# g; a
count=N;
$ B3 x$ G4 v2 `* m end
, P8 v1 q' W% \$ S" T5 x" K else if(!load) begin$ o3 r7 X1 E$ d% n0 g/ X
count = count+1;
5 e9 \% b( l% R3 e. C5 q- x if(count>9)
) |, c' E+ Z, A+ X) U# ^ count=0;. ?. g+ Z3 M3 w- Y
end7 x* m1 H* Q4 w+ Y; X- C; ~
end
1 ?5 x# L( E( @3 S8 s/ ?end, O7 G/ K0 |2 s" h% n$ r
endmodule
- g$ @/ n) H5 |! |9 N) O5 z5 U" R4 s$ x6 Y
bcdcounter_tb.v& j: ~% m. Z# A# A& p
/ c. Y. {4 \# s
module bcdcounter_tb;
. |" |. f; k9 K" G$ ereg clear,load,clk;
) `4 I0 J P7 U* z& ?" O. Nreg [3:0] N;
# R' n0 G" g( r7 U H- ywire [3:0] count;' s6 y" G3 }8 p$ j c4 d2 n, x
! ]! g: k# N* W* \% W8 yBCDcounter m1(clear,load,clk,N,count);
/ m( ~, B% q. ?. a
' h7 t: j7 J6 D; `" z1 y- e Cinitial/ O$ X% l' J, k& e$ Q
clk=0;5 a. O+ A. ?/ _8 n# {7 S% V
. c. c- ?" k6 p9 N; walways #2 clk=~clk;( r* `/ }% Y/ R' ~( A- |
' X6 |9 c7 Q2 I, ~" a. R M6 i
initial; K6 o/ U7 Z( @( v& x
#160 $finish;
5 A: o P5 M- ` h4 [
1 E' Q$ g3 t, X7 Vinitial begin6 D) i3 h$ u, H( N, ]6 i: [6 y/ o
clear=1;- f- b9 a% B9 Q! m, {, l
#4 clear=0;3 Q! \: K0 U. [5 h( E; R! R
#90 clear=1;/ u& O) {/ U" O+ U9 B1 y
#3 clear=0;% ^$ C( s$ b+ P& {" r# T/ {5 z
end' O" {% G! n" {9 O
. U! J3 k$ Q3 Sinitial begin W2 @. L. E9 D1 y' {) I O7 w
N=6;load=0;: d; B# [ o1 P4 e" w& }
#58 load=1;9 D: ~, C( b0 u3 S0 m# i! q
#2 load=0; i6 k. i+ D0 W2 r' A z
#22 N=12;1 h4 ^) \. h: o2 W3 u
#40 load=1;! [. J8 O( {9 k* Z: I. Z" s
#2 load=0;0 K1 n |: o8 ]- b" G9 }/ T, x, \
end) i" u3 P; v% u% j
$ ?6 T# d5 M2 ~# \' k$ r$ p/ Z% Dendmodule |
評分
-
查看全部評分
|