Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] 精準式除頻設計??

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-5-17 13:32:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
entity clk1 is0 u0 B4 D- l2 |* A' @1 [
    Port ( clk40 : in  STD_LOGIC;! |( U( l# g0 E0 `- Y
                          clk1  : out std_logic );
  x0 B+ ?) V" y$ m5 k6 oend clk1;
  M5 j8 Q' T& O: q" R( {: a; x  l; ^- h* U9 |, o: c4 }& U
architecture Behavioral of clk1 is
8 K8 v" i1 c: a% }# f" h' Esignal cnt :std_logic;
/ O( J; O$ O4 k# x/ N* u9 v; lbegin
9 ^8 @3 G9 S  f1 R! L) v. q: B4 v2 K) V" i
        process(clk40)
+ O' o3 J. ~$ R& [; @9 x        variable cnt:integer range 0 to 39999999;7 X8 a/ W5 _. i  x: w  w: {/ ]
        begin6 \( r- Z/ J8 f
                        if clk40'event and clk40='1' then
+ q( T8 x) u, ^: G) y+ q6 u% m                                if cnt<20000000 then
2 b" j. W. Y7 Y9 B                                        cnt:=0;
0 m- I0 t; J- u+ m. |                                        else
6 j0 D# a% x% b9 C, R% J) e. L+ X                                        cnt:=cnt+1;                                         
/ v/ E! x" v0 |                                end if;0 r: {" R& I6 p) g9 u0 ^+ i0 A
                        end if;
