Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-5-17 13:32:50 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
entity clk1 is# Q. M, D/ e7 d* y# \: E' u
    Port ( clk40 : in  STD_LOGIC;
$ U! t9 \( C8 ^4 v+ ~# `                          clk1  : out std_logic );
, O7 d3 M( G9 {* _end clk1;( G# p3 d; y9 L- y2 w2 V
* u, z0 I# B0 J3 U. v5 i  k6 |
architecture Behavioral of clk1 is
% E+ m6 J1 l# x; ^# Z% Jsignal cnt :std_logic;- b) u. b; f! B5 y# R; Z$ X' V
begin
. c$ H( r5 o+ \. l$ A& E- V: Y+ _9 C" T! A; T' e5 I* U' k
        process(clk40)
! t# O, o/ m6 M- U        variable cnt:integer range 0 to 39999999;% D0 o; C- V0 E
        begin
' s5 r6 Y( ?2 n8 V1 O* @% }3 t                        if clk40'event and clk40='1' then
% T3 n7 l' z& Q9 q& Y                                if cnt<20000000 then1 v; f# n1 b% i1 l  T
                                        cnt:=0;
1 M+ c# Q6 ^, u5 [9 K                                        else
: e1 g$ y, {; W                                        cnt:=cnt+1;                                         9 s3 C8 m0 H0 }, E  j: n
                                end if;9 x- p! t9 W' C9 T1 m& U$ X1 C
                        end if;
& X, \$ I! ~# Z4 _" a                        clk1<= cnt;2 O4 |. ?( J' B0 L6 C) n$ q
        end process;& |4 s) k4 ^1 x  U
end Behavioral;8 j* o$ C. D* X3 s4 F9 Q
為什麼CLK與CNT不相容?
8 b( U8 w( K3 u還是我的設計是完全錯誤的?
! s" g: g7 ?/ y; c8 k0~~~~~~~~~~~~~~~~~~~~~~~~~~~20MHZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~40MHZ+ B" e" X3 u/ i3 Y
________________________________↑--------------------0 {. _4 L; P  D
          此段'0'                        此段'1'
( C6 e# A0 b+ @, \正緣觸發~
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
9#
 樓主| 發表於 2008-5-20 01:53:53 | 只看該作者
我有補囉!! 我說下次一定會記得給!! 誤會我的意思囉!版主~
+ d& \! \6 a3 b  U) n# N% ^: i, o% j: Q" K4 n' q! h: x
我希望我能在這領域學會!!
8#
發表於 2008-5-19 18:10:24 | 只看該作者
現在補也來的及的, 不用等下次了
7#
 樓主| 發表於 2008-5-19 17:04:30 | 只看該作者
收到^^ 抱歉~      
- R, ]; d9 _- ?5 J4 G0 h下次清楚囉!!
6#
發表於 2008-5-19 00:03:14 | 只看該作者
gto10620 別忘了給addn "感謝哦"$ W8 W1 l' \# M% K. F1 Q
! Y6 q( a. n  |
按評分就可以了

本帖子中包含更多資源

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

x
5#
 樓主| 發表於 2008-5-18 23:02:25 | 只看該作者
40MHZ* F6 b, s) D% {, Q& h
我想我只能實際去試試看燒在上面能不能跑~
) ?! ^- C6 R+ o6 t* T3 M: }: S) F因為我還是沒辦法用電腦模擬出來~
' M0 M* q2 U+ n% q; _0 \% W4 z感謝你~ 結果在跟你回報!!
4#
發表於 2008-5-18 17:58:36 | 只看該作者
您好
( v' E& ^* U$ x. b% p$ L- a( D這樣還是有問題
( E# W( d! d1 y4 q可以試試
( C/ P2 t; K2 G5 O- S% H6 l5 x$ Cprocess(clk40)
2 o" W7 D- ?% [, X1 S9 D. o( q0 A        variable cnt:integer range 0 to 39999999;* a4 \4 o7 g' m+ \8 f
        begin. N3 I. W4 D' A# w; k8 D4 w
                        if clk40'event and clk40='1' then( I3 L4 h8 n" ]2 x
                                if cnt=39999999 then" `5 h& K" y# N4 {" s
                                     cnt:=0;
- K# P% P& s: ^' K! Q) `; g8 g                               else. e# J1 {$ o2 f2 M6 ~
                                  cnt:=cnt+1;0 @- R) H% T$ p, ^6 g% }1 w
                                  if cnt<20000000 then4 W% v6 J0 {/ d& @8 M
                                       clk1<= 0 ;
8 v0 I9 x  {7 a7 m/ {5 v. Q                                  else
' w8 F( e, \2 L+ I                                       clk1<= 1 ;
3 G3 S$ E$ E! T, h# B% l                                 end if;
  G9 p: Q3 J* S: k+ n                             end if;! h$ o5 U+ T- G5 O# k9 G+ D: A* V
                        end if;9 ], t7 j. [- R# g' [+ b8 Z$ b$ w
        end process;
$ l" }5 Z. M  w       " v6 \/ ~& v: d' K
或者, J; f& T, p# n! H
process(clk40)
2 y8 J& ]4 Q3 z: T        variable cnt:integer range 0 to 39999999;
. q9 |& }" V* `: p        begin1 e3 t( L0 B  S; c
                        if clk40'event and clk40='1' then
  I: i2 R' S  u% ~( V$ |' }                                9 x& I" R/ V. {' t
                                if cnt=39999999 then
2 u& v4 S# P  [) [' y                                     cnt:=0;
: {3 u" r8 _5 _1 s' X                                     clk1<= 0 ;, g! c4 V- s* t4 K; ]5 i7 h! n
                                else$ ?5 Y! C  a5 G; M
                                     cnt:=cnt+1;3 W9 _7 w' c) t4 z6 k' b4 j
                                     if cnt=20000000 then  j% Q. g9 k  |0 J& N/ c
                                         clk1<= 1;
5 I" S1 O. n* x( z2 H1 }                                     end if;
" q- l& n$ v3 y( \                               end if;
- r  _3 {- E% ?- V% a: G                        end if;( u; f5 p3 j- ~  k" \2 O
        end process;
9 [, m/ H& [. G! }0 ]$ r! T. d' n: C" O6 c# Y5 a) b8 g
不過兩種方法都有我第4點的問題2 a" W" c3 X1 M  e
如果你是用quartus2可以分析一下
' W0 T6 @$ o0 F+ \) f' }3 u: t你的clk40可以跑多快
3#
 樓主| 發表於 2008-5-18 17:13:16 | 只看該作者
恩~是的~我是要把它除到1HZ因為實驗器材的內部震盪晶體為40MHZ
* D' K1 \# I  w/ T. F除完1HZ接上計數器這樣~下面是我後來又改的><" 難道精準式除頻有很多種方法做??
8 c# D$ {8 u* u  n- i+ a! }" Zentity clk_95 is
. A5 I0 e; I  l) J1 @( M    Port ( clk40  : in  STD_LOGIC;; J& l5 E$ }9 z% B8 ~- R
                          enable : in  STD_LOGIC;" q7 Q! p0 `5 [+ {$ u0 w
                          switch : in        STD_LOGIC;
+ y( d! O1 r3 u! _1 y: E" P! l5 n3 Y) I           a,b,c,d,e,f,g,p : out STD_LOGIC;
$ u( W3 a$ F% `: j+ S) S4 C                          SEL : OUT   STD_LOGIC_VECTOR (5 DOWNTO 0));
3 w/ J' ^4 V( F0 J6 j; Bend clk_95;+ g# Z! L7 s6 |. ?  V' j

, f7 x, t5 l9 x2 qarchitecture Behavioral of clk_95 is$ F4 v. N1 G0 g: r3 ^+ E( k
signal clk1 : STD_LOGIC  ;1 F( L' A5 e  ~
signal cnt  : STD_LOGIC ;) n9 |8 g, ~, ^3 R7 _
signal x1  : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
: [8 R0 W# o6 w3 G6 Esignal x2   : STD_LOGIC_VECTOR ( 3 DOWNTO 0);0 l! g% P0 m# h
signal count1 : STD_LOGIC_VECTOR (3 DOWNTO 0);' K0 ^4 g5 G4 d7 E; k! C8 Z
signal count2 : STD_LOGIC_VECTOR (3 DOWNTO 0);1 ?4 [; e" b  D% z6 f
signal y                : STD_LOGIC_VECTOR (7 DOWNTO 0);) ]# b) Z) c6 X) Q5 j/ D9 w
begin
$ Y, V0 S, _9 ]( Z7 K1 ~7 S- c* c; N1 K- x) W( z# P( h
        process(clk40)
4 Z) l0 b* W1 S% D        variable cnt:integer range 0 to 39999999;/ c+ u$ ]8 w+ m/ x% [
        begin
- V: B/ ]. @! S3 z, w! E- Z                        if clk40'event and clk40='1' then
( S. ]3 S) w* l, O6 M/ [                                if cnt<20000000 then: G3 E9 q, }* ?
                                cnt:= 0 ;
- Z3 l$ _1 ^* R' {% j% _5 H                                else 3 K: `: G1 S! a8 W
                                cnt:= 1 ;( U# v$ }! K9 E; Q8 U. Y
                                end if;$ i% h7 H' e4 l
                        end if;- [* j" X" g; I
        end process;/ o$ Q2 H% `( z% }
        clk1<=cnt;9 q( D- V) w7 |! n2 ^/ s% D
        % F* r8 X8 R; W$ l5 n; J3 I0 X
        process(clk1)  m  N+ z/ M6 n
        begin, J% A8 z$ @7 Z
                                if clk1'event and clk1='1' then
+ S3 B) ~4 W4 b                                        if switch='0' then' c* W3 i/ C4 [# q
                                                count1<=count1 + 1 ;
& ?* R/ H" D; r                                                        if count1="0110" then
, `: R3 g# t8 g$ V                                                        count1<="0000" ;
. o' e* Y+ Z5 Z) M  K* E$ a                                                        end if;. }% k& @  u, r3 P. k9 n% ?
                                                else
0 r, G5 U8 x* I8 W                                                count2<=count2 + 1;
9 t( d1 s/ u; @# O0 e3 m: {" n                                                        if count2="1000" then
3 `  G# @! K1 l- d) H$ {/ [                                                        count2<="0000" ;7 b4 y: R( s3 j4 L9 z4 {
                                                        end if;
. B. t0 ^+ G5 i                                        end if;               
4 [, D. o8 S( H& U  s7 H                                end if;
& Q2 \1 e/ b5 \( W, z! N  y        end process;
: E2 n8 c* Z$ s8 J( \$ }後面是我自己要接出去的東西~所以我沒PO!!
2#
發表於 2008-5-17 23:00:37 | 只看該作者
您好7 M) i8 a4 g/ t  |! c: o; R
1.
2 P6 G5 [0 x  j# @4 v% I7 s1 A. M: F請問你是要將40M HZ除頻到1 HZ嗎?
; R+ e1 p7 U. r* h2.; S( n* s8 L; n' m
CLK1是定義是1 BIT的輸出,跟cnt的定義integer不同& z3 Q0 C2 ]6 L5 b0 g9 d
當然不能CLK1<= cnt,8 @* h5 f! ?# n# B8 B& ^/ x  g
3.1 c! t, b* q7 O0 A; U7 Y
你的CODE有錯,請多想想
9 t$ ^4 m; C% ^& H+ I' z/ t4.! b' x+ [' Y4 i" w% }" X$ n
當你解決上述問題後還要思考7 [, e  I, e* C: D& }# r
COUNTER要能數到 39999999
0 l5 }, \7 d- r& l  A$ ]; P4 N0 O: k這樣的計數器合成出來,須幾BIT你知道嗎(0~1023需10 BIT)7 T- o0 E) o4 _& Y- O' n/ {6 v/ w
那麼這麼大的計術器有辦法跑到40M HZ嘛,況且你還要配上
- t6 e2 f) e( r一個大的組合邏輯比較器(因為有用到if cnt<20000000 then)
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-4 01:34 PM , Processed in 0.109006 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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