摘 要:提出一種可實現(xiàn)占空比為50%的7倍時鐘分頻電路的高可靠性設(shè)計方案,并分別給出由分立元件組構(gòu)和由Verilog HDL語言描述的2種實現(xiàn)方法。與已有方案相比,該設(shè)計不僅可以節(jié)省器件資源,而且完全避免了冒險現(xiàn)象對于分頻時鐘波形造成的影響。在Quartus環(huán)境下,分別對門級設(shè)計和基于Verilog HDL語言的行為級描述進行仿真驗證,結(jié)果顯示該方案合理可行。
關(guān)鍵詞:奇數(shù)次分頻器;格雷碼計數(shù)器;時鐘波形;FPGA
中圖分類號:TN772 文獻標(biāo)識碼:B
文章編號: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è)計中常采用對主頻時鐘分頻的方法產(chǎn)生所需的時鐘。筆者目前從事的課題研究中就需要一個占空比為50%的七倍時鐘分頻電路。
一些文章介紹過一種實現(xiàn)占空比為50%的奇數(shù)次分頻電路的方法[1,2],該方法的要點是采用2個分別在被分頻時鐘上升沿和下降沿觸發(fā)的計數(shù)器,然后將這2個計數(shù)器產(chǎn)生的信號相或后輸出。若按該方法實現(xiàn)七倍的時鐘分頻器,其具體化后的電路如圖1所示。
這樣的設(shè)計若用在高速電路中會存在一些問題。比如當(dāng)計數(shù)值從001到010跳變時有可能出現(xiàn)值為000或011的瞬間毛刺,從而對下級電路形成不應(yīng)有的誤觸發(fā),此現(xiàn)象在專業(yè)術(shù)語中被稱之為“冒險”。只要跳變時有2位以上的信號要變化就會存在冒險,故此方案實現(xiàn)的分頻電路不具備較高的可靠性,只能應(yīng)用在一些對于時鐘波形質(zhì)量要求不甚嚴(yán)格的場合。為了解決上述問題,提出一種高質(zhì)量的七倍分頻電路方案。
2 本文方案的七倍分頻電路邏輯原理
圖2所示為本文提出的七倍分頻方案。在該方案的整個電路中只有用來對RS觸發(fā)器置位的那個負與門是對毛刺敏感的。為了消除可能的冒險,本設(shè)計中的七進制計數(shù)器采用格雷碼,從狀態(tài)0到狀態(tài)6的7個狀態(tài)分別對應(yīng)的格雷碼及跳變順序是:000→001→011→010→110→111→101。
根據(jù)碼值循環(huán)規(guī)律,利用卡諾圖合并最小項,可得到表示3位格雷碼狀態(tài)遷移的邏輯表達式如下:
Q0=!Q2!Q1||Q2Q1
Q1=Q1!Q0||!Q2Q0
Q2=Q1!Q0||Q2Q1Q0
依據(jù)上式,通過采用3個D觸發(fā)器和一些基本邏輯門即可實現(xiàn)格雷碼計數(shù)。
在格雷碼計數(shù)器值從000~101的7個狀態(tài)跳變過程中,每次跳變都只有1位信號發(fā)生變化,其跳變過程中不可能出現(xiàn)任何的毛刺輸出。
當(dāng)格雷碼計數(shù)器從滿度值101~000的回零跳變過程中,有可能出現(xiàn)100或001的瞬間值,但這2個毛刺均不會對RS觸發(fā)器產(chǎn)生誤置位觸發(fā)。
因此,本設(shè)計完全避免了由冒險引起的分頻時鐘波形不規(guī)則,具有高可靠性。
RS觸發(fā)器在狀態(tài)0的開始時刻被置位,在狀態(tài)3的中央時刻被清零,從而生成50%占空比的七分頻時鐘輸出。狀態(tài)0和狀態(tài)3所對應(yīng)的格雷碼分別是000和010。
本設(shè)計在Quartus 7.1軟件中采用原理圖輸入方式進行了門級設(shè)計,并進行了綜合及仿真。
仿真結(jié)果顯示分頻后的時鐘滿足設(shè)計要求、且波形規(guī)則,從而驗證了本設(shè)計邏輯正確。仿真結(jié)果如圖3所示。
3 本文方案的Verilog HDL語言描述
圖2電路著眼于采用分立元件的實現(xiàn)并為此做了邏輯上的手工簡化。在CPLD/FPGA芯片設(shè)計中,這種簡化通常是交由EDA軟件在編譯綜合時自動完成的,采用硬件描述語言時設(shè)計者更側(cè)重的應(yīng)是邏輯結(jié)構(gòu)或功能行為方面的表達。對本文方案進行描述的Verilog HDL語言代碼如下:
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個模塊:rsff是RS觸發(fā)器;dff_n是一個最小化的反Q輸出D觸發(fā)器(不帶清零和置位端)。實現(xiàn)這2個模塊的代碼比較簡單,此處從略。
圖4為采用Altera公司的Quartus 7.1軟件進行綜合及仿真后的功能仿真結(jié)果。從結(jié)果可看出:分頻后的時鐘滿足要求、波形規(guī)則。經(jīng)綜合后,本文方案占用10個邏輯單元,而引言所述方案需占用16個邏輯單元。
4 結(jié) 語
提出的方案可以實現(xiàn)占空比為50%的七倍時鐘分頻電路。由于完全消除了冒險出現(xiàn)的可能,因此能夠保障良好的輸出波形質(zhì)量,從而使得應(yīng)用電路具有較高的可靠性。而且,與已有方法相比本方案所需的邏輯器件較少,具有節(jié)省器件資源的優(yōu)點。
本文分別給出由分立元件組構(gòu)和由Verilog HDL語言描述的2種實現(xiàn)方法。在基于FPGA的數(shù)字電路設(shè)計中,雖然可采用EDA軟件提供的宏功能模塊(鎖相環(huán))實現(xiàn)分頻功能,但這類鎖相環(huán)數(shù)量有限,因此一些場合仍會需要應(yīng)用到本文提出的分頻方法。
提出的原理思想,可以很容易地推廣到占空比為50%的任意奇數(shù)次時鐘分頻器的設(shè)計中。
參考文獻
[1]杜剛,孫超,陳安軍.基于FPGA 技術(shù)的16位數(shù)字分頻器的設(shè)計[J].儀器儀表學(xué)報,2006(S1):887-888.
[2]陳英梅,席亮亮.基于FPGA的多種分頻設(shè)計與實現(xiàn)[J].電子元器件應(yīng)用,http://www.61ic.com/MCU/FPGA/sq/
200707/14862.html.
[3]夏宇聞.Verilog 數(shù)字系統(tǒng)設(shè)計教程[M].北京:北京航空航天大學(xué)出版社,1996.
[4]王誠,吳繼華.Altera FPGA/CPLD設(shè)計[M].北京:人民郵電出版社,2005.
[5] 張春生,常青.特殊分頻電路設(shè)計\\[J\\].現(xiàn)代電子技術(shù),2006,29(6):112-113,116.[ZK)]
作者簡介
張繼剛 男,1978年出生,在讀碩士研究生,專業(yè)為計算機應(yīng)用技術(shù)工作。
李維忠 男,1955年出生,副教授。主要從事網(wǎng)絡(luò)方面的研究。