|
原帖由 monkeybad 於 2007-8-28 10:40 AM 發表
/ L. t! k( p" m4 _- `% F7 s+ }如題: L3 A7 ]- G& v* T4 w7 W9 g8 i9 x7 X$ }
小弟我目前在設計一個時鐘電路 需要一個記數器 不知道這個問題是不是屬於這個討論區& a5 E# Q+ y. ^0 `1 w# a T$ |
如果不是麻煩版主修改一下囉
* \# s" l. D! d3 i+ k
/ S9 \+ g7 c% I4 K0 j8 k; ^目前這個記數器要能數0-9 接著就進位 然後自己reset繼續從0開始 進位後訊號再繼續由一 ...
" w5 a Y* T0 S2 D' R2 U; Q
" Y1 ~8 F, o7 L; Z! E: E: \1 @/ x _6 f大大您是要寫Verilog還是電路
5 L0 p. D; v6 ^1 M9 ~ `, j) n" Z: R
先PO個RTL Code參考看看
) ~2 ^- R0 p7 L' f( E
9 l" M, j( r. |, c輸入:N clear load clk
y ^- \! L# ]- ]. _; Z# |輸出:count5 n% o) z: j& l4 t; w- e
7 {/ V+ `1 w% ^0 R* o1 E2 o行為描述(依照優先順序)
; m3 Q, @8 L$ T: Z6 V% R. u; s7 Y1.如果clear為1,則輸出設為為0
$ o5 [8 u/ L7 |6 f' X- _2.如果load為1,則輸出設為N
7 K0 L$ s; i% ?2 `3 H8 ~3.每個時脈輸出遞增一次(BCD)0 o! L, K6 ]! V- H
8 O' Z0 f* ?) v$ d6 S; f5 R
3 H$ I P+ S$ S4 K% ^
3 D8 G- f, b3 U$ _) Z6 P& S程式碼:) ~7 J- [ J+ T; w& M( ]
BCDcounter.v
/ b7 k/ i% w+ Y; K0 {0 \5 n
2 U. G/ Y/ D* X4 ^3 z7 E1 wmodule BCDcounter(clear,load,clk,N,count);$ R4 D; k4 e7 I3 b0 d p7 V! w& W
input clear,load,clk;7 j& J: S, {% W, E3 q
input [3:0] N;
" U. }- ~( G! Doutput [3:0] count;, k- @" Q( R8 x* }
reg [3:0] count=0;
. a9 S& x3 T$ p9 \ w- O2 Q) P' T4 m( _1 U: Z/ q
always @ (posedge clk) begin6 R8 p" L8 R8 i r5 ^$ n: A
if(clear) //clear=1
" O B f3 I+ r4 l! y9 T% ?+ Z count=0;4 G; Y9 d( D' o' Z( }
else if(!clear) begin //clear=0(共有0 1 X Z四種狀態)3 o) w* |$ e; k7 s* ^: L1 o
if(load) begin) k" o: h$ [' v/ _! W5 O2 J" h, u
if(N>9)
1 C7 E+ x3 {3 ~# Y count=0;( V! X" v7 t' d0 u( X) r
else% p/ `" M ?7 u: ^5 o+ {2 f) O
count=N;
5 Z# a f4 R2 X! {8 o" {# [6 e* _ end
! }: N! i1 k0 @7 r# Z else if(!load) begin
% U+ J Y$ `4 E: e; I5 k3 W- x count = count+1;
, o h h& ^* n# h if(count>9)) C$ U6 K) L4 g4 M$ {5 e
count=0;
( z9 A1 `( h4 I2 Z, O9 ? end
* `2 ?' ~3 H* B7 q end
. {# ^8 l1 ^7 y+ a" M/ R* r" f! O7 @/ vend) R2 f$ a3 j; L1 h& J" o
endmodule
7 a4 O6 P6 X, b; _% z7 C4 \& i' Q# X8 i z* @0 D* K, N0 _/ C
bcdcounter_tb.v
/ b* A% |9 t* T$ F2 b' @# _
0 |" K% l) y! S3 }0 x7 L- Gmodule bcdcounter_tb; Y; Q$ b# n6 {" w$ h; y2 e
reg clear,load,clk;1 c- O! V3 V/ N. S8 T! Z
reg [3:0] N;
0 K) }' @& ~+ i5 c# a. gwire [3:0] count;- U; q% U' X$ P9 [
, N6 N6 r4 s( x
BCDcounter m1(clear,load,clk,N,count);
" h* F' e! f! O6 @& u# l9 {) r u+ B7 }
initial8 {! D/ K, ~% a
clk=0;
0 M H. ~% I" i! v' c
2 E) G' Q7 q8 G3 y& Qalways #2 clk=~clk;5 S' q U$ f9 N, _; D
1 j# B, B2 k6 Z% E7 P0 Sinitial6 d2 m5 D" b! u3 J/ `! P% U/ Y3 t
#160 $finish;; J7 H& s) |# {% h9 l; ~
@. e- p$ A5 S0 ^
initial begin' O+ G1 l1 `0 q
clear=1;
# Y/ p+ `4 o' w9 ?% u! f#4 clear=0;
9 l$ Q! G* E$ O$ \4 J5 d3 ^9 i#90 clear=1;
; c$ T v3 }' C. [% j#3 clear=0;
$ Z$ w3 ]7 `- q5 f- ?+ Nend
* c4 S4 S/ |3 i* e m
1 j/ z6 P% V, w% G' o: Xinitial begin
1 y4 E; P+ t) y. S6 U. @( u8 C" X N=6;load=0;
- {! {0 ` L% d& v#58 load=1;& x/ d3 F& q% {" U
#2 load=0;& T; G' w) x; P9 J
#22 N=12;
9 d f- ^% a5 y#40 load=1;, i" j; n6 w% X p
#2 load=0;
# D B6 d7 d6 D$ i5 H! t; _( Vend3 X9 m$ j4 `- D% _' M$ c Z, g
( o/ f- \, K# F( O1 aendmodule |
評分
-
查看全部評分
|