Chip123 科技應用創新平台

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

作者: gto10620    時間: 2008-5-17 01:32 PM
標題: 精準式除頻設計??
entity clk1 is  T. q' _+ x3 S6 Q
    Port ( clk40 : in  STD_LOGIC;
1 i# F& |- N$ p4 @5 a" q) `$ m                          clk1  : out std_logic );! q/ B  E! R) @5 F, W' _
end clk1;  V$ q0 r( B) l+ ?

: P) i8 {; n2 G7 B/ harchitecture Behavioral of clk1 is
0 @4 f2 g2 D" J( Y/ h# Q. Xsignal cnt :std_logic;+ o( _- j: Z- o0 }7 O" E
begin; g3 o$ ]0 m, _/ V+ ^& I5 c2 b
! J! x( r+ X' v  k! G9 o" s
        process(clk40)
$ Z$ t& q9 O) q- f0 ~( {        variable cnt:integer range 0 to 39999999;& ^( F  y8 L0 Z3 L9 }0 K
        begin
; f4 I' q" B8 \/ W- L                        if clk40'event and clk40='1' then, Y5 e6 [! D  o; w
                                if cnt<20000000 then
# w- t  M) m+ v/ ^1 x7 E                                        cnt:=0;
: J+ ^& T7 m6 D' i% I: {                                        else
: ^/ w8 ]+ I/ [+ U0 X2 F                                        cnt:=cnt+1;                                         
. J) G0 n- x) k( h                                end if;+ T; l1 f1 N/ R' `" |2 x5 x) K/ u
                        end if;
; S& R- x% W1 }6 a. T6 T4 r6 U                        clk1<= cnt;2 b4 k! m& p: \1 ]" d$ E  Q+ L, @
        end process;+ m6 w$ o! G0 U5 c
end Behavioral;
4 f, K5 N; \$ y; Q為什麼CLK與CNT不相容?
$ b+ b8 o6 P/ X3 _, h" t還是我的設計是完全錯誤的?3 q; y8 `5 R0 R' N4 k. i
0~~~~~~~~~~~~~~~~~~~~~~~~~~~20MHZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~40MHZ8 H; m1 S8 I0 f! \- p
________________________________↑--------------------5 \" f3 d+ l% \5 d  y9 f1 g
          此段'0'                        此段'1'
