Chip123 科技應用創新平台

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

作者: gto10620    時間: 2008-5-17 01:32 PM
標題: 精準式除頻設計??
entity clk1 is
6 f/ P% F: |$ R    Port ( clk40 : in  STD_LOGIC;
. y5 j: h2 K/ [+ m                          clk1  : out std_logic );! k9 k3 J7 D2 _) y
end clk1;
. a) G. R/ @1 _+ B8 r! L2 x) B9 \0 j6 X+ }- \6 Y  O
architecture Behavioral of clk1 is: H! b! f6 n* T
signal cnt :std_logic;1 q; ^9 F* P6 F' g. n
begin
& i( @7 A1 o" t- w& Y( q$ p. L7 Q2 j7 R2 W2 y
        process(clk40)
" c4 l* a2 w: q6 `8 H& Y. F        variable cnt:integer range 0 to 39999999;
+ u6 g- }8 Q' Y; F0 t        begin! u/ Q9 _( G; s8 z1 @: Y
                        if clk40'event and clk40='1' then
7 t, ^9 t8 ?0 t' v( P1 z( x                                if cnt<20000000 then% f' U& ]2 E0 o. `
                                        cnt:=0;
0 \. M7 @  t$ f1 P9 H( x' W                                        else
/ \8 J+ u. T% V8 z( J0 f# `                                        cnt:=cnt+1;                                         
" f  G" U+ }2 x% a8 m6 A) M                                end if;
2 w, ^# b. v3 m2 J% b% @) [                        end if;6 }* ?% e: `2 |# ]* I
                        clk1<= cnt;
