徐 雷,孫長智
(亳州學(xué)院電子與信息工程系,安徽亳州236800)
在數(shù)字系統(tǒng)設(shè)計(jì)中,時(shí)鐘信號(hào)是最重要的信號(hào)之一,經(jīng)常需要使用分頻器對(duì)某個(gè)給定頻率的時(shí)鐘信號(hào)進(jìn)行分頻操作,得到所需頻率的時(shí)鐘信號(hào)。根據(jù)設(shè)計(jì)需要,會(huì)遇到偶數(shù)分頻、奇數(shù)分頻等。在某些設(shè)計(jì)中,系統(tǒng)不僅對(duì)頻率有要求,而且對(duì)占空比也有嚴(yán)格的要求[1]。對(duì)于偶數(shù)分頻器及非等占空比的奇數(shù)分頻器,實(shí)現(xiàn)較為簡單,但對(duì)等占空比的奇數(shù)分頻器的實(shí)現(xiàn)較為困難[2],這是因?yàn)橛?jì)數(shù)器為奇數(shù),前半個(gè)和后半個(gè)周期所包含的不是整數(shù)個(gè)輸入時(shí)鐘脈沖的周期[3]。本文以等占空比的七分頻器的設(shè)計(jì)為例,使用Verilog HDL(Hardware Description Language)實(shí)現(xiàn)了與邏輯關(guān)系法和或邏輯關(guān)系法七分頻器的設(shè)計(jì),并利用Quartus II進(jìn)行仿真,驗(yàn)證了設(shè)計(jì)的正確性。
Verilog HDL是一種用文本方式描述的數(shù)字電路和數(shù)字系統(tǒng)的語言[4]。Verilog HDL類似于C語言,語法簡潔,結(jié)構(gòu)自由,入門較易,對(duì)底層電路描述能力較強(qiáng),允許設(shè)計(jì)者在不同的抽象層次上對(duì)數(shù)字電路進(jìn)行建模,同時(shí)還能夠?qū)λO(shè)計(jì)的數(shù)字電路進(jìn)行邏輯綜合、仿真以及時(shí)序分析。采用Verilog HDL設(shè)計(jì)的數(shù)字電路具有如下優(yōu)點(diǎn):可以直接嵌入到多種應(yīng)用系統(tǒng)中;可以與其他電路一起設(shè)計(jì)在同一塊FPGA上,提高系統(tǒng)集成度和FPGA的利用率;可以邊設(shè)計(jì)邊調(diào)試,有效提高設(shè)計(jì)效率,縮短設(shè)計(jì)周期[5]。
以設(shè)計(jì)2n+1分頻器為目標(biāo)(n為大于1的正整數(shù)),與邏輯關(guān)系法實(shí)現(xiàn)的等占空比奇數(shù)分頻器的設(shè)計(jì)步驟如下:(1)定義兩個(gè)2n+1進(jìn)制的計(jì)數(shù)器對(duì)系統(tǒng)時(shí)鐘的上升沿和下降沿分別進(jìn)行計(jì)數(shù);(2)定義兩個(gè)一位的寄存器類型的中間變量,其中一個(gè)用于寄存上升沿的狀態(tài),另一個(gè)用于寄存下降沿的狀態(tài);(3)當(dāng)上升沿計(jì)數(shù)器有連續(xù)n+1個(gè)上升沿時(shí),用于寄存上升沿狀態(tài)的寄存器變量為高電平,其余情況該寄存器變量的狀態(tài)為低電平;當(dāng)下降沿計(jì)數(shù)器有連續(xù)n+1個(gè)下降沿時(shí),用于寄存下降沿狀態(tài)的寄存器變量為高電平,其余情況為低電平;(4)把兩個(gè)寄存器變量進(jìn)行與邏輯關(guān)系運(yùn)算,其結(jié)果就是等占空比2n+1分頻器的輸出。
以七分頻等占空比為例,驗(yàn)證與邏輯關(guān)系法的正確性。按照與邏輯關(guān)系法的設(shè)計(jì)步驟,利用兩個(gè)七進(jìn)制計(jì)數(shù)器分別對(duì)數(shù)字電路系統(tǒng)時(shí)鐘clk的上升沿和下降沿分別進(jìn)行計(jì)數(shù),定義兩個(gè)一位的寄存器變量clk_p和clk_n作為中間變量;當(dāng)上升沿計(jì)數(shù)器為1、2、3、4時(shí),clk_p為高電平,其余情況(5、6、0)clk_p為低電平;當(dāng)下降沿計(jì)數(shù)器為1、2、3、4時(shí),clk_n為高電平,其余情況(5、6、0)clk_n為低電平。寄存器變量clk_p和clk_n進(jìn)行與邏輯關(guān)系運(yùn)算得到的結(jié)果即為七分頻器的輸出結(jié)果clk_7,其原理如圖1所示。
利用Quartus II9.0自帶的仿真軟件實(shí)現(xiàn)了上述與邏輯關(guān)系法設(shè)計(jì)的等占空比的七分頻器,仿真結(jié)果如圖2所示。
圖1 與邏輯關(guān)系法實(shí)現(xiàn)等占空比七分頻器原理圖
圖2 與邏輯關(guān)系法實(shí)現(xiàn)等占空比七分頻器的設(shè)計(jì)仿真結(jié)果
以設(shè)計(jì)2n+1分頻器為目標(biāo)(n為大于1的正整數(shù)),或邏輯關(guān)系法設(shè)計(jì)等占空比奇數(shù)分頻器的設(shè)計(jì)步驟如下:(1)定義兩個(gè)2n+1進(jìn)制的計(jì)數(shù)器分別對(duì)系統(tǒng)時(shí)鐘clk的上升沿和下降沿進(jìn)行計(jì)數(shù);(2)定義兩個(gè)一位的寄存器類型的變量,其中一個(gè)用于寄存上升沿的狀態(tài),另一個(gè)用于寄存下降沿的狀態(tài);(3)當(dāng)上升沿計(jì)數(shù)器有連續(xù)n個(gè)上升沿時(shí),用于寄存上升沿狀態(tài)的寄存器變量為高電平,其余情況該寄存器變量的狀態(tài)為低電平;當(dāng)下降沿計(jì)數(shù)器有連續(xù)n個(gè)下降沿時(shí),用于寄存下降沿狀態(tài)的寄存器變量為高電平,其余情況該寄存器變量的狀態(tài)為低電平;(4)把兩個(gè)寄存器變量進(jìn)行或邏輯關(guān)系運(yùn)算,其結(jié)果就是等占空比2n+1分頻器的輸出。
以七分頻等占空比為例,驗(yàn)證或邏輯關(guān)系法的正確性。按照或邏輯關(guān)系法設(shè)計(jì)步驟,利用兩個(gè)七進(jìn)制計(jì)數(shù)器分別對(duì)數(shù)字電路系統(tǒng)時(shí)鐘clk的上升沿和下降沿進(jìn)行計(jì)數(shù),定義兩個(gè)一位的寄存器變量clk_p和clk_n作為中間變量,當(dāng)上升沿計(jì)數(shù)器為1、2、3時(shí),clk_p為高電平,其余情況(4、5、6、0)clk_p為低電平;當(dāng)下降沿計(jì)數(shù)器為1、2、3時(shí),clk_n為高電平,其余情況(4、5、6、0)clk_n為低電平。寄存器變量clk_p和clk_n進(jìn)行或邏輯關(guān)系運(yùn)算的結(jié)果即為七分頻器的輸出結(jié)果clk_7,其原理如圖3所示。
利用Quartus II9.0軟件自帶的仿真工具實(shí)現(xiàn)了或邏輯關(guān)系法設(shè)計(jì)的等占空比的七分頻器,仿真結(jié)果如圖4所示。
圖3 或邏輯關(guān)系法實(shí)現(xiàn)等占空比的七分頻器原理圖
圖4 或邏輯關(guān)系法實(shí)現(xiàn)等占空比的七分頻器的設(shè)計(jì)仿真結(jié)果
本文在介紹了與邏輯關(guān)系法和或邏輯關(guān)系法實(shí)現(xiàn)等占空比奇數(shù)分頻器設(shè)計(jì)方法的基礎(chǔ)上,分別以等占空比七分頻器的設(shè)計(jì)為例,利用Quartus II9.0自帶的仿真工具對(duì)兩種方法設(shè)計(jì)的七分頻器進(jìn)行了功能仿真,仿真結(jié)果證明了兩種設(shè)計(jì)方法都能夠?qū)崿F(xiàn)等占空比七分頻器,從而說明利用這兩種方法可以實(shí)現(xiàn)任意等占空比的奇數(shù)分頻器設(shè)計(jì)。