' Q- f9 o- {3 H5 f正緣觸發~
作者: addn    時間: 2008-5-17 11:00 PM
您好1 T, N$ S! t. T  ?" z. r9 E+ k4 O
1.3 T: }: K+ B# Q' n5 d
請問你是要將40M HZ除頻到1 HZ嗎?1 b- z0 m  q  n; D+ e4 R8 F
2.* H7 K2 Y9 ]/ h7 {( g. k9 |
CLK1是定義是1 BIT的輸出,跟cnt的定義integer不同# Q  n( Y: o2 G$ \
當然不能CLK1<= cnt,+ X& }2 |9 s& i1 h
3.) N1 b5 r* w$ n: ~* k- o
你的CODE有錯,請多想想
% c, [& r! ]- K2 R( ~! `4.
9 q3 z5 D2 q: Z3 z' t9 ~, L當你解決上述問題後還要思考" R/ `8 F' ?0 |" f$ h* }. q+ c- u
COUNTER要能數到 39999999" G# ]& @# H- m
這樣的計數器合成出來,須幾BIT你知道嗎(0~1023需10 BIT)5 Z( l  x' k4 k  g$ X" J8 c
那麼這麼大的計術器有辦法跑到40M HZ嘛,況且你還要配上  t& M2 M1 M* B' e! ^3 P
一個大的組合邏輯比較器(因為有用到if cnt<20000000 then)
作者: gto10620    時間: 2008-5-18 05:13 PM
恩~是的~我是要把它除到1HZ因為實驗器材的內部震盪晶體為40MHZ
! S! o( ?5 ~* k0 I1 H除完1HZ接上計數器這樣~下面是我後來又改的><" 難道精準式除頻有很多種方法做??0 G- F; B. I2 G( F+ H
entity clk_95 is
. y  Z4 N( o5 e: i    Port ( clk40  : in  STD_LOGIC;
7 p. G4 `) b- y0 K! i                          enable : in  STD_LOGIC;. j. m- r7 H5 T: w- c" z
                          switch : in        STD_LOGIC;$ B9 D! }6 A5 |5 @5 j
           a,b,c,d,e,f,g,p : out STD_LOGIC;
  @3 @$ W' K$ j( u                          SEL : OUT   STD_LOGIC_VECTOR (5 DOWNTO 0));& P4 e0 n! D  e8 x% }: O
end clk_95;
" A7 J# u4 i; p4 F3 D  q8 |9 M: M3 {
architecture Behavioral of clk_95 is4 M% f+ Y3 W/ l, G
signal clk1 : STD_LOGIC  ;8 J  j2 b/ X3 I( z
signal cnt  : STD_LOGIC ;
3 S1 J; b, H" t# S5 t5 x3 \signal x1  : STD_LOGIC_VECTOR ( 3 DOWNTO 0);6 _! P2 ^$ H( u
signal x2   : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
+ @1 Z- q& X  b: Y8 b) D1 isignal count1 : STD_LOGIC_VECTOR (3 DOWNTO 0);
" y, {8 i1 o& \% e0 h7 Q+ `signal count2 : STD_LOGIC_VECTOR (3 DOWNTO 0);
6 |* D- S! w, r1 |8 c/ h0 Z+ W3 L$ ssignal y                : STD_LOGIC_VECTOR (7 DOWNTO 0);
% p3 p/ z' `  N0 y. }begin3 H9 I2 o, B: b
4 f7 g% Y5 k- \; j2 A! l
        process(clk40)5 r3 z3 u5 o9 a9 C7 a
        variable cnt:integer range 0 to 39999999;+ k* i% ~: S$ g' R
        begin
7 v# a' k) x0 q( ]$ G. D* C                        if clk40'event and clk40='1' then& s. ^2 Z: `' b: Y2 W
                                if cnt<20000000 then/ \0 G+ G9 h' |! p# w7 k
                                cnt:= 0 ;
9 F% I/ n5 h  |9 D% A                                else
4 O2 L, D. m: m: u6 s! y                                cnt:= 1 ;
8 m, y: d# k* l( w) f" }                                end if;5 r0 @7 J, R! a* c3 J2 W2 [
                        end if;
4 q9 z7 E* H( a4 Y        end process;; Y* A9 y; f4 w3 x: z
        clk1<=cnt;
& S, V8 O! ?3 Y8 [* {$ T        4 b! m7 t: v1 i$ ~5 b( T. Y
        process(clk1)
( V. E" C5 [6 `        begin# g0 s" S. e# |! Q6 J7 X
                                if clk1'event and clk1='1' then
' v7 ?. o# F) R                                        if switch='0' then
2 L& O6 k) s/ D$ q, [) b2 B9 ~                                                count1<=count1 + 1 ;8 ~" G: m/ Z; B4 M3 ^
                                                        if count1="0110" then
9 Q# L- H3 P# n2 N2 z                                                        count1<="0000" ;
. g0 |9 E) M0 p4 Q! a                                                        end if;
4 A7 o: S1 Q% S                                                else
% B; q4 Y3 H* G: p4 B                                                count2<=count2 + 1;
  M* [6 h4 ?4 r; F                                                        if count2="1000" then: |5 p1 U' R, m% A
                                                        count2<="0000" ;
$ F) ~# p7 ?0 V- v& x                                                        end if;# m. L5 h' f6 R  q1 G% L+ d
                                        end if;               
3 }1 Q+ ?( O1 U1 h; n                                end if;, t" a1 ?0 d. I
        end process;5 X: p7 r  W) h! H. ~
後面是我自己要接出去的東西~所以我沒PO!!
作者: addn    時間: 2008-5-18 05:58 PM
您好/ n" L# b1 n: y& |; L/ T1 @& g
這樣還是有問題9 d6 r. F8 x7 p1 b5 L) _) T" `
可以試試/ {& |3 B) m# U$ N
process(clk40)2 Q5 }7 }! c1 Q. x, n
        variable cnt:integer range 0 to 39999999;  K$ H: w6 D3 K9 r
        begin. ~  L  A# z7 v, e5 ~
                        if clk40'event and clk40='1' then8 N: I+ S& ~  ]( n, c
                                if cnt=39999999 then
2 v+ F. a- `. W; e; z                                     cnt:=0;
8 Y7 c( B1 K! L7 q                               else
' {9 k7 ~/ {8 V8 L( I                                  cnt:=cnt+1;
) A2 ^( J4 }4 a# D# p! P                                  if cnt<20000000 then, ~3 Y& c: [7 v# r( _
                                       clk1<= 0 ;
2 q" H( o  ^) ?1 h0 E5 b                                  else
' }0 k7 j/ Y1 y. u3 b                                       clk1<= 1 ;
4 \) T" r0 ^1 t, l0 x2 y                                 end if;
5 ]# S! J/ r& @                             end if;
+ o0 x1 `) U  n$ W7 E- S                        end if;& b' G# m' n% o  L
        end process;& `/ Z/ v+ V  ^6 i  T
      
0 @' G8 ~6 c! {3 N1 G  ^* M( m9 Y" Z或者# H4 U, Z' U6 c% l* o
process(clk40)
+ c* \" q" V" ^( I) ^6 _. I        variable cnt:integer range 0 to 39999999;
- C; p8 c( x6 ?        begin, @* p) U5 ]* P, s
                        if clk40'event and clk40='1' then
& A4 e$ k4 A8 t$ _( A/ S                                
) w/ M( {: R6 S- r: M" L: K. L                                if cnt=39999999 then
: @/ ~# F' b+ j# V  k                                     cnt:=0;
5 x5 g0 r+ E: {$ _8 M+ {( [                                     clk1<= 0 ;9 C4 f4 e. E9 k
                                else& l5 b/ Z4 O- Q' R
                                     cnt:=cnt+1;
, {4 V5 O: A- k( b1 V) X                                     if cnt=20000000 then
3 A6 [' f; \3 x                                         clk1<= 1;4 E7 L% w  R' J+ t- k
                                     end if;
! e" `* y8 E2 V                               end if;+ {; L6 n9 i. H: A" c5 g! @
                        end if;
0 m' M% s+ }; V  H5 @        end process;; i5 D& i) {4 X! T4 Q& I# n
. _4 s# c2 T0 H
不過兩種方法都有我第4點的問題
: q5 h5 F' Q1 ?% q+ X' n/ l9 }如果你是用quartus2可以分析一下
0 A7 w7 j; V2 u' |, y/ |6 o$ u/ k1 `你的clk40可以跑多快
作者: gto10620    時間: 2008-5-18 11:02 PM
40MHZ' |6 t1 ~, t0 i7 l1 B2 Z8 L8 N
我想我只能實際去試試看燒在上面能不能跑~7 k, y. Q/ t1 s9 ]( I
因為我還是沒辦法用電腦模擬出來~
5 r# _% R7 E4 W3 i+ n& `  F; s感謝你~ 結果在跟你回報!!
作者: tommywgt    時間: 2008-5-19 12:03 AM
gto10620 別忘了給addn "感謝哦"
) Z% B! s- R. X; c4 N
7 C1 y. W7 g5 I: Y% m1 }( ]按評分就可以了
作者: gto10620    時間: 2008-5-19 05:04 PM
收到^^ 抱歉~      
2 k, p/ r: E) B下次清楚囉!!
作者: tommywgt    時間: 2008-5-19 06:10 PM
現在補也來的及的, 不用等下次了
作者: gto10620    時間: 2008-5-20 01:53 AM
我有補囉!! 我說下次一定會記得給!! 誤會我的意思囉!版主~+ g6 t. u# O8 a7 }: S$ r8 I4 F  i

, o* a0 k; i5 K( F: P) r1 M/ ~7 {我希望我能在這領域學會!!




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