Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-5-17 13:32:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
entity clk1 is. D6 T3 }8 b1 c7 D2 l4 l% `3 V7 h+ z
    Port ( clk40 : in  STD_LOGIC;/ {( D7 x/ w1 ~$ e( g9 M
                          clk1  : out std_logic );* U% F) K/ N8 z# u# G+ H: Q
end clk1;
# P0 R) X$ @7 [' U. ]
( c2 M4 D* f* ~0 E4 darchitecture Behavioral of clk1 is( U" r) h$ l( E& G) E8 C& Y  P/ f: m
signal cnt :std_logic;% l" b) b5 m9 m+ Z2 l4 Y
begin( m# A8 K; E2 T7 X4 R

2 ]" N& j6 u$ X7 k6 x" I        process(clk40): J' E/ b. Q( x! ?" w$ B8 ?- q" x
        variable cnt:integer range 0 to 39999999;
# m3 }0 z- Q9 W2 |, b6 j  ?' x) N        begin
9 D' f) a' G( n* I                        if clk40'event and clk40='1' then7 G5 Q* ~5 c, g; \
                                if cnt<20000000 then' a7 y' |2 O4 b1 R- ~
                                        cnt:=0;5 q# e1 q5 r6 Q0 J: a& A
                                        else- e2 [8 L3 _7 e' C+ b
                                        cnt:=cnt+1;                                         
" V% }( }( o2 C1 s' `9 L' l                                end if;% @; |) I% ~4 s% m
                        end if;
% }" @5 p, Q& q$ {                        clk1<= cnt;4 f% K: I6 }* D
        end process;2 Z6 G/ U% w/ l4 p7 i% H+ F
end Behavioral;
" ]& k/ x: f6 |" y% Z1 j: f為什麼CLK與CNT不相容?
$ x3 q, r  n! @% ^& F' e還是我的設計是完全錯誤的?
& P' x0 Z+ Q! v4 s* D) M3 B0~~~~~~~~~~~~~~~~~~~~~~~~~~~20MHZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~40MHZ
7 G& A: `( K$ {, }________________________________↑--------------------6 i( s) M' v4 \2 N* K8 e
          此段'0'                        此段'1'
$ p0 w3 ?1 }* ^6 K; r/ r正緣觸發~
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-5-17 23:00:37 | 只看該作者
您好1 x& k8 Q3 M+ L- F4 k
1.
) N: D/ l* e( t0 V9 E5 J; [- y請問你是要將40M HZ除頻到1 HZ嗎?2 P# m; g6 F# J7 Q9 ?& ~8 \' M( {
2.1 G! Z' u8 A3 o) `% |
CLK1是定義是1 BIT的輸出,跟cnt的定義integer不同
  [  M. q( i! y! p* `當然不能CLK1<= cnt,
3 h2 C5 U/ m+ [3 m3.) p2 h5 l# X0 ~
你的CODE有錯,請多想想
' S) y* d6 x0 g, A2 k4 r: V4.
4 ^/ E+ r8 w, [. X) W8 J3 z% u3 C當你解決上述問題後還要思考9 |9 F" I+ H: [
COUNTER要能數到 39999999
/ [7 |# _" g4 H* {這樣的計數器合成出來,須幾BIT你知道嗎(0~1023需10 BIT)4 b7 i1 H+ q6 K0 a
那麼這麼大的計術器有辦法跑到40M HZ嘛,況且你還要配上
0 ~! ~$ n5 H7 v5 l0 u一個大的組合邏輯比較器(因為有用到if cnt<20000000 then)
3#
 樓主| 發表於 2008-5-18 17:13:16 | 只看該作者
恩~是的~我是要把它除到1HZ因為實驗器材的內部震盪晶體為40MHZ
# Q+ W$ `0 `( f. ?6 R9 w除完1HZ接上計數器這樣~下面是我後來又改的><" 難道精準式除頻有很多種方法做??) G# n8 N' k1 a1 h# q
entity clk_95 is
% \) J$ w2 G1 d; c- S    Port ( clk40  : in  STD_LOGIC;
8 Z0 i3 k+ Y. ]$ i5 f                          enable : in  STD_LOGIC;
3 V  I3 U( D; V; U                          switch : in        STD_LOGIC;
9 c7 B. z  u6 L) k           a,b,c,d,e,f,g,p : out STD_LOGIC;
: Q, @! C$ C# j) a6 F: d                          SEL : OUT   STD_LOGIC_VECTOR (5 DOWNTO 0));
+ p" Q8 m  I& T: Q: K( cend clk_95;
" I1 _. L+ t5 Z* T& E+ R+ U9 A  |
architecture Behavioral of clk_95 is
. X8 _+ H( ]( Msignal clk1 : STD_LOGIC  ;
8 Q3 ~& [+ L8 [  G6 ]signal cnt  : STD_LOGIC ;
! O! b9 h# V- Asignal x1  : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
) ]9 r- r4 L) R4 vsignal x2   : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
8 E' @  Z' y9 M& |- b8 F9 U) @3 Asignal count1 : STD_LOGIC_VECTOR (3 DOWNTO 0);! K' {* @+ K" {2 D$ q/ ?0 ~
signal count2 : STD_LOGIC_VECTOR (3 DOWNTO 0);9 T5 m, ^; f  T5 x2 {4 O9 k6 G
signal y                : STD_LOGIC_VECTOR (7 DOWNTO 0);
1 y/ U2 b8 n( K, S5 Dbegin
) [/ H( l- J- U" F1 I) l4 j
' N  O* o: E4 o( N# m+ }9 Z        process(clk40)6 q7 H& q8 ]7 v! i* h9 c  A
        variable cnt:integer range 0 to 39999999;
( W( X7 Z! g8 I- ]# n0 I7 U, C6 ]  E        begin
- L& i# l/ w# H6 U+ R5 G6 n                        if clk40'event and clk40='1' then2 {" J3 ?9 P( [8 Q! F$ D( Z
                                if cnt<20000000 then
/ v# M2 K- E# z; ]6 `1 h                                cnt:= 0 ;
9 ?* f+ \2 ]% k                                else 4 R3 t) Y+ @7 N2 r9 E- `- x: `! ]% Q
                                cnt:= 1 ;
