基于高速串行BCD碼除法的數(shù)字頻率計(jì)的設(shè)計(jì)
數(shù)字頻率計(jì)是計(jì)算機(jī)、通訊設(shè)備、音頻視頻等科研生產(chǎn)領(lǐng)域不可缺少的測(cè)量?jī)x器。采用VDHL編程設(shè)計(jì)實(shí)現(xiàn)的數(shù)字頻率計(jì),除被測(cè)信號(hào)的整形部分、鍵輸入部分和數(shù)碼顯示部分以外,其余全部在一片FPGA芯片上實(shí)現(xiàn),整個(gè)系統(tǒng)非常精簡(jiǎn),而且具有靈活的現(xiàn)場(chǎng)可更改性。在不更改硬件電路的基礎(chǔ)上,對(duì)系統(tǒng)進(jìn)行各種改進(jìn)還可以進(jìn)一步提高系統(tǒng)的性能。該數(shù)字頻率計(jì)具有高速、精確、可靠、抗干擾性強(qiáng)和現(xiàn)場(chǎng)可編程等優(yōu)點(diǎn)。
在設(shè)計(jì)中,所有頻段均采用直接測(cè)頻法對(duì)信號(hào)頻率進(jìn)行測(cè)量,克服了逼近式換擋速度慢的缺點(diǎn);采用了門控信號(hào)和被測(cè)信號(hào)對(duì)計(jì)數(shù)器的使能端進(jìn)行雙重控制,提高了測(cè)量的精確度;在運(yùn)算單元采用了高速串行BCD碼除法,不僅提高了運(yùn)算速度,而且減小了資源消耗。
1 系統(tǒng)結(jié)構(gòu)及基本設(shè)計(jì)原理
以一個(gè)8位十進(jìn)制、測(cè)量范圍為1Hz~100MHz的數(shù)字頻率計(jì)為例,采用100MHz的標(biāo)準(zhǔn)頻率信號(hào),說明設(shè)計(jì)的基本原理及實(shí)現(xiàn)。設(shè)計(jì)的數(shù)字頻率計(jì)由測(cè)量頻率模塊、計(jì)算模塊和譯碼模塊組成,如圖1所示。測(cè)頻模塊采用兩個(gè)十進(jìn)制計(jì)數(shù)器分別測(cè)出門控時(shí)間內(nèi)的標(biāo)準(zhǔn)信號(hào)和被測(cè)信號(hào)的周期數(shù)Ns和Nx。計(jì)算模塊則根據(jù)公式Fx/Nx=Fs/Ns算出Fx,通過譯碼即可得到被測(cè)信號(hào)頻率的7段數(shù)碼顯示。
數(shù)字頻率計(jì)的設(shè)計(jì)原理實(shí)際上是測(cè)量單位時(shí)間內(nèi)的周期數(shù)。這種方法免去了實(shí)測(cè)以前的預(yù)測(cè),同時(shí)節(jié)省了劃分頻段的時(shí)間,克服了原來高頻段采用測(cè)頻模式而低頻段采用測(cè)周期模式的測(cè)量方法存在換擋速度慢的缺點(diǎn)。
為克服低頻段測(cè)量的不準(zhǔn)確問題,采用門控信號(hào)和被測(cè)信號(hào)對(duì)計(jì)數(shù)器的使能信號(hào)進(jìn)行雙重控制,大大提高了準(zhǔn)確度,如圖2所示。
當(dāng)門控信號(hào)為1時(shí),使能信號(hào)并不為1,只有被測(cè)信號(hào)的上升沿到來時(shí),使能端才開始發(fā)送有效信號(hào),兩個(gè)計(jì)數(shù)器同時(shí)開始計(jì)數(shù)。當(dāng)門控信號(hào)變?yōu)?時(shí),使能信號(hào)并不是立即改變,而是當(dāng)被測(cè)信號(hào)的下一個(gè)上升沿到來時(shí)才變?yōu)?,計(jì)數(shù)器停止計(jì)數(shù)。因此測(cè)量的誤差最多為一個(gè)標(biāo)準(zhǔn)時(shí)鐘周期。當(dāng)采用100MHz的信號(hào)作為標(biāo)準(zhǔn)信號(hào)時(shí),誤差最大為0.01μs。
2 高速串行BCD碼除法運(yùn)算原理
利用FPGA實(shí)現(xiàn)二進(jìn)制除法運(yùn)算,一種方法是采用逼近法,這種方法速度低、準(zhǔn)確性不高。另一種方法是采取被除數(shù)與除數(shù)的倒數(shù)相乘的方法,即將除數(shù)作為寄存器的地址,其倒數(shù)的小數(shù)部分作為寄存器的內(nèi)容,通過一次寄存器尋址來計(jì)算除數(shù)的倒數(shù)。這種方法在一個(gè)時(shí)鐘周期內(nèi)即可完成一個(gè)完整的除法運(yùn)算,雖然速度較高,但對(duì)于多字節(jié)除法運(yùn)算,不僅程序復(fù)雜,而且占用資源較多。根據(jù)頻率計(jì)的實(shí)際情況,本設(shè)計(jì)采用串行除法運(yùn)算,利用多個(gè)時(shí)鐘周期完成一個(gè)完整的除法運(yùn)算,從而兼顧了頻率計(jì)對(duì)速度和資源兩方面的要求。
2.1 多位串行BCD碼減法原理
在數(shù)字串行除法運(yùn)算中,減法運(yùn)算是必不可少的部分。數(shù)字串行BCD碼的減法運(yùn)算是將P位的BCD碼分為P個(gè)寬為4的二進(jìn)制數(shù),然后從低位開始相減,在P個(gè)時(shí)鐘周期內(nèi)完成減法操作。如果輸入的操作數(shù)位數(shù)為8,那么串行BCD碼減法器可以在8個(gè)時(shí)鐘周期內(nèi)完成8位BCD碼減法運(yùn)算。
數(shù)字串行減法的控制也比較簡(jiǎn)單,1位BCD碼減法運(yùn)算完成,進(jìn)行移位操作,并且移位次數(shù)加1,然后通過采用start信號(hào)指示新計(jì)算周期。當(dāng)移位次數(shù)為n時(shí),輸出移位寄存器完成串/并轉(zhuǎn)換,輸出結(jié)果。設(shè)計(jì)者可以根據(jù)實(shí)際情況,通過選擇不同的n,提高設(shè)計(jì)的靈活性。本設(shè)計(jì)選擇n=8。
該設(shè)計(jì)在提高速度的同時(shí),節(jié)省了資源。實(shí)驗(yàn)證明,采用1OOMHz的工作頻率,實(shí)現(xiàn)一個(gè)8位BCD碼串行減法運(yùn)算,耗用的資源卻小于實(shí)現(xiàn)2位BCD碼并行減法運(yùn)算所耗用的資源。
評(píng)論