Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-5-17 13:32:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
entity clk1 is
* r( }: e7 S4 G% `5 L) G    Port ( clk40 : in  STD_LOGIC;5 i4 G5 U1 z% `& h2 A3 I1 F: E/ o
                          clk1  : out std_logic );
# N1 D- }* K/ m3 Rend clk1;0 l3 h, g- L3 Z7 n! M( ?! a# `' x
/ {' X3 h9 y' b/ J# X
architecture Behavioral of clk1 is/ s2 c" {5 g( c$ k% P
signal cnt :std_logic;; C1 M6 N: q% O2 Z
begin
9 s7 R5 C' n; f, |8 W5 s, Y! w4 ^. w: S
        process(clk40)6 ]: t0 \1 O! A1 @5 a, q6 V) d7 U
        variable cnt:integer range 0 to 39999999;
, l, X1 @8 H; W& O& v$ t. @5 L4 P2 W        begin
3 @+ z. R$ G' J                        if clk40'event and clk40='1' then* m- n1 R8 o0 w2 Y" x7 |+ I
                                if cnt<20000000 then0 T+ m2 f  I4 H; ?2 \4 b  T. \
                                        cnt:=0;  F; Z( M0 |2 l2 o; S+ v
                                        else, g2 G9 i2 M& S, q5 |
                                        cnt:=cnt+1;                                         ) P- v( x1 {. [- ?
                                end if;4 f2 U; c/ M; n7 Q. _
                        end if;
. _1 ~( j3 g: x                        clk1<= cnt;
# k8 t7 G7 G. o8 O  u4 g- S        end process;
  S% @& f4 h9 _7 j& w9 d( Pend Behavioral;
" D/ l1 ]- [+ ?+ A* K為什麼CLK與CNT不相容?6 e$ }. H7 r! ~, V% {: g  B5 k
還是我的設計是完全錯誤的?7 r+ [3 `5 N0 Q9 T2 Y
0~~~~~~~~~~~~~~~~~~~~~~~~~~~20MHZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~40MHZ
4 _) w, r6 n2 O% ^+ U* k$ A________________________________↑--------------------
+ E, u# W( ^/ E+ b. b  f: q          此段'0'                        此段'1'
$ U- v: u& K3 x& h( l. W正緣觸發~
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-5-17 23:00:37 | 只看該作者
您好
3 Y; j& n0 g. O" x+ |1.$ B7 ^4 ^4 l% \
請問你是要將40M HZ除頻到1 HZ嗎?
0 s8 I% u. q, ?: O9 i2.
2 t* c) o$ `( f+ W! K- {; jCLK1是定義是1 BIT的輸出,跟cnt的定義integer不同
" \* C, @' W# {- _當然不能CLK1<= cnt,
& ]1 |; ^% h2 v( i1 ^3.
: C6 `+ {& B! z& S# S你的CODE有錯,請多想想
/ k( Q0 V0 Q. F" i& o4.2 B; U+ q/ s0 z" u& w
當你解決上述問題後還要思考2 i2 ^7 l: v. A2 D: Y
COUNTER要能數到 39999999
$ v" Y0 o; u: F0 G這樣的計數器合成出來,須幾BIT你知道嗎(0~1023需10 BIT)
  j* ?  X9 u: _' ]" h. ~& g那麼這麼大的計術器有辦法跑到40M HZ嘛,況且你還要配上  c$ ^  ?+ k5 A# m
一個大的組合邏輯比較器(因為有用到if cnt<20000000 then)
3#
 樓主| 發表於 2008-5-18 17:13:16 | 只看該作者
恩~是的~我是要把它除到1HZ因為實驗器材的內部震盪晶體為40MHZ0 L/ j. K, _4 B7 v( c0 O) Q
除完1HZ接上計數器這樣~下面是我後來又改的><" 難道精準式除頻有很多種方法做??; \) \6 K7 g, `# N7 Q
entity clk_95 is
7 N  D2 h. U# A& F7 \( d    Port ( clk40  : in  STD_LOGIC;
# ~# V; A/ g: f                          enable : in  STD_LOGIC;/ Z$ Z( s( h. ~! z
                          switch : in        STD_LOGIC;1 D& a$ D( o$ D" ]# R# Q
           a,b,c,d,e,f,g,p : out STD_LOGIC;3 A, N+ G4 o8 c
                          SEL : OUT   STD_LOGIC_VECTOR (5 DOWNTO 0));4 `6 z- H; ?% U; y; d
end clk_95;
7 l# A# Q& L( u* q: G6 u! c" z- b
/ j7 G& |6 @$ N0 q# `7 Zarchitecture Behavioral of clk_95 is
: I/ s7 W  k# O" lsignal clk1 : STD_LOGIC  ;8 T+ G+ E8 K, l5 I# x
signal cnt  : STD_LOGIC ;
2 `6 R+ P% W/ H( ?4 Ssignal x1  : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
4 w5 F1 [: \6 @+ bsignal x2   : STD_LOGIC_VECTOR ( 3 DOWNTO 0);  a" x" ]* f$ L( O! G0 V9 V
signal count1 : STD_LOGIC_VECTOR (3 DOWNTO 0);5 }- U* z. H' x$ `* f" C& D
signal count2 : STD_LOGIC_VECTOR (3 DOWNTO 0);
; H2 ^6 |# ?6 ksignal y                : STD_LOGIC_VECTOR (7 DOWNTO 0);7 k9 ~& `4 E+ b- i* J* I9 M
begin  u$ c' x+ W+ K! E2 A* k7 `

7 e4 j! Z  j% T% j; n* W5 |        process(clk40)
% B0 {# J! {, i5 o( Y* G        variable cnt:integer range 0 to 39999999;  `! o1 t* ~# g* {
        begin
1 B4 i/ K1 U+ w4 R" |% Z5 i                        if clk40'event and clk40='1' then
: k, H- f( l) J  I+ q. t                                if cnt<20000000 then
# [% q/ \) V+ _2 z+ l/ ~0 X) b                                cnt:= 0 ;
# e' U# @; a# y' K                                else * \6 l8 @1 E( B. a  y) x- i
                                cnt:= 1 ;! y+ j: y& A) g; q8 M3 P9 U
                                end if;) Z  u# C/ \: y; ^: G, T8 d6 l' T' U
                        end if;* k  y" d& W- [! a0 r5 t
        end process;! R2 J) ]8 x+ ], M3 |
        clk1<=cnt;
6 f& U+ O1 @$ Q$ Z; D/ V! F        : V/ E* p: r; N* f# C
        process(clk1)
% Y$ k- \' h. X) s+ a& t# z        begin1 |% |$ T3 w/ n
                                if clk1'event and clk1='1' then# q% i. g8 a: |
                                        if switch='0' then% n' j9 C* L, }2 |- S
                                                count1<=count1 + 1 ;
+ d3 C8 f' O, E. }* }( X                                                        if count1="0110" then5 x  R) W( _5 H2 O
                                                        count1<="0000" ;- U# e6 m% a$ n# ^2 U' s0 W  P
                                                        end if;0 J* \- `! t' G8 E0 P4 w
                                                else
2 Y( w- o+ V' p  v( ]: b                                                count2<=count2 + 1;
- ^7 Z5 d% T  W- m0 ?. u+ `                                                        if count2="1000" then5 a/ R/ z# W9 ~' S2 T5 n/ j
                                                        count2<="0000" ;
. T) e! i  g' N" g                                                        end if;
2 }: @5 S5 R  O  P                                        end if;                $ [2 ]- o$ p" @! n# K4 a
                                end if;3 S/ d0 p3 |5 }6 P. Z+ }$ W. M5 ]
        end process;
