Chip123 科技應用創新平台

標題: 精準式除頻設計?? [打印本頁]

作者: gto10620    時間: 2008-5-17 01:32 PM
標題: 精準式除頻設計??
entity clk1 is
, i' |7 B8 t" C5 B    Port ( clk40 : in  STD_LOGIC;
( }/ k5 o" s  Z; ]                          clk1  : out std_logic );
0 C' n$ u9 X, x& E, }9 z# n& G; bend clk1;" E5 H+ W2 `: e- n6 k) d

$ g! j3 z- R, R+ I0 h# U  d! ?* farchitecture Behavioral of clk1 is
  W7 E) T0 @9 ]6 ^2 w, f7 f8 Nsignal cnt :std_logic;
7 ?% e! J4 c$ w2 {+ {begin$ m) \0 v7 O/ S( i9 O
9 ?& k. L2 j. {( k% K
        process(clk40)
* \! c" ]/ x/ `% `, V! `7 s        variable cnt:integer range 0 to 39999999;# x. l: S. V  @2 H
        begin  B# n: [$ X, w3 ]; {" |
                        if clk40'event and clk40='1' then6 @1 j7 Y. Y* t5 R9 ?
                                if cnt<20000000 then  C4 {0 W' u2 C1 Y: d3 h* o- `5 X
                                        cnt:=0;  E) m' H8 a) n% R4 P- j- C+ ^% N
                                        else
& `: m' Q5 \% j5 v" w                                        cnt:=cnt+1;                                         
* L6 E, [. O: ]/ {0 J( o                                end if;7 p- {% T" Q* b' v* m; C2 l
                        end if;! P8 |  F+ P5 \0 b0 P5 x
                        clk1<= cnt;
6 S" d" @( Q; W+ z        end process;& Y5 [- `2 u2 t
end Behavioral;* E0 f% B: U0 h0 z0 }
為什麼CLK與CNT不相容?2 U- l8 H/ G+ o+ F& x2 T
還是我的設計是完全錯誤的?
; ?, T& e# T, j/ N0~~~~~~~~~~~~~~~~~~~~~~~~~~~20MHZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~40MHZ
' W0 w0 W+ K1 q! u& B________________________________↑--------------------1 _, e# I* m4 H
          此段'0'                        此段'1'- u, t$ y6 E8 H$ w% @- U8 G
正緣觸發~
作者: addn    時間: 2008-5-17 11:00 PM
您好6 B# P* x% ?/ S3 F5 q
1.
" `8 ?2 t. I( C請問你是要將40M HZ除頻到1 HZ嗎?
" j1 R7 h/ ~& w2.
$ j- i7 ~- Y( Z9 x$ zCLK1是定義是1 BIT的輸出,跟cnt的定義integer不同
9 ]9 @9 O" |# {當然不能CLK1<= cnt,
0 P9 X4 {# b5 x8 k; b3.& K- @# M. G$ M$ q, u6 K) {
你的CODE有錯,請多想想6 x4 Z" l! [4 e5 D6 V6 D& h
4.2 ~8 P3 I. f$ j; \1 f- M0 H0 v
當你解決上述問題後還要思考
. w9 x  `0 O: c& q  @. K5 GCOUNTER要能數到 399999992 h; \& R) Z5 v1 n" \! |
這樣的計數器合成出來,須幾BIT你知道嗎(0~1023需10 BIT)
: l/ F6 `, l2 G那麼這麼大的計術器有辦法跑到40M HZ嘛,況且你還要配上
0 [* p( z7 |8 d; n5 M一個大的組合邏輯比較器(因為有用到if cnt<20000000 then)
作者: gto10620    時間: 2008-5-18 05:13 PM
恩~是的~我是要把它除到1HZ因為實驗器材的內部震盪晶體為40MHZ
$ ^' ~1 w' X" @( b除完1HZ接上計數器這樣~下面是我後來又改的><" 難道精準式除頻有很多種方法做??) Y/ J% D! t/ j0 T0 C
entity clk_95 is: I: S$ f' w: [
    Port ( clk40  : in  STD_LOGIC;( O$ J6 `; O9 [5 a3 k( z3 O) H# p2 D
                          enable : in  STD_LOGIC;
* _, k' f; J' \- @+ R% U                          switch : in        STD_LOGIC;+ L% Z9 o5 ~, P9 k. W1 P' X% g
           a,b,c,d,e,f,g,p : out STD_LOGIC;
! h+ A2 @1 P7 }2 B, q2 Y                          SEL : OUT   STD_LOGIC_VECTOR (5 DOWNTO 0));. Q0 ^8 q# u5 k2 U% A  a1 Z
end clk_95;1 r  p/ I/ A5 G
) D  Y( [$ @! j  f$ v$ t9 a
architecture Behavioral of clk_95 is* S1 N( u% ~4 b- M4 x+ i1 ?7 h& ]2 b; H
signal clk1 : STD_LOGIC  ;. b$ `7 o" }" M5 M: {3 c
signal cnt  : STD_LOGIC ;3 g+ R4 P7 T/ ~( e4 I
signal x1  : STD_LOGIC_VECTOR ( 3 DOWNTO 0);9 f* u% ~  r; ?& ^* M, O
signal x2   : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
% {# _# J! r0 |6 z7 a* z- ~( Xsignal count1 : STD_LOGIC_VECTOR (3 DOWNTO 0);
* q3 f" J- n" P# msignal count2 : STD_LOGIC_VECTOR (3 DOWNTO 0);
- E( d1 a. N, qsignal y                : STD_LOGIC_VECTOR (7 DOWNTO 0);% ~1 N$ \: i/ m2 h# w) g! z! }
begin' U! _3 M# A+ y; c

/ ]" f' F5 Z) o( \) W        process(clk40)
! g) h0 A6 q8 `. v9 b, i        variable cnt:integer range 0 to 39999999;
2 K! m5 |" }3 {" ]        begin& B' Z) N; r  k
                        if clk40'event and clk40='1' then
. z# k" a, {4 t+ m0 Z                                if cnt<20000000 then
$ V" o6 C2 w- t0 q1 x* _                                cnt:= 0 ;* X4 p" A0 |; ]- E3 J7 S! W8 D
                                else - }( d% j3 t7 K& z: }& l# n
                                cnt:= 1 ;
" K! f8 s7 m& S7 [' g3 c/ N                                end if;7 R3 b- u: |- `4 N: H" k
                        end if;
! \. d* ~) t, s& L$ p6 R: `        end process;6 z# V4 C1 X0 ~
        clk1<=cnt;) M' F& ?/ N" n9 n+ }2 c: o% ^
        , M* t4 |! K! P( N2 F) w. {
        process(clk1)! q+ N  X( D9 f& G: |4 \3 k
        begin
: I$ |- H8 f! j  _! p                                if clk1'event and clk1='1' then
0 v8 g' T2 w9 |4 ?                                        if switch='0' then
6 E. q% I% p, Y" ]6 Y- F& W                                                count1<=count1 + 1 ;
" Q  d! |4 k# k" B$ a* U0 R+ q# P                                                        if count1="0110" then
3 ]9 J* h$ f6 q                                                        count1<="0000" ;7 [& f+ ]0 j( j( s. y/ |; Z6 I
                                                        end if;/ X9 E4 c# D9 k; h; U% j4 `
                                                else
: q4 d# D/ u7 g& _, n& V7 l5 R                                                count2<=count2 + 1;. l; c3 j2 h) K# X1 h8 o9 H, ~
                                                        if count2="1000" then: _+ [/ N8 H$ [# @
                                                        count2<="0000" ;
7 S& ?# g% k: f% ]' t8 m                                                        end if;5 k% {4 L" c+ x  k
                                        end if;               
6 w2 u0 z8 n& X' S0 _2 h4 l                                end if;
- e, z* H. L- K; D) v: Z        end process;- N& E- Y9 B! Z4 b3 F
後面是我自己要接出去的東西~所以我沒PO!!
作者: addn    時間: 2008-5-18 05:58 PM
您好0 H) @( a5 z3 B, \
這樣還是有問題' X+ u+ N0 F* K# A7 G* f
可以試試# {# B3 C7 u) x, n5 H/ }
process(clk40)* Q% _+ ~. [# _
        variable cnt:integer range 0 to 39999999;
- f1 ]" i/ `9 V- T2 ~        begin! A3 |7 E/ w( Q; U* \' c6 e6 E+ e
                        if clk40'event and clk40='1' then
/ T' s7 f; u( U: e5 @& t. d                                if cnt=39999999 then9 {, e" l: l, I/ ~* k
                                     cnt:=0;
. |, o+ d# h6 g9 x* p3 |                               else7 ~- f" ~" g& L  ^
                                  cnt:=cnt+1;
9 o2 b) Y3 M0 u9 V4 L# D: x8 H! ]                                  if cnt<20000000 then( S# ?# h. |! Y/ y- v/ ~- B
                                       clk1<= 0 ;/ Q& J( P/ |: s
                                  else
" I: b2 @/ F4 U                                       clk1<= 1 ;7 I8 k; E2 c' a2 n6 a1 I, C7 A
                                 end if;. m6 d8 F  K. }
                             end if;
5 ~$ Q3 H% u4 v; c5 {( f                        end if;, x8 ~% p7 I& a' R4 Z
        end process;
! N' k+ z- a. z+ ?/ q- S3 j      
2 b! F+ y! p0 W或者
: m' w. G* U, A' g3 _- U2 P4 Fprocess(clk40)
7 f# ^1 ^& ]# \        variable cnt:integer range 0 to 39999999;
1 V/ b3 P7 m+ Y: p: O: ~* s        begin
) S# G8 |3 E! [- J9 I, z                        if clk40'event and clk40='1' then% ]  e+ f6 Q5 {; Z0 u4 p
                                
; j  M& e2 x4 |5 T6 I: M& Y                                if cnt=39999999 then
0 ~* H$ r# [1 E                                     cnt:=0;
7 @' `, }1 r$ ^' `  @3 c5 x                                     clk1<= 0 ;
& C+ Y3 }4 X, y/ R0 P# p                                else
1 b: k4 H3 x* X# T                                     cnt:=cnt+1;
' ?# |4 ]1 h# S& D" U5 J% e% Q6 B# ?                                     if cnt=20000000 then* x3 O  j1 ^1 I
                                         clk1<= 1;1 Q6 l4 T& o$ Q% V! ?, X8 c
                                     end if;6 G" m. w/ Z! K& t: g  d
                               end if;
' W0 e9 I( d$ {" ^- K* R                        end if;- J7 Q4 W$ q4 S' q7 f3 L; r
        end process;
! f+ t2 i" S8 C, e3 W7 h6 u
5 a. W0 c8 }4 q, O. A4 Y不過兩種方法都有我第4點的問題5 f# U( i8 H, S0 c; {
如果你是用quartus2可以分析一下$ G8 v6 T' ^) C
你的clk40可以跑多快
作者: gto10620    時間: 2008-5-18 11:02 PM
40MHZ% m' m0 [: P" e0 y
我想我只能實際去試試看燒在上面能不能跑~
% [0 P! q. d# u( L1 y) s9 J4 S/ n" S因為我還是沒辦法用電腦模擬出來~
! p0 L+ D  u9 o  s/ W; S" `! x感謝你~ 結果在跟你回報!!
作者: tommywgt    時間: 2008-5-19 12:03 AM
gto10620 別忘了給addn "感謝哦". d- o" n- W( F& Y# s+ r
% U- O* G" p# f# K* m$ V
按評分就可以了
作者: gto10620    時間: 2008-5-19 05:04 PM
收到^^ 抱歉~      
' {. T: o0 s& \) e: x4 A下次清楚囉!!
作者: tommywgt    時間: 2008-5-19 06:10 PM
現在補也來的及的, 不用等下次了
作者: gto10620    時間: 2008-5-20 01:53 AM
我有補囉!! 我說下次一定會記得給!! 誤會我的意思囉!版主~
8 D6 k* `1 v: \0 \! _% W* y0 _! d# s7 l% M  D% Q2 `0 q
我希望我能在這領域學會!!




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