Chip123 科技應用創新平台

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

作者: gto10620    時間: 2008-5-17 01:32 PM
標題: 精準式除頻設計??
entity clk1 is& q+ i4 ]: S4 A9 y$ n* Y+ m9 P
    Port ( clk40 : in  STD_LOGIC;
$ q7 [0 O* L% y! H, N+ ~* p! c2 a+ k                          clk1  : out std_logic );
9 D$ ~  J7 w' {; uend clk1;
; C5 p& X4 ]) B, [, @7 J) S4 L/ C1 O8 u3 }; n, A4 w
architecture Behavioral of clk1 is
& k6 }+ d5 Q, e& Z- d9 ~signal cnt :std_logic;4 i: [$ k8 r* ?/ h# i* r4 B0 j% `
begin
) }0 r. M+ @8 C' H' E. o! Y# Z  }3 D4 H, w" g. u. u
        process(clk40)
5 u9 a. z4 y" _        variable cnt:integer range 0 to 39999999;
5 e- o0 r5 k! A3 ~* a! `" a  [        begin
/ v3 L2 f5 Q  t5 J/ i                        if clk40'event and clk40='1' then/ I$ v' h; L9 |+ M/ }- S' G. T
                                if cnt<20000000 then
' W' T2 D5 ~9 j9 d, |% x                                        cnt:=0;9 {: }/ U6 d' {6 h
                                        else
- |3 N: @( F+ o- Z. V$ C3 v  h                                        cnt:=cnt+1;                                         
2 c, ]3 J" h9 s3 _* J$ e! y5 i                                end if;6 q# W$ e# X% P
                        end if;' w! x* h+ k& K8 v2 |* J
                        clk1<= cnt;2 {& I/ B' Q" H- R# X6 I  i1 O
        end process;) O9 T# n8 f% Q) h" `9 p9 }1 M" ?
