Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-5-17 13:32:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
entity clk1 is2 F+ @% b+ n# B% N; _
    Port ( clk40 : in  STD_LOGIC;
) l8 r; e4 K6 G, F3 \3 ]; i; W7 d                          clk1  : out std_logic );1 u" n  n( S4 J2 S: d" {
end clk1;& m+ o( R6 S+ z) _: e9 ~

2 H; g) u4 U( d( f/ ?) n  X+ f: sarchitecture Behavioral of clk1 is
- F7 j8 [' L9 M2 @# n' Ysignal cnt :std_logic;( h1 z1 }+ u8 N' J) }
begin
* q3 v/ g% Z( Z5 t5 {& @: t- |1 ]& Z8 \6 I
        process(clk40)
& Y, g) \, u; X- C8 k  N9 P, R        variable cnt:integer range 0 to 39999999;
) J2 l2 X* T3 Z( l6 v' K% l+ ^        begin5 f% v! e) r, S: Q/ x
                        if clk40'event and clk40='1' then
# g0 @0 O; h6 v2 ^- D; ?                                if cnt<20000000 then
# u& t( i9 {) {                                        cnt:=0;
" P2 P  y5 `" s* k                                        else
8 y* `+ q7 I$ t0 A( v- M% Z                                        cnt:=cnt+1;                                         7 G& k  p+ Z( l7 j1 L( r! d6 n
                                end if;
$ g5 D  }; J( X; H. u                        end if;: w, Y& o$ s, Z6 B
                        clk1<= cnt;. T9 s" h. M: f+ x! R' b
        end process;
$ r7 U+ G) V1 I" P9 }end Behavioral;
$ m8 F* }1 C# C- [為什麼CLK與CNT不相容?3 r% E3 K$ b8 D% R% G( ]: T. q
還是我的設計是完全錯誤的?
% ~) }! A; K& \, A: Z: h& Z0~~~~~~~~~~~~~~~~~~~~~~~~~~~20MHZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~40MHZ
/ E5 G' e  W- l________________________________↑--------------------0 ?, c/ T7 `5 H" w' v
          此段'0'                        此段'1'( {' @, `/ r2 \; b5 S0 h8 T
正緣觸發~
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-5-17 23:00:37 | 只看該作者
您好
8 z- ~  N& y# p6 [7 e3 n  w1.
7 A2 p9 I( [6 S, j; a  s請問你是要將40M HZ除頻到1 HZ嗎?
$ Q5 ^2 z, w! \2.4 ^. R3 F1 X  K4 {. `
CLK1是定義是1 BIT的輸出,跟cnt的定義integer不同7 `  _2 s; Q+ R$ j$ J' |
當然不能CLK1<= cnt,' u5 p+ `# q6 }
3.
% b" R6 p% m( F3 D8 a3 R你的CODE有錯,請多想想
+ t0 P% J) N2 \4.
2 F9 i5 |6 N0 J( U$ ?當你解決上述問題後還要思考
: @% t5 }. E6 l$ d/ n" z: lCOUNTER要能數到 39999999
- c/ c* h' O4 A6 C這樣的計數器合成出來,須幾BIT你知道嗎(0~1023需10 BIT)
+ y7 O; ?$ v8 ~; S: I那麼這麼大的計術器有辦法跑到40M HZ嘛,況且你還要配上
' x' i  U' v4 p* o7 A( y5 U一個大的組合邏輯比較器(因為有用到if cnt<20000000 then)
3#
 樓主| 發表於 2008-5-18 17:13:16 | 只看該作者
恩~是的~我是要把它除到1HZ因為實驗器材的內部震盪晶體為40MHZ; _8 K* x+ ?. \2 E
除完1HZ接上計數器這樣~下面是我後來又改的><" 難道精準式除頻有很多種方法做??
% O. N. ^0 ]8 y3 S* Fentity clk_95 is
5 {, D/ d) Q- X0 w. p* r    Port ( clk40  : in  STD_LOGIC;, u, j4 N4 r/ m
                          enable : in  STD_LOGIC;
4 X' F0 f  S4 }3 g                          switch : in        STD_LOGIC;5 @) f- r8 B- T( k' m$ h
           a,b,c,d,e,f,g,p : out STD_LOGIC;* g9 }( m6 x7 J8 L6 }8 K% e- b
                          SEL : OUT   STD_LOGIC_VECTOR (5 DOWNTO 0));
  I/ O- ^* }5 u  qend clk_95;
+ r9 k& E, c' |7 A( I5 y# r0 Q1 o+ u/ D, {" \. G
architecture Behavioral of clk_95 is" c8 J+ w3 e  E+ R. r+ y
signal clk1 : STD_LOGIC  ;9 E2 a) v; D7 e2 C/ {5 W% R
signal cnt  : STD_LOGIC ;
% H% x+ ?' F( L1 ^/ Psignal x1  : STD_LOGIC_VECTOR ( 3 DOWNTO 0);8 C& t5 ~% g) d
signal x2   : STD_LOGIC_VECTOR ( 3 DOWNTO 0);/ ]9 |( B$ V' q( T' X5 _  ]" i
signal count1 : STD_LOGIC_VECTOR (3 DOWNTO 0);
. v8 w' Q$ t; M7 @. osignal count2 : STD_LOGIC_VECTOR (3 DOWNTO 0);
  Z$ ^, i& B) ^5 x2 ksignal y                : STD_LOGIC_VECTOR (7 DOWNTO 0);
1 y% ?4 @/ [3 ~5 O+ @. \begin
. [: q2 s4 x4 s8 f. g  s* S* f
- B0 u0 [. @# D9 M6 C, }        process(clk40)0 O% V+ ^! l& U6 G8 l/ x
        variable cnt:integer range 0 to 39999999;
; T8 I5 h. l0 g$ u) E        begin, v& n5 e) M  u% j, {4 [2 O. m; B4 O
                        if clk40'event and clk40='1' then& a- \. @# a& z9 @6 E2 B
                                if cnt<20000000 then
% @5 h4 p! ~6 Z7 S& ^5 w; Q& J- R                                cnt:= 0 ;
, w3 I. H* ?  y+ {1 T9 x/ f                                else
( A0 T- f7 \2 I3 x8 s7 D                                cnt:= 1 ;
9 E: N0 R" N& _) W- Y$ {8 C                                end if;! {6 }: f' H0 L8 F: T& i, O: B
                        end if;
2 V! Q% D1 l2 g0 X7 \        end process;9 u1 U7 t8 |. k# Q, a: c9 i
        clk1<=cnt;
# D6 M3 N& C+ m7 Q        8 Q: |  v$ R. T3 m3 C
        process(clk1)% S+ _4 I" Z/ g7 J. H# ]9 B. C/ _
        begin' y1 K( T( b3 V
                                if clk1'event and clk1='1' then# Y# u) G) D# ?  n
                                        if switch='0' then& n4 O. c$ H6 ?. Q
                                                count1<=count1 + 1 ;
4 Y# R8 L( w6 L: L+ ^                                                        if count1="0110" then. D, h" R0 s" ?
                                                        count1<="0000" ;
6 F4 {& V6 k+ S# K                                                        end if;! o: V% g3 N& ?
                                                else
0 p8 B1 e: ]. U/ u4 Q7 ~- c; m                                                count2<=count2 + 1;
+ a) L8 {) S0 P4 |) x6 H- h6 _                                                        if count2="1000" then7 ]8 ?' Z; T! B2 k+ Q  e4 @
                                                        count2<="0000" ;% D# _# L  _: W3 Y
                                                        end if;
6 V8 k) c# m6 X: N& |+ a                                        end if;                / y5 A4 T% ]! X, d8 X
                                end if;" N, ^* ]7 c7 y' h' Q* o7 i
        end process;
% ~) l/ s6 |0 P) ?  B後面是我自己要接出去的東西~所以我沒PO!!
4#
發表於 2008-5-18 17:58:36 | 只看該作者
您好" V- P: C! ~6 d8 E, s2 u
這樣還是有問題0 ^' b6 b7 s+ E  e# j& g
可以試試" M% T9 h9 `  H) M! l) o
process(clk40)
  t1 M' C6 ]/ ^* ^        variable cnt:integer range 0 to 39999999;  S& `3 \* I' f9 H7 y& W) U
        begin
