Chip123 科技應用創新平台

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

作者: gto10620    時間: 2008-5-17 01:32 PM
標題: 精準式除頻設計??
entity clk1 is5 A: U: p7 C1 V3 \
    Port ( clk40 : in  STD_LOGIC;
# X, d- L# Y! H" I1 ]# H2 s3 n                          clk1  : out std_logic );& S# e0 s( p% d
end clk1;7 X- A) y5 G& S& t  D% W
5 O+ g" T; y0 n# c' ~4 `
architecture Behavioral of clk1 is% ~; n, D9 a( r- h) s( Y, H! s0 ~
signal cnt :std_logic;% x' B. V* A3 l% ^2 I
begin
/ w# X- G( H6 b3 _' i3 ~4 X4 P, |
$ t% d1 ]% B6 z2 V        process(clk40)
! o3 m5 x& B* r# Z2 `3 n; Q8 t        variable cnt:integer range 0 to 39999999;& J8 E( P* u" z/ T( i5 b0 W
        begin  g, ^2 r7 o2 r3 T
                        if clk40'event and clk40='1' then
; i1 r' q  {8 {9 r' D                                if cnt<20000000 then! U# v) k2 Y7 t+ {; s8 u$ Y
                                        cnt:=0;
) s7 z5 y+ C7 b' F6 v                                        else
9 T# Z) Q. D+ @                                        cnt:=cnt+1;                                         9 h  D. l. b- ^
                                end if;
