Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-5-17 13:32:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
entity clk1 is
0 ]  e2 ^+ J8 _3 a4 a    Port ( clk40 : in  STD_LOGIC;; ~3 F: z* s" @. a* k) s- p
                          clk1  : out std_logic );" ^, k  J/ o8 y$ f) \) N4 e2 d
end clk1;7 Z4 C! F6 q" [- }. c
6 l& W. Y9 D( N! l
architecture Behavioral of clk1 is
3 h' T( |+ \$ Wsignal cnt :std_logic;( [- s5 ~' h& k3 \* u) h7 N$ T
begin
( c; v8 u2 }0 L: k, n. m
7 V! I3 a% Y/ ]& r: d) r, \$ B        process(clk40)
, _! z. s3 E- ]! V; T+ r  S        variable cnt:integer range 0 to 39999999;& k) D' k. V$ L: `' a( A: ]0 q
        begin) R- y/ E- Q: v3 a; C6 G7 s( ~1 x
                        if clk40'event and clk40='1' then
# q0 X: b/ I9 B/ E! ]3 m5 \                                if cnt<20000000 then" W$ G: d: Q/ |2 v' [' D
                                        cnt:=0;
( i: A5 N8 Z. G" ?8 x6 W* U                                        else
' o7 P1 s0 e8 w, n/ U                                        cnt:=cnt+1;                                           }) j: d9 x' [6 o' R
                                end if;
4 g/ f& Z& E( q  Y: Z                        end if;6 K0 b+ w- i$ G
                        clk1<= cnt;
8 g5 P% w- n& V$ z$ g/ i+ l        end process;3 w) L7 w- f& s) U% p0 y. O
end Behavioral;
: g8 M! I6 X1 o. Y0 |6 Q  F$ o為什麼CLK與CNT不相容?8 s0 `8 p) W4 u6 Y0 L# V
還是我的設計是完全錯誤的?
( T" n- P& ^) u3 z9 @+ @. b0~~~~~~~~~~~~~~~~~~~~~~~~~~~20MHZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~40MHZ
+ ]6 [, y, Q* U$ i/ C________________________________↑--------------------
% o9 c. d9 p* G) A          此段'0'                        此段'1'  G+ D6 {) p6 p" }  g( n" G
正緣觸發~
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-5-17 23:00:37 | 只看該作者
您好
. x7 Y7 C* Q0 x; `) n/ G. ^( S1.
) R% k: F9 j; M7 X請問你是要將40M HZ除頻到1 HZ嗎?
% i  y, Z2 p4 K* m# v& i( m( E2.
3 u& d5 G  o& VCLK1是定義是1 BIT的輸出,跟cnt的定義integer不同
9 {8 v; z4 y' b當然不能CLK1<= cnt,) ^5 ^9 o3 h# N& b* `* ^6 K
3.
: z* x3 u, l& g  U( B你的CODE有錯,請多想想7 |3 ?1 F, l0 T4 h9 N, J- y
4.8 I& \7 I, k0 E! a. d
當你解決上述問題後還要思考
- }6 H- x) w" F: }# Z+ Z( bCOUNTER要能數到 39999999
. C; h  V+ M6 P1 c這樣的計數器合成出來,須幾BIT你知道嗎(0~1023需10 BIT)* X- ?' Q' I3 V$ W" V3 k
那麼這麼大的計術器有辦法跑到40M HZ嘛,況且你還要配上
" t; k2 M- {; k  P一個大的組合邏輯比較器(因為有用到if cnt<20000000 then)
3#
 樓主| 發表於 2008-5-18 17:13:16 | 只看該作者
恩~是的~我是要把它除到1HZ因為實驗器材的內部震盪晶體為40MHZ
' k) V6 y1 ]; R3 B0 B8 V除完1HZ接上計數器這樣~下面是我後來又改的><" 難道精準式除頻有很多種方法做??8 k/ K& K) a4 b: u1 V
entity clk_95 is
; J9 V" U! q& ^# |1 I8 s; a: w# ?    Port ( clk40  : in  STD_LOGIC;
1 i: v3 i  p5 s' f+ R: m+ @6 W                          enable : in  STD_LOGIC;
, S' _* f( n9 A                          switch : in        STD_LOGIC;  k2 g' a1 Q0 Z
           a,b,c,d,e,f,g,p : out STD_LOGIC;7 ?! V; k6 g; C7 C0 R
                          SEL : OUT   STD_LOGIC_VECTOR (5 DOWNTO 0));$ D+ z. {' r& k/ f+ z/ z+ A1 M
end clk_95;
6 ^! t5 C. K, Z! W4 B% J; u/ m0 I
, L# A- C. j2 J/ w1 q5 rarchitecture Behavioral of clk_95 is! P; c/ u' \7 v4 V$ `- j" V
signal clk1 : STD_LOGIC  ;
8 ^8 V8 |" B* C2 k6 t- z* t# hsignal cnt  : STD_LOGIC ;
; ?9 t) M$ s$ a4 i& O; zsignal x1  : STD_LOGIC_VECTOR ( 3 DOWNTO 0);9 U7 i9 `4 ?1 \9 D
signal x2   : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
, @# v9 p/ F' p  g' Jsignal count1 : STD_LOGIC_VECTOR (3 DOWNTO 0);  l+ y+ l9 \( L' A% e1 w
signal count2 : STD_LOGIC_VECTOR (3 DOWNTO 0);
6 A5 H* i0 A# rsignal y                : STD_LOGIC_VECTOR (7 DOWNTO 0);8 Q7 m3 _. e! l4 ]7 o
begin. `% m& T3 W( A
( j, I0 S- W+ Q& Z
        process(clk40)4 ~% r+ F# b8 I0 m& x
        variable cnt:integer range 0 to 39999999;% K: [2 G2 K2 m/ P) C
        begin
" s5 A; \- |# W% n/ `! ?; R) t) l2 [+ X                        if clk40'event and clk40='1' then
2 T5 A8 S# Q# B8 V9 B) E% {7 w: h                                if cnt<20000000 then1 T2 R3 R; s( |8 f/ y
                                cnt:= 0 ;2 w& i% b8 v; J9 Z  U; e( X2 I
                                else
2 n- P- x  M& |5 \% y6 r2 P3 G                                cnt:= 1 ;. k5 g8 N3 G2 V/ ~4 m8 A
                                end if;! N0 W* N2 ^0 m2 O% h" J
                        end if;
% b( y' [  j) p  U/ Q& h* v) S6 n        end process;
' K4 J+ K5 J3 O2 I# H* a        clk1<=cnt;
! `- Q8 _0 [: X7 }       
. ~2 y. ]7 G9 l' [: U9 q! }8 o, s& w        process(clk1)
2 F1 T: K' i6 o        begin
! w- s: K: W& x: B# s: n                                if clk1'event and clk1='1' then
/ U- x0 {  H* G                                        if switch='0' then  M  {0 W! z% z$ \* r; h
                                                count1<=count1 + 1 ;6 C3 p6 Y% m7 d5 ^0 W0 Y1 p0 ?: w
                                                        if count1="0110" then  |% b0 m# c: u! ~* p! n
                                                        count1<="0000" ;
. F) y8 Q9 {% ^/ w$ Z                                                        end if;+ |4 ^, D7 ]5 Z! H& j6 V8 O* B
                                                else) E. Y6 v" C+ S! o0 ?0 n( f
                                                count2<=count2 + 1;
3 ^# ]5 s! q8 _3 N# M* ]5 J                                                        if count2="1000" then
  X- L! {$ A* c4 |, {7 n: ?5 N                                                        count2<="0000" ;
4 R& J/ Q! R* Z) s                                                        end if;7 _1 u. l: |6 o: P( T
                                        end if;               
5 a  b5 v( G/ ]( g% X) @8 s/ a                                end if;
% ?& M- s( e- g" |( \, M) c        end process;
' V8 J6 m4 G' q! X. t/ S' J( |後面是我自己要接出去的東西~所以我沒PO!!
4#
發表於 2008-5-18 17:58:36 | 只看該作者
您好; D( }1 y( `5 u. B  k# u
這樣還是有問題2 V( D; Q' u2 N' F) a6 c
可以試試
5 a% y% [( a9 r/ s2 K+ a# uprocess(clk40)
7 ~) A& `1 k& p1 \* J        variable cnt:integer range 0 to 39999999;
! l  T+ M( K0 x2 ]/ G1 e/ U        begin7 o$ `) Q# p! [( q: c
                        if clk40'event and clk40='1' then
- v' I( n. X# x                                if cnt=39999999 then
* X+ y7 m, d! x                                     cnt:=0;
! @  d- k1 H, O) e' o                               else
+ a  y) h4 g4 J9 W                                  cnt:=cnt+1;# \  l. Q. o4 q
                                  if cnt<20000000 then
( R" a# {& l9 `                                       clk1<= 0 ;4 d( k( O' V: Z
                                  else
$ n6 c' w2 y9 h- A4 \3 C                                       clk1<= 1 ;
! w2 a  x* O% {                                 end if;: r& m4 J. k) j. ^0 b. t' Y/ h
                             end if;
& o" ?6 z, @, ^7 c! @0 b" W                        end if;: v8 A2 C+ |: D$ b6 F! M
        end process;
8 q' p: ^* \, f5 d       5 h, x! M. i, B  {& P
或者0 C4 }9 A' Q& Y: u) ?7 ?
process(clk40)
; M- @  U% z: k" U0 M% J9 N! T2 u        variable cnt:integer range 0 to 39999999;$ y; h5 J6 L- _+ h4 X9 B7 r
        begin$ ?" X/ F; h. Z) j
                        if clk40'event and clk40='1' then( [7 ]- q2 e) Q( f1 S& P6 x
                                
0 h) c3 D' I+ d                                if cnt=39999999 then
' P2 A) p3 A: w: ^1 J  ]1 _                                     cnt:=0;7 }8 Z2 R  e+ y% H: `8 t( F( M1 m
                                     clk1<= 0 ;. a) f" h$ v; h/ W; G
                                else" k) U' p7 ^8 y- s; r" c# ?0 s
                                     cnt:=cnt+1;