( }' H3 m* r' y  Y) U* \* b                                end if;( C5 l1 r% R2 f" o" P: e
                        end if;
  }2 @0 Z0 B4 ^! ]        end process;
% I9 e/ J& o, z1 Q0 L. T        clk1<=cnt;
9 G" \. K6 O, ?0 G5 B" W# H       
# \7 U/ `! w) g0 A) P, c        process(clk1)
& b3 q7 C! G6 ]5 V( X1 R' F6 Z        begin+ s6 M, y/ o* r5 V6 d
                                if clk1'event and clk1='1' then; Q& ?2 v7 ?8 l, f, j/ O
                                        if switch='0' then
2 Q& V3 }. i% ~: Q                                                count1<=count1 + 1 ;" O- |2 h5 C/ g: L
                                                        if count1="0110" then  G* M1 @6 c+ P- \
                                                        count1<="0000" ;
6 u, a6 V' O0 h: _                                                        end if;
0 Z8 I, O+ [/ h- |9 x                                                else$ J9 O- {* K8 A0 x
                                                count2<=count2 + 1;8 F  e) H4 @2 h7 b, h5 s6 \
                                                        if count2="1000" then8 w/ N/ H6 l  O% F* K
                                                        count2<="0000" ;( o/ q; j+ v0 ^; ~7 t2 B7 z. K
                                                        end if;7 u  _8 P# Y# q6 @  J: q1 {
                                        end if;                . M$ L+ V6 d. o# \; }
                                end if;
# A! o: y$ |' P  B. N- A        end process;
( x  {; N  x4 W) p, r後面是我自己要接出去的東西~所以我沒PO!!
4#
發表於 2008-5-18 17:58:36 | 只看該作者
您好2 H) D! v. |( h# P9 w0 }- h
這樣還是有問題
# k0 B8 E" P+ H7 z$ i' X可以試試: C# I" z1 U& X' n) ]" j  K( g
process(clk40)
: Y$ ^  _) I4 Y8 n        variable cnt:integer range 0 to 39999999;
) A# c( D( w4 e/ R8 K/ M5 e8 m        begin
  x/ W) B0 _: N9 {) X) l                        if clk40'event and clk40='1' then