! u) w- B0 p- J  m, p4 D                        if clk40'event and clk40='1' then8 B  [5 E0 o) ~
                                if cnt=39999999 then$ E$ O; ]6 T7 c$ V1 \  G
                                     cnt:=0;
* B1 ?) ^" B4 i# ?2 Q: G                               else
: n4 D- o: s9 _4 z3 C+ b                                  cnt:=cnt+1;
7 X1 R7 m" @9 k) U8 T                                  if cnt<20000000 then
# i  \3 r  Q2 Y7 S5 ^( _( r                                       clk1<= 0 ;& J+ e+ C& s& K6 o: ^: D' e. ?0 q
                                  else
% b. o* L+ n5 u+ D; q% K7 {3 |                                       clk1<= 1 ;
: c$ L; g* c$ l5 U& b                                 end if;, I$ m- b$ l2 M* V. l0 J  d6 u. S
                             end if;1 b: T; m" D3 q, X
                        end if;
: `- H8 G2 _) d8 z: p- a6 s2 `        end process;
% ]- c* @3 [" }) R' L( y       - x% u/ N( P# e7 k3 V, K, h2 r: K
或者
0 Z0 I# A7 O7 }: F9 z0 O& h# pprocess(clk40)- i6 ]; V5 ?' U2 x8 |- }% e
        variable cnt:integer range 0 to 39999999;7 P3 Q# G+ @& f6 H0 _
        begin/ s7 L  _  b" B& w. `
                        if clk40'event and clk40='1' then
" K; e9 D5 u4 b6 [: X                                
$ F0 X+ {' f+ Z- j                                if cnt=39999999 then
$ M! X6 ^9 f$ \  C. M/ G                                     cnt:=0;
2 k( H5 m$ c$ r& \: y                                     clk1<= 0 ;" B+ n. b: ~& T& b/ T
                                else- m5 G3 _1 I' _4 C5 M
                                     cnt:=cnt+1;
  Z) [: N$ d' d4 Y                                     if cnt=20000000 then
6 r# R: o8 d! a4 r( G) x0 E' Z                                         clk1<= 1;
' N- V0 J; J/ c9 {0 E! K# I4 f( `                                     end if;
* A, N% A; V, O                               end if;
5 y4 w# b) s: L7 P& E                        end if;4 {% l6 h1 F: I7 R4 H
        end process;
' {, _7 u# M/ F! D
$ A$ O. y" x, {不過兩種方法都有我第4點的問題
, d: a+ T0 E0 }+ `, E如果你是用quartus2可以分析一下
3 u6 b# n' _) O8 G" V( b( e你的clk40可以跑多快
5#
 樓主| 發表於 2008-5-18 23:02:25 | 只看該作者
40MHZ! l  e$ e+ O( y; |! \
我想我只能實際去試試看燒在上面能不能跑~
3 D4 ^7 c$ b% p+ ^/ e因為我還是沒辦法用電腦模擬出來~  f! G/ x$ t7 m; H7 ~$ J$ ?& U
感謝你~ 結果在跟你回報!!
6#
發表於 2008-5-19 00:03:14 | 只看該作者
gto10620 別忘了給addn "感謝哦"( \' Z" J" o# ^/ `

* |& b+ a: j0 D4 Y. D& I5 E# @. d+ Y按評分就可以了

本帖子中包含更多資源

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

x
7#
 樓主| 發表於 2008-5-19 17:04:30 | 只看該作者
收到^^ 抱歉~      6 c+ u* \1 \9 \, [6 C' p
下次清楚囉!!
8#
發表於 2008-5-19 18:10:24 | 只看該作者
現在補也來的及的, 不用等下次了
9#
 樓主| 發表於 2008-5-20 01:53:53 | 只看該作者
我有補囉!! 我說下次一定會記得給!! 誤會我的意思囉!版主~$ M' V" c/ _2 i2 ?2 n* t: U6 i
( Y3 B& x+ [  E8 k
我希望我能在這領域學會!!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-12-28 03:20 AM , Processed in 0.181010 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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