Chip123 科技應用創新平台

標題: 請問如何設計BCD counter [打印本頁]

作者: monkeybad    時間: 2007-8-28 10:40 AM
標題: 請問如何設計BCD counter
如題' f# m$ ~9 f* S" [# G
小弟我目前在設計一個時鐘電路 需要一個記數器 不知道這個問題是不是屬於這個討論區
1 [, H( O" _% Z) H7 k  ?: _! W" u- \如果不是麻煩版主修改一下囉
' w# b; x" G$ u7 C' q
4 ]# k: p, X4 N: `目前這個記數器要能數0-9 接著就進位 然後自己reset繼續從0開始 進位後訊號再繼續由一個0-5的記數器開始記數
; ~/ `$ a' o9 V( \總之就是能夠記數0-59, 個位數記數0-9, 十位數記數0-5
; d$ ]9 ?8 Q. @. ?; e
" t8 t/ m) ~& R請問各位有人有設計過這樣的電路嗎? 或是要去哪裡找相關的資料勒?: B+ b; h. U+ g. r- E
謝謝!
作者: 小朱仔    時間: 2007-8-28 10:52 AM
原帖由 monkeybad 於 2007-8-28 10:40 AM 發表 : r& S7 {" ^$ n* y: A
如題
6 ~0 D5 L+ A. T! I小弟我目前在設計一個時鐘電路 需要一個記數器 不知道這個問題是不是屬於這個討論區( \: s" Q7 M' s3 U. z7 ?0 F
如果不是麻煩版主修改一下囉
: F& P8 M$ h+ H! Q. C- l
- F: D8 Z3 l4 t2 E. g, p目前這個記數器要能數0-9 接著就進位 然後自己reset繼續從0開始 進位後訊號再繼續由一 ...

. m" k& v4 m$ S5 p6 U6 W' d, d- U/ U+ e2 p! [. n' L$ g1 M; p/ e
大大您是要寫Verilog還是電路+ J- X$ B* l) J
# q' @) ^( P5 _& G8 v
先PO個RTL Code參考看看
2 D' D: p& o% L: h8 F
$ p; z7 n; G8 D/ o! X7 S( H輸入:N clear load clk
# S4 }" G" _3 }輸出:count
  `5 O( Q6 ^* A' v1 B9 z" M
" {* `# A5 e# M9 s6 r1 F. b) R行為描述(依照優先順序)( D9 e! o; Z- k0 C2 s
1.如果clear為1,則輸出設為為0- E6 ]0 g% C& U6 a5 Z. h
2.如果load為1,則輸出設為N
2 g- i4 P) Y$ @6 k6 Y0 G3.每個時脈輸出遞增一次(BCD)6 d/ B- ~8 v$ a

! [4 y8 u  s2 Y
, z! m& N$ v  K. w! U: m% }) k5 V% _6 W/ ~
程式碼:
2 F1 n; `- S) l. LBCDcounter.v
% h6 Z& _. d! E- G4 X* [# Q8 k& {+ `# `" h
module BCDcounter(clear,load,clk,N,count);  T4 \, F& E" ?7 W
input  clear,load,clk;4 e# U! V2 {( B% v* f
input  [3:0] N;, U8 @0 v3 m6 x4 Q: ~0 P/ i% P
output [3:0] count;
1 j! [$ N8 k8 G, H) C' Nreg    [3:0] count=0;5 q" G, ?1 N6 z' n6 d
3 Z/ E8 x/ ?, ~9 Y& j
always @ (posedge clk) begin6 b: }2 G6 u& n
  if(clear)                 //clear=1
+ @" Z1 n5 ]9 @; x7 h    count=0;
  b' n% N. Y% r' a6 z' z, T  else if(!clear) begin     //clear=0(共有0 1 X Z四種狀態)6 ~, b% ]; w9 v8 l) {2 P7 k
    if(load) begin
