摘 要:提出一種可實(shí)現(xiàn)占空比為50%的7倍時(shí)鐘分頻電路的高可靠性設(shè)計(jì)方案,并分別給出由分立元件組構(gòu)和由Verilog HDL語(yǔ)言描述的2種實(shí)現(xiàn)方法。與已有方案相比,該設(shè)計(jì)不僅可以節(jié)省器件資源,而且完全避免了冒險(xiǎn)現(xiàn)象對(duì)于分頻時(shí)鐘波形造成的影響。在Quartus環(huán)境下,分別對(duì)門級(jí)設(shè)計(jì)和基于Verilog HDL語(yǔ)言的行為級(jí)描述進(jìn)行仿真驗(yàn)證,結(jié)果顯示該方案合理可行。
關(guān)鍵詞:奇數(shù)次分頻器;格雷碼計(jì)數(shù)器;時(shí)鐘波形;FPGA
中圖分類號(hào):TN772 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2008)06-012-02
Design and Implementation of High Quality 1∶7 Frequency Divider
ZHANG Jigang,LI Weizhong
(Inner Mongolia University of Technology,Huhhot,010051,China)
Abstract:Design method of high-reliability 1∶7 clock frequency divider with half duty cycle is brought forward,and then implementation method based on separate component or described by Verilog HDL is presented.Comparing with former design method,not only can the method economize on hardware resource,but it can be absolutely avoided that waveform of divided frequency clock is interfered by hazard in this method.After function of gate level design as well as behavior level design based on Verilog HDL is simulated in Quartus software,the method is proved logical and feasible as a result.
Keywords:odd number frequency divider;Gary code counter;clock waveform;FPGA
1 引 言
數(shù)字電路設(shè)計(jì)中常采用對(duì)主頻時(shí)鐘分頻的方法產(chǎn)生所需的時(shí)鐘。筆者目前從事的課題研究中就需要一個(gè)占空比為50%的七倍時(shí)鐘分頻電路。
一些文章介紹過(guò)一種實(shí)現(xiàn)占空比為50%的奇數(shù)次分頻電路的方法[1,2],該方法的要點(diǎn)是采用2個(gè)分別在被分頻時(shí)鐘上升沿和下降沿觸發(fā)的計(jì)數(shù)器,然后將這2個(gè)計(jì)數(shù)器產(chǎn)生的信號(hào)相或后輸出。若按該方法實(shí)現(xiàn)七倍的時(shí)鐘分頻器,其具體化后的電路如圖1所示。
這樣的設(shè)計(jì)若用在高速電路中會(huì)存在一些問(wèn)題。比如當(dāng)計(jì)數(shù)值從001到010跳變時(shí)有可能出現(xiàn)值為000或011的瞬間毛刺,從而對(duì)下級(jí)電路形成不應(yīng)有的誤觸發(fā),此現(xiàn)象在專業(yè)術(shù)語(yǔ)中被稱之為“冒險(xiǎn)”。只要跳變時(shí)有2位以上的信號(hào)要變化就會(huì)存在冒險(xiǎn),故此方案實(shí)現(xiàn)的分頻電路不具備較高的可靠性,只能應(yīng)用在一些對(duì)于時(shí)鐘波形質(zhì)量要求不甚嚴(yán)格的場(chǎng)合。為了解決上述問(wèn)題,提出一種高質(zhì)量的七倍分頻電路方案。

2 本文方案的七倍分頻電路邏輯原理
圖2所示為本文提出的七倍分頻方案。在該方案的整個(gè)電路中只有用來(lái)對(duì)RS觸發(fā)器置位的那個(gè)負(fù)與門是對(duì)毛刺敏感的。為了消除可能的冒險(xiǎn),本設(shè)計(jì)中的七進(jìn)制計(jì)數(shù)器采用格雷碼,從狀態(tài)0到狀態(tài)6的7個(gè)狀態(tài)分別對(duì)應(yīng)的格雷碼及跳變順序是:000→001→011→010→110→111→101。
根據(jù)碼值循環(huán)規(guī)律,利用卡諾圖合并最小項(xiàng),可得到表示3位格雷碼狀態(tài)遷移的邏輯表達(dá)式如下:
Q0=!Q2!Q1||Q2Q1
Q1=Q1!Q0||!Q2Q0
Q2=Q1!Q0||Q2Q1Q0
依據(jù)上式,通過(guò)采用3個(gè)D觸發(fā)器和一些基本邏輯門即可實(shí)現(xiàn)格雷碼計(jì)數(shù)。

在格雷碼計(jì)數(shù)器值從000~101的7個(gè)狀態(tài)跳變過(guò)程中,每次跳變都只有1位信號(hào)發(fā)生變化,其跳變過(guò)程中不可能出現(xiàn)任何的毛刺輸出。
當(dāng)格雷碼計(jì)數(shù)器從滿度值101~000的回零跳變過(guò)程中,有可能出現(xiàn)100或001的瞬間值,但這2個(gè)毛刺均不會(huì)對(duì)RS觸發(fā)器產(chǎn)生誤置位觸發(fā)。
因此,本設(shè)計(jì)完全避免了由冒險(xiǎn)引起的分頻時(shí)鐘波形不規(guī)則,具有高可靠性。
RS觸發(fā)器在狀態(tài)0的開始時(shí)刻被置位,在狀態(tài)3的中央時(shí)刻被清零,從而生成50%占空比的七分頻時(shí)鐘輸出。狀態(tài)0和狀態(tài)3所對(duì)應(yīng)的格雷碼分別是000和010。
本設(shè)計(jì)在Quartus 7.1軟件中采用原理圖輸入方式進(jìn)行了門級(jí)設(shè)計(jì),并進(jìn)行了綜合及仿真。

