Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-5-17 13:32:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
entity clk1 is) h$ K. [7 G" M' n! Y6 U( l
    Port ( clk40 : in  STD_LOGIC;0 \$ `7 `& z* A
                          clk1  : out std_logic );
7 ^9 n7 i# |5 O" Tend clk1;; {! u# }- g7 M* X/ H9 i: m& i
9 i- X3 F9 R0 X
architecture Behavioral of clk1 is5 i! Q% S/ L0 i
signal cnt :std_logic;  V# O+ ]' p* K* F& E  \
begin
" g" O- o1 p2 {1 W2 Z, D) `& K. N% f3 ^+ l: \) s1 i) I
        process(clk40)
. w) w+ y; m. w! f; e- B+ U        variable cnt:integer range 0 to 39999999;
9 {) Z6 z1 O- s# h- ?% C1 x! W        begin
9 Y: A* p# E6 _3 t# T1 K. Q                        if clk40'event and clk40='1' then
# d8 C* m8 ?( Z; {7 d) h$ q                                if cnt<20000000 then! z+ s4 h: L! u4 t8 N; i
                                        cnt:=0;3 O  W+ o4 g0 A9 Y- Q7 H
                                        else/ d& I; t% S+ K2 U, ~' R" X
                                        cnt:=cnt+1;                                         5 s) _" E5 ^/ u$ J6 G
                                end if;
. R+ T$ T) ~. Z5 @                        end if;5 ]' k. I6 p% `0 A# k/ j, C& e
                        clk1<= cnt;. L7 \2 @5 Y- q; r: R- J
        end process;# ~$ \9 W1 m6 b; z& D# c
end Behavioral;
, J8 H3 v. Q7 j, T- d* T( b為什麼CLK與CNT不相容?
: x  C& l3 }1 C9 k; i還是我的設計是完全錯誤的?
/ q( M5 w) ]0 z6 G; q' S0~~~~~~~~~~~~~~~~~~~~~~~~~~~20MHZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~40MHZ8 d4 B5 G$ y; o9 w/ q; B
________________________________↑--------------------- d# l' ~, d5 z2 ~& Q3 [! ^3 ^# ]
          此段'0'                        此段'1'
; |- h# F) ~. T2 T0 j, G正緣觸發~
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-5-17 23:00:37 | 只看該作者
您好
: G$ y" O& E: b* U* l# |+ C1.  V, p: T. g# @
請問你是要將40M HZ除頻到1 HZ嗎?
3 v1 l2 p+ ^+ M( |. M/ N9 z, V* z2.0 B$ `. c. r5 ]
CLK1是定義是1 BIT的輸出,跟cnt的定義integer不同; X, L$ F& `, p5 E6 \0 U4 ]
當然不能CLK1<= cnt,
' [( z7 p4 e- h' I  W$ x3.0 u# r( O+ A" z  g' X0 Q6 A% i8 W
你的CODE有錯,請多想想
; ~! [. _0 e6 V) I. ?$ z* n4.
7 R' b) y1 ?6 S4 a$ ?0 T) T  I5 P當你解決上述問題後還要思考
' ~- [7 h* p+ R8 k1 `1 c" PCOUNTER要能數到 39999999) L8 P. A6 H- Y( k' N
這樣的計數器合成出來,須幾BIT你知道嗎(0~1023需10 BIT)
0 y/ s' H/ ]5 }- G; j那麼這麼大的計術器有辦法跑到40M HZ嘛,況且你還要配上* Q8 [  E3 u* `9 J5 V4 @5 E. m
一個大的組合邏輯比較器(因為有用到if cnt<20000000 then)
3#
 樓主| 發表於 2008-5-18 17:13:16 | 只看該作者