$ n, H! F0 T4 U9 J4 M      if(N>9)! e. g) i0 N1 l; w" w
        count=0;- f/ v( x- c! ^- N( L$ G. r! r
      else
2 o8 ~" b: [$ R        count=N;: B! t( ]# r1 D& Z) m3 M/ p
    end
2 ]) n/ S9 h- S0 f' N0 N    else if(!load) begin! F* s( L* R7 M7 X- |
      count = count+1;
6 X- f5 B# ~$ g$ @      if(count>9); P0 z5 \8 q  x1 q0 s0 S% x
      count=0;# b; A/ Y+ s/ ^7 a' k6 i5 R1 m: ^
    end' Q4 o% |8 V' l/ H
  end# X& e+ Z; p. w) K) g- o% d0 x- ^
end
, g3 H( j- ?* v/ f( M8 Iendmodule1 a; b* ~" C( e5 a
" g9 F% }; b7 b6 P
bcdcounter_tb.v. J  r0 Z3 ^+ p% W

, Y, E+ {' {2 d$ J2 xmodule bcdcounter_tb;
3 h% J  _) J2 g8 Oreg clear,load,clk;7 K' w3 e: T" v% x) v& N
reg [3:0] N;
1 y  f( e* O% E0 t+ d1 V  \wire [3:0] count;
1 w0 \1 H* D( D! U+ h7 V
1 A$ g7 D0 M" i8 @1 v# G  ^9 IBCDcounter m1(clear,load,clk,N,count);
: B3 z/ F  k. F: W
2 J3 Q; p: w4 B( c8 T7 n; N/ S$ }! Vinitial2 J/ o% W0 w7 ^0 o
clk=0;0 v& |# X1 [7 J) l

2 l" L! p' F8 zalways #2 clk=~clk;
  O: m! S  S( d; @' @! j7 r8 R$ k8 T* n' l9 l- H7 u/ y; r
initial# b" K' E  G% L
#160 $finish;
1 l' P! Z  c* g" [' [3 e& T* s8 y5 W; `, j; A5 t6 Z3 `
initial begin$ J' r$ r7 \) D
    clear=1;' k% c+ ^* W: j' y
#4  clear=0;
% j; {- h) d5 S9 `* h+ y7 B& G; m  k#90 clear=1;$ Q7 T4 d& H3 q" m
#3  clear=0;
" ?  b, T: y# h  g  H- Y9 ^  oend
/ h3 m# K1 _$ T1 f; R% Z% _* {- H) K! P2 U8 e* P  `
initial begin1 l  }9 y$ Y3 @- E$ t% {: l
     N=6;load=0;. E, F* y. G! `! K! q% M
#58  load=1;1 K9 x5 h# a1 L: g
#2   load=0;
" ^8 z! j# [- g3 k( i#22  N=12;8 M5 o1 u  b- R) D7 W* Q- ~
#40  load=1;
! p2 v. Q& A, V#2   load=0;9 f3 w& u. }0 @7 ?# u( N
end5 v% n9 K/ j2 ~
/ x; A+ V! `4 O; K8 K
endmodule
作者: 小朱仔    時間: 2007-8-28 10:56 AM
還有一份講義可以參考看看8 c% T5 v4 c7 E, @+ f
希望對大大有所幫助# g2 a) |/ z) ~5 [. Q

) s* E) y5 c7 S0 z' {) \2 x
, |, d6 G: s5 `& m+ d
$ j9 p" z- g- b* E
作者: monkeybad    時間: 2007-8-28 11:18 AM
感謝小朱仔的熱心回覆
3 E( `- N+ K; s+ s4 Q  s. W4 G& x不過我電路要自己畫 還有我不會用Verilog耶0 a( A# s3 t7 H5 H& q
現在主要是要有電路圖 可以用Hspice模擬的那種9 g) ]3 I- f8 e' G) ?8 K
另外希望inverter越少越好 因為要求要省電! 還有要自己layout!8 K6 W- t: t# s  A+ g* d' C5 A

  j! K. a" i& x) r. h$ E/ z樓上那份文件好像裡面有寫到 趕快研究一下! 感謝分享!; _: i* w( I# N, v! c: Q
- s- o  j; L; T) z6 t+ x
[ 本帖最後由 monkeybad 於 2007-8-28 11:23 AM 編輯 ]
作者: tommywgt    時間: 2007-8-28 04:05 PM
你那個要自己動手畫CMOS電路吧... * Q/ ^( J- y( O; d3 Q+ n7 u6 n7 O
寫code習慣了, 真的很不想動手再做這樣的事, 不過推完booling equation後, 直接用Cmos畫出來不就好了???1 R# j% x7 `3 b+ m$ r  U
沒錯吧
作者: monkeybad    時間: 2007-8-30 02:21 PM
恩恩 不過booling eq好像是在推導一些輸入輸出的條件
- ~- j! O7 e# _" c
9 x/ D' \) d$ Q' V: Y4 {' Q0 i記數器參考一些資料後 找到一個用ripple counter下去修改的
7 k- m, H: C) D  Y0 `. o- U/ |: ^ripple counter就是用負緣觸發的T型正反器串接在一起 6 ]+ C, i' |+ K# A+ _2 J" T
接著開始從0數到9 然後數到10的時候
' {* F" h0 s* T- P, i! N% t就reset重新從0在開始數
作者: tommywgt    時間: 2007-9-3 03:08 PM
ripper counter真不是個好主意, 不過要看應用, 在有些地方用時倒是好東東...
作者: jordanplus    時間: 2007-10-23 11:19 AM
我很好奇某大大說的講義) O9 U4 S/ U8 C, [, ^3 ^' ~
給我看看寫什麼吧
作者: nic740917    時間: 2007-10-23 08:26 PM
我這裡有時鐘的電路圖..以送去CIC下線..可提供給大大參考看看!
作者: mungoo    時間: 2007-10-30 01:52 AM
我看一看那個問題,要我聯想到CODE,一時還想不起來,真是太久沒有寫程式哩!5 U- I' h* }; l  G0 o9 ]
看到CODE,有一點恍然大悟的感覺,又接著看,害我也想看那份相關資料囉!!
作者: liboy1122    時間: 2007-11-9 02:57 PM
BCD conuter 應該是對自己有所幫助
作者: stevenert    時間: 2007-11-14 11:29 PM
bcd counter對初學者的我而言真的好難2 J! y5 ~4 Z9 E* G0 {! v8 b% V, P
謝謝小朱仔提供的code囉
作者: tommywgt    時間: 2007-11-17 04:58 PM
大大別忘了給小朱仔 "感謝"
  p- E) n# t, o* B/ y& b1 ^( O  t0 r0 z" d1 e  l; U% Z8 }
按評分, 就可以給感謝了....
作者: kevin    時間: 2008-2-22 05:34 PM
Let see the shared material. THX.
作者: josephgg    時間: 2008-4-24 07:28 AM
幕讲义之名而来,呵呵勿见怪啦.                                              6 p' {2 f0 O$ L$ }, H/ G
感谢
作者: ycs1977    時間: 2008-5-21 10:42 AM
標題: 回復 3# 的帖子
感謝各位大大的資料 對初學者 真是受益良多
作者: mengchung68    時間: 2008-6-2 11:53 AM
感謝大大的分享∼∼∼∼
4 b) s+ u, \0 d/ y) ~, J因為你的無私,讓大家能學到許多知識
作者: gto10620    時間: 2008-6-2 10:10 PM
我也想看看大大分享的講義~~
* H  X" Z$ Q& p* o, m9 ]  l! E& C回覆來看看囉!!感謝蛤!!
# g7 w0 ]' ?3 S: g5 x9 A因為我是初學而已!!
作者: gto10620    時間: 2008-6-8 08:55 PM
你是要畫電路圖的方式設計~' P: y. @; u/ k
那畫畫卡諾圖不就好了.... 只是比寫CODE還要麻煩....
" a9 ~* L% D3 S! d5 U% ?& n3 Y因為要接邏輯閘!! . Q+ T, o3 t+ t1 Q! q- C$ k
用卡諾圖化簡!!
作者: rick80418    時間: 2008-7-25 02:41 PM
最近剛接觸這方面的東西+ i) d; R+ T! H4 p, Q! e

1 Y9 g+ @! P# {% p* r- x' J: O剛好需要這些資料
# b, t4 Z* j/ b) `" m, _2 i  `3 ~; k/ x0 w
感謝分享!!!
作者: steall74220    時間: 2008-10-20 03:41 PM
3Q目前亟需這些參考檔案 非常感謝
作者: bigapple62    時間: 2008-10-20 06:37 PM
標題: 回復 3# 的帖子
是Verilog or VHDL?( L, W) |8 ~) h/ y% h* r4 M& [
我也來看看講義,並學習新知識。
# A7 S6 Y4 Z" \/ I謝謝大大的分享。
作者: oldya811105    時間: 2008-10-20 08:27 PM
講義內容對我這初學者來說因該很有用吧,
. F1 y0 e2 M6 @: G4 A感謝小朱的分享!!
作者: dy1972    時間: 2008-11-5 12:23 PM
剛開始接觸FPGA,很需要這樣的資料,感謝分享。
作者: ahug    時間: 2008-11-10 11:23 PM
感謝大大的分享∼∼∼∼
" H# Z1 w2 w$ [" ^" \
; R' j3 D+ ?& C: g3 r0 F' m7 P我是初學者. U" X5 h! n2 j9 `5 A. D8 S
0 I$ L8 k2 i# ^  D, u3 @7 w
剛好需要這些資料
! Z8 C4 w3 w- m. H4 c
% S" ^3 X- S' _+ \感謝分享!!!
作者: superpigin    時間: 2008-12-10 08:10 PM
感謝啦!
9 o7 z0 z5 m2 F" p7 Y現在正再跟計數器奮戰中
/ t# y! e8 W% {. B9 a有這個剛好可以用8 ~! O# V0 O& T% e
希望有幫助
作者: pleojack    時間: 2008-12-15 07:49 AM
不知道用cubical representation 會不會有幫助?
作者: shanks    時間: 2009-4-5 10:53 AM
最近也在寫counter0 p4 M; s) }) O* i/ B2 C& ^; u/ c1 r
遇到了一些問題
% W2 K! Y" r1 W; _8 z+ s想看一下小朱仔大大提共的資料& ^, \" k0 }! k% z  K
感謝分享~
作者: spring69393    時間: 2009-4-5 09:08 PM
計數器在fpga裡面算是最常用到的電路之一了,滿好奇是什麼樣的講義的 ^^
作者: abore2009    時間: 2009-6-19 10:05 PM
BCD Counter的確是有意思的電路
0 f; w' O6 O" H用途也蠻多的!
. b8 C* d/ E* T除頻或是計時電路都很好用!
  A( \/ `0 E3 f  N& M異步式或同步式皆有人使用!0 C7 f5 e; k* ^  q
唯設計的難易差很多!
3 s6 g' M5 U4 a# R, AVHDL或Verilog較能一步到位!
作者: milksoda    時間: 2009-10-20 10:35 AM
標題: 初學者
多看多聽多學多認4 D* i3 S( I! l. s& M  m$ E: r
才能多長見聞呀))))))
! i/ F: h: Q) a- s! ?% X話說....我用畫電路圖的還被唸= =....
$ U7 r( A8 k' ?" ~! r* Y6 e2 x0 V要學著用程式嚕...
作者: conch_grass    時間: 2009-10-28 10:39 AM
刚注册的,进来学学,希望多多指教:)
) a2 `. a' D7 A3 U, u
  p0 k/ c& Q2 |- t5 V感谢无私的分享!!!
作者: kokonut    時間: 2010-1-24 02:33 PM
我也想看看講義寫了些啥~
3 r4 \) V, j. R& c! X, E5 |, X% |: \' k
感謝分享~
作者: nicnac    時間: 2010-1-31 11:36 PM
B C D 編碼器雖然後容易,但是是進入FPGA的一個小小程式
+ W3 @4 f, E0 y9 x. F0 m; A0 K" a/ q還滿有趣的
作者: bbgangan    時間: 2010-2-7 02:35 PM
回復 1# monkeybad
0 T/ d# @+ e) V3 O  l2 ~% B. a5 h3 K, f. M
感謝小朱仔提供的code!!
作者: ophen2    時間: 2010-3-18 10:46 AM
我也想看講議....( a% Q4 |% n9 _2 I1 {
準備步入職場的初學者~"~
作者: iceblock316    時間: 2010-7-2 08:18 PM
正在學習fpga感謝大大分享
作者: bbbaabbb    時間: 2010-7-21 12:06 PM
最近在寫控制Memory
! e7 k9 Q8 }. _5 L% W也在想怎麼寫個counter來計算已經存取的個數
$ d0 F! \1 ?# R& K* q& \- {! g以便進入下個狀態+ \! D9 X* [4 |
謝謝2樓分享
作者: peter7612    時間: 2010-8-18 04:32 PM
感謝大大的分享) S, q' _( \* N2 K- d  o9 U
剛好要需要用到這份資料
作者: scott5577    時間: 2011-3-7 11:03 PM
剛接觸這方面不久~還是個小新手
/ t" |7 H) K# [3 P( I3 v還有很多不了解的地方
8 b/ @' }6 u: }1 [這些資料幫助不小~
0 S, V9 k6 D8 |3 }, _  D感謝分享~
作者: a0972293419    時間: 2012-5-23 06:01 PM
希望講義有用
6 U: T7 V* K+ c( h9 B2 [' L感謝大大分享
作者: ricel00777    時間: 2012-6-18 06:27 PM
我也來寫一個
2 J" z4 v9 f9 K6 j輸入:clk, rst
9 g  u6 }" m* v& Y輸出:tens(十位數), units(個位數)
8 Z$ a; E% n# [3 U
* ^$ |. a5 ]+ `$ K/ C- \code :
' Q+ s+ n6 _' E" c' t4 t8 {6 Q( R% t  y$ s
module BCD(clk, rst, tens, units);
7 @6 G: Y' g0 D# q3 M  input clk, rst;6 ?* n3 G& c0 N0 k4 C
  output [2:0] tens;
