分頻�是數(shù)字系�(tǒng)設計中最常見的電路之一 ,在數(shù)字系�(tǒng)設計� , �(jīng)常需要對時鐘進行小數(shù)倍分� �
分頻器是一種應用十分廣泛的電路 ,其功能是對較高頻率的信號分頻, 以得到所需要的低頻信號 。實際應用中,所需要的分頻系數(shù)可能為整�(shù)或小�(shù) 。整�(shù)分頻的實�(xiàn)比較簡單, 可采�計數(shù)�芯片或用可編程邏輯器�設計�
�(xiàn)代電子系�(tǒng)設計� ,�(shù)字電子系�(tǒng)所占的比例越來越大 ,�(xiàn)代電子系�(tǒng)�(fā)展的趨勢是數(shù)字化和集成化 。而在�(shù)字系�(tǒng)� ,時鐘是各模塊�(xié)同工作的根本保障 ,特別是時序數(shù)字系�(tǒng) ,沒有時鐘根本無從工作 。在�(shù)字系�(tǒng)設計� ,�(jīng)常需要對基準時鐘進行不同倍數(shù)的分頻而得到各模塊所需的時鐘頻� ,分頻器是�(shù)字系�(tǒng)設計中最常見的基本電路之一 。數(shù)字分頻器一般有兩類 : 一類是脈沖波形均勻分布的分頻器 , 即常�(guī)分頻� ; 另一類是脈沖波形不均勻分布的分頻� 。常�(guī)分頻器一般只能進行整數(shù)倍分� ,且分頻倍數(shù)須為偶數(shù) 。但在某些場� ,時鐘源與所需的頻率不成偶�(shù)倍數(shù)關系 ,此時就需要波形不均勻的分頻器 , 這種分頻器除可進行整數(shù)倍分頻外 ,還能進行小數(shù)倍分� ,從而可以得到相對連續(xù)的頻率輸� ,可應用于很多�(shù)字系�(tǒng)� ,如直接數(shù)�頻率合成中輸出波形的頻率控制以及步�電機中轉(zhuǎn)速的控制��
小數(shù)分頻器的實現(xiàn)方法很多,但其基本原理一�,即在若干個分頻周期中采取某種方法使某幾個周期多計或少計1個數(shù),即吞脈沖或插入脈沖的方法,從而在平均意義上獲�1個小�(shù)分頻�,設要進行分頻比為N的小�(shù)分頻,N可表示為N=K+10-nX式中,n,K,X均為正整�(shù);n為到X的位�(shù),即N有n位小�(shù)�
另一方面,分頻比又可以寫成:N=M/P式中:M為分頻器輸入脈沖�(shù);P為輸出脈沖數(shù)。M=NP=(K+10-nX)P令P=10n,則有M=10nK+X以上是小�(shù)分頻器的一種實�(xiàn)方法,即在進行10nK次分頻時,設法多輸入X個脈��
整個電路由整數(shù)/半整�(shù)分頻器、計�(shù)(10分頻)器和譯碼�、D觸發(fā)�、輸出選擇器等組成。分頻器完成對輸入信號的整數(shù)或半整數(shù)分頻功能,計數(shù)和譯碼部分完成輸入脈沖的計數(shù)和控制信號產(chǎn)生功�,觸發(fā)器產(chǎn)生控制所需要的信號。n=5,即實�(xiàn)小數(shù)點后5位分�。原理圖和程序的對應關系�:5個預置數(shù)(E、F、G)從左到右依次記為pdata0、pdata1、pdata2、pdata3、pdata4,輸出�(shù)�(jù)選擇器的選擇端記為equal05,分頻系數(shù)的整�(shù)部分記為datain�
該電路是在單片機或CPLD的其它模塊配合下工作�,當需要實�(xiàn)某個系�(shù)的分頻時,單片機等控制電路向該模塊設置參數(shù),包括分頻系數(shù)的整�(shù)部分、預置數(shù)、hight05、和equal05。當分頻系數(shù)N=0.5�,equal05=1,整數(shù)分頻系數(shù)為N。當分頻系數(shù)N�0.5�,如果小數(shù)部分小于0.5,如分頻系�(shù)為N=0.23456,則控制方法為equal05=0、high05=0、datain=N、pdata0、pdata1、pdata2、pdata3、pdata4分別�2�3�4�5�6;小數(shù)部分大于0.5�,則用1減去小數(shù)部分后的差值作為預置數(shù),如分頻系�(shù)為N=0.76567,則控制方法為equal05=0、high05=1、datain=N、pdata0、pdata1、pdata2、pdata3、pdata4分別�2�3�4�3�3,即pdata0、pdata1、pdata2、pdata3、pdata4=1-0.76567=0.23433�
計數(shù)�(10分頻)和譯碼器就是確定輸入多少個脈�,在整�(shù)/半整�(shù)分頻器的輸出中增加或去除半個脈�。該電路小數(shù)的位�(shù)可以根據(jù)需要任意設�,主要取決于CPLD的硬件資源情��
22源程序包括頂層模塊和底層模塊,頂層模塊主要是通過元件語句將各模塊進行連接, 而各底層模塊則完成相應的功能。底層模塊主要有整數(shù)/半整�(shù)分頻� 、計�(shù)和譯碼器、D 觸發(fā)器等。下面僅介紹頂層模塊和分� 、譯碼模塊的源程� ,程序中的庫調(diào)�、元件聲明和信號定義等由于篇幅均已刪�? �
(1) 頂層模塊
頂層模塊包括底層模塊之間的連接和輸出信號的選擇 2 部分 ,模塊連接用元件語�,輸出的選擇直接用進程描述 。由于某些模塊的連接是類同的, 為節(jié)省篇幅而又不失其總體框�, 已將類同部分刪除? �
ENTITY nbit pset pdivfre2 IS
GENERIC( leng : INTEGER: =7);
PORT( inclk ,EN ,reset : IN STD LOGIC ;
high05 ,equal05 : IN STD LOGIC ;
pdata0 , pdata1 , pdata2 , pdata3 , pdata4 : IN STD
LOGIC VECTOR( 2 DOWNTO 0
data in : IN STD LOGIC VECTOR( leng -1 DOWNTO0);
outclk , test1 , test2 : OUT STD LOGIC�);
END nbit pset pdivfre2 ;
ARCHITECTURE nppdf2 OF nbit pset pdivfre2 ISBEGIN
outclk <= outclk tmp ;
modecontmp<= high05 XOR ( requst0 OR requst1 OR requst2 OR requst3 OR requst4);
ff0d <= requst0 ;ff1 d <=( NOT requst0) AND requst1 ;
ff2d <=( NOT requst0) AND ( NOT requst1) ANDrequst2 ;
ff3d <=( NOT requst0) AND ( NOT requst1) AND( NOT requst2) AND requst3 ;
ff4d <=( NOT requst0) AND ( NOT requst1) AND( NOT requst2) AND ( NOT requst3) AND requst4 ;
U0 : nbit psetp divfre —整�(shù)/半整�(shù)分頻PORTMAP( inclk =>inclk , EN =>EN , reset =>reset , mode con =>mode con tmp , data in =>data in ,outclk21 = >clk21 tmp , outclkn = >clkn tmp ,clkb =>clkb tmp);
PROCESS ( equal05 , data in , pdata0 , pdata1 , pdata2 , pdata3 , pdata4)—輸出信號的選擇BEGINIF ( equal05 =' 0' ) THEN outclk tmp <=clkn tmp ;
ELSIF ( equal05 = ' 1' ) THEN outclk tmp<=clk21 tmp ;
ELSIF( data in =1 AND pdata0 =0 AND pdata1 =0 AND pdata2 =0 AND pdata3 =0 AND pdata4 =0) THENoutclk tmp <= inclk ;
END IF ;
END PROCESS ;
U1 : difre dec —計�(shù)譯碼部分的元件連接PORTMAP( EN =>EN , reset =>reset , difre in
=>clkb tmp , clr requst =>clr requst0 , pset data =>pdata0 , requst =>requst0 , cnt co =>cnt0 co);
……U5 : difre decPORTMAP( EN =>cnt3 co , reset =>reset , difrein =>clkb tmp , clr requst =>clr requst4 , pset data=>pdata4 , requst =>requst4 , cnt co =>cnt4 co);
U6 : D ff PORT MAP( D =>ff0 d , reset =>GND ,CLK =>clkb tmp , outq =>ff0 q); —觸�(fā)器部分的連接……U15 : D ff PORT MAP( D =>ff4 q , reset =>GND ,CLK =>inclk , outq =>clr requst4);
END nppdf2? ;
( 2) 計數(shù)譯碼模塊
該模塊對輸入脈沖計數(shù), 以決定何時在輸出中插入或去除 1 個脈�(吞脈�), 所以該模塊由計�(shù)( 分頻)、譯碼和控制信號�(chǎn)生等 3 部分構成 ,其中譯碼部分的源程序用流程圖表示? :
BEGIN
PROCESS( difre in , reset , EN)�10 分頻的描述VARIABLE state : INTEGER RANGE 0 TO 1 ;
BEGINIF reset =' 1' THEN count q <=( OTHERS =>' 0' );
ELSIF ( difre in' EVENT AND difre in =' 1' ) THENIF EN =' 1' THENIF( count q =9) THENcount q <=�0000� ;
cnt co <=' 1' ;
ELSE count q <=count q +' 1' ;
cnt co <=' 0' ;
END IF ;
ELSE cnt co <=' 0' ;
count q <=count q ;
END IF ;
END IF ;
END PROCESS ;
—譯碼進程( 見右側流程圖)PROCESS ( dec out ,clr requst)
—控制信�( requst) 的產(chǎn)�
BEGIN
IF( clr requst =' 1' ) THEN requst <=' 0' ;
ELSIF( dec out' EVENT AND dec out =' 1' ) THENrequst <=' 1' ;
END IF ;
END PROCESS ;
END dd? ;
( 3) N 位整�(shù)/半整�(shù)分頻模塊該模塊根�(jù)單片機或 CPLD 等設置的參數(shù)不同,可以選擇整數(shù)分頻輸出或半整數(shù)分頻輸出 ,取決于分頻系�(shù)? �
BEGIN
clk <=inclk XOR divide2 ;
coutclk <=outclk tmp ;
PROCESS ( clk , EN)BEGIN
IF ( CLK' EVENT AND CLK =' 1' ) THEN
IF ( EN =' 1' ) THEN
IF ( cnt q =0) THEN
FOR i IN 0 TO leng -1 LOOP
cnt q( i)<=data in( i);
END LOOP ;
outclk tmp <=' 1' ;
ELSE
cnt q <=cnt q -1 ;
outclk tmp <=' 0' ;
END IF ;
END IF ;
END IF ;
END PROCESS ;
PROCESS ( outclk tmp)
BEGIN
IF ( outclk tmp' EVENT AND outclk tmp =' 1' ) THEN divide2 <=NOT divide2 ;
END IF ;
END PROCESS ;
END nppdf ;
小數(shù)分頻器的實現(xiàn)方法很多,但其基本原理一�:在若干個分頻周期中采取某種方法使某幾個周期少計一個或幾個數(shù),即吞脈沖原理,從而在整個計�(shù)周期的總體平均意義上獲得一個小�(shù)分頻比。以下簡要說明三種比較常用的小數(shù)分頻電路的原理及設計方法:
用BCD比例乘法�4527加法級聯(lián)能對基頻進行10n/X倍分�,其中,n�4527的級�(lián)級數(shù),X為對4527的置�(shù);積分分頻器是比較常見的小�(shù)分頻�,其基本原理是將小�(shù)分頻比轉(zhuǎn)換為整數(shù)比�,再采用計�(shù)器對輸入時鐘進行計數(shù),根據(jù)計數(shù)值吞掉一些脈�,從而得到所需的頻率輸�;累加器分頻則是一種基于相位累加器基本原理的一種分頻技�,將累加器位作為分頻輸�,根據(jù)送入累加器中不同的累加步長改變分頻倍數(shù)�
1、采用BCD乘法�4527實現(xiàn)
BCD比例乘法�4527接成加法級聯(lián)方式,CLK端輸入基準時鐘頻率fin由晶振電路提�,高位置數(shù)K1,低位置數(shù)K2,�10個CLK脈沖�(nèi)4527(1)輸出K1個脈�,同時由INHOUT禁止低位4527(2)對CLK進行比例分配,K1個脈沖直�4527(2)送出�10個CLK脈沖結束�,INHOUT�(fā)出脈沖允�4527(2)的CLK進入,則可有一個脈沖插入。如此下�,�100個CLK脈沖�(nèi),會有10×K1個脈沖直通送出,以及10個INHOUT脈沖,這樣輸出端fout便有K2個脈沖插�,共送出(10K1+K2)個脈�,即輸出時鐘頻�:fout=(10K1+K2)fin/100(1)
如同上述,n�4527級聯(lián),預置�(shù)分別為K1,K2,…�,Kn�,設CLK時鐘端輸入的基準時鐘頻率為fin,則級�(lián)輸出頻率:fout=fin(10n-1×K1+10n-2×K2+�+10×Kn-1+Kn)/10n其中為n�4527的預置數(shù),改變預置�(shù)即可方便地改變輸出頻��
2、積分分頻器
積分分頻器的設計首先需將小�(shù)分頻比轉(zhuǎn)換為整數(shù)比�,再采用計�(shù)器對輸入時鐘進行計數(shù),根據(jù)計數(shù)值對輸入時鐘及插入脈沖進行選擇分配,從而得到需要的頻率輸出脈沖。設�1010101010”代�5kHz信號中的一段信�,在同樣長的時間內(nèi)設法得到另一脈沖串�1010100000”信�,若其�0�、�1’寬度與5kHz信號中的�0�、�1’寬度相�,即為輸入時鐘的寬�,則可得到3kHz的時鐘信號。這樣,多路選擇器可在前三個周期選擇輸入時鐘直接輸�,而在后兩個周期選擇輸出�0�,就可以得到脈沖串�1010100000�,從而完�3/5倍的分頻,得到3kHz的信��
3、累加器分頻
在DDS技術中�(jīng)常采用相位累加器來進行頻率控制,對于頻率不變的輸入基準時�,可采用對相位累加器置不同的累加步長來得到不同的尋址速率。從中得到啟�,也可采用累加器進行小數(shù)分頻。累加器由加法器與并行數(shù)�(jù)寄存器組�,頻率控制字經(jīng)�(shù)�(jù)�(zhuǎn)換模塊轉(zhuǎn)換為累加器的累加步長,將并行數(shù)�(jù)寄存器的高位作為時鐘輸出�
設輸入時鐘為頻率fin,相位累加器的位數(shù)為N,則輸出頻率的分辨�(當送入的頻率控制字K�1時的輸出頻率)為foutmin=fin2N(3)從式(3)可看�,在累加器位數(shù)足夠高時,最小輸出頻�(頻率分辨�)可接近零�。實際設計過程中,可根�(jù)分頻倍數(shù)的要求來選擇累加器的位數(shù)�
若設頻率控制字為K,則輸出頻率為fout=Kfin2N(4)以上三種小數(shù)分頻器各有其特點,采用4527的分頻電路比較復�,適用于頻率為10的冪的輸�;積分分頻器首先需把分頻倍數(shù)�(zhuǎn)換為兩整�(shù)之比�,故在使用�,對分頻倍數(shù)要求比較嚴格,靈活性受到一定限�;累加器分頻則對頻率為2的冪的輸入時鐘分頻效果比較好,而且輸出時鐘有一定的抖動,但還是可以應用于一些特殊場合�
小數(shù)分頻器在�(shù)字系�(tǒng)設計中的應用非常廣泛,�(jīng)常是各個模塊需要的頻率不相�,這就需要對時鐘進行分頻得到各模塊需要的時鐘頻率。但常規(guī)的整�(shù)分頻�(實際就是計數(shù)�)不能滿足要求,例如,若基準時鐘頻率為100MHz,對其進行整數(shù)分頻,只能得到50MHz�25MHz等頻率�,如想得到30MHz�20MHz等頻率�,就需要應用小�(shù)分頻器對基準時鐘進行小數(shù)分頻�
在DDS波形�(fā)生器設計和步進電機驅(qū)動中,需要對輸出信號頻率進行控制,若采用一般計�(shù)器來進行分頻,由上述分析可�,輸出信號頻率值的連續(xù)性就受到限制。為了使輸出信號頻率值能連續(xù)可控,就需進行小數(shù)分頻�
1在DDS技術中的應�
頻率控制字送入分頻�,設基頻頻率為fin,分頻倍數(shù)為W,則計�(shù)器的時鐘頻率為為fin/W。計�(shù)器在頻率fin/W的時鐘作用下計數(shù)對查找表尋址輸出波形�(shù)�(jù)。若查找表存儲深度為M(一個周波存儲M個點),則輸出波形的頻率為fo=finWM(5)式中,fin為基頻頻�、存儲深度M為一定�,這樣就只需控制分頻倍數(shù)K來控制合成波形的頻率�
在DDS技術中,常用的技術是采用累加器對查找表尋址。但采用這種方法�,在輸出高頻與低頻波形時的尋址點數(shù)不同,在高頻尋址點數(shù)較少,而在低頻時點�(shù)較多,為保證在頻率較高時輸出的波形失真度小,在低頻階�,尋址的點�(shù)就比較多,需要較深的存儲深度。而采用圖4所示的方法,則不管在低頻或高�,尋址點數(shù)一�,這樣就可以采用一致的存儲深度,節(jié)約存儲器。特別是采用CPLD進行系統(tǒng)設計�,查找表也可采用CPLD來設�,易于系統(tǒng)集成�
2在步進電機驅(qū)動中的應�
步進電機是一種用電脈沖信號進行控制,將電脈沖信號�(zhuǎn)換為相應的角位移或線位移的控制電�。在步進電機的�(qū)動中,需要對步進電機轉(zhuǎn)速進行控制?;鶞蕰r鐘在頻率控制字作用下分頻得到所需頻率的脈沖作為脈沖分配器的時�,這樣即可控制脈沖分配器輸出驅(qū)動脈沖的速率,�(jīng)功率放大后驅(qū)動步進電機�
此外,步進電動機的起動頻�(突跳頻率)一般為幾百Hz到三、四千Hz,而運行頻率則可以達到幾萬Hz。以超過起動頻率的頻率直接起�,將出�(xiàn)“失步�(失去同步)�(xiàn)�,有時根本就轉(zhuǎn)不起�。而如果先以低于起動頻率的某一頻率起動,再逐步提高頻率,使電機逐步加�,則可以到達運行頻�。而且,對于正在快速旋�(zhuǎn)的步進電動機,若需停轉(zhuǎn),立即停發(fā)脈沖,令其立即準確鎖定,也是很難實現(xiàn)�;由于慣�,電動機往往會沖過頭,也會出現(xiàn)失步。如果電動機的工作頻率總是低于起動頻�,當然不會失步,但電動機的潛力沒有發(fā)�,工作速度太低��
維庫電子通,電子知識,一查百��
已收錄詞�153979