6 H! a7 d# Y  U6 ]                                     if cnt=20000000 then  v$ ?/ c6 B/ G: h
                                         clk1<= 1;3 N; V8 L% `7 U  |2 M# x0 L
                                     end if;* o* v. a  O0 P0 D; O' D4 z
                               end if;
4 i: q0 ?% e5 ~0 M. R4 q# T6 ^                        end if;
% L* ]* e: W6 {+ Z2 U% ?/ I        end process;; s; L3 I3 m% \1 ?; Z* A5 w
  w' l! p0 d& @. c
不過兩種方法都有我第4點的問題
* m% |; h$ a+ s如果你是用quartus2可以分析一下
; Z. @5 ~( K- t& S: Y9 ^+ d你的clk40可以跑多快
5#
 樓主| 發表於 2008-5-18 23:02:25 | 只看該作者
40MHZ
5 D: J. z- O1 \我想我只能實際去試試看燒在上面能不能跑~/ H: p2 [+ {: S) _1 ]0 y+ }
因為我還是沒辦法用電腦模擬出來~
8 c' y7 d' @9 r6 i+ v) _3 l) a感謝你~ 結果在跟你回報!!
6#
發表於 2008-5-19 00:03:14 | 只看該作者
gto10620 別忘了給addn "感謝哦"
, |( p2 w, Q' N
1 f5 |, {! j. q  w6 D6 d- f按評分就可以了

本帖子中包含更多資源

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

x
7#
 樓主| 發表於 2008-5-19 17:04:30 | 只看該作者
收到^^ 抱歉~      
& n0 E3 y1 K/ i: x* L下次清楚囉!!
8#
發表於 2008-5-19 18:10:24 | 只看該作者
現在補也來的及的, 不用等下次了
9#
 樓主| 發表於 2008-5-20 01:53:53 | 只看該作者
我有補囉!! 我說下次一定會記得給!! 誤會我的意思囉!版主~
# K7 s; Q0 W; ]/ \( ~) P
' G! Z/ f8 A3 `, |; R; z( `8 K, Y我希望我能在這領域學會!!
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-4-24 04:46 AM , Processed in 0.112006 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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