恩~是的~我是要把它除到1HZ因為實驗器材的內部震盪晶體為40MHZ: p4 x+ g2 l- ]% ]( v. M1 P; P4 [
除完1HZ接上計數器這樣~下面是我後來又改的><" 難道精準式除頻有很多種方法做??: Q% u) c0 W' B7 i& I1 R- J' K
entity clk_95 is
- M; J4 J# d# ^2 \    Port ( clk40  : in  STD_LOGIC;
4 u8 G& i4 L4 F( ]# V                          enable : in  STD_LOGIC;; _* h$ ]0 W7 H
                          switch : in        STD_LOGIC;
+ [: J4 D7 _( d% `1 \           a,b,c,d,e,f,g,p : out STD_LOGIC;
2 [4 e5 {3 N  Y6 ~# Y                          SEL : OUT   STD_LOGIC_VECTOR (5 DOWNTO 0));& _1 g6 Y( }1 ^* R
end clk_95;
8 W( R. Q( r2 u; {- R  g5 b2 P4 G" N0 O8 b$ K
architecture Behavioral of clk_95 is1 C# s/ u: C$ T0 u2 h( Y/ r, s
signal clk1 : STD_LOGIC  ;# u) \+ e1 n8 x9 r* Y9 t
signal cnt  : STD_LOGIC ;7 X/ t$ d+ B: k1 c; _- K
signal x1  : STD_LOGIC_VECTOR ( 3 DOWNTO 0);! _$ z& O; A9 k" v% Q2 x
signal x2   : STD_LOGIC_VECTOR ( 3 DOWNTO 0);" c6 ?6 a. ]( m- I8 O( Z' w( Y
signal count1 : STD_LOGIC_VECTOR (3 DOWNTO 0);: u% ]) z+ Y; R7 y" c
signal count2 : STD_LOGIC_VECTOR (3 DOWNTO 0);
* s# D! u: z- ~signal y                : STD_LOGIC_VECTOR (7 DOWNTO 0);" n# z* M5 T! u/ l- g, ?2 H
begin( U. Y1 r" v2 z( \- w+ M9 }
" E! k" N+ l# w+ l
        process(clk40)
. v5 h2 _4 [7 E% s' q# \, s$ |        variable cnt:integer range 0 to 39999999;
& V; h. G; W. P( ~        begin0 M% t' e" g! M# S4 r9 c
                        if clk40'event and clk40='1' then( W% F/ v& n8 `0 G3 F5 u
                                if cnt<20000000 then4 J7 k2 Z' P8 ~: `# Z
                                cnt:= 0 ;
; q  q5 h/ h/ ~  T( Z% M5 Q                                else
. I) M  B' K5 b9 y, Q                                cnt:= 1 ;
' I6 b$ n% i* _2 {6 K                                end if;7 K9 p; |0 P3 m
                        end if;- @2 E  D: R0 {& W+ F) ^' @! `
        end process;4 G$ U( i) [' H3 A! S
        clk1<=cnt;- s+ n3 L0 s% W) f9 o( W
        * _* r+ P$ j; g7 f4 w, U
        process(clk1)* A" h, n8 \. M4 n. h; N% q
        begin9 f( z9 H& ?# ?' a0 i6 i, a( X* _
                                if clk1'event and clk1='1' then) j4 w0 N! b/ [% T
                                        if switch='0' then: b/ z0 Z2 g+ M+ e" M( M$ y
                                                count1<=count1 + 1 ;  T/ t* O2 A: g1 o# b- r' U
                                                        if count1="0110" then- H5 k, W0 t$ {, ~3 ^/ g
                                                        count1<="0000" ;* F" W3 D( ]4 H+ h; y: V" Z
                                                        end if;' S8 G7 x+ c) V& [
                                                else
( K8 H3 R5 H* @                                                count2<=count2 + 1;5 I  W5 n0 j  \( K
                                                        if count2="1000" then3 `2 S7 `2 d. p4 H+ x- h$ c
                                                        count2<="0000" ;, K3 Z: S* n7 z+ I9 Q5 w
                                                        end if;
1 h4 Y+ ?( T, @                                        end if;                9 l$ k7 M+ `3 [0 }
                                end if;
8 g  W: h, ^! h        end process;
% q7 _2 b7 f) t$ N後面是我自己要接出去的東西~所以我沒PO!!
4#
發表於 2008-5-18 17:58:36 | 只看該作者
您好
7 s" T4 ?0 u) Y7 b/ C. ?1 J這樣還是有問題+ K/ G+ _4 y4 {; k; I9 f3 L9 e
可以試試
0 g+ ]; R: A% G# r; O- G  c  Tprocess(clk40), V$ @1 O& k* i% n  v9 ~3 H5 }
        variable cnt:integer range 0 to 39999999;( u0 g2 _2 A) t2 X
        begin/ G4 v" {3 \% B1 F! Y0 U9 C* ^
                        if clk40'event and clk40='1' then
4 i: x6 z9 ?3 {/ ~* e                                if cnt=39999999 then
# ^7 h: m* S& H; y+ T1 Y                                     cnt:=0;" Z$ A5 a2 X  h; h5 Z6 u
                               else1 [: @  u) Q( c$ P  m( o: E9 e# k
                                  cnt:=cnt+1;
1 p5 n9 q2 d' C9 m& b/ E+ d                                  if cnt<20000000 then
+ s6 P# H. Y3 E( [- l) ?                                       clk1<= 0 ;
/ M6 z0 B9 j" w8 g                                  else 8 F+ R. ^" h  u+ u, x' n7 D
                                       clk1<= 1 ;
' n- E5 u1 f! [4 A( i                                 end if;% @0 r& }; n0 ~) ]/ y
                             end if;% _7 \# B, Z1 y; N) r
                        end if;0 o- D2 u' m  c1 m: w' S
        end process;5 J% X: K' E3 y
      
2 K+ x/ @( v8 z  U2 [- L6 d7 m或者
- N! G& T1 u4 q; N) ?( W8 kprocess(clk40)
1 n, d8 R" b7 h0 V        variable cnt:integer range 0 to 39999999;
; d; o6 E) N! B5 J        begin
; u" x. m# f+ h                        if clk40'event and clk40='1' then' l+ s" _/ N2 S- x
                                - D- y: L* M1 f. t/ y0 X2 }
                                if cnt=39999999 then
6 N9 B: m* H$ b5 `! X; g' a                                     cnt:=0;
. ^8 Y, L0 [; ~7 s& Q4 k2 h                                     clk1<= 0 ;
7 C; X$ N. j2 h  x0 H) ?; O                                else
& D# r# I* m$ l  ^( ]3 u                                     cnt:=cnt+1;
! t% {1 Z' K7 o$ _8 Y: A" ?                                     if cnt=20000000 then5 w, c7 `% \6 W& S* E4 Q# j
                                         clk1<= 1;
, i8 b) r. i+ ?! P/ u9 t' b% u0 r! _% w                                     end if;
4 q0 t; P& i  G: _* Z+ T                               end if;
+ a2 Z7 O2 D* z1 B1 w/ I4 D                        end if;
7 T+ v7 q  _+ @! I+ q% ?        end process;
( _- W6 Z+ ?- z9 `2 @; V8 v" E6 H: g9 X  a7 {2 r2 l4 R
不過兩種方法都有我第4點的問題* r  `& t, M; q, T7 D6 w$ u) X3 x+ x
如果你是用quartus2可以分析一下5 b( m( r+ f2 a1 H2 V. O( [2 z
你的clk40可以跑多快
5#
 樓主| 發表於 2008-5-18 23:02:25 | 只看該作者
40MHZ
, L/ v% s# C. N  U我想我只能實際去試試看燒在上面能不能跑~, e! f. ?* k1 z$ |  K! N7 w
因為我還是沒辦法用電腦模擬出來~! P$ t1 E) r7 o
感謝你~ 結果在跟你回報!!
6#
發表於 2008-5-19 00:03:14 | 只看該作者
gto10620 別忘了給addn "感謝哦"
3 W* y; c/ ]( U* r) M# f* O6 y6 |# C0 @7 g) `" I
按評分就可以了

本帖子中包含更多資源

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

x
7#
 樓主| 發表於 2008-5-19 17:04:30 | 只看該作者
收到^^ 抱歉~      / i' J& ^5 `" V; @: p" M: a6 U
下次清楚囉!!
8#
發表於 2008-5-19 18:10:24 | 只看該作者
現在補也來的及的, 不用等下次了
9#
 樓主| 發表於 2008-5-20 01:53:53 | 只看該作者
我有補囉!! 我說下次一定會記得給!! 誤會我的意思囉!版主~' ]' ~/ ~& W, j2 Z2 h% ]: t
+ Y3 y- L) f1 }2 o- k2 W0 Z% g
我希望我能在這領域學會!!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-18 08:42 AM , Processed in 0.121016 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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