+ r$ F0 d* j9 Q/ N                        end if;( b+ h# s4 L( ?) m1 g) W3 Z
                        clk1<= cnt;
& D' G; [7 T4 H7 Y5 V8 x3 U  L9 m% I        end process;
% @5 u1 I+ v% u- s+ Iend Behavioral;
) n' e" W* e' I* P# f為什麼CLK與CNT不相容?% K+ L- G: J1 W, O. F
還是我的設計是完全錯誤的?
/ A5 ^* j3 a1 ^: S) P; T8 P/ ]0~~~~~~~~~~~~~~~~~~~~~~~~~~~20MHZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~40MHZ+ V8 Q) R$ R- ?) D+ S
________________________________↑--------------------
$ `" b4 ]: k: y2 L/ e( r          此段'0'                        此段'1'
% ]* I  Y) }2 G- h3 X1 J正緣觸發~
作者: addn    時間: 2008-5-17 11:00 PM
您好
& c  T: M8 K& G0 n8 Z3 f7 \9 }- A/ j1.
- `% V8 A& B0 v" @/ i3 Y請問你是要將40M HZ除頻到1 HZ嗎?
6 d# @7 Y' M8 D" k2 H2.: q0 \4 S8 T/ V& N7 v( K2 @
CLK1是定義是1 BIT的輸出,跟cnt的定義integer不同
& a* V4 ^/ i) K* m/ E* e當然不能CLK1<= cnt,4 d' p0 c: H, \; |$ I! `
3.
; \$ i) c0 o, Q- f  Z你的CODE有錯,請多想想
4 [7 `( c- [: i- g" c4.8 S) x, i/ f: P4 `
當你解決上述問題後還要思考3 p" p3 Q! ?& n) t3 Q" ]" A
COUNTER要能數到 39999999
2 U/ H# s5 h4 o, n1 b! j3 o+ g0 j這樣的計數器合成出來,須幾BIT你知道嗎(0~1023需10 BIT)% c0 \2 [0 w" H
那麼這麼大的計術器有辦法跑到40M HZ嘛,況且你還要配上
) S- a% V! x8 D' s一個大的組合邏輯比較器(因為有用到if cnt<20000000 then)
作者: gto10620    時間: 2008-5-18 05:13 PM
恩~是的~我是要把它除到1HZ因為實驗器材的內部震盪晶體為40MHZ
6 U7 X/ J' F! d; |# i除完1HZ接上計數器這樣~下面是我後來又改的><" 難道精準式除頻有很多種方法做??
6 ~  |  P9 S: O3 Q/ V9 C4 Qentity clk_95 is
, Y3 e1 Q* u( g    Port ( clk40  : in  STD_LOGIC;
1 o& }: _% g5 k                          enable : in  STD_LOGIC;
/ \0 Y! w6 P  D# h                          switch : in        STD_LOGIC;" ?2 f1 d4 G5 u- [% c6 f; w% z( `
           a,b,c,d,e,f,g,p : out STD_LOGIC;
: q' y9 v  a7 v9 S# ]! n" H                          SEL : OUT   STD_LOGIC_VECTOR (5 DOWNTO 0));2 X) K, w$ e( M% C
end clk_95;
6 K1 d) M9 ^. E7 C6 A4 f2 v6 @% a( m7 R. [! o$ G
architecture Behavioral of clk_95 is
) W' J* D8 {8 Q; j( Ssignal clk1 : STD_LOGIC  ;
" }7 q; t% d; ]  ]9 qsignal cnt  : STD_LOGIC ;
( p8 D$ i+ [* L# E0 Lsignal x1  : STD_LOGIC_VECTOR ( 3 DOWNTO 0);& t& O, B- F: G% G  J+ b' z" e
signal x2   : STD_LOGIC_VECTOR ( 3 DOWNTO 0);) r. t; p: T+ I, X
signal count1 : STD_LOGIC_VECTOR (3 DOWNTO 0);" e6 x% z  P, p# p7 s9 V
signal count2 : STD_LOGIC_VECTOR (3 DOWNTO 0);
5 r  i, K* V, e9 ]- [signal y                : STD_LOGIC_VECTOR (7 DOWNTO 0);# D5 e# C! _! p+ D( W
begin
/ Q9 F3 w  V: }# f$ e
* E% F$ Z2 D  I8 [/ `        process(clk40): h5 J" N6 p  ^: s3 y$ `# z/ _
        variable cnt:integer range 0 to 39999999;2 Q* r4 F& C; D, I) r0 C
        begin, v3 T0 |% M2 [( g+ W
                        if clk40'event and clk40='1' then
0 h+ ?$ f8 }, U4 S. H+ _- l                                if cnt<20000000 then
: |1 z% E- ]! m8 y# v/ k                                cnt:= 0 ;6 c: S, X( S: D8 c" U
                                else
4 s/ V& S+ ?0 Q) a  L  y                                cnt:= 1 ;
: s$ Z% L$ o3 T# ~                                end if;
; t$ y* x) `1 ?                        end if;0 p- v) L( U- L
        end process;
" |9 }: L1 f& f# K- Y4 M        clk1<=cnt;# c+ p# T. X7 w) l8 g4 E
        + g+ G7 p3 u; P: r" j: R
        process(clk1)
; g7 [) I! S0 A( H' p$ ^2 z% a        begin
2 m+ R  ^# `" T# p" ?                                if clk1'event and clk1='1' then
, g, F( T8 }! u7 O; W4 c- X# s                                        if switch='0' then
8 I8 i+ ?0 K! R5 h+ m                                                count1<=count1 + 1 ;3 a0 ?  F- ^2 n9 w
                                                        if count1="0110" then6 B" F- A+ \( \$ _- q. _7 r
                                                        count1<="0000" ;
% V3 d& ?- }: ^2 {2 i                                                        end if;
8 f5 Z) n: q- d9 W5 B0 j( L                                                else) }  J$ m7 H1 ^# d  a8 i
                                                count2<=count2 + 1;