end Behavioral;
# m( Q3 _! U+ @# _9 p6 i+ O為什麼CLK與CNT不相容?& @  S( N" d5 y4 \- V5 G
還是我的設計是完全錯誤的?- e% H2 R: K0 y  B
0~~~~~~~~~~~~~~~~~~~~~~~~~~~20MHZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~40MHZ
8 w/ j1 ]& l6 b________________________________↑--------------------
8 p4 D( V2 Y& E( `! u5 [          此段'0'                        此段'1'* a2 J/ o# T0 S: u  i
正緣觸發~
作者: addn    時間: 2008-5-17 11:00 PM
您好7 d2 F: a  c0 @: l
1.
8 A3 x* h1 z6 R. M5 l6 _請問你是要將40M HZ除頻到1 HZ嗎?1 ]& |4 N8 R1 P9 d7 g
2., S# C' R- s' `( {, h- T: T) \3 l
CLK1是定義是1 BIT的輸出,跟cnt的定義integer不同
- u0 e5 s  H  O當然不能CLK1<= cnt,
! Z3 y8 ?# K; W3.
4 m# l( b$ h2 B1 I+ X你的CODE有錯,請多想想" Y! J) W5 l; k1 J. e# {5 z
4./ G" u* j: r% X2 `. }
當你解決上述問題後還要思考
6 v$ j- K% n4 bCOUNTER要能數到 39999999" W2 g4 J8 r: @% D0 P# K
這樣的計數器合成出來,須幾BIT你知道嗎(0~1023需10 BIT)
5 v& T3 J$ F; ?8 T那麼這麼大的計術器有辦法跑到40M HZ嘛,況且你還要配上2 O6 h3 {- U' A* P, e& z1 y8 `! Q
一個大的組合邏輯比較器(因為有用到if cnt<20000000 then)
作者: gto10620    時間: 2008-5-18 05:13 PM
恩~是的~我是要把它除到1HZ因為實驗器材的內部震盪晶體為40MHZ# J1 s2 c: r, l
除完1HZ接上計數器這樣~下面是我後來又改的><" 難道精準式除頻有很多種方法做??6 }5 X5 M( f" D  ^! N1 O
entity clk_95 is
" T$ \- J# T4 B& d    Port ( clk40  : in  STD_LOGIC;
' E1 J4 H: ^; ~2 R% f3 w                          enable : in  STD_LOGIC;  L+ a; W! j4 s0 ^
                          switch : in        STD_LOGIC;6 B- s0 K1 J9 u) \/ W
           a,b,c,d,e,f,g,p : out STD_LOGIC;$ {  k8 H) t# i- u% Y% e
                          SEL : OUT   STD_LOGIC_VECTOR (5 DOWNTO 0));' I( ?0 R) Q- \6 t
end clk_95;
/ b% z) D6 t3 P3 f# O/ \+ ]
# Q0 E! {  v/ ?. k  ^* Yarchitecture Behavioral of clk_95 is7 L' e& z0 N( t$ I7 u6 e; m! |. I0 w, D
signal clk1 : STD_LOGIC  ;+ s2 j+ T* C. ?
signal cnt  : STD_LOGIC ;) T: y5 z% V) e. f3 V
signal x1  : STD_LOGIC_VECTOR ( 3 DOWNTO 0);2 Y6 a) v4 l; g. D  P
signal x2   : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
& d* l( s9 J5 `) l" ssignal count1 : STD_LOGIC_VECTOR (3 DOWNTO 0);+ h- \/ t% Y3 y! n( r: I5 a9 Z& a
signal count2 : STD_LOGIC_VECTOR (3 DOWNTO 0);
3 b3 F+ t5 u1 R, T+ |signal y                : STD_LOGIC_VECTOR (7 DOWNTO 0);5 D9 d. e0 K: U2 p
begin
% J) R3 ]+ V  k- c$ z
8 v+ X" y7 \8 q. Q( @        process(clk40)
6 G: R0 y" d1 F2 [- q3 g        variable cnt:integer range 0 to 39999999;. B* ^, A% R+ X5 ]2 v: ]$ l
        begin  X: W; S0 f6 R( Y$ I
                        if clk40'event and clk40='1' then
, W: S+ c) V5 s& k! l: k                                if cnt<20000000 then
% S7 B' o% i7 M" t' s                                cnt:= 0 ;
9 _0 ^" k! l; n$ a1 L% i/ R                                else 2 d5 E2 X' a+ @+ H" I8 b) c
                                cnt:= 1 ;2 K* I$ r2 y. M& K
                                end if;8 G1 j8 J7 u# p& {
                        end if;
, Z0 n! q" b0 S+ _2 P        end process;
# J1 k$ d3 u4 |/ k        clk1<=cnt;
0 I) b: \- H/ P8 t3 Q! m% p       
) F+ D9 g' {9 f4 M7 S- F        process(clk1)
0 N" T. G: x' _# e# e8 |, A        begin
! \( h6 V! ?/ ~% J% x                                if clk1'event and clk1='1' then
3 d3 M  w: G& |% e) [! [, O! }7 s8 @6 f                                        if switch='0' then, Z! _& z& k' L. I
                                                count1<=count1 + 1 ;
  L' r1 e( f2 [' V% G4 j! V% U                                                        if count1="0110" then% H& c: F2 N+ i' `# X9 c. J
                                                        count1<="0000" ;
( _, F2 v: m9 P2 ~4 }                                                        end if;
' G8 R. ~  U* V, @# b                                                else0 q- h% `  |8 e3 X
                                                count2<=count2 + 1;
6 F' D* N3 S; r% A0 O                                                        if count2="1000" then
$ M4 u. G2 ?5 P1 m6 O                                                        count2<="0000" ;
( a/ X; y% j, X                                                        end if;& r8 @# t- r( d: k# A! @5 e: M
                                        end if;                3 t" T  f, U2 |4 h  d
                                end if;
  n$ W; T9 r. s* ^8 V/ G) a  d        end process;
& ^9 V5 y0 o* T" A+ H. c後面是我自己要接出去的東西~所以我沒PO!!
作者: addn    時間: 2008-5-18 05:58 PM
您好( q! }# i% k; o6 }5 ^8 e1 f3 {  B
這樣還是有問題6 W  m$ V, o4 G$ ]+ F# y0 B
可以試試
; k' A6 i" W' R" nprocess(clk40)
5 P7 s) u9 O" |0 F" S2 D$ A        variable cnt:integer range 0 to 39999999;
+ ~& ~# h) P/ M        begin
6 t$ |1 y# Z% V  G" V- K; k                        if clk40'event and clk40='1' then5 A7 e) n) R( E5 R1 P; O$ b4 [
                                if cnt=39999999 then