& y  }5 s, Q+ a) G9 Z後面是我自己要接出去的東西~所以我沒PO!!
4#
發表於 2008-5-18 17:58:36 | 只看該作者
您好
0 T: K* z" H4 c3 r* N6 T這樣還是有問題
8 l1 L* @: Y' {! k5 o( n; l- t可以試試) u+ z! z9 A7 X/ O
process(clk40)3 W! G  n- F0 P+ G* Q* l
        variable cnt:integer range 0 to 39999999;. x8 m# ^) G3 h4 e9 l4 z" R/ D. O
        begin9 a* E0 A7 [/ _6 v8 X3 t
                        if clk40'event and clk40='1' then
1 b1 {% q  |% I  [, s, |! W+ {                                if cnt=39999999 then
, t, c0 z7 E' [# Q* s7 v                                     cnt:=0;
& s/ s) d4 ~! \4 |9 `                               else
7 m' l+ D4 M0 W% D! C                                  cnt:=cnt+1;7 Y7 O4 c5 `8 o0 f, c
                                  if cnt<20000000 then
4 s! P& e" |2 P& I* `# G                                       clk1<= 0 ;
. ]9 V4 z" t: U$ ^- [: n  ]& u                                  else
$ h/ {6 M6 v5 q1 v5 e                                       clk1<= 1 ;
4 w3 r: n0 f0 @8 W* W% ~0 S- Q0 t7 T                                 end if;+ O) i! x3 m# T6 Y. K' H
                             end if;1 L0 B! D( n( D8 @5 _# i
                        end if;, A9 R4 n! m' L5 @
        end process;; G. `. l# C5 V# l5 A
       . p; K: N* l/ D/ s, o' p
或者5 m' p6 `% P' j, T. X
process(clk40)
/ I  D' ~. G  @3 J8 s1 B- Z1 e        variable cnt:integer range 0 to 39999999;8 y9 h4 X; ^9 D$ L* {6 W$ g5 |
        begin/ g2 j' Q1 e0 h) V0 @
                        if clk40'event and clk40='1' then
2 B6 g  Q/ I9 c                                
! z2 Y: q* e* O  G; b) h                                if cnt=39999999 then
) c5 g4 ?! O( W' p5 u                                     cnt:=0;! m( L5 O- ]9 |, F9 k9 F; d9 L# Z( r
                                     clk1<= 0 ;" W; Z, O" {: z- o' K3 h) P) r
                                else
. W, j7 q! M" _& A' w                                     cnt:=cnt+1;; D) x9 `  w+ y
                                     if cnt=20000000 then
+ ?" P$ }" ]1 ~* a* H3 v! a                                         clk1<= 1;
" }4 z, ]! s; U; M) H                                     end if;: H3 Y( [) j' B" @/ c
                               end if;
$ Z# l( n: H- S9 B- C9 ?                        end if;
8 O6 o0 W! U2 w% g) ^: {4 R/ V        end process;
& M* j5 W3 ]& R+ j
& u/ Y* S: j2 }6 k& c6 G9 Q" k8 }不過兩種方法都有我第4點的問題
% N( ?  F  i& R$ g如果你是用quartus2可以分析一下4 O! m8 X2 F4 k2 Q' T4 V
你的clk40可以跑多快
5#
 樓主| 發表於 2008-5-18 23:02:25 | 只看該作者
40MHZ
) B! N! l7 g& e  b1 W我想我只能實際去試試看燒在上面能不能跑~1 V* i/ l" L7 \5 w$ q5 o. l7 T
因為我還是沒辦法用電腦模擬出來~  a  K6 t+ u7 b0 ?5 j
感謝你~ 結果在跟你回報!!
6#
發表於 2008-5-19 00:03:14 | 只看該作者
gto10620 別忘了給addn "感謝哦"
6 \- E; g/ x! x2 E/ i( n9 E. j* \, K- H$ N; z2 b( L$ A! [
按評分就可以了

本帖子中包含更多資源

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

x
7#
 樓主| 發表於 2008-5-19 17:04:30 | 只看該作者
收到^^ 抱歉~      
2 g1 \5 ?) C, {5 J, P下次清楚囉!!
8#
發表於 2008-5-19 18:10:24 | 只看該作者
現在補也來的及的, 不用等下次了
9#
 樓主| 發表於 2008-5-20 01:53:53 | 只看該作者
我有補囉!! 我說下次一定會記得給!! 誤會我的意思囉!版主~
# y) h0 J! Q/ F
6 A2 y+ s) j, N! T# Q3 M我希望我能在這領域學會!!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-5 02:14 PM , Processed in 0.119515 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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