Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-5-17 13:32:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
entity clk1 is0 @7 @! q% g) N
    Port ( clk40 : in  STD_LOGIC;
4 P/ s  m$ M  C5 k% K" @                          clk1  : out std_logic );; b8 x% Y" F/ `  K
end clk1;
$ `' [' N  k/ B
4 g4 Z: q* \4 ~: F3 Q! g' zarchitecture Behavioral of clk1 is0 e+ D" a* ~% e; F$ b) p& f) y
signal cnt :std_logic;: L7 K) I. n% S7 a
begin
8 C1 d2 _5 o$ [# O
, l" H3 h" n# W& m4 R) y7 B& E% ?% f        process(clk40)
0 _) o+ f3 @# h2 c+ B* T+ F        variable cnt:integer range 0 to 39999999;
) S  S; R5 f* H  T0 h        begin
: H; ^" c  }: Q( P                        if clk40'event and clk40='1' then
8 V' v) M0 P  H& z6 Q6 m$ g7 k                                if cnt<20000000 then' N+ {) q1 o! Z5 j- r
                                        cnt:=0;/ V& Z! M, ^$ U) ?. {; ?% p, z0 w+ A
                                        else
" ?" J! q# R- m- L" J$ H                                        cnt:=cnt+1;                                         
7 b6 Y; S( o0 M+ @% P; O- L$ a) q                                end if;
; S, e) \" r: n2 L  h' u! _5 y                        end if;7 l; T  J, Z! m- s* G1 n" r4 ?
                        clk1<= cnt;