9 x9 o, h) m! R  F  output [3:0] units;5 F0 j/ Z0 u- h: x3 D/ e
  reg [2:0] tens, xtens;
, E3 R8 U  S% C% L8 b/ v5 O3 b  reg [3:0] units, xunits;
0 i: x/ e1 K+ i( [9 k& A* S' }) d
  always@(posedge clk or posedge rst)7 m( |  Q% H$ F# G
  begin& p) W6 k. {4 q, n4 x
    if(rst)
0 h$ Z0 P2 f% s  b    begin
7 z& ]3 m# O3 p9 m. a( {      tens <= 3'b0;* \: Y6 s" G( A  S4 [
      units <= 4'b0;
/ p8 t, ]+ s$ [; w: x5 v  |    end
. ]9 X  X' K4 i% k% E    else) H1 z8 G9 ^$ b8 e) S8 X
    begin! N" ~) ]" H5 _0 i3 K9 V9 l5 H
      tens <= xtens;
- J* r4 O  e& C+ b+ Y; ~/ Z      units <= xunits;5 N, Q" V& o: ~  U' G. i
    end2 S5 B# w0 i9 ~# \
  end5 i$ F; M9 A2 ?' _

7 R9 `# m* {/ d* F' i: u3 W5 m) r  always@(tens or units)* l- \& a! I; X: G8 C+ Y4 F" g
  begin
, \5 `* Y! q, z$ @  F    if(units == 4'd9): F: u0 S1 c' `5 v- n- D: |  F- X9 I
    begin
4 T+ Y; n5 D8 S1 D4 x; {" X' L5 q      xunits = 4'b0;+ F# L7 U) B; C- Z# I0 b# ~
      xtens = tens + 1;
' C4 }" s+ Y1 Q& b$ a      if(tens > 3'd5)" ^" r( ?" R: J- v; k0 Q
        xtens = 3'b0;
) n7 h# g+ P! ]& `      else
% X) v& G6 K% m' y        xtens = tens;: R/ k) H5 p& I6 y) @$ ~
    end6 B: t1 z/ _* s* [
    else% d9 |' i, A7 U- b9 L
    begin+ ^. ^: W1 d& U5 I4 Q
      xunits = units + 1;
3 t8 k+ X/ Y. G8 w* f  Y3 a      xtens = tens;
) z" O7 {5 U1 S4 H    end
. b0 Z9 r  q3 s0 Z4 ]* {' ~  end
" b/ j3 S7 M, t  I2 {endmodule
作者: seack    時間: 2013-3-13 11:34 AM
正好需要這部分的資料 希望能有幫助" E" I7 E# ]) R# B' s: C
感謝分享!
作者: mrj0702    時間: 2013-3-24 05:51 PM
回復 3# 小朱仔
4 p4 B0 ]1 _$ J' R
: B+ J7 F6 g$ z# d
" E8 t! u7 {' ?. c4 L) ]   感謝您的分享,讓小弟多一份資料可以研讀。
作者: swordshine    時間: 2013-9-11 02:52 PM
不會verilog的話6 I: W  J) _3 Y5 M
可以上網找有沒有verilog code參考3 w' g3 D6 j) i+ ]
然後合成電路後再參考tool畫的電路來畫
作者: uerfr    時間: 2014-9-4 09:25 PM
加油啊!!!!顶哦!!!!!
2 r+ o6 Y: a6 E5 _% z9 X; Q, A
( H* m/ i, _; P; b' ?8 H
  U7 K- v$ d2 q/ c2 F# z' u/ O% f, U* n3 Y( p

2 p/ y( S- _* R* t" O6 r
6 p, t( S# Z' U# ], S
6 \. p( @. T& u* Y- ~7 j3 G- I" X  z" W5 x8 {5 g
3 {* |7 ]2 z& O
' t  s# D% ]% t1 N$ a7 i
9 p5 S& s8 u3 S

) r  o9 u, K/ Y# @' f2 v) vbjcars.net
6 |1 e* O. ^  n5 P+ Z2 p7 x4 |/ q: q! O- S5 |* B/ d$ t2 g
5 N! F' q7 J) Z: p+ `$ `8 f+ P6 x
+ }5 h  ]6 ^* E" J
# S1 ?" C; n2 a3 ~) X2 }* |7 C) D

6 I+ \6 I: G* f9 l8 l/ t
5 O! C4 N  ]$ L( a0 T; \5 [
0 Q! P, j1 q, m$ s0 X; y: R/ _( u( J) m0 ^0 x

/ _! Q3 m; j7 Q! u5 h
# r( _' g2 E2 |* l
9 B, x8 K' i7 c; J" O' A8 S0 l3 T7 g8 }, w' P* p# [9 k2 J
北京搬家公司电话
作者: KiaMinLiao@G    時間: 2015-1-11 05:43 PM
謝謝哦很有幫助~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~8 b0 S$ A- h! b& k' L

作者: jlian168    時間: 2015-3-14 08:20 PM
菜鳥一個,參考先進们的看看先...
作者: syuan08    時間: 2015-7-1 05:18 PM
需要這些資料1 e! g% O7 g5 t+ J  w# D6 q& E
+ e% A& j  I* j! o+ }' n' `
感謝分享!!!
作者: 傅冠智@FB    時間: 2015-9-7 01:16 PM
非常感恩非常感恩非常感恩非常感恩非常感恩非常感恩非常感恩非常感恩非常感恩非常感恩非常感恩. t3 T2 ^! }* R

作者: AIC6632    時間: 2015-11-20 06:30 PM
畫電路比較麻煩吧+ [7 D* D2 H9 r1 Z
這應該邏輯閘超多
作者: Ali-pig    時間: 2016-9-9 07:50 AM
剛好需要這方面資料% Q( Z0 Y6 }, u( q
謝謝大分享的講義& c; I" o9 N5 D" W  K% x- U
回覆來看看囉!!0 C4 \# H4 s. S( @! w
感謝
1 f+ b7 Q7 ~- C  C& C




歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/) Powered by Discuz! X3.2