仿真結(jié)果顯示分頻后的時(shí)鐘滿足設(shè)計(jì)要求、且波形規(guī)則,從而驗(yàn)證了本設(shè)計(jì)邏輯正確。仿真結(jié)果如圖3所示。
3 本文方案的Verilog HDL語(yǔ)言描述
圖2電路著眼于采用分立元件的實(shí)現(xiàn)并為此做了邏輯上的手工簡(jiǎn)化。在CPLD/FPGA芯片設(shè)計(jì)中,這種簡(jiǎn)化通常是交由EDA軟件在編譯綜合時(shí)自動(dòng)完成的,采用硬件描述語(yǔ)言時(shí)設(shè)計(jì)者更側(cè)重的應(yīng)是邏輯結(jié)構(gòu)或功能行為方面的表達(dá)。對(duì)本文方案進(jìn)行描述的Verilog HDL語(yǔ)言代碼如下:
module f_div7(clkin,clkout);
inputclkin;
outputclkout;
reg[2:0] cnt;
wire t3,n_r,n_s;
wire n_clkin = ~clkin;
assign n_s =(cnt== 3′b000 ? 1′b0 : 1′b1);
assign t3 = (cnt== 3′b010 ? 1′b1 : 1′b0);
rsff(.n_r(n_r),.n_s(n_s),.q(clkout));
dff_n(.clk(n_clkin),.d(t3),.qn(n_r));
always @ (posedge clkin)
begin
case (cnt)
3′b000: cnt <= 3′b001;
3′b001: cnt <= 3′b011;
3′b011: cnt <= 3′b010;
3′b010: cnt <= 3′b110;
3′b110: cnt <= 3′b111;
3′b111: cnt <= 3′b101;
default:cnt <= 3′b000;
endcase
end
endmodule
代碼中用到2個(gè)模塊:rsff是RS觸發(fā)器;dff_n是一個(gè)最小化的反Q輸出D觸發(fā)器(不帶清零和置位端)。實(shí)現(xiàn)這2個(gè)模塊的代碼比較簡(jiǎn)單,此處從略。
圖4為采用Altera公司的Quartus 7.1軟件進(jìn)行綜合及仿真后的功能仿真結(jié)果。從結(jié)果可看出:分頻后的時(shí)鐘滿足要求、波形規(guī)則。經(jīng)綜合后,本文方案占用10個(gè)邏輯單元,而引言所述方案需占用16個(gè)邏輯單元。

4 結(jié) 語(yǔ)
提出的方案可以實(shí)現(xiàn)占空比為50%的七倍時(shí)鐘分頻電路。由于完全消除了冒險(xiǎn)出現(xiàn)的可能,因此能夠保障良好的輸出波形質(zhì)量,從而使得應(yīng)用電路具有較高的可靠性。而且,與已有方法相比本方案所需的邏輯器件較少,具有節(jié)省器件資源的優(yōu)點(diǎn)。
本文分別給出由分立元件組構(gòu)和由Verilog HDL語(yǔ)言描述的2種實(shí)現(xiàn)方法。在基于FPGA的數(shù)字電路設(shè)計(jì)中,雖然可采用EDA軟件提供的宏功能模塊(鎖相環(huán))實(shí)現(xiàn)分頻功能,但這類鎖相環(huán)數(shù)量有限,因此一些場(chǎng)合仍會(huì)需要應(yīng)用到本文提出的分頻方法。
提出的原理思想,可以很容易地推廣到占空比為50%的任意奇數(shù)次時(shí)鐘分頻器的設(shè)計(jì)中。
參考文獻(xiàn)
[1]杜剛,孫超,陳安軍.基于FPGA 技術(shù)的16位數(shù)字分頻器的設(shè)計(jì)[J].儀器儀表學(xué)報(bào),2006(S1):887-888.
[2]陳英梅,席亮亮.基于FPGA的多種分頻設(shè)計(jì)與實(shí)現(xiàn)[J].電子元器件應(yīng)用,http://www.61ic.com/MCU/FPGA/sq/
200707/14862.html.
[3]夏宇聞.Verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,1996.
[4]王誠(chéng),吳繼華.Altera FPGA/CPLD設(shè)計(jì)[M].北京:人民郵電出版社,2005.
[5] 張春生,常青.特殊分頻電路設(shè)計(jì)\\[J\\].現(xiàn)代電子技術(shù),2006,29(6):112-113,116.[ZK)]
作者簡(jiǎn)介
張繼剛 男,1978年出生,在讀碩士研究生,專業(yè)為計(jì)算機(jī)應(yīng)用技術(shù)工作。
李維忠 男,1955年出生,副教授。主要從事網(wǎng)絡(luò)方面的研究。