Chip123 科技應用創新平台
標題:
精準式除頻設計??
[打印本頁]
作者:
gto10620
時間:
2008-5-17 01:32 PM
標題:
精準式除頻設計??
entity clk1 is
6 f/ P% F: |$ R
Port ( clk40 : in STD_LOGIC;
. y5 j: h2 K/ [+ m
clk1 : out std_logic );
! k9 k3 J7 D2 _) y
end clk1;
. a) G. R/ @1 _+ B8 r! L2 x
) B9 \0 j6 X+ }- \6 Y O
architecture Behavioral of clk1 is
: H! b! f6 n* T
signal cnt :std_logic;
1 q; ^9 F* P6 F' g. n
begin
& i( @7 A1 o" t- w& Y( q$ p
. L7 Q2 j7 R2 W2 y
process(clk40)
" c4 l* a2 w: q6 `8 H& Y. F
variable cnt:integer range 0 to 39999999;
+ u6 g- }8 Q' Y; F0 t
begin
! u/ Q9 _( G; s8 z1 @: Y
if clk40'event and clk40='1' then
7 t, ^9 t8 ?0 t' v( P1 z( x
if cnt<20000000 then
% f' U& ]2 E0 o. `
cnt:=0;
0 \. M7 @ t$ f1 P9 H( x' W
else
/ \8 J+ u. T% V8 z( J0 f# `
cnt:=cnt+1;
" f G" U+ }2 x% a8 m6 A) M
end if;
2 w, ^# b. v3 m2 J% b% @) [
end if;
6 }* ?% e: `2 |# ]* I
clk1<= cnt;
; N, c0 J! _5 v! a
end process;
6 q) |7 a! t- o% C7 ~
end Behavioral;
( C9 J( f$ x5 V6 y
為什麼CLK與CNT不相容?
& x b- B9 G; r7 i- U
還是我的設計是完全錯誤的?
0 B* k9 q, w7 H
0~~~~~~~~~~~~~~~~~~~~~~~~~~~20MHZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~40MHZ
5 |1 n _7 O: Q
________________________________↑--------------------
8 B$ q2 r8 P) N8 |
此段'0' 此段'1'
7 c9 e. ^, [. K* l
正緣觸發~
作者:
addn
時間:
2008-5-17 11:00 PM
您好
9 i: T3 H. Y9 C: D m
1.
* `8 J* ~' R2 c( r0 [
請問你是要將40M HZ除頻到1 HZ嗎?
3 Q/ j3 n! t7 q7 j* i6 c; W( C
2.
6 Y$ N, ^7 d6 N5 k1 E) p; Q
CLK1是定義是1 BIT的輸出,跟cnt的定義integer不同
5 M! r) O9 H1 _1 G. d
當然不能CLK1<= cnt,
' t' d8 V: t, H2 u! |+ t$ `7 H
3.
% c2 F& n9 U, c6 v" x( l* z
你的CODE有錯,請多想想
( f5 I& M9 o: ]* P) c3 ]" k
4.
( @3 ^, f) x0 g9 A+ \, U
當你解決上述問題後還要思考
9 h1 r D0 L" ~1 H
COUNTER要能數到 39999999
7 ~. C: {( a. }7 A- O$ C
這樣的計數器合成出來,須幾BIT你知道嗎(0~1023需10 BIT)
! [/ X% W! f& n' h" M* S: _ V; }6 p
那麼這麼大的計術器有辦法跑到40M HZ嘛,況且你還要配上
% |* O3 j2 V7 ?- n" c: ]
一個大的組合邏輯比較器(因為有用到if cnt<20000000 then)
作者:
gto10620
時間:
2008-5-18 05:13 PM
恩~是的~我是要把它除到1HZ因為實驗器材的內部震盪晶體為40MHZ
* Q( X. b5 `5 _4 N/ X
除完1HZ接上計數器這樣~下面是我後來又改的><" 難道精準式除頻有很多種方法做??
4 Q2 g7 l7 Z: E! s
entity clk_95 is
0 `$ B9 U# R: K2 r, A4 I7 D
Port ( clk40 : in STD_LOGIC;
+ U1 v9 ]- T5 E! [: u7 y" Z! a S( s
enable : in STD_LOGIC;
; g u$ ~* r! {4 ^$ V
switch : in STD_LOGIC;
$ @; n" ^1 {! B" v; e. g6 W! U
a,b,c,d,e,f,g,p : out STD_LOGIC;
) d% d$ g1 t6 h: P" ?3 P/ D2 R! t
SEL : OUT STD_LOGIC_VECTOR (5 DOWNTO 0));
2 y) I/ h: {& m
end clk_95;
# Z v% @: ]- N# e- ^
) u5 W( N A `; N D
architecture Behavioral of clk_95 is
; e& k; a$ `/ i/ B2 T0 ^# C
signal clk1 : STD_LOGIC ;
( m. R R$ w. A6 B& g( o% }
signal cnt : STD_LOGIC ;
9 d3 \% i$ j' Q8 `& ^
signal x1 : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
) U0 R9 _$ z- e1 l
signal x2 : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
" c0 v: u) |' k' |0 z" s
signal count1 : STD_LOGIC_VECTOR (3 DOWNTO 0);
0 y* u+ p% n5 Y
signal count2 : STD_LOGIC_VECTOR (3 DOWNTO 0);
1 {, `, q; i: a8 n1 R2 C: F- W
signal y : STD_LOGIC_VECTOR (7 DOWNTO 0);
+ j3 F) b! e0 R" G- R
begin
9 B H. K4 q0 Q
. d+ q8 A; D* x
process(clk40)
& |$ ?% b7 I w+ V" Q
variable cnt:integer range 0 to 39999999;
3 R: c7 I, \" p5 X0 A% O" @
begin
4 a9 U( b, n* a" D) v
if clk40'event and clk40='1' then
, G" @+ H: k, U! H7 j2 V
if cnt<20000000 then
8 w q" G) }; ?. B, R
cnt:= 0 ;
0 ?8 b6 z4 a0 c3 x5 u! S
else
9 y/ ~4 g+ O& e( `0 R c, N
cnt:= 1 ;
, a: f# a4 u; H
end if;
' x& \$ f7 p, }- g4 e! l; a
end if;
1 p( r) b; b2 h* ]
end process;
% r; W% Q# W/ C# g
clk1<=cnt;
8 _0 ~1 x) A4 a7 K. {
7 ]( p0 a1 a& u# s4 X& N' l
process(clk1)
, ]9 u* d: h! z c: R, E
begin
' N9 A* x( |) V- a* y
if clk1'event and clk1='1' then
]0 @$ I# D+ S# V5 T: V
if switch='0' then
% ?' b- q( c4 T% s
count1<=count1 + 1 ;
( g8 `9 a7 j, R- K: h. x- x
if count1="0110" then
0 b5 W* U! E0 P3 x
count1<="0000" ;
~9 ^, d+ g# `9 p2 C6 d& s8 [
end if;
7 r2 g4 \5 Y9 U0 f
else
* {6 {% r( W" c( t% f- F. w# n7 i
count2<=count2 + 1;
k. o3 o6 d ^0 Z5 u4 `7 `
if count2="1000" then
. n$ {$ m! F4 o5 v
count2<="0000" ;
1 B7 q2 _% D$ w9 l) X* Y/ ]9 [7 V0 _
end if;
( h/ o5 ]( k# e7 } G; U
end if;
9 F5 _: S$ ~8 S, S1 b1 `
end if;
5 k( i1 w: P, B( D3 I% y, O' `8 j
end process;
9 V' J+ o( k% m: K% ^" D
後面是我自己要接出去的東西~所以我沒PO!!
作者:
addn
時間:
2008-5-18 05:58 PM
您好
" z! u; q& q" w2 w
這樣還是有問題
; |" U: g/ M: n; y
可以試試
4 U, B/ |1 |/ D. D4 Z8 t& d
process(clk40)
4 ]+ O2 e& M+ G! e% j
variable cnt:integer range 0 to 39999999;
0 [( G5 P* H w1 L% g. G) s. T. S
begin
2 j+ ^ L5 I" ~ k! V' ^. T
if clk40'event and clk40='1' then
' w% Q; W! T7 F5 R/ a
if cnt=39999999 then
! h) ], Y: @- q" J4 c7 V$ ?! i8 N8 b! V
cnt:=0;
7 O/ r) `5 X8 s% L; i1 c1 G
else
1 V5 C2 u: d8 J% K( |2 {) L) ?
cnt:=cnt+1;
. {) G2 E) p* [+ P
if cnt<20000000 then
; n' g& T( V8 z9 X4 u& P6 R
clk1<= 0 ;
" Q7 v+ x9 l: D' a- G
else
5 T) m( @! W6 z0 Z* ?: Z! W
clk1<= 1 ;
0 q, i3 I* h/ c) |0 O
end if;
w2 I. T+ |6 y1 @* O" E6 q
end if;
! x H( ]' m! n, ]" a8 D
end if;
9 d: o% j- p" H4 t4 v2 Z
end process;
) v* X% {- _& [/ \0 l4 [
1 N" s f% t* O9 x5 [9 j& T3 q, `5 L
或者
: F1 O N4 T {8 p% k
process(clk40)
, O1 W* M/ U$ G2 Q4 o1 v+ A
variable cnt:integer range 0 to 39999999;
) n7 \; ^$ R8 h) x
begin
: O# p1 d% k2 K% d
if clk40'event and clk40='1' then
6 l1 {. l3 {; C, ]2 K% k* T
# t3 ^ a; D+ o5 d
if cnt=39999999 then
! }9 j4 e3 P. ~4 k7 v c
cnt:=0;
0 H5 [* s2 v- J. d1 g" \
clk1<= 0 ;
, T# ^* |5 W% i0 l% z
else
" \5 n( \- `; V/ X; M
cnt:=cnt+1;
! Y. T3 n. a, j4 H4 _' p$ l- f
if cnt=20000000 then
|4 n- ^: i' C% g* e
clk1<= 1;
$ w) G4 L; }! I& T
end if;
- S( |/ b# b7 Y/ ]$ @& e( L
end if;
, n% p, }6 a0 ?' B- B
end if;
6 ?: U- O% D* Y5 Q, B
end process;
4 r5 g& J, r8 ]5 F+ }. t: \
9 s G% M5 J: t7 U5 C
不過兩種方法都有我第4點的問題
: V5 S- L) O: q5 W% _) x
如果你是用quartus2可以分析一下
$ |& E( ?) [+ \3 D/ d' I
你的clk40可以跑多快
作者:
gto10620
時間:
2008-5-18 11:02 PM
40MHZ
. y9 u. w/ Z2 Q+ @; Z
我想我只能實際去試試看燒在上面能不能跑~
' C$ ?* ~6 ^& Q N# w/ _5 s
因為我還是沒辦法用電腦模擬出來~
H" d; z7 C# `/ Q& }* d
感謝你~ 結果在跟你回報!!
作者:
tommywgt
時間:
2008-5-19 12:03 AM
gto10620 別忘了給addn "感謝哦"
% H ] S) A. r" c6 H$ o
; M$ ~4 }% U+ U
按評分就可以了
作者:
gto10620
時間:
2008-5-19 05:04 PM
收到^^ 抱歉~
. V; S. c$ k1 Q% V: W
下次清楚囉!!
作者:
tommywgt
時間:
2008-5-19 06:10 PM
現在補也來的及的, 不用等下次了
作者:
gto10620
時間:
2008-5-20 01:53 AM
我有補囉!! 我說下次一定會記得給!! 誤會我的意思囉!版主~
' Y! P ^% v9 ?% d4 W
& j& y/ G, L/ k+ s( y
我希望我能在這領域學會!!
歡迎光臨 Chip123 科技應用創新平台 (http://free.vireal.world/chip123_website/innoingbbs/)
Powered by Discuz! X3.2