Chip123 科技應用創新平台
標題:
精準式除頻設計??
[打印本頁]
作者:
gto10620
時間:
2008-5-17 01:32 PM
標題:
精準式除頻設計??
entity clk1 is
T. q' _+ x3 S6 Q
Port ( clk40 : in STD_LOGIC;
1 i# F& |- N$ p4 @5 a" q) `$ m
clk1 : out std_logic );
! q/ B E! R) @5 F, W' _
end clk1;
V$ q0 r( B) l+ ?
: P) i8 {; n2 G7 B/ h
architecture Behavioral of clk1 is
0 @4 f2 g2 D" J( Y/ h# Q. X
signal cnt :std_logic;
+ o( _- j: Z- o0 }7 O" E
begin
; g3 o$ ]0 m, _/ V+ ^& I5 c2 b
! J! x( r+ X' v k! G9 o" s
process(clk40)
$ Z$ t& q9 O) q- f0 ~( {
variable cnt:integer range 0 to 39999999;
& ^( F y8 L0 Z3 L9 }0 K
begin
; f4 I' q" B8 \/ W- L
if clk40'event and clk40='1' then
, Y5 e6 [! D o; w
if cnt<20000000 then
# w- t M) m+ v/ ^1 x7 E
cnt:=0;
: J+ ^& T7 m6 D' i% I: {
else
: ^/ w8 ]+ I/ [+ U0 X2 F
cnt:=cnt+1;
. J) G0 n- x) k( h
end if;
+ T; l1 f1 N/ R' `" |2 x5 x) K/ u
end if;
; S& R- x% W1 }6 a. T6 T4 r6 U
clk1<= cnt;
2 b4 k! m& p: \1 ]" d$ E Q+ L, @
end process;
+ m6 w$ o! G0 U5 c
end Behavioral;
4 f, K5 N; \$ y; Q
為什麼CLK與CNT不相容?
$ b+ b8 o6 P/ X3 _, h" t
還是我的設計是完全錯誤的?
3 q; y8 `5 R0 R' N4 k. i
0~~~~~~~~~~~~~~~~~~~~~~~~~~~20MHZ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~40MHZ
8 H; m1 S8 I0 f! \- p
________________________________↑--------------------
5 \" f3 d+ l% \5 d y9 f1 g
此段'0' 此段'1'
' Q- f9 o- {3 H5 f
正緣觸發~
作者:
addn
時間:
2008-5-17 11:00 PM
您好
1 T, N$ S! t. T ?" z. r9 E+ k4 O
1.
3 T: }: K+ B# Q' n5 d
請問你是要將40M HZ除頻到1 HZ嗎?
1 b- z0 m q n; D+ e4 R8 F
2.
* H7 K2 Y9 ]/ h7 {( g. k9 |
CLK1是定義是1 BIT的輸出,跟cnt的定義integer不同
# Q n( Y: o2 G$ \
當然不能CLK1<= cnt,
+ X& }2 |9 s& i1 h
3.
) N1 b5 r* w$ n: ~* k- o
你的CODE有錯,請多想想
% c, [& r! ]- K2 R( ~! `
4.
9 q3 z5 D2 q: Z3 z' t9 ~, L
當你解決上述問題後還要思考
" R/ `8 F' ?0 |" f$ h* }. q+ c- u
COUNTER要能數到 39999999
" G# ]& @# H- m
這樣的計數器合成出來,須幾BIT你知道嗎(0~1023需10 BIT)
5 Z( l x' k4 k g$ X" J8 c
那麼這麼大的計術器有辦法跑到40M HZ嘛,況且你還要配上
t& M2 M1 M* B' e! ^3 P
一個大的組合邏輯比較器(因為有用到if cnt<20000000 then)
作者:
gto10620
時間:
2008-5-18 05:13 PM
恩~是的~我是要把它除到1HZ因為實驗器材的內部震盪晶體為40MHZ
! S! o( ?5 ~* k0 I1 H
除完1HZ接上計數器這樣~下面是我後來又改的><" 難道精準式除頻有很多種方法做??
0 G- F; B. I2 G( F+ H
entity clk_95 is
. y Z4 N( o5 e: i
Port ( clk40 : in STD_LOGIC;
7 p. G4 `) b- y0 K! i
enable : in STD_LOGIC;
. j. m- r7 H5 T: w- c" z
switch : in STD_LOGIC;
$ B9 D! }6 A5 |5 @5 j
a,b,c,d,e,f,g,p : out STD_LOGIC;
@3 @$ W' K$ j( u
SEL : OUT STD_LOGIC_VECTOR (5 DOWNTO 0));
& P4 e0 n! D e8 x% }: O
end clk_95;
" A7 J# u4 i; p4 F
3 D q8 |9 M: M3 {
architecture Behavioral of clk_95 is
4 M% f+ Y3 W/ l, G
signal clk1 : STD_LOGIC ;
8 J j2 b/ X3 I( z
signal cnt : STD_LOGIC ;
3 S1 J; b, H" t# S5 t5 x3 \
signal x1 : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
6 _! P2 ^$ H( u
signal x2 : STD_LOGIC_VECTOR ( 3 DOWNTO 0);
+ @1 Z- q& X b: Y8 b) D1 i
signal count1 : STD_LOGIC_VECTOR (3 DOWNTO 0);
" y, {8 i1 o& \% e0 h7 Q+ `
signal count2 : STD_LOGIC_VECTOR (3 DOWNTO 0);
6 |* D- S! w, r1 |8 c/ h0 Z+ W3 L$ s
signal y : STD_LOGIC_VECTOR (7 DOWNTO 0);
% p3 p/ z' ` N0 y. }
begin
3 H9 I2 o, B: b
4 f7 g% Y5 k- \; j2 A! l
process(clk40)
5 r3 z3 u5 o9 a9 C7 a
variable cnt:integer range 0 to 39999999;
+ k* i% ~: S$ g' R
begin
7 v# a' k) x0 q( ]$ G. D* C
if clk40'event and clk40='1' then
& s. ^2 Z: `' b: Y2 W
if cnt<20000000 then
/ \0 G+ G9 h' |! p# w7 k
cnt:= 0 ;
9 F% I/ n5 h |9 D% A
else
4 O2 L, D. m: m: u6 s! y
cnt:= 1 ;
8 m, y: d# k* l( w) f" }
end if;
5 r0 @7 J, R! a* c3 J2 W2 [
end if;
4 q9 z7 E* H( a4 Y
end process;
; Y* A9 y; f4 w3 x: z
clk1<=cnt;
& S, V8 O! ?3 Y8 [* {$ T
4 b! m7 t: v1 i$ ~5 b( T. Y
process(clk1)
( V. E" C5 [6 `
begin
# g0 s" S. e# |! Q6 J7 X
if clk1'event and clk1='1' then
' v7 ?. o# F) R
if switch='0' then
2 L& O6 k) s/ D$ q, [) b2 B9 ~
count1<=count1 + 1 ;
8 ~" G: m/ Z; B4 M3 ^
if count1="0110" then
9 Q# L- H3 P# n2 N2 z
count1<="0000" ;
. g0 |9 E) M0 p4 Q! a
end if;
4 A7 o: S1 Q% S
else
% B; q4 Y3 H* G: p4 B
count2<=count2 + 1;
M* [6 h4 ?4 r; F
if count2="1000" then
: |5 p1 U' R, m% A
count2<="0000" ;
$ F) ~# p7 ?0 V- v& x
end if;
# m. L5 h' f6 R q1 G% L+ d
end if;
3 }1 Q+ ?( O1 U1 h; n
end if;
, t" a1 ?0 d. I
end process;
5 X: p7 r W) h! H. ~
後面是我自己要接出去的東西~所以我沒PO!!
作者:
addn
時間:
2008-5-18 05:58 PM
您好
/ n" L# b1 n: y& |; L/ T1 @& g
這樣還是有問題
9 d6 r. F8 x7 p1 b5 L) _) T" `
可以試試
/ {& |3 B) m# U$ N
process(clk40)
2 Q5 }7 }! c1 Q. x, n
variable cnt:integer range 0 to 39999999;
K$ H: w6 D3 K9 r
begin
. ~ L A# z7 v, e5 ~
if clk40'event and clk40='1' then
8 N: I+ S& ~ ]( n, c
if cnt=39999999 then
2 v+ F. a- `. W; e; z
cnt:=0;
8 Y7 c( B1 K! L7 q
else
' {9 k7 ~/ {8 V8 L( I
cnt:=cnt+1;
) A2 ^( J4 }4 a# D# p! P
if cnt<20000000 then
, ~3 Y& c: [7 v# r( _
clk1<= 0 ;
2 q" H( o ^) ?1 h0 E5 b
else
' }0 k7 j/ Y1 y. u3 b
clk1<= 1 ;
4 \) T" r0 ^1 t, l0 x2 y
end if;
5 ]# S! J/ r& @
end if;
+ o0 x1 `) U n$ W7 E- S
end if;
& b' G# m' n% o L
end process;
& `/ Z/ v+ V ^6 i T
0 @' G8 ~6 c! {3 N1 G ^* M( m9 Y" Z
或者
# H4 U, Z' U6 c% l* o
process(clk40)
+ c* \" q" V" ^( I) ^6 _. I
variable cnt:integer range 0 to 39999999;
- C; p8 c( x6 ?
begin
, @* p) U5 ]* P, s
if clk40'event and clk40='1' then
& A4 e$ k4 A8 t$ _( A/ S
) w/ M( {: R6 S- r: M" L: K. L
if cnt=39999999 then
: @/ ~# F' b+ j# V k
cnt:=0;
5 x5 g0 r+ E: {$ _8 M+ {( [
clk1<= 0 ;
9 C4 f4 e. E9 k
else
& l5 b/ Z4 O- Q' R
cnt:=cnt+1;
, {4 V5 O: A- k( b1 V) X
if cnt=20000000 then
3 A6 [' f; \3 x
clk1<= 1;
4 E7 L% w R' J+ t- k
end if;
! e" `* y8 E2 V
end if;
+ {; L6 n9 i. H: A" c5 g! @
end if;
0 m' M% s+ }; V H5 @
end process;
; i5 D& i) {4 X! T4 Q& I# n
. _4 s# c2 T0 H
不過兩種方法都有我第4點的問題
: q5 h5 F' Q1 ?% q+ X' n/ l9 }
如果你是用quartus2可以分析一下
0 A7 w7 j; V2 u' |, y/ |6 o$ u/ k1 `
你的clk40可以跑多快
作者:
gto10620
時間:
2008-5-18 11:02 PM
40MHZ
' |6 t1 ~, t0 i7 l1 B2 Z8 L8 N
我想我只能實際去試試看燒在上面能不能跑~
7 k, y. Q/ t1 s9 ]( I
因為我還是沒辦法用電腦模擬出來~
5 r# _% R7 E4 W3 i+ n& ` F; s
感謝你~ 結果在跟你回報!!
作者:
tommywgt
時間:
2008-5-19 12:03 AM
gto10620 別忘了給addn "感謝哦"
) Z% B! s- R. X; c4 N
7 C1 y. W7 g5 I: Y% m1 }( ]
按評分就可以了
作者:
gto10620
時間:
2008-5-19 05:04 PM
收到^^ 抱歉~
2 k, p/ r: E) B
下次清楚囉!!
作者:
tommywgt
時間:
2008-5-19 06:10 PM
現在補也來的及的, 不用等下次了
作者:
gto10620
時間:
2008-5-20 01:53 AM
我有補囉!! 我說下次一定會記得給!! 誤會我的意思囉!版主~
+ g6 t. u# O8 a7 }: S$ r8 I4 F i
, o* a0 k; i5 K( F: P) r1 M/ ~7 {
我希望我能在這領域學會!!
歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/)
Powered by Discuz! X3.2