' A1 Z) [0 q% N1 {* F/ c                                     cnt:=0;9 Z: V9 _8 l$ o: L3 c
                               else
# e, T2 l- L; u+ M7 E! Y2 [9 Y                                  cnt:=cnt+1;
7 V9 p; A2 @, p4 X' v                                  if cnt<20000000 then$ V4 w, g0 E# ?
                                       clk1<= 0 ;
  p' V6 b2 w5 C( E3 P/ p: q                                  else 2 J. o4 h% t' ^# J7 f4 C9 ]
                                       clk1<= 1 ;. T  D! Y6 o6 n; y% v
                                 end if;8 j. s# L4 a% M6 V* j( e
                             end if;
% M1 y0 ?3 H0 w$ ]! `                        end if;
1 _0 @; W0 S6 W        end process;
3 M4 d- y/ [3 j2 s' p0 Z6 _9 R      
& u# Q. P& t% ]" a. @或者
: q2 \3 f+ q9 T8 R+ Tprocess(clk40): P! g$ u" Q5 L+ t: _3 X
        variable cnt:integer range 0 to 39999999;
) F2 T2 O, {; r" m4 ]        begin3 V. x& \: {' G% L5 U
                        if clk40'event and clk40='1' then, N% G# j) V6 K! M3 S: ?7 ?5 d. k) X
                                - a  O* c6 C& E1 o7 p
                                if cnt=39999999 then. n$ R7 ^- k) a3 h8 g2 R1 _
                                     cnt:=0;
" }1 h; V' n8 y9 g7 L& U9 O) k: {# i                                     clk1<= 0 ;
5 m  q% ?8 y6 w7 V: ?                                else
& y% ~" C( o3 j                                     cnt:=cnt+1;
5 O, x! R" ?' ?7 T                                     if cnt=20000000 then- Q7 y# U" F7 Q1 Z$ w* P; ?
                                         clk1<= 1;/ m- [4 i- g% a# v7 u
                                     end if;
/ k8 G% Y0 Y. p2 _8 t( O                               end if;
4 p% t6 J* N8 V( c                        end if;
  `( X  z! ^1 j3 `        end process;
- V0 E: r: B( i" l! k! R2 P% x7 Y7 K& J, n8 s/ V; f
不過兩種方法都有我第4點的問題. J( y9 R: N+ S2 {( X) |1 j  h
如果你是用quartus2可以分析一下
, B/ K/ r! G. R你的clk40可以跑多快
作者: gto10620    時間: 2008-5-18 11:02 PM
40MHZ
( S% U. O& D6 J1 t/ V1 O我想我只能實際去試試看燒在上面能不能跑~$ ?4 S5 T/ ^' ?
因為我還是沒辦法用電腦模擬出來~+ V+ }) x" ?. T! P( _$ y
感謝你~ 結果在跟你回報!!
作者: tommywgt    時間: 2008-5-19 12:03 AM
gto10620 別忘了給addn "感謝哦"
# @/ i8 U) r$ }* R% i; u: `6 R4 R6 G+ Q  v$ u
按評分就可以了
作者: gto10620    時間: 2008-5-19 05:04 PM
收到^^ 抱歉~      # u( M: y. D: i. @5 M4 d/ S  _
下次清楚囉!!
作者: tommywgt    時間: 2008-5-19 06:10 PM
現在補也來的及的, 不用等下次了
作者: gto10620    時間: 2008-5-20 01:53 AM
我有補囉!! 我說下次一定會記得給!! 誤會我的意思囉!版主~
0 b5 n5 u$ i& g8 i% M9 l0 M: V; J$ v" v2 i! F3 K
我希望我能在這領域學會!!




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