Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 3551|回復: 8
打印 上一主題 下一主題

[問題求助] 精準式除頻設計??

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-5-17 13:32:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
entity clk1 is
1 B& P+ V  Q* G3 r9 m- I/ _: E    Port ( clk40 : in  STD_LOGIC;
5 Z% A+ Z+ D8 c8 ?) z                          clk1  : out std_logic );
  p* M- r& L8 G7 F, U: Wend clk1;6 g' {5 H' h0 Z) e. x2 h/ y1 I
/ `% @! Z# J0 }% d( y
architecture Behavioral of clk1 is
* K. [$ O' U& U2 Psignal cnt :std_logic;
; R- L) q  x: n3 F/ zbegin
. y/ Z6 Q, k; Y- g' `  A: }% P+ l; l& I
        process(clk40)
. d, A  x) ]: x3 V+ X* X        variable cnt:integer range 0 to 39999999;! C, x1 R( O' n: X) j
        begin6 D) z" i" H0 ?+ a
                        if clk40'event and clk40='1' then5 ?9 A  a! l% P) V& N1 M
                                if cnt<20000000 then
$ @9 o" z, @5 `( h2 C# N                                        cnt:=0;# w( d& `2 Q4 E8 G4 p
                                        else* y( G( D* q, i# H
                                        cnt:=cnt+1;                                         : s( B% o- h/ X* u
                                end if;' z% E9 \7 N0 }; g" x- x" o" G
                        end if;
3 l/ I3 D5 S% d" Q: B7 L8 C; V5 Z3 \                        clk1<= cnt;8 i; r( Z5 {5 y+ ]
        end process;8 O/ T$ b, E5 C: g# d
end Behavioral;
/ D. @1 L; f/ i/ c+ O為什麼CLK與CNT不相容?
( _" v; B. ?; T, [: B還是我的設計是完全錯誤的?* Y) y# g( l% U7 T$ w. P
0~~~~~~~~~~~~~~~~~~~~~~~~~~~20MHZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~40MHZ2 h0 O! k4 T5 y3 F; k
________________________________↑--------------------
, u/ S' u0 }1 B/ J8 z          此段'0'                        此段'1'
* c. ]" c8 i6 Y正緣觸發~
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-5-17 23:00:37 | 只看該作者
您好: A( w' l* I4 u  C5 r
1.0 L  ~1 }' @' h, Y
請問你是要將40M HZ除頻到1 HZ嗎?( ~) s3 t. [8 |+ ^
2.
- R* X: D8 d& q6 f+ A- J. `CLK1是定義是1 BIT的輸出,跟cnt的定義integer不同. [) O* e2 S8 k5 e& w/ r$ a9 u- K
當然不能CLK1<= cnt,
1 @% m/ O+ Y7 ~& k' N3.  G1 n  w% A$ T) k  o+ g& l) B
你的CODE有錯,請多想想
8 c8 E* y: F$ S) u9 p4.3 q" E( @; A, a& F/ M+ T. j
當你解決上述問題後還要思考
3 F1 w" Y! ]$ S$ q* A6 ?. FCOUNTER要能數到 399999996 l- k6 w% y* R2 c/ b$ K0 j
這樣的計數器合成出來,須幾BIT你知道嗎(0~1023需10 BIT)
7 c- U! t8 _. q  z2 i9 j- V那麼這麼大的計術器有辦法跑到40M HZ嘛,況且你還要配上
0 H; D* s/ B) ^1 I: e一個大的組合邏輯比較器(因為有用到if cnt<20000000 then)
3#
 樓主| 發表於 2008-5-18 17:13:16 | 只看該作者
恩~是的~我是要把它除到1HZ因為實驗器材的內部震盪晶體為40MHZ8 I. b' y' I  Z( P  T: W1 k& N
除完1HZ接上計數器這樣~下面是我後來又改的><" 難道精準式除頻有很多種方法做??
7 @) D" t6 u# q. Z# f9 b+ ]$ Bentity clk_95 is$ ^) w0 i- M9 L4 B& E' A3 g
    Port ( clk40  : in  STD_LOGIC;
- a& d2 z0 `/ j* J3 ?                          enable : in  STD_LOGIC;
7 ^, }; b/ C$ |% D, ?                          switch : in        STD_LOGIC;, I2 k. G* n) y: v+ x4 D! v
           a,b,c,d,e,f,g,p : out STD_LOGIC;
$ s2 L5 J- ]4 a6 h" x                          SEL : OUT   STD_LOGIC_VECTOR (5 DOWNTO 0));+ D8 X5 r* N1 L7 \0 n- W0 M
end clk_95;4 {, N5 A( T# t: t1 A7 ]

9 ^+ E" @" N3 b7 ^, G8 }) [. Earchitecture Behavioral of clk_95 is
; C; b) W) L. ~& y% o- q/ psignal clk1 : STD_LOGIC  ;) V. _6 |& k) m
signal cnt  : STD_LOGIC ;
( ^9 D, s, ^# m: |0 a) dsignal x1  : STD_LOGIC_VECTOR ( 3 DOWNTO 0);8 }3 C3 g6 d7 G
signal x2   : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
4 [, p. v$ s3 d1 jsignal count1 : STD_LOGIC_VECTOR (3 DOWNTO 0);
( \# K) w: A* h! psignal count2 : STD_LOGIC_VECTOR (3 DOWNTO 0);
% d; x/ m' m, {signal y                : STD_LOGIC_VECTOR (7 DOWNTO 0);
& L4 O, U  b" B# Gbegin& m4 I: a. @- B, J
$ Y+ x! Y9 ~. e3 a8 {* k' i* A
        process(clk40)8 T3 M& A8 t, H" p5 {% w
        variable cnt:integer range 0 to 39999999;& k: U6 W8 z) z+ x0 d/ I0 l
        begin% ^3 |* V% B2 f9 ^
                        if clk40'event and clk40='1' then
6 K, a' @2 P0 W$ S3 E, r8 o) r                                if cnt<20000000 then
6 \- f6 c% W5 @7 r9 O, P# o' Y$ U/ Y                                cnt:= 0 ;/ V5 R/ m" J1 \6 U6 z% _, q
                                else
- h  Q. Z/ A4 ]. V                                cnt:= 1 ;+ L6 j" u% E8 ~2 w0 A3 W
                                end if;
3 ~3 I) D0 f  I1 ]                        end if;
- Q: F' B0 H: g+ N( A& q        end process;8 Z4 Z" T3 q& S' Y3 r) c4 A7 f" _8 V
        clk1<=cnt;! i  z8 H* H$ D1 K( C6 W
       
5 C. A4 E9 R7 h        process(clk1)
: `" s. J  a+ n4 K( ^. s7 R7 s3 Y        begin9 V! o& E4 z* ^- i
                                if clk1'event and clk1='1' then4 g3 x  W8 ^9 S) W2 s# T/ E8 H. x: @8 _
                                        if switch='0' then. ^0 W7 V3 B8 v8 m) z' {4 I" k8 T0 D
                                                count1<=count1 + 1 ;  q' o* \  h1 k0 L3 T7 \) W
                                                        if count1="0110" then; ]. B; }0 `, z  D+ [, T
                                                        count1<="0000" ;
' s, i2 e4 f1 h' c% Z" F- z                                                        end if;
% k% _# R* a3 o; n9 l9 I% z                                                else8 P% O0 m% O, i% L' y
                                                count2<=count2 + 1;8 P' ?+ W# Y% {/ |
                                                        if count2="1000" then
; |; B5 j. L- ]# Z' _7 U                                                        count2<="0000" ;* R6 ]9 j+ _3 o7 v
                                                        end if;
" I# G2 o* o" F/ @! |' U  I  j                                        end if;               
9 W+ X) F; U. `& }4 F7 ~$ {( r; ~                                end if;
! m+ f3 H3 I0 ~        end process;4 ?7 `5 X0 \! i7 v
後面是我自己要接出去的東西~所以我沒PO!!
4#
發表於 2008-5-18 17:58:36 | 只看該作者
您好" ~8 g$ d5 c- }0 }: I# y" a3 t9 E
這樣還是有問題
. ]. B( s( v5 U7 P6 }可以試試/ c" _5 Q+ f/ o/ ~
process(clk40)
. l; E: U7 M( f& I/ \: F% i. i        variable cnt:integer range 0 to 39999999;) P# ~; N, m+ i, b
        begin
$ B" N% e7 A- O0 v; D. A0 i' L1 b                        if clk40'event and clk40='1' then2 i% y: y$ |0 u
                                if cnt=39999999 then
" X# ]: z' _1 l. p' X4 n                                     cnt:=0;5 Q; Y/ C/ s3 n1 S+ n! p1 `
                               else. R& t9 q  Z: P
                                  cnt:=cnt+1;% [4 F# p8 w+ ?: X. \! p* Z
                                  if cnt<20000000 then* `7 f$ l2 c; i! x  t) F
                                       clk1<= 0 ;$ u8 p" o) h# s9 r% l9 h# N
                                  else
1 g0 W  `" t" u8 n0 l1 I3 L1 N                                       clk1<= 1 ;/ q& B2 B' P' k$ l0 R
                                 end if;
& A# l1 s4 l- T* y9 W                             end if;
: o! J  C( i. M; B, \( e# d, v                        end if;+ u8 {0 J1 o3 @0 O) l- x* V" g
        end process;" v: b& z  i, E& N" t" J
       1 o  _; Q2 i5 ^8 s
或者$ C& }' E, ?& A& M* w
process(clk40)1 u1 H/ h( f7 [6 }
        variable cnt:integer range 0 to 39999999;1 Q2 [. x" b, s- W: ?9 F
        begin
. }# m9 W/ l- a                        if clk40'event and clk40='1' then
# O: B* f9 m" p                                2 \2 O3 n+ x3 l% X# O- C% m* n
                                if cnt=39999999 then* J$ d0 o  N* Y( J* E8 ~
                                     cnt:=0;: s4 ^1 ^5 k! ]' W4 h
                                     clk1<= 0 ;
0 z) O# X8 ]/ i& S) W8 x% I0 d                                else( p/ z7 j0 T! G2 ^6 e. s
                                     cnt:=cnt+1;
& J7 n' ^' G2 Q                                     if cnt=20000000 then; h  l9 K" t9 a# w
                                         clk1<= 1;
8 U& i9 X2 m/ e                                     end if;
' N8 E& g* M8 Y                               end if;
( A2 M$ }. |6 H2 W5 W  K5 F' k" c                        end if;
" \9 h" J: C3 w9 ^* M" p        end process;
9 I. x9 y' @3 ]2 m7 x1 B
% z( S( y2 Z# q$ c3 n8 ?不過兩種方法都有我第4點的問題
0 Y5 r" ~: f$ Z* `# v% K如果你是用quartus2可以分析一下1 s; Z, O) f. J5 E4 k8 P& X6 f
你的clk40可以跑多快
5#
 樓主| 發表於 2008-5-18 23:02:25 | 只看該作者
40MHZ6 l) S5 n$ d/ k9 @
我想我只能實際去試試看燒在上面能不能跑~# W7 x9 ?1 m: P" ?  q5 Z; `
因為我還是沒辦法用電腦模擬出來~. R. w' o; |. ^9 ?$ W9 [
感謝你~ 結果在跟你回報!!
6#
發表於 2008-5-19 00:03:14 | 只看該作者
gto10620 別忘了給addn "感謝哦". |1 s& n- Y0 D' L' \$ f
3 K+ @' c) K- d: t# G4 \0 H
按評分就可以了

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?申請會員

x
7#
 樓主| 發表於 2008-5-19 17:04:30 | 只看該作者
收到^^ 抱歉~      
$ T4 m0 p, ~% W# y8 u8 C下次清楚囉!!
8#
發表於 2008-5-19 18:10:24 | 只看該作者
現在補也來的及的, 不用等下次了
9#
 樓主| 發表於 2008-5-20 01:53:53 | 只看該作者
我有補囉!! 我說下次一定會記得給!! 誤會我的意思囉!版主~
+ Q1 ]+ V: Q, t7 P$ }9 k0 F' |( Y! H
# b. A  j1 i8 V; H我希望我能在這領域學會!!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-5-8 04:41 PM , Processed in 0.109007 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表