Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
1#
發表於 2007-8-28 10:52:11 | 顯示全部樓層
原帖由 monkeybad 於 2007-8-28 10:40 AM 發表
  Q8 o0 G, I# d; K- W+ D, K9 ]3 ~如題
9 W6 e7 C+ n6 B$ p5 F小弟我目前在設計一個時鐘電路 需要一個記數器 不知道這個問題是不是屬於這個討論區
; e6 u8 R" W( C0 V, K/ }如果不是麻煩版主修改一下囉3 c# x) N, Z% L' K+ \
! a3 A: s7 u2 s
目前這個記數器要能數0-9 接著就進位 然後自己reset繼續從0開始 進位後訊號再繼續由一 ...
$ i, j: v6 [) N- J  R* [" O
4 K4 Y/ Y9 I) V6 q
大大您是要寫Verilog還是電路
2 t/ D. f3 B- M2 Q  t5 u5 p, H( I; l1 y3 T6 N
先PO個RTL Code參考看看) _. e, g. _$ W4 }2 N
+ N6 t. e* t* _9 @- S3 U) E
輸入:N clear load clk
; Q4 P( U* i5 |7 [; u, o# n3 r( T輸出:count+ n4 K0 V2 ]/ M/ p" H% d! G; {

$ K- m' S6 Y# N4 Q行為描述(依照優先順序)! _: o* F5 t9 i/ h
1.如果clear為1,則輸出設為為01 g0 y/ {- Q3 g: s
2.如果load為1,則輸出設為N
8 [1 C0 N2 E7 Q! I. K3.每個時脈輸出遞增一次(BCD)
! F4 X. s# ?9 I% J9 w6 F* s$ \1 G& Y' ~7 k3 j9 |' x& P) c) W
( [) M5 b3 m  M2 p6 n
, T0 l8 j7 a( A8 ?8 S
程式碼:
* h: c1 i% a' c3 b* i* W9 k3 oBCDcounter.v; o- x! M/ }; p: ]
2 c  ]2 L  N( n) o9 Z( w: D. d
module BCDcounter(clear,load,clk,N,count);
" N( F/ C" J( W: d6 S0 H+ sinput  clear,load,clk;; N4 T  ~9 R3 b$ Q% n
input  [3:0] N;" ^" g7 j( Y5 f5 ~) ^; m
output [3:0] count;
: _5 x6 E! G% Ereg    [3:0] count=0;
* w7 I2 D$ ]9 p! U
# A: B7 \3 `0 Calways @ (posedge clk) begin) C& P" E/ i( Z) W* ^3 s4 D9 E
  if(clear)                 //clear=1: D# k, B+ \+ o" [: G- z
    count=0;
% y& @; `0 I$ l% m. W& ?: T  else if(!clear) begin     //clear=0(共有0 1 X Z四種狀態)2 t7 s) D8 {; N
    if(load) begin
3 P5 R: p9 ?  |      if(N>9)
) ~8 E& Y2 t( k/ }! I        count=0;
/ q- n$ ?7 S* P* C; T# x; t8 K      else& z& |2 w+ h" |' |
        count=N;' s% E" {; g7 k' }
    end% R& f5 l6 v, C' H: B6 X1 u
    else if(!load) begin: U: o( N* |( B
      count = count+1;, r8 R; \: c! r3 W; i) E5 `, _/ ?
      if(count>9). s$ Y- [( {2 q; ~
      count=0;" z% ]! Y, e* z  @1 Y  k' g
    end
, k* e; E5 ~5 m4 D# R& l% H  end% F6 E8 X  ]6 w" i, d; m6 h
end8 y( Y1 }0 D7 u# U8 y
endmodule
' E2 O, t4 L( p8 K" |3 K3 e# G9 l, H6 k/ l% ]# \$ E: @
bcdcounter_tb.v. q( `) W# ?; P

! y5 K, F: K- {: y1 G4 ?8 i/ Nmodule bcdcounter_tb;. [1 i4 T* M- I* E9 N% z
reg clear,load,clk;" Z; _% J0 R5 I
reg [3:0] N;
( l$ U8 L5 [% m/ B4 m7 Ewire [3:0] count;2 I# e2 \  H( f0 ~" R1 I
0 L2 u+ V* [" h9 V* X- n7 R
BCDcounter m1(clear,load,clk,N,count);  Z- }4 V6 r6 V

9 c1 R& {9 K5 T) O9 Finitial
! w' i3 c. q4 Z- x9 z- g8 [clk=0;( m" u3 }( Z% l( O# x
' ~& E, e# K- P  b9 z7 J/ ^' [  S
always #2 clk=~clk;
3 Z! @) {0 z% E( _% \& M  P. v/ W, l: ~" T
initial
- b" ?$ J8 f  g7 C  `#160 $finish;
3 A5 r' B% s/ l: f0 W( I) t" G6 k8 S3 v3 C, o+ x! A
initial begin9 A8 n- \# `4 B& A+ K
    clear=1;
0 B+ q; @" ~1 g* H# ?2 V#4  clear=0;3 \2 n  R6 V1 t; o3 ]8 S/ r+ j& D8 x
#90 clear=1;+ P2 u1 d- e2 A9 s- A3 Y1 m
#3  clear=0;  v8 W) Z1 r' r  o
end
" d1 I. `5 |# X% X+ k1 c1 m" `; s  m
: }8 }2 B) ^( x& D4 e0 J, p( Q6 r, U$ R% zinitial begin4 {- n, ?4 z) E2 x
     N=6;load=0;
0 z. w( i" o" O4 k#58  load=1;
' I1 Y, P2 C; K# C/ \#2   load=0;
. j0 f) o; N8 t9 z" x1 M#22  N=12;
- A  H# r. Z' O7 o5 x1 I( b#40  load=1;
6 t- Y! d. i. [7 P& y' F#2   load=0;( b0 U' i8 m8 g2 K- A& ~) |
end
, ]/ h/ T3 N# E5 U4 @3 h7 a+ K# D4 t' |- w/ V
endmodule

評分

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

查看全部評分

2#
發表於 2007-8-28 10:56:04 | 顯示全部樓層
還有一份講義可以參考看看; [0 q+ l- @" B! y5 |( O
希望對大大有所幫助* T; ?4 W/ F" h- i+ ~$ x

0 R1 ^, A8 ~; _& S2 l- t! d2 i
/ |7 H" k  O: E9 V7 u+ D8 ]& U, t) w
遊客,如果您要查看本帖隱藏內容請回復

本帖子中包含更多資源

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

x

評分

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

查看全部評分

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

本版積分規則

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

GMT+8, 2024-6-14 01:53 AM , Processed in 0.122016 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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