, e& g4 I' X+ A9 R+ b        end process;3 f. `7 ]% M% Q- W, _; |
end Behavioral;2 z& h2 |/ h) Q# [' c
為什麼CLK與CNT不相容?8 u$ B9 v3 ^+ l% R9 D) f* U  o4 W
還是我的設計是完全錯誤的?1 k0 e6 J" a6 N' Z# G5 F2 s
0~~~~~~~~~~~~~~~~~~~~~~~~~~~20MHZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~40MHZ
8 k( a  i8 g, l+ j0 `$ Y/ ]________________________________↑--------------------$ p$ R9 z0 i/ X$ S7 v
          此段'0'                        此段'1'; ~: D  j" W. Q* Y6 A
正緣觸發~
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-5-17 23:00:37 | 只看該作者
您好
. y/ b! h' j3 H- l% B7 |9 Y8 |0 ]& D1.
- r( x2 J$ l- [7 d請問你是要將40M HZ除頻到1 HZ嗎?
4 D- Y# D( c$ t* u& q( e# {2.
& g. ]. z, D; W. k1 F2 Y8 RCLK1是定義是1 BIT的輸出,跟cnt的定義integer不同/ ^) e+ J7 r# j6 I( h: i+ W6 Y
當然不能CLK1<= cnt,2 p! ^" k$ ~( I% y
3.
" f: N; P; s" p* G& ?你的CODE有錯,請多想想
+ }2 B; [; O4 j! q4.
1 A( [: ?: s9 V. d2 X當你解決上述問題後還要思考, `- S  c+ d1 [( P9 i4 K
COUNTER要能數到 399999996 k: Z9 `' s! G$ B+ j
這樣的計數器合成出來,須幾BIT你知道嗎(0~1023需10 BIT)
! p) Y/ B1 R5 S! `4 g$ |, T' n1 k那麼這麼大的計術器有辦法跑到40M HZ嘛,況且你還要配上0 U7 c4 o3 Y4 y: s2 _& f- P4 U  c  |
一個大的組合邏輯比較器(因為有用到if cnt<20000000 then)
3#
 樓主| 發表於 2008-5-18 17:13:16 | 只看該作者
恩~是的~我是要把它除到1HZ因為實驗器材的內部震盪晶體為40MHZ
" _8 D1 i  `8 W除完1HZ接上計數器這樣~下面是我後來又改的><" 難道精準式除頻有很多種方法做??) x$ n5 Q: B$ ?0 S  R. ~; Y7 z& ]
entity clk_95 is
: N0 j! {- o/ {    Port ( clk40  : in  STD_LOGIC;
% Y7 c# d5 t& N+ b                          enable : in  STD_LOGIC;, @2 c9 ~2 ^( [; \3 y8 _
                          switch : in        STD_LOGIC;
( e, S4 T0 \2 w- H9 R5 T! i3 S           a,b,c,d,e,f,g,p : out STD_LOGIC;
" M$ e# r: y! k/ z1 [" O                          SEL : OUT   STD_LOGIC_VECTOR (5 DOWNTO 0));
. p! P  D+ Q9 Y: b7 f3 wend clk_95;) @0 f0 C) \3 c7 ?6 d* e8 V9 Q
+ }$ q. P9 L; T& C$ v# c9 @
architecture Behavioral of clk_95 is
  n# \( R1 A' `signal clk1 : STD_LOGIC  ;- C( x' Z" J' P* }. O
signal cnt  : STD_LOGIC ;, D8 M" H7 S1 t  J
signal x1  : STD_LOGIC_VECTOR ( 3 DOWNTO 0);: M% B: {, w& b( @  t  _* y
signal x2   : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
9 P; `  G7 b/ |3 Y3 N4 Usignal count1 : STD_LOGIC_VECTOR (3 DOWNTO 0);
& Y/ q; o. y" Usignal count2 : STD_LOGIC_VECTOR (3 DOWNTO 0);
6 n1 g$ F0 p% G5 Hsignal y                : STD_LOGIC_VECTOR (7 DOWNTO 0);5 k5 D4 N; o; r' J
begin
: e+ C4 Z1 C9 W' A! |+ ~3 p' D- M4 S+ W2 |4 o+ o
        process(clk40)
" Z% k+ R7 A7 y        variable cnt:integer range 0 to 39999999;
7 u$ h( K! o  p5 x6 Y" C8 C, e        begin
- D- J- O4 G+ r/ T. A                        if clk40'event and clk40='1' then
7 }- ^' y" f( ?: m" _! h' o                                if cnt<20000000 then. r2 [' d7 Y. B. q' C$ I7 O' B* W: J3 E
                                cnt:= 0 ;& J8 I/ W' f0 m# _* t) [- Z
                                else
; {0 W( p+ d- a, r9 R9 N' P                                cnt:= 1 ;
7 S9 Q0 o, H( a7 }1 f                                end if;. g8 z1 q* L" t
                        end if;; s7 b& S( ?, n) @8 E
        end process;
) m0 L. I; n/ P, S, ?8 ?        clk1<=cnt;
7 e- u, `' v% ]. p- Z       
6 u( L0 |2 E* \! b, I        process(clk1)* `6 `' X5 O4 S3 N( e7 w
        begin. z! ~9 B% a( d/ J0 t$ u) e: g
                                if clk1'event and clk1='1' then% b6 l/ y0 I/ h8 f. f/ A7 D& D5 p
                                        if switch='0' then
& Y; {* m3 w( }$ D( P                                                count1<=count1 + 1 ;* V# b' i2 S. C" b6 L6 E
                                                        if count1="0110" then; v3 j0 H' K5 A/ g) O$ Y
                                                        count1<="0000" ;
* |/ W  I0 D4 g5 V) d# Q                                                        end if;
1 G# }: S2 O/ d                                                else
( U; k- i% S  y( y                                                count2<=count2 + 1;8 @' N$ n7 z1 u) }, q6 D
                                                        if count2="1000" then7 r9 E' b* R" `
                                                        count2<="0000" ;
% D# T3 `4 Z3 W+ t0 q! L* ^                                                        end if;# h$ S2 f, O9 l$ P! c& V
                                        end if;               
% u  O4 v# ]- d* V& J4 [& \                                end if;
5 l, D6 p& |) i        end process;
" O5 G5 G/ i- E) v8 Q後面是我自己要接出去的東西~所以我沒PO!!
4#
發表於 2008-5-18 17:58:36 | 只看該作者
您好
3 K" D9 r1 s; h! i這樣還是有問題
- h( D, k0 ?/ l7 x可以試試
! x1 Z1 _& D8 }0 W7 W% ~3 ~process(clk40)
* N) ~: F% c! o& i9 G4 `        variable cnt:integer range 0 to 39999999;
5 c+ y6 P8 O, M- X/ G, M        begin& W5 P5 h( ?4 N2 b, }- U
                        if clk40'event and clk40='1' then
/ Q, m' K: ]1 _5 J                                if cnt=39999999 then. j) H/ p- ^3 a% B1 W# q$ X
                                     cnt:=0;
$ E6 b0 i$ u8 D& [! t* H8 l4 x                               else
2 U7 [6 K8 d7 ]. R; Q+ n6 V$ B                                  cnt:=cnt+1;
- X/ H+ O; i5 R: P$ j2 X" z                                  if cnt<20000000 then
9 {9 C0 m: Z6 K8 V# K6 [% E0 x, {                                       clk1<= 0 ;
0 B; j: u6 a* {2 {& v                                  else : k9 h" |2 K% N8 P
                                       clk1<= 1 ;& q9 l( n0 _- |$ K! o. g' k
                                 end if;2 L% {- V$ X' p9 D0 K8 E
                             end if;! I, t+ p* d0 O1 x3 A! K- ]
                        end if;
0 v0 P5 `+ B& v; h1 M+ T3 ^        end process;+ a6 |; X: ?* _9 m/ r. j' K
       % _$ f3 v5 ?# W3 F
或者: M7 ^$ D1 h" v! z6 h$ ]0 {
process(clk40)7 P3 V" Q* _) g! M
        variable cnt:integer range 0 to 39999999;6 P" l3 t1 S) \; z# y/ u
        begin. q/ T7 U% q0 M$ A3 l
                        if clk40'event and clk40='1' then5 {, r- ~' G$ V/ T
                                
6 q* P8 n, k0 z0 s( j: Q- e                                if cnt=39999999 then; D  ^% e* `* z) n) e: [
                                     cnt:=0;
! l0 @) I7 n  I* [                                     clk1<= 0 ;
: v9 K$ E! i! F. X( H7 e* Q6 R/ |                                else. ^) n  _3 |7 B- z9 `( [3 g: x
                                     cnt:=cnt+1;8 l6 G; n: r0 ?) j( ~1 H
                                     if cnt=20000000 then! y9 _) M, u7 Z
                                         clk1<= 1;
$ {5 Q% U% K  o' H! U                                     end if;
8 |: j+ E9 s3 k- G                               end if;
$ C! K' f$ R9 {8 @% J                        end if;
# O! V9 g* N& X; L7 ~' R        end process;! S8 r3 C* ?! A! U3 C7 l1 ^

  d& s$ W, Y, Y" i$ \不過兩種方法都有我第4點的問題) k7 L( h1 b- ^# \; A, c0 U+ z
如果你是用quartus2可以分析一下+ q2 t( I( ?3 T6 C6 O' [" A
你的clk40可以跑多快
5#
 樓主| 發表於 2008-5-18 23:02:25 | 只看該作者
40MHZ
! Q: i9 A, a. k2 [; G我想我只能實際去試試看燒在上面能不能跑~
. F" i  s2 w6 E8 _: }' N$ Q5 Y: h因為我還是沒辦法用電腦模擬出來~
; h3 N4 _: a  O  D1 D/ G: M感謝你~ 結果在跟你回報!!
6#
發表於 2008-5-19 00:03:14 | 只看該作者
gto10620 別忘了給addn "感謝哦"* h- W4 |& f, u, {. C

* Z# P3 F- v0 n. a; ]! f0 O按評分就可以了

本帖子中包含更多資源

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

x
7#
 樓主| 發表於 2008-5-19 17:04:30 | 只看該作者
收到^^ 抱歉~      
' g* P! ?7 [+ C9 \9 c下次清楚囉!!
8#
發表於 2008-5-19 18:10:24 | 只看該作者
現在補也來的及的, 不用等下次了
9#
 樓主| 發表於 2008-5-20 01:53:53 | 只看該作者
我有補囉!! 我說下次一定會記得給!! 誤會我的意思囉!版主~
( ^" b6 {9 i/ S/ W: f# @, B2 i* h& J  P: b1 B
我希望我能在這領域學會!!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-12-27 11:14 AM , Processed in 0.171010 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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