|
原帖由 monkeybad 於 2007-8-28 10:40 AM 發表
% p6 R$ B2 Z6 |4 O如題
6 \* z5 l9 I5 ~6 c( j6 v$ n$ V小弟我目前在設計一個時鐘電路 需要一個記數器 不知道這個問題是不是屬於這個討論區
1 O6 |0 y f& E& j6 q( _$ b' P如果不是麻煩版主修改一下囉
4 o5 q4 q: Z' d0 N3 Z: s
3 y3 T2 b- @# x6 v目前這個記數器要能數0-9 接著就進位 然後自己reset繼續從0開始 進位後訊號再繼續由一 ...
7 j" k- H; T/ V% }6 B; M# B* B# U0 J2 |6 B) E8 P; m
大大您是要寫Verilog還是電路
$ X! A& x0 x, d3 r8 T4 W+ Z1 P+ W
$ V3 @: g4 q+ U7 m先PO個RTL Code參考看看$ L- [: |* ]# A6 R5 y+ b7 s% n
% A) V- q( H o6 I; N" F ]& @+ s$ d輸入:N clear load clk/ k6 N* v5 U) g: k; A" n$ L
輸出:count
5 r+ ^9 g p9 w, p/ U. O. X$ P2 e# D2 ^; }. Z3 T" L" S8 O4 }
行為描述(依照優先順序)4 C( B) D. p# h
1.如果clear為1,則輸出設為為0
+ Q7 I9 z( T: W$ q: q2 \6 G2.如果load為1,則輸出設為N
7 _# v$ g% H' J7 l5 N9 h6 {. C* A3.每個時脈輸出遞增一次(BCD)8 I$ P! d7 z/ B7 p' g
4 t- [8 F0 b1 i* p4 e1 i* E
$ ^' X; K# z, n3 |+ y% ?* m
1 o1 t( }6 N Q" Y2 g程式碼:% k7 v( e6 N' e5 g* H
BCDcounter.v' Y( i, f: K: L, F2 p$ B( S
2 }' ~/ `1 d$ E6 w+ }- fmodule BCDcounter(clear,load,clk,N,count);
" G" T, D- {$ y6 }input clear,load,clk;
" h6 m7 s& Z& U" p7 `* x5 R/ Zinput [3:0] N;; U3 p7 y- P p: n
output [3:0] count;7 ?" F8 P3 [" I1 l) K; E. b$ e% {! s
reg [3:0] count=0;
1 {8 G* P+ j8 q0 u, W K, E; j* U% _. b* T$ h0 v# V
always @ (posedge clk) begin% d0 E1 S Y/ Y8 V8 o: x
if(clear) //clear=1- \, r# _* w' K/ B0 W* `
count=0;0 o5 @% I: U" ` i4 w$ E
else if(!clear) begin //clear=0(共有0 1 X Z四種狀態)
, w; }, B5 A. q+ p) C8 L) U if(load) begin
# V; N9 t7 j1 C5 O1 G% E if(N>9)
) a8 K2 g9 f/ F p7 W- [; i3 v) a8 @* t count=0;7 `/ p6 c0 N; s' Z! d$ S
else
" D9 _, b: P9 w$ h @ count=N;4 q& p$ ^( N8 O" o$ Y
end
4 Z& Y D6 D+ ?5 Y else if(!load) begin! |+ Z0 h) g L
count = count+1;
5 ~7 A8 r$ M- X6 G7 v6 A if(count>9)
5 l. z$ M# y7 N# L2 F- }+ |/ D& A1 J count=0;
{5 G5 m" ^( b: _: { v end
8 p) V7 |( m$ d- T end6 h( m/ M/ ?. U5 X
end, F* U% y" u( r; l5 Y2 S
endmodule/ ~* E) o% I: r$ n2 }6 ~
" K; ~; S; i# j8 r- R: Rbcdcounter_tb.v
# Y ?) A/ @ @7 [8 S9 d* \" Q2 S+ e- l ]2 T/ x# a- T- \
module bcdcounter_tb;% n: U% h2 o( F c( k
reg clear,load,clk;! [% X. p' o# Q& v
reg [3:0] N;
+ g* r- T9 r$ r9 m0 A2 E9 _/ fwire [3:0] count;+ t7 ~" K3 c2 G% Z( I. b
( g1 S/ r6 q% z
BCDcounter m1(clear,load,clk,N,count);
3 f/ S* ]' g [% j/ t% H& N$ e0 u0 t# X& I
initial9 u8 {. e5 }! g; ^0 W1 y7 d( Q
clk=0;
9 c- ?5 I( R0 d( e# Z& L& e( q+ X9 b x: @7 H, f" B
always #2 clk=~clk;" {3 M) U* V% V9 s0 o
, q" A# O! Y5 j, _' [4 G4 G, Rinitial
( H8 f3 k7 k* t#160 $finish;. ~$ T3 `8 a6 W1 u( Y1 E
# q) w: m$ ^& H# Y* hinitial begin
3 s9 y8 l( S# {5 z clear=1;, e- t- n$ |. t4 S: F" G7 r. M
#4 clear=0;, a0 J1 m2 ^) a' M
#90 clear=1;
3 a! @1 ?7 l* W# l#3 clear=0;9 n' o7 ?8 a* d
end, z8 O+ c3 P9 y: c [. L2 E8 |) Q* M! M
# q4 K9 n- ~" }" ainitial begin+ D/ |7 V8 J3 e r0 N9 j
N=6;load=0;
* K) J4 I. M7 d8 x1 c# o( c#58 load=1;
+ k( D1 K2 H% Q. P6 t#2 load=0;# F2 b/ m/ a0 _" K" C" }
#22 N=12;$ Y x. B( f4 L, V
#40 load=1;
3 m5 t8 K: J, k8 ~ C#2 load=0;
0 J& h; J* m' N. V5 Cend+ K" m L; P2 ]& w+ P
; h5 }. {1 c. ~6 I0 oendmodule |
評分
-
查看全部評分
|