# C; C4 i  K! C: ~* J                                if cnt=39999999 then" \  ?/ T7 y, ^
                                     cnt:=0;
/ f5 m2 R* {' H, l5 B# `: G4 F                               else. g' e/ d( S+ d- q1 _* k
                                  cnt:=cnt+1;
( ^4 n4 z) Y' c9 b# a+ P                                  if cnt<20000000 then$ z. k+ m. W6 T/ |! _3 ?
                                       clk1<= 0 ;
! J  p% ^7 [& P                                  else
2 p2 s0 W; A# Y. y" \! T& l9 B                                       clk1<= 1 ;
8 v9 [; j" u- R                                 end if;# |3 [" y& N0 x
                             end if;: G2 N4 |. b% V" O% G+ R
                        end if;
; N1 J( M/ W  q* p        end process;
1 x  \+ O/ ~+ `  x$ z: k! `/ v       1 D4 p* U" W0 G5 [) p$ F& L
或者
1 ~% \. |% i- D$ V; ], S9 K0 p( Oprocess(clk40)
1 c6 a7 Y! x9 v        variable cnt:integer range 0 to 39999999;9 A9 d) v4 k! o" j5 z* t! `2 W
        begin7 C4 ~0 Q. b# e. A+ c
                        if clk40'event and clk40='1' then+ R( W9 ~) C+ ]6 t% c$ }! `
                                6 N) `1 W3 v! m' @2 x+ z8 o3 @
                                if cnt=39999999 then
. |) S! P/ t* J1 Y! n+ b( P8 E                                     cnt:=0;. |1 `' O+ I$ w, B! K
                                     clk1<= 0 ;* l% }5 [4 V$ G6 N3 L
                                else
* Q. q! D" U* W3 p                                     cnt:=cnt+1;  a- O( ~3 b$ d5 Y) E3 f
                                     if cnt=20000000 then. v3 a$ Z& [4 g- x( E, q9 |" U( G9 y
                                         clk1<= 1;4 N. c. C6 z8 G+ }
                                     end if;. C4 h4 `. U2 E4 t# ~, ?# X
                               end if;; |5 D% I7 P, E! d# U
                        end if;
/ j- i: K% b$ T3 R7 G        end process;
* [3 ~5 q7 e: Y, V; T+ O& Y" ?% C8 O. X& B+ \) p/ r% N+ \+ z; l8 g3 }+ Q
不過兩種方法都有我第4點的問題6 w. D  _/ s) q5 j
如果你是用quartus2可以分析一下  @" ^, t4 [1 B( k" _1 v
你的clk40可以跑多快
5#
 樓主| 發表於 2008-5-18 23:02:25 | 只看該作者
40MHZ& R8 F6 |4 D, c- r" f( \
我想我只能實際去試試看燒在上面能不能跑~; S! Y# H( q" ?5 z+ b- ?; e/ n2 T8 p
因為我還是沒辦法用電腦模擬出來~
! O9 r' g  B1 X感謝你~ 結果在跟你回報!!
6#
發表於 2008-5-19 00:03:14 | 只看該作者
gto10620 別忘了給addn "感謝哦"
$ i( w+ q2 v4 r9 W8 h* B0 ]1 f" J2 T4 a3 e$ h4 ^" I
按評分就可以了

本帖子中包含更多資源

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

x
7#
 樓主| 發表於 2008-5-19 17:04:30 | 只看該作者
收到^^ 抱歉~      , N6 a' l3 `( |7 x
下次清楚囉!!
8#
發表於 2008-5-19 18:10:24 | 只看該作者
現在補也來的及的, 不用等下次了
9#
 樓主| 發表於 2008-5-20 01:53:53 | 只看該作者
我有補囉!! 我說下次一定會記得給!! 誤會我的意思囉!版主~
& |) D5 a& }# z' l+ d- Q
5 k3 r! c7 c. G/ L) X% f我希望我能在這領域學會!!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-11-16 06:30 PM , Processed in 0.168009 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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