( x+ z& ]( b2 O5 j" E) m" z6 j                                                        if count2="1000" then
+ D- `+ _; W2 s6 y8 v  U4 _# P                                                        count2<="0000" ;
% ~  w; B7 i0 c: M" o                                                        end if;
. d  J/ N% p  J- Z8 ^0 g7 Z# H$ z                                        end if;                6 |+ @. r$ k2 k$ a+ N  F
                                end if;
$ ^2 X. r9 D; n1 e. j3 ^2 x! d        end process;
$ r, P/ s5 f9 `7 W. r- S6 U後面是我自己要接出去的東西~所以我沒PO!!
作者: addn    時間: 2008-5-18 05:58 PM
您好
  g  t2 m: ^. Z! ~' e這樣還是有問題
3 [' N) |; D2 _, x可以試試
( a1 Q# C& ]/ h4 m0 kprocess(clk40)
- @# h# B9 A  j) w4 y5 d/ \* m        variable cnt:integer range 0 to 39999999;
" L3 P* s  r. h8 V        begin
6 F0 }/ ]  w  ^/ J1 `; G& V                        if clk40'event and clk40='1' then1 N; N- z0 Q  L3 C, F- g
                                if cnt=39999999 then
  [7 t9 k# N0 z! N% b* j+ l                                     cnt:=0;/ a* H$ b1 x& E: t  g/ d# O6 j
                               else
7 P* l: y# w% Y4 z                                  cnt:=cnt+1;9 X- O$ ~+ G! ]' V* `
                                  if cnt<20000000 then2 Q' x  ^$ H5 V3 ]2 o. ~& N
                                       clk1<= 0 ;  O0 s: i# L9 w4 c7 V$ ~8 o
                                  else
* Y6 \# w4 V; A                                       clk1<= 1 ;
( Y/ ]+ n  m/ b& E# a# F! y7 |                                 end if;
' D' T  G3 y7 k& q6 j9 R' @0 T                             end if;
; I) x$ x+ Y+ A- [: x0 g1 p                        end if;: O, ^7 E; l! o' a& E
        end process;
- i8 D) L0 Y+ f" e      
6 z/ {& |  Z7 }! f或者: ?4 f/ J" C  I5 n1 C
process(clk40)3 s# R; E2 `% n6 u
        variable cnt:integer range 0 to 39999999;: U% P. m' q# o: Z+ |  \
        begin% O9 ~6 J( W* W/ b
                        if clk40'event and clk40='1' then
) o* K  \; g/ z: L* V# |* i                                ! N* k3 {5 z: w% M
                                if cnt=39999999 then2 u* D! i* J: E. y. p& j
                                     cnt:=0;
( v: H% e5 k% z: }                                     clk1<= 0 ;
4 l3 p' Y! j, A. z. T$ P7 i                                else: O6 S" V* m4 |" C- D! y
                                     cnt:=cnt+1;" `, a1 t6 w2 m5 B; C; [5 ]  Q
                                     if cnt=20000000 then
3 n/ `1 l+ I0 {$ d9 ?: \                                         clk1<= 1;
* L2 @0 n/ G# C2 z0 @                                     end if;
- h2 S1 {0 B# r6 i! l2 `                               end if;
0 J! w) ~' a0 r. C; d                        end if;( i% _8 @9 B- Q; e9 \* V
        end process;( V3 X' k! f, ?% L. _% N
% C0 |9 |7 w/ `$ W
不過兩種方法都有我第4點的問題
& q( ]2 j, K2 b) r" R6 L* t如果你是用quartus2可以分析一下! ^, V/ \; N' h. E+ D
你的clk40可以跑多快
作者: gto10620    時間: 2008-5-18 11:02 PM
40MHZ
& f- x) P2 p) x  J* _# D: z/ ?我想我只能實際去試試看燒在上面能不能跑~
) z0 b+ W- G, ^& i5 s因為我還是沒辦法用電腦模擬出來~
3 u7 s2 ?2 T( e+ G. y( `) ]/ y0 ^感謝你~ 結果在跟你回報!!
作者: tommywgt    時間: 2008-5-19 12:03 AM
gto10620 別忘了給addn "感謝哦": X% E' m8 T' o. }

4 ~8 N# _' Y4 j" I按評分就可以了
作者: gto10620    時間: 2008-5-19 05:04 PM
收到^^ 抱歉~      ! E) y1 D3 W. R; D# d) X
下次清楚囉!!
作者: tommywgt    時間: 2008-5-19 06:10 PM
現在補也來的及的, 不用等下次了
作者: gto10620    時間: 2008-5-20 01:53 AM
我有補囉!! 我說下次一定會記得給!! 誤會我的意思囉!版主~
' w+ D6 @3 o7 g& [! g9 V$ Q- x2 j9 j9 ]
我希望我能在這領域學會!!




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