Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 53398|回復: 51
打印 上一主題 下一主題

[問題求助] 請問如何設計BCD counter

  [複製鏈接]
1#
發表於 2007-8-28 10:52:11 | 顯示全部樓層
原帖由 monkeybad 於 2007-8-28 10:40 AM 發表 / k: C- n' u9 I# h
如題
. V+ `( w: B7 Q小弟我目前在設計一個時鐘電路 需要一個記數器 不知道這個問題是不是屬於這個討論區2 W( D* C9 |0 K" f7 O0 _/ b7 M
如果不是麻煩版主修改一下囉) t5 _+ _- i: k5 Z" D7 r& W. J
2 K2 U5 T/ J% Y9 H
目前這個記數器要能數0-9 接著就進位 然後自己reset繼續從0開始 進位後訊號再繼續由一 ...

  w3 g! @: }( f3 B4 G" G6 [( z- S! v1 {- E8 A) z2 k! _
大大您是要寫Verilog還是電路- M( p( t& V4 \! D- W& Z

6 f( W* x+ C" t先PO個RTL Code參考看看/ |, P; R4 q& ?0 w+ _$ y/ I( F/ x. M3 I

! @0 `" G. |: d輸入:N clear load clk" q1 g* J0 k+ Q0 d2 I# G/ u
輸出:count0 |8 z7 z0 l8 H, I/ w# X1 {( |

3 K- h8 J& g7 s1 f7 N' o: r- K行為描述(依照優先順序)
( u  ~" m, v( y. l1.如果clear為1,則輸出設為為0& T, i. `0 x5 c$ k: K
2.如果load為1,則輸出設為N' A7 P* p, k* u% Z8 t
3.每個時脈輸出遞增一次(BCD)
" J3 g  r) @+ g! X) w; y7 A
5 @5 ?8 G$ o$ Y' B. ~; ~' j" |! _# f4 \' d# ~4 I; k/ B5 o1 j8 T+ }

- V$ h* |# P% |( b  |' M程式碼:0 g7 J! A. E, o* E' u
BCDcounter.v
$ ]1 Y( ^* ^0 I* O7 N
  \7 b9 h# h6 {module BCDcounter(clear,load,clk,N,count);' v- v5 K+ c# z5 q; A
input  clear,load,clk;
! }% [0 \( ?. m% c/ Minput  [3:0] N;
  }) s1 }7 B7 k$ A$ F: @output [3:0] count;
. c1 y6 P4 i2 g" W6 M  C8 yreg    [3:0] count=0;
6 d* a/ I% G3 s
8 Y! _! u, c% i+ Y1 ]! ralways @ (posedge clk) begin
# L0 o; W8 v" r7 T  if(clear)                 //clear=1
3 z- _+ z. L; i6 {! a! `    count=0;
, z. @2 I/ I( o' w8 X6 s. l% \. R  @! h  else if(!clear) begin     //clear=0(共有0 1 X Z四種狀態). ?' H5 f# H4 m2 `! N6 q( t% L
    if(load) begin7 A3 x4 Z2 F3 |" \
      if(N>9)
; ^8 a0 J* d) q: _        count=0;
! C0 n( B) j1 |/ E# c      else
9 P, ]5 _4 t) b8 @        count=N;6 z8 U/ E% x7 G
    end9 q+ k/ E! O5 Z; c5 L7 R2 I3 x, l& j) j
    else if(!load) begin5 R" `9 T# s* s5 v
      count = count+1;( J* Z7 H" y9 F* n! [2 H$ Y
      if(count>9)
3 d/ L6 `6 l) q/ D9 E1 r( D      count=0;$ `8 q$ T/ w. V# ^0 R% N9 h
    end
& z* P! }2 `  X/ g  end" Z6 G8 A4 a9 B2 y4 |
end
$ f/ i- @* M5 e7 Uendmodule
* W9 a! @$ y6 ]& L; v1 P' |3 \' O4 _8 _' t% r7 O9 f* S6 Y
bcdcounter_tb.v
+ e7 R  H8 r/ Q9 u$ \- Q" S( o4 V( ~2 ~0 J3 Z/ L
module bcdcounter_tb;3 J$ q3 Z$ O4 Z* ^1 x1 c! \1 P
reg clear,load,clk;
8 r& d* o9 |3 V+ ~reg [3:0] N;8 v. I+ V- S2 @7 m
wire [3:0] count;
0 j5 l! K5 {, j! q" C5 a0 ~
7 f0 w: {7 |- f; s  C8 ]) ABCDcounter m1(clear,load,clk,N,count);
. v6 B: Z: ^" X8 K0 D1 X) r) `
9 W, a+ Q# U; Z: H! ^+ Y) Jinitial1 J2 I' m" b1 b, e0 o
clk=0;
% X4 D; a* @! x6 O% f$ [$ w: t3 S
- v1 O3 T9 m0 i: F4 `/ Yalways #2 clk=~clk;9 L8 K( v8 V+ a! x0 T" |2 w- }  M
) [2 D( u9 s! t2 C& R
initial  L0 n. L; J9 J% T( O. Y! w
#160 $finish;
( L4 d; F; ]% t  u+ I; g0 |4 ~
! }8 ?. t4 z  j; Y6 @1 Z' V( finitial begin
" s9 E# s: X5 j5 x8 S( I0 _    clear=1;( e! U& }  i2 y: W; s1 w% [+ p: Y1 u
#4  clear=0;
1 k  k2 r: G( I4 M+ k#90 clear=1;
, y+ y2 m3 B* |) ^; o& Q. i#3  clear=0;3 ?; I5 k$ A# D* q  ?2 W+ m
end
' W" g0 f1 L9 K4 r4 L, b& @
* m, w% ^  b$ k' jinitial begin1 q: K- X# l( M3 W) k
     N=6;load=0;
9 H8 h. Z$ M4 }* G#58  load=1;
) u2 `; H4 F8 F9 ^: s#2   load=0;/ J% e, O4 L$ Q) w  B+ |* s
#22  N=12;. g& B: K; Y' Q" W# X
#40  load=1;
+ w' Z) E# c& w2 a/ G: P2 w#2   load=0;1 G+ D. M" Z" N  ^
end
1 M. R7 b6 e* q' m6 D. r
0 \* Q* F6 y8 G! l  k; K  nendmodule

評分

參與人數 1Chipcoin +5 收起 理由
tommywgt + 5 回答詳細

查看全部評分

2#
發表於 2007-8-28 10:56:04 | 顯示全部樓層
還有一份講義可以參考看看
7 Q  z9 F! N5 U6 m$ U) |- E希望對大大有所幫助1 t7 k- a( q0 h% M; [5 i

0 Q* m4 l  x) N- d" Y2 S/ y/ y
3 s7 ?* n" M4 l- T. n5 a4 n. C+ Z
遊客,如果您要查看本帖隱藏內容請回復

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?申請會員

x

評分

參與人數 1 +1 收起 理由
ycs1977 + 1 謝謝小朱仔的資料 受益良多

查看全部評分

您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-5-15 08:01 AM , Processed in 0.115015 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表