專利名稱:一種生成低失真度的低頻正弦信號(hào)的裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及的是儀器儀表領(lǐng)域,尤其是一種生成低失真度的低頻正弦信號(hào)的裝置及方法。
背景技術(shù):
隨著科學(xué)技術(shù)的飛速發(fā)展,在現(xiàn)代通信、科研以及電子產(chǎn)業(yè)中,低頻正弦信號(hào)被廣泛使用,同時(shí)信號(hào)發(fā)生器的精確性和穩(wěn)定性決定了整個(gè)系統(tǒng)性能的工作狀態(tài)。傳統(tǒng)的模擬信號(hào)發(fā)生器已經(jīng)不能滿足客觀要求,隨著數(shù)字集成電路的迅速發(fā)展,數(shù)字信號(hào)發(fā)生器得到了極大的發(fā)展。生成低頻正弦信號(hào)通常采用數(shù)字信號(hào)源,其輸出幅度、頻率和相位的時(shí)間穩(wěn)定性好,容易調(diào)試和控制。常用的DDS (直接數(shù)字合成)方法與傳統(tǒng)的頻率合成器相比,DDS信號(hào)發(fā)生器具有低成本、高分辨率和快速轉(zhuǎn)換時(shí)間等優(yōu)點(diǎn),但在生成低頻信號(hào)時(shí)存在頻率抖動(dòng)大、失真度大的問題。
發(fā)明內(nèi)容
本發(fā)明針對(duì)現(xiàn)有技術(shù)的不足,提出了一種生成低失真度的低頻正弦信號(hào)的裝置及方法。一種生成低失真度的低頻正弦信號(hào)的裝置包括晶振、現(xiàn)場(chǎng)可編程門陣列FPGA、R0M存儲(chǔ)表和D/A轉(zhuǎn)換器;晶振為FPGA提供時(shí)鐘,F(xiàn)PGA接收晶振提供的時(shí)鐘信號(hào)和接收鎖存外部輸入的頻率字,經(jīng)過累加運(yùn)算輸出控制信號(hào)和地址信息給ROM存儲(chǔ)表,ROM存儲(chǔ)表存放波形數(shù)據(jù)幅值表和波形數(shù)據(jù)相位表,為FPGA提供幅值數(shù)據(jù)和相位數(shù)據(jù),F(xiàn)PGA讀取ROM存儲(chǔ)表內(nèi)的數(shù)據(jù)后經(jīng)過比較運(yùn)算輸出D/A轉(zhuǎn)換器的控制信號(hào)和待轉(zhuǎn)換數(shù)據(jù),D/A轉(zhuǎn)換器進(jìn)行數(shù)模轉(zhuǎn)換輸出低頻正弦信號(hào);
其中FPGA內(nèi)部的邏輯模塊包括鎖相環(huán)PLL、相位累加器FW_ACC、ROM存儲(chǔ)表接口模塊和數(shù)模轉(zhuǎn)換器接口模塊;鎖相環(huán)PLL利用外部輸入的時(shí)鐘信號(hào)產(chǎn)生為相位累加器FW_ACC提供的頻率字累加時(shí)鐘信號(hào),相位累加器FW_ACC接收鎖存頻率字完成相位累加,并發(fā)送地址給ROM表存儲(chǔ)器接口模塊,ROM表存儲(chǔ)器接口模塊按一定的時(shí)序從FPGA外部ROM表存儲(chǔ)器中讀取幅值數(shù)據(jù)和相位數(shù)據(jù)并發(fā)送給相位累加器FW_ACC,相位累加器FW_ACC經(jīng)過比較運(yùn)算控制數(shù)模轉(zhuǎn)換器接口模塊按一定的時(shí)序輸出D/A轉(zhuǎn)換器的控制信號(hào)和待轉(zhuǎn)換數(shù)據(jù)。一種生成低失真度的低頻正弦信號(hào)的方法包括以下步驟
步驟一獲得基于幅度量化值整數(shù)點(diǎn)采樣的波形數(shù)據(jù),并存儲(chǔ)于ROM存儲(chǔ)表中。每個(gè)采樣點(diǎn)的波形數(shù)據(jù)包括相位數(shù)據(jù)和幅值數(shù)據(jù),采樣點(diǎn)的相位數(shù)據(jù)以變換后的一個(gè)周期波形的幅度量化值整數(shù)點(diǎn)為采樣點(diǎn)進(jìn)行采樣得到的相位值數(shù)據(jù),幅值數(shù)據(jù)就是該采樣點(diǎn)的整數(shù)點(diǎn)幅度值。其中基于幅度量化值整數(shù)點(diǎn)采樣的具體步驟如下
步驟I :變換一個(gè)周期的余弦波形,將原始的一個(gè)周期的余弦波形向上平移,使相位為180°的點(diǎn)落在坐標(biāo)軸橫軸上,再以橫軸為對(duì)稱軸翻轉(zhuǎn)相位為180°至360°段的波形至橫軸的下方;步驟2 :根據(jù)幅度量化等級(jí)和相位量化等級(jí)擴(kuò)展橫軸值和縱軸值,即映射放大幅度值和相位值;
步驟3 :向下平移波形,使相位0°點(diǎn)移至坐標(biāo)軸原點(diǎn);
步驟4 :將縱軸方向取反向下,波形和橫軸不變;
步驟5 :利用反余弦函數(shù)對(duì)幅度量化值的整數(shù)點(diǎn)進(jìn)行采樣,縱軸值就是采樣點(diǎn)編號(hào),采樣得到采樣點(diǎn)的幅度量化值和相位量化值;
步驟6 :將相位量化值和幅度量化值按采樣點(diǎn)順序存入ROM存儲(chǔ)表中。步驟二 FPGA將晶振輸入的頻率為/x的時(shí)鐘信號(hào)經(jīng)鎖相環(huán)產(chǎn)生頻率為/elk的時(shí)鐘信號(hào),同時(shí)也將此時(shí)鐘信號(hào)作為頻率字累加時(shí)鐘信號(hào)FW_CLK ;
步驟三FPGA將外部輸入的頻率字存入FPGA內(nèi)建的REG_FW步長寄存器中;
步驟四在FPGA中內(nèi)建相位累加寄存器REG_ACC,設(shè)定相位累加器寄存器REG_ACC的初始值為REG_PHASE相位寄存器所保存的數(shù)值;
步驟五在FPGA中的相位累加器寄存器REG_ACC在FW_CLK信號(hào)的上升沿時(shí),以REG_FW步長寄存器中的數(shù)值為步長自增,將相位累加器寄存器REG_ACC對(duì)累加器模值即累加的上限值FW_ACC_MAX取模,并將所得的數(shù)值存入相位累加器寄存器REG_ACC ;
步驟六在FPGA中將相位累加器寄存器REG_ACC中的數(shù)值與下一個(gè)待D/A轉(zhuǎn)換的采樣點(diǎn)的相位量化值進(jìn)行比較,若大于該相位值則發(fā)送D/A接口模塊的控制信號(hào)控制轉(zhuǎn)換該點(diǎn)的幅值并完成采樣點(diǎn)編號(hào)自加1,將采樣點(diǎn)編號(hào)對(duì)采樣點(diǎn)編號(hào)的最大值INDEX_MAX取模,然后以采樣點(diǎn)編號(hào)為地址讀取ROM存儲(chǔ)表中的幅值數(shù)據(jù)表和相位數(shù)據(jù)表的數(shù)據(jù)作為下一個(gè)待D/A轉(zhuǎn)換的采樣點(diǎn)的幅度量化值和相位量化值,若小于該相位值則不進(jìn)行D/A轉(zhuǎn)換和采樣點(diǎn)編號(hào)自加;
步驟七FPGA的D/A接口模塊輸出滿足一定時(shí)序要求的D/A轉(zhuǎn)換數(shù)據(jù)和轉(zhuǎn)換使能信號(hào),在D/A轉(zhuǎn)換器的輸出端經(jīng)過適當(dāng)?shù)腞C濾波就得到了所需要的正弦波信號(hào)。本發(fā)明的有益效果是減小了生成波形的頻率抖動(dòng),減小了失真度,并減小了波形存儲(chǔ)器的容量。
圖I是本發(fā)明的采樣波形變換 圖2是本發(fā)明的硬件電路框 圖3是本發(fā)明的FPGA邏輯模塊框圖。
具體實(shí)施例方式如圖2所示,一種生成低失真度的低頻正弦信號(hào)的裝置包括晶振、現(xiàn)場(chǎng)可編程門陣列FPGA、ROM存儲(chǔ)表和數(shù)模轉(zhuǎn)換DAC ;晶振為FPGA提供時(shí)鐘,F(xiàn)PGA接收晶振提供的時(shí)鐘信號(hào)和接收鎖存外部輸入的頻率字,經(jīng)過累加運(yùn)算輸出控制信號(hào)和地址信息給ROM存儲(chǔ)表,ROM存儲(chǔ)表存放波形數(shù)據(jù)幅值表和波形數(shù)據(jù)相位表,為FPGA提供幅值數(shù)據(jù)和相位數(shù)據(jù),F(xiàn)PGA讀取ROM存儲(chǔ)表內(nèi)的數(shù)據(jù)后經(jīng)過比較運(yùn)算輸出D/A轉(zhuǎn)換器的控制信號(hào)和待轉(zhuǎn)換數(shù)據(jù),數(shù)模轉(zhuǎn)換DAC進(jìn)行數(shù)模轉(zhuǎn)換輸出低頻正弦信號(hào);
如圖3所示,其中的FPGA內(nèi)部的邏輯模塊包括鎖相環(huán)PLL、相位累加器FW_ACC、R0M存儲(chǔ)表接口模塊和數(shù)模轉(zhuǎn)換器接口模塊;鎖相環(huán)PLL利用外部輸入的時(shí)鐘信號(hào)產(chǎn)生為相位累加器FW_ACC提供的頻率字累加時(shí)鐘信號(hào),相位累加器FW_ACC接收鎖存頻率字完成相位累力口,并發(fā)送地址給ROM表存儲(chǔ)器接口模塊,ROM表存儲(chǔ)器接口模塊按一定的時(shí)序從FPGA外部ROM表存儲(chǔ)器中讀取幅值數(shù)據(jù)和相位數(shù)據(jù)并發(fā)送給相位累加器FW_ACC,相位累加器FW_ACC經(jīng)過比較運(yùn)算控制數(shù)模轉(zhuǎn)換器接口模塊按一定的時(shí)序輸出數(shù)模轉(zhuǎn)換DAC的控制信號(hào)和待轉(zhuǎn)換數(shù)據(jù)。如圖I、圖3所示一種生成低失真度的低頻正弦信號(hào)的方法包括以下步驟
步驟一獲得基于幅度量化值整數(shù)點(diǎn)采樣的3600點(diǎn)波形數(shù)據(jù),并存儲(chǔ)于ROM存儲(chǔ)表中。
每個(gè)采樣點(diǎn)的波形數(shù)據(jù)包括33位的相位數(shù)據(jù)和8位的幅值數(shù)據(jù),采樣點(diǎn)的相位數(shù)據(jù)以變換后的一個(gè)周期波形的幅度量化值整數(shù)點(diǎn)為采樣點(diǎn)進(jìn)行采樣得到的相位值數(shù)據(jù),幅值數(shù)據(jù)就是該采樣點(diǎn)的整數(shù)點(diǎn)幅度值。采樣波形變換圖說明基于幅度量化值整數(shù)點(diǎn)采樣的具體步驟如下
步驟I :變換一個(gè)周期的余弦波形,將原始的一個(gè)周期的余弦波形向上平移,使相位為180°的點(diǎn)落在坐標(biāo)軸橫軸上,再以橫軸為對(duì)稱軸翻轉(zhuǎn)相位為180°至360°段的波形至橫軸的下方;
步驟2 :根據(jù)幅度量化等級(jí)255和相位量化等級(jí)5000,000, 000擴(kuò)展橫軸值和縱軸值,即映射放大幅度值和相位值,如圖I中的縱軸和橫軸刻度所示;
步驟3 :向下平移波形,使相位0°點(diǎn)移至坐標(biāo)軸原點(diǎn),如圖I中的原點(diǎn)位置;
步驟4 :將縱軸方向取反向下,波形和橫軸不變,如圖I中的縱軸方向和橫軸方向;步驟5 :利用反余弦函數(shù)對(duì)幅度量化值的整數(shù)點(diǎn)進(jìn)行采樣,縱軸值就是采樣點(diǎn)編號(hào),采樣得到采樣點(diǎn)的幅度量化值和相位量化值;
步驟6 :將相位量化值和幅度量化值按采樣點(diǎn)順序存入ROM存儲(chǔ)表中。步驟二 FPGA將晶振輸入的頻率為/x的時(shí)鐘信號(hào)經(jīng)鎖相環(huán)產(chǎn)生頻率為/elk的時(shí)鐘信號(hào),/clk=50MHZ,同時(shí)也將此時(shí)鐘信號(hào)作為頻率字累加時(shí)鐘信號(hào)FW_CLK ;
步驟三FPGA將外部輸入的頻率字存入FPGA內(nèi)建的REG_FW步長寄存器中;
步驟四在FPGA中內(nèi)建相位累加寄存器REG_ACC,設(shè)定相位累加器寄存器REG_ACC的初始值為REG_PHASE相位寄存器所保存的數(shù)值;
步驟五在FPGA中的相位累加器寄存器REG_ACC在FW_CLK信號(hào)的上升沿時(shí),以REG_FW步長寄存器中的數(shù)值為步長自增,將相位累加器寄存器REG_ACC對(duì)累加器模值即累加的上限值FW_ACC_MAX取模,其中FW_ACC_MAX=5000,000,000,并將所得的數(shù)值存入相位累加器寄存器REG_ACC ;
步驟六在FPGA中將相位累加器寄存器REG_ACC中的數(shù)值與下一個(gè)待D/A轉(zhuǎn)換的采樣點(diǎn)的相位量化值進(jìn)行比較,若大于該相位值則發(fā)送D/A接口模塊的控制信號(hào)控制轉(zhuǎn)換該點(diǎn)的幅值并完成采樣點(diǎn)編號(hào)自加1,將采樣點(diǎn)編號(hào)對(duì)采樣點(diǎn)編號(hào)的最大值INDEX_MAX取模,其中INDEX_MAX=510,然后以采樣點(diǎn)編號(hào)為地址讀取ROM存儲(chǔ)表中的幅值數(shù)據(jù)表和相位數(shù)據(jù)表的數(shù)據(jù)作為下一個(gè)待D/A轉(zhuǎn)換的采樣點(diǎn)的幅度量化值和相位量化值,若小于該相位值則不進(jìn)行D/A轉(zhuǎn)換和采樣點(diǎn)編號(hào)自加;
步驟七FPGA的D/A接口模塊輸出滿足一定時(shí)序要求的D/A轉(zhuǎn)換數(shù)據(jù)和轉(zhuǎn)換使能信號(hào),在D/A轉(zhuǎn)換器的輸出端經(jīng)過適當(dāng)?shù)腞C濾波就得到了所需要的正弦波信號(hào)。
權(quán)利要求
1.一種生成低失真度的低頻正弦信號(hào)的裝置,其特征在于該裝置包括晶振、現(xiàn)場(chǎng)可編程門陣列FPGA、ROM存儲(chǔ)表和D/A轉(zhuǎn)換器;晶振為FPGA提供時(shí)鐘,F(xiàn)PGA接收晶振提供的時(shí)鐘信號(hào)和接收鎖存外部輸入的頻率字,經(jīng)過累加運(yùn)算輸出控制信號(hào)和地址信息給ROM存儲(chǔ)表,ROM存儲(chǔ)表存放波形數(shù)據(jù)幅值表和波形數(shù)據(jù)相位表,為FPGA提供幅值數(shù)據(jù)和相位數(shù)據(jù),F(xiàn)PGA讀取ROM存儲(chǔ)表內(nèi)的數(shù)據(jù)后經(jīng)過比較運(yùn)算輸出D/A轉(zhuǎn)換器的控制信號(hào)和待轉(zhuǎn)換數(shù)據(jù),D/A轉(zhuǎn)換器進(jìn)行數(shù)模轉(zhuǎn)換輸出低頻正弦信號(hào)。
2.根據(jù)權(quán)利要求I所述的一種生成低失真度的低頻正弦信號(hào)的裝置,其特征在于所述的FPGA內(nèi)部的邏輯模塊包括鎖相環(huán)PLL、相位累加器FW_ACC、ROM存儲(chǔ)表接口模塊和數(shù)模轉(zhuǎn)換器接口模塊;鎖相環(huán)PLL利用外部輸入的時(shí)鐘信號(hào)產(chǎn)生為相位累加器FW_ACC提供的頻率字累加時(shí)鐘信號(hào),相位累加器FW_ACC接收鎖存頻率字完成相位累加,并發(fā)送地址給ROM表存儲(chǔ)器接口模塊,ROM表存儲(chǔ)器接口模塊按一定的時(shí)序從FPGA外部ROM表存儲(chǔ)器中讀取幅值數(shù)據(jù)和相位數(shù)據(jù)并發(fā)送給相位累加器FW_ACC,相位累加器FW_ACC經(jīng)過比較運(yùn)算控制數(shù)模轉(zhuǎn)換器接口模塊按一定的時(shí)序輸出D/A轉(zhuǎn)換器的控制信號(hào)和待轉(zhuǎn)換數(shù)據(jù)。
3.—種生成低失真度的低頻正弦信號(hào)的方法,其特征在于該方法包括以下步驟 步驟一獲得基于幅度量化值整數(shù)點(diǎn)采樣的波形數(shù)據(jù),并存儲(chǔ)于ROM存儲(chǔ)表中。每個(gè)采樣點(diǎn)的波形數(shù)據(jù)包括相位數(shù)據(jù)和幅值數(shù)據(jù),采樣點(diǎn)的相位數(shù)據(jù)以變換后的一個(gè)周期波形的幅度量化值整數(shù)點(diǎn)為采樣點(diǎn)進(jìn)行采樣得到的相位值數(shù)據(jù),幅值數(shù)據(jù)就是該采樣點(diǎn)的整數(shù)點(diǎn)幅度值。其中基于幅度量化值整數(shù)點(diǎn)采樣的具體步驟如下 步驟I :變換一個(gè)周期的余弦波形,將原始的一個(gè)周期的余弦波形向上平移,使相位為180°的點(diǎn)落在坐標(biāo)軸橫軸上,再以橫軸為對(duì)稱軸翻轉(zhuǎn)相位為180°至360°段的波形至橫軸的下方; 步驟2 :根據(jù)幅度量化等級(jí)和相位量化等級(jí)擴(kuò)展橫軸值和縱軸值,即映射放大幅度值和相位值; 步驟3 :向下平移波形,使相位0°點(diǎn)移至坐標(biāo)軸原點(diǎn); 步驟4 :將縱軸方向取反向下,波形和橫軸不變; 步驟5 :利用反余弦函數(shù)對(duì)幅度量化值的整數(shù)點(diǎn)進(jìn)行采樣,縱軸值就是采樣點(diǎn)編號(hào),采樣得到采樣點(diǎn)的幅度量化值和相位量化值; 步驟6 :將相位量化值和幅度量化值按采樣點(diǎn)順序存入ROM存儲(chǔ)表中。
步驟二 FPGA將晶振輸入的頻率為fx的時(shí)鐘信號(hào)經(jīng)鎖相環(huán)產(chǎn)生頻率為felk的時(shí)鐘信號(hào),同時(shí)也將此時(shí)鐘信號(hào)作為頻率字累加時(shí)鐘信號(hào)FW_CLK ; 步驟三FPGA將外部輸入的頻率字存入FPGA內(nèi)建的REG_FW步長寄存器中; 步驟四在FPGA中內(nèi)建相位累加寄存器REG_ACC,設(shè)定相位累加器寄存器REG_ACC的初始值為REG_PHASE相位寄存器所保存的數(shù)值; 步驟五在FPGA中的相位累加器寄存器REG_ACC在FW_CLK信號(hào)的上升沿時(shí),以REG_FW步長寄存器中的數(shù)值為步長自增,將相位累加器寄存器REG_ACC對(duì)累加器模值即累加的上限值FW_ACC_MAX取模,并將所得的數(shù)值存入相位累加器寄存器REG_ACC ; 步驟六在FPGA中將相位累加器寄存器REG_ACC中的數(shù)值與下一個(gè)待D/A轉(zhuǎn)換的采樣點(diǎn)的相位量化值進(jìn)行比較,若大于該相位值則發(fā)送D/A接口模塊的控制信號(hào)控制轉(zhuǎn)換該點(diǎn)的幅值并完成采樣點(diǎn)編號(hào)自加1,將采樣點(diǎn)編號(hào)對(duì)采樣點(diǎn)編號(hào)的最大值INDEX_MAX取模,然后以采樣點(diǎn)編號(hào)為地址讀取ROM存儲(chǔ)表中的幅值數(shù)據(jù)表和相位數(shù)據(jù)表的數(shù)據(jù)作為下一個(gè)待D/A轉(zhuǎn)換的采樣點(diǎn)的幅度量化值和相位量化值,若小于該相位值則不進(jìn)行D/A轉(zhuǎn)換和采樣點(diǎn)編號(hào)自加; 步驟七FPGA的D/A接口模塊輸出滿足一定時(shí)序要 求的D/A轉(zhuǎn)換數(shù)據(jù)和轉(zhuǎn)換使能信號(hào),在D/A轉(zhuǎn)換器的輸出端經(jīng)過適當(dāng)?shù)腞C濾波就得到了所需要的正弦波信號(hào)。
全文摘要
本發(fā)明公布了一種生成低失真度的低頻正弦信號(hào)的裝置及方法,現(xiàn)有技術(shù)存在生成低頻信號(hào)時(shí)頻率抖動(dòng)大、失真度大的問題,本發(fā)明的硬件包括晶振,F(xiàn)PGA,ROM存儲(chǔ)表,D/A轉(zhuǎn)換器。具體方法是以幅度量化值的整數(shù)點(diǎn)為采樣點(diǎn)進(jìn)行采樣得到采樣點(diǎn)相位值數(shù)據(jù)并保存該點(diǎn)的幅度量化值;由硬件平臺(tái)生成低頻正弦信號(hào),時(shí)鐘輸入經(jīng)鎖相環(huán)產(chǎn)生FPGA處理核心中頻率字累加器的時(shí)鐘信號(hào),頻率字累加器進(jìn)行頻率字累加運(yùn)算,并比較當(dāng)前頻率字累加值與下一個(gè)待D/A轉(zhuǎn)換的采樣點(diǎn)的相位量化值,以此控制D/A轉(zhuǎn)換和讀取ROM中的數(shù)據(jù),在D/A轉(zhuǎn)換器的輸出端得到所需的低頻正弦信號(hào),本發(fā)明減小了生成波形的頻率抖動(dòng),減小了失真度和波形存儲(chǔ)器的容量。
文檔編號(hào)H03L7/085GK102882517SQ20121008979
公開日2013年1月16日 申請(qǐng)日期2012年3月30日 優(yōu)先權(quán)日2012年3月30日
發(fā)明者黃繼業(yè), 高明煜, 鄒宏, 何志偉, 王文皓 申請(qǐng)人:杭州電子科技大學(xué)