$ H6 L4 N( C4 {2 N- ~* B                        clk1<= cnt;# M# r7 z. K0 u
        end process;0 l. L4 j* n. r! g3 M" r: h' c! x
end Behavioral;
- r. A( ~* D0 ^) n4 x# F/ Y1 U* W為什麼CLK與CNT不相容?0 F7 i3 X" s3 A/ J! X7 k3 H: k
還是我的設計是完全錯誤的?8 B. j: Y4 c0 G' `/ j, ?! S( {# {
0~~~~~~~~~~~~~~~~~~~~~~~~~~~20MHZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~40MHZ3 h' C. R# g8 o1 R- H
________________________________↑--------------------6 a* v% v% X4 v( p' b: E
          此段'0'                        此段'1'
" {7 Y/ {5 V6 L' h: \! O正緣觸發~
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-5-17 23:00:37 | 只看該作者
您好! h8 `9 U& o" W0 p) _0 i6 F
1.) T5 O. T, z; y8 ~7 W1 t
請問你是要將40M HZ除頻到1 HZ嗎?& z* c, a* K$ [, d( Z" v. S/ V! U
2.+ l8 {0 U/ s  @
CLK1是定義是1 BIT的輸出,跟cnt的定義integer不同
* b1 ^2 j) H, j% G; q4 A3 Y2 b* N當然不能CLK1<= cnt,
$ b. w! ^: ~' e6 q3.( H4 g6 W3 L6 ~1 I# `+ ^. D% z
你的CODE有錯,請多想想  r& t7 e! o! k8 s& [" \
4.
& M# q/ ]1 e5 l6 A3 R) Z0 |當你解決上述問題後還要思考
" r' g- U) D* f$ o! NCOUNTER要能數到 39999999
2 T8 d/ p" S2 I1 [這樣的計數器合成出來,須幾BIT你知道嗎(0~1023需10 BIT)
( F1 Y' r$ }) Y# d; a) p) s那麼這麼大的計術器有辦法跑到40M HZ嘛,況且你還要配上
# ?7 y& J3 N( O* u$ f  M一個大的組合邏輯比較器(因為有用到if cnt<20000000 then)
3#
 樓主| 發表於 2008-5-18 17:13:16 | 只看該作者
恩~是的~我是要把它除到1HZ因為實驗器材的內部震盪晶體為40MHZ
/ A8 E0 \! ]7 X& a, ]4 p0 Q% i7 v除完1HZ接上計數器這樣~下面是我後來又改的><" 難道精準式除頻有很多種方法做??) E* o5 u& j; r: l1 ^& m) h* y
entity clk_95 is! W2 d  c- @! {( m
    Port ( clk40  : in  STD_LOGIC;! {0 h* {: U  L9 Z( _2 l7 T) }' `8 X
                          enable : in  STD_LOGIC;; y1 q5 A7 c8 P+ A
                          switch : in        STD_LOGIC;, s. c% j) @5 Z7 x% E0 b
           a,b,c,d,e,f,g,p : out STD_LOGIC;
6 o) u, h8 Q$ t+ X3 d( F) g                          SEL : OUT   STD_LOGIC_VECTOR (5 DOWNTO 0));
2 D3 T! Z' q) [8 Qend clk_95;
8 \* v, L( ^( k- H1 a- h' f: A# E7 K5 u/ @6 i0 M6 v
architecture Behavioral of clk_95 is
. S- c1 b; ~( o+ \. p4 q* C9 tsignal clk1 : STD_LOGIC  ;
% `7 B9 W4 h' H4 X. K* W( T- K. B  usignal cnt  : STD_LOGIC ;
5 ^2 s* g1 e) |signal x1  : STD_LOGIC_VECTOR ( 3 DOWNTO 0);9 h- T! _4 I- A1 r3 e: i0 r
signal x2   : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
: z; N9 `% E. Z' lsignal count1 : STD_LOGIC_VECTOR (3 DOWNTO 0);
  a2 A) f2 }: N4 s/ g0 U7 B9 ~signal count2 : STD_LOGIC_VECTOR (3 DOWNTO 0);
( W7 ?* E7 M8 g9 v8 W$ l+ asignal y                : STD_LOGIC_VECTOR (7 DOWNTO 0);
' K) u5 k/ [* x: x8 u! \' zbegin
! L6 r3 [1 h2 Y! E# Z. s
) E* c& @% E* y  X4 f        process(clk40)
1 H' A5 L3 q$ D  D0 C8 F        variable cnt:integer range 0 to 39999999;
0 E4 Y! Z3 r) W  Y9 ]        begin& p8 }7 {7 N5 z! \) Y+ N! A
                        if clk40'event and clk40='1' then
- ~) m+ c6 J1 b7 @3 j                                if cnt<20000000 then5 o8 X1 g+ o- s4 [5 ~- C
                                cnt:= 0 ;
5 K+ N" ^% |  s* A. H8 M                                else
! Z* ~$ [! u) c5 I0 U                                cnt:= 1 ;1 n2 H* _9 {+ l6 R. d4 q
                                end if;
  a  N0 j+ i% [3 f; j/ t                        end if;
! Q) ?6 _) ]2 g% k+ Y( a        end process;
$ {6 H* f% Q' C4 \' {" g        clk1<=cnt;9 N1 ?! S- a$ |8 I/ ?- A
        5 x0 O) h8 @) s$ E% i- N- B. }  R' H
        process(clk1)( j0 O8 f& u# A* J: }: \6 x
        begin
2 M% w) {* M1 {( `( w( z1 ~                                if clk1'event and clk1='1' then9 T% [- k9 ?2 ~: Q+ T
                                        if switch='0' then
2 M# K. C( B2 x" j                                                count1<=count1 + 1 ;; [8 _8 `1 }1 n, X5 A2 V
                                                        if count1="0110" then
" e+ `  W+ w/ L) d! |                                                        count1<="0000" ;
2 }+ X1 Y" h5 x1 m' C: A                                                        end if;
/ E0 Y% h+ O2 Z: \4 [                                                else/ h6 I3 k" e  v6 J5 X) x) }$ \
                                                count2<=count2 + 1;
8 G: |$ Y  {1 V5 O                                                        if count2="1000" then
& e. e, J, Y1 H2 C                                                        count2<="0000" ;
+ a1 a# H; }# E% ~4 L0 z                                                        end if;
3 |; u* @: R" ?0 s* J+ p/ r                                        end if;                % d% L: \1 I4 C
                                end if;9 g/ i7 X" e0 ?; n' f' m
        end process;% J+ b( k# y6 Q! f  k- e9 G
後面是我自己要接出去的東西~所以我沒PO!!
4#
發表於 2008-5-18 17:58:36 | 只看該作者
您好
1 B3 f6 ], @5 b$ c% B/ i這樣還是有問題
3 G5 |! v6 L  u1 b# \5 X6 w可以試試  w7 R2 S- [8 l* ~# c/ K! ~/ }- k* p' G6 r* B
process(clk40)
7 Y5 s, k* n. O6 q* f9 `/ k! f3 X- V        variable cnt:integer range 0 to 39999999;
# A/ _7 f: k9 a( y/ y        begin
  V6 X; {& N2 O  s9 r7 f7 q8 G                        if clk40'event and clk40='1' then
% F' x" K, |& r: k- v                                if cnt=39999999 then# I* }0 V, |. |; d' Z6 f. G
                                     cnt:=0;
/ w% Q( I$ P; Y; T                               else" |& p* F6 K9 t1 ~# l4 r
                                  cnt:=cnt+1;( Z: z8 k7 w: _5 n$ u4 |1 U) `) V
                                  if cnt<20000000 then
0 m! c. F( Q5 L: F5 e* H6 I2 i                                       clk1<= 0 ;5 S8 v# z: v1 H( B0 C
                                  else ) \# s9 |& S  q" D6 D/ G
                                       clk1<= 1 ;
( M# n. w7 i1 H1 z: M3 z# H, P7 ]                                 end if;
3 D/ ?6 G, k; ?" z; ?                             end if;4 e0 s7 g+ Y2 J1 T( k
                        end if;
$ x8 q6 j) \! @: d' M3 w- m        end process;3 }# Q# h! o5 t+ E" V! D  B
       : y+ e9 \7 ?, U; H1 E& a- l
或者
4 I5 d* r0 }6 u. q9 a. y1 `process(clk40)
) S& D8 X) ~9 H- t% O6 ?        variable cnt:integer range 0 to 39999999;
- U& b# Y/ _! J2 Y4 y        begin
7 D! F8 Q0 Z$ R5 j* |4 i                        if clk40'event and clk40='1' then$ ]2 G% O$ f( I( j1 C
                                3 k% l' H# L0 e
                                if cnt=39999999 then$ s2 \, x; ~& c: d: u
                                     cnt:=0;4 X/ d) f! i3 W+ {" a
                                     clk1<= 0 ;
1 S8 G- h% R, d' V- y+ H, _& n: h                                else
  d: d  k! B% M& m- D                                     cnt:=cnt+1;) G8 J$ I/ ?9 I1 l% Z0 l% ^" _. ?
                                     if cnt=20000000 then' a# d) w2 U+ X4 l) \( o) l) D2 p
                                         clk1<= 1;
8 Y( A4 I! q; Q# u                                     end if;" c& a; c  R# K+ G
                               end if;
  V# K9 r" [$ c                        end if;
$ e, x: s$ K9 s, S# S. h        end process;
5 y# D+ L4 r. i9 G: O' e: M: k
不過兩種方法都有我第4點的問題
& i' ^4 w- ]/ V5 E5 E' [如果你是用quartus2可以分析一下, J3 S* f( s" e7 ~
你的clk40可以跑多快
5#
 樓主| 發表於 2008-5-18 23:02:25 | 只看該作者
40MHZ
0 J! D" ^# b/ Q! \5 B) K6 h6 L' T我想我只能實際去試試看燒在上面能不能跑~+ A! [  m) W/ e
因為我還是沒辦法用電腦模擬出來~
# X1 {2 B! y1 ]0 @9 J感謝你~ 結果在跟你回報!!
6#
發表於 2008-5-19 00:03:14 | 只看該作者
gto10620 別忘了給addn "感謝哦"
: w- M" Q4 Y& C6 y* B; d8 C3 O( b
+ h( o7 G- [- g1 ]$ S& ?; r按評分就可以了

本帖子中包含更多資源

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

x
7#
 樓主| 發表於 2008-5-19 17:04:30 | 只看該作者
收到^^ 抱歉~      
& h' ^" `) W( _* _% \' J2 p下次清楚囉!!
8#
發表於 2008-5-19 18:10:24 | 只看該作者
現在補也來的及的, 不用等下次了
9#
 樓主| 發表於 2008-5-20 01:53:53 | 只看該作者
我有補囉!! 我說下次一定會記得給!! 誤會我的意思囉!版主~1 D) C! G/ b; Y6 _5 D# P. }
# \  u+ V& d- E$ J! D' m; B
我希望我能在這領域學會!!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-2-19 07:05 AM , Processed in 0.169010 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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