; N, c0 J! _5 v! a        end process;6 q) |7 a! t- o% C7 ~
end Behavioral;( C9 J( f$ x5 V6 y
為什麼CLK與CNT不相容?& x  b- B9 G; r7 i- U
還是我的設計是完全錯誤的?0 B* k9 q, w7 H
0~~~~~~~~~~~~~~~~~~~~~~~~~~~20MHZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~40MHZ
5 |1 n  _7 O: Q________________________________↑--------------------
8 B$ q2 r8 P) N8 |          此段'0'                        此段'1'7 c9 e. ^, [. K* l
正緣觸發~
作者: addn    時間: 2008-5-17 11:00 PM
您好
9 i: T3 H. Y9 C: D  m1.
* `8 J* ~' R2 c( r0 [請問你是要將40M HZ除頻到1 HZ嗎?3 Q/ j3 n! t7 q7 j* i6 c; W( C
2.6 Y$ N, ^7 d6 N5 k1 E) p; Q
CLK1是定義是1 BIT的輸出,跟cnt的定義integer不同5 M! r) O9 H1 _1 G. d
當然不能CLK1<= cnt,
' t' d8 V: t, H2 u! |+ t$ `7 H3.% c2 F& n9 U, c6 v" x( l* z
你的CODE有錯,請多想想( f5 I& M9 o: ]* P) c3 ]" k
4.
( @3 ^, f) x0 g9 A+ \, U當你解決上述問題後還要思考
9 h1 r  D0 L" ~1 HCOUNTER要能數到 39999999
7 ~. C: {( a. }7 A- O$ C這樣的計數器合成出來,須幾BIT你知道嗎(0~1023需10 BIT)
! [/ X% W! f& n' h" M* S: _  V; }6 p那麼這麼大的計術器有辦法跑到40M HZ嘛,況且你還要配上% |* O3 j2 V7 ?- n" c: ]
一個大的組合邏輯比較器(因為有用到if cnt<20000000 then)
作者: gto10620    時間: 2008-5-18 05:13 PM
恩~是的~我是要把它除到1HZ因為實驗器材的內部震盪晶體為40MHZ
* Q( X. b5 `5 _4 N/ X除完1HZ接上計數器這樣~下面是我後來又改的><" 難道精準式除頻有很多種方法做??
4 Q2 g7 l7 Z: E! sentity clk_95 is0 `$ B9 U# R: K2 r, A4 I7 D
    Port ( clk40  : in  STD_LOGIC;
+ U1 v9 ]- T5 E! [: u7 y" Z! a  S( s                          enable : in  STD_LOGIC;
; g  u$ ~* r! {4 ^$ V                          switch : in        STD_LOGIC;$ @; n" ^1 {! B" v; e. g6 W! U
           a,b,c,d,e,f,g,p : out STD_LOGIC;) d% d$ g1 t6 h: P" ?3 P/ D2 R! t
                          SEL : OUT   STD_LOGIC_VECTOR (5 DOWNTO 0));2 y) I/ h: {& m
end clk_95;# Z  v% @: ]- N# e- ^

) u5 W( N  A  `; N  Darchitecture Behavioral of clk_95 is; e& k; a$ `/ i/ B2 T0 ^# C
signal clk1 : STD_LOGIC  ;( m. R  R$ w. A6 B& g( o% }
signal cnt  : STD_LOGIC ;
9 d3 \% i$ j' Q8 `& ^signal x1  : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
) U0 R9 _$ z- e1 lsignal x2   : STD_LOGIC_VECTOR ( 3 DOWNTO 0);" c0 v: u) |' k' |0 z" s
signal count1 : STD_LOGIC_VECTOR (3 DOWNTO 0);0 y* u+ p% n5 Y
signal count2 : STD_LOGIC_VECTOR (3 DOWNTO 0);1 {, `, q; i: a8 n1 R2 C: F- W
signal y                : STD_LOGIC_VECTOR (7 DOWNTO 0);
+ j3 F) b! e0 R" G- Rbegin
9 B  H. K4 q0 Q
. d+ q8 A; D* x        process(clk40)
& |$ ?% b7 I  w+ V" Q        variable cnt:integer range 0 to 39999999;
3 R: c7 I, \" p5 X0 A% O" @        begin
4 a9 U( b, n* a" D) v                        if clk40'event and clk40='1' then, G" @+ H: k, U! H7 j2 V
                                if cnt<20000000 then
8 w  q" G) }; ?. B, R                                cnt:= 0 ;0 ?8 b6 z4 a0 c3 x5 u! S
                                else
9 y/ ~4 g+ O& e( `0 R  c, N                                cnt:= 1 ;, a: f# a4 u; H
                                end if;
' x& \$ f7 p, }- g4 e! l; a                        end if;1 p( r) b; b2 h* ]
        end process;% r; W% Q# W/ C# g
        clk1<=cnt;
8 _0 ~1 x) A4 a7 K. {        7 ]( p0 a1 a& u# s4 X& N' l
        process(clk1), ]9 u* d: h! z  c: R, E
        begin' N9 A* x( |) V- a* y
                                if clk1'event and clk1='1' then  ]0 @$ I# D+ S# V5 T: V
                                        if switch='0' then% ?' b- q( c4 T% s
                                                count1<=count1 + 1 ;
( g8 `9 a7 j, R- K: h. x- x                                                        if count1="0110" then0 b5 W* U! E0 P3 x
                                                        count1<="0000" ;
  ~9 ^, d+ g# `9 p2 C6 d& s8 [                                                        end if;7 r2 g4 \5 Y9 U0 f
                                                else* {6 {% r( W" c( t% f- F. w# n7 i
                                                count2<=count2 + 1;  k. o3 o6 d  ^0 Z5 u4 `7 `
                                                        if count2="1000" then
. n$ {$ m! F4 o5 v                                                        count2<="0000" ;1 B7 q2 _% D$ w9 l) X* Y/ ]9 [7 V0 _
                                                        end if;
( h/ o5 ]( k# e7 }  G; U                                        end if;               
9 F5 _: S$ ~8 S, S1 b1 `                                end if;
5 k( i1 w: P, B( D3 I% y, O' `8 j        end process;9 V' J+ o( k% m: K% ^" D
後面是我自己要接出去的東西~所以我沒PO!!
作者: addn    時間: 2008-5-18 05:58 PM
您好" z! u; q& q" w2 w
這樣還是有問題; |" U: g/ M: n; y
可以試試4 U, B/ |1 |/ D. D4 Z8 t& d
process(clk40)4 ]+ O2 e& M+ G! e% j
        variable cnt:integer range 0 to 39999999;0 [( G5 P* H  w1 L% g. G) s. T. S
        begin
2 j+ ^  L5 I" ~  k! V' ^. T                        if clk40'event and clk40='1' then' w% Q; W! T7 F5 R/ a
                                if cnt=39999999 then! h) ], Y: @- q" J4 c7 V$ ?! i8 N8 b! V
                                     cnt:=0;7 O/ r) `5 X8 s% L; i1 c1 G
                               else
1 V5 C2 u: d8 J% K( |2 {) L) ?                                  cnt:=cnt+1;. {) G2 E) p* [+ P
                                  if cnt<20000000 then
; n' g& T( V8 z9 X4 u& P6 R                                       clk1<= 0 ;" Q7 v+ x9 l: D' a- G
                                  else
5 T) m( @! W6 z0 Z* ?: Z! W                                       clk1<= 1 ;
0 q, i3 I* h/ c) |0 O                                 end if;
  w2 I. T+ |6 y1 @* O" E6 q                             end if;! x  H( ]' m! n, ]" a8 D
                        end if;9 d: o% j- p" H4 t4 v2 Z
        end process;
) v* X% {- _& [/ \0 l4 [      
1 N" s  f% t* O9 x5 [9 j& T3 q, `5 L或者
: F1 O  N4 T  {8 p% kprocess(clk40)
, O1 W* M/ U$ G2 Q4 o1 v+ A        variable cnt:integer range 0 to 39999999;) n7 \; ^$ R8 h) x
        begin
: O# p1 d% k2 K% d                        if clk40'event and clk40='1' then
6 l1 {. l3 {; C, ]2 K% k* T                                # t3 ^  a; D+ o5 d
                                if cnt=39999999 then
! }9 j4 e3 P. ~4 k7 v  c                                     cnt:=0;0 H5 [* s2 v- J. d1 g" \
                                     clk1<= 0 ;
, T# ^* |5 W% i0 l% z                                else" \5 n( \- `; V/ X; M
                                     cnt:=cnt+1;! Y. T3 n. a, j4 H4 _' p$ l- f
                                     if cnt=20000000 then  |4 n- ^: i' C% g* e
                                         clk1<= 1;$ w) G4 L; }! I& T
                                     end if;
- S( |/ b# b7 Y/ ]$ @& e( L                               end if;, n% p, }6 a0 ?' B- B
                        end if;6 ?: U- O% D* Y5 Q, B
        end process;
4 r5 g& J, r8 ]5 F+ }. t: \9 s  G% M5 J: t7 U5 C
不過兩種方法都有我第4點的問題: V5 S- L) O: q5 W% _) x
如果你是用quartus2可以分析一下$ |& E( ?) [+ \3 D/ d' I
你的clk40可以跑多快
作者: gto10620    時間: 2008-5-18 11:02 PM
40MHZ
. y9 u. w/ Z2 Q+ @; Z我想我只能實際去試試看燒在上面能不能跑~' C$ ?* ~6 ^& Q  N# w/ _5 s
因為我還是沒辦法用電腦模擬出來~
  H" d; z7 C# `/ Q& }* d感謝你~ 結果在跟你回報!!
作者: tommywgt    時間: 2008-5-19 12:03 AM
gto10620 別忘了給addn "感謝哦"
% H  ]  S) A. r" c6 H$ o; M$ ~4 }% U+ U
按評分就可以了
作者: gto10620    時間: 2008-5-19 05:04 PM
收到^^ 抱歉~      . V; S. c$ k1 Q% V: W
下次清楚囉!!
作者: tommywgt    時間: 2008-5-19 06:10 PM
現在補也來的及的, 不用等下次了
作者: gto10620    時間: 2008-5-20 01:53 AM
我有補囉!! 我說下次一定會記得給!! 誤會我的意思囉!版主~' Y! P  ^% v9 ?% d4 W

& j& y/ G, L/ k+ s( y我希望我能在這領域學會!!




歡迎光臨 Chip123 科技應用創新平台 (http://free.vireal.world/chip123_website/innoingbbs/) Powered by Discuz! X3.2