閔令輝,曹曉東,程 凱,王 哲
(1.聊城大學(xué) 山東省光通信科學(xué)與技術(shù)重點實驗室,山東 聊城 252000;2.中國科學(xué)院大學(xué) 高速電路與神經(jīng)網(wǎng)絡(luò)實驗室, 北京 100049;3.中國科院 半導(dǎo)體研究所, 北京 100083)
頻率合成技術(shù)(DDS,direct digital synthesis)由美國學(xué)者于1971年基于相位轉(zhuǎn)換概念出發(fā)首次提出[1]。近年來隨著數(shù)字技術(shù)的發(fā)展以及器件制作工藝水平的提高,直接數(shù)字頻率合成器(DDS)技術(shù)也越來越成熟,它在很多的性能方面都遠遠超過了以前傳統(tǒng)的頻率集成合成器。比如說它的工作頻率范圍比傳統(tǒng)的要廣,在設(shè)計上頻率的轉(zhuǎn)換速度比傳統(tǒng)的快,頻率的分辨能力也比傳統(tǒng)的強,相位的連續(xù)性比傳統(tǒng)的要好,正交輸出參數(shù)比傳統(tǒng)的精度高等等。光具備以上的性能優(yōu)勢還并不夠,接著Garvey等人為了能更好地挖掘出DDS的優(yōu)點于是對DDS的組成結(jié)構(gòu)以及工作時的頻譜特性進行更加深入的研究。為了能對傳統(tǒng)頻率合成技術(shù)的缺點進行完善和克服所以選擇完全采用數(shù)字技術(shù)來進行頻率合成,同時是因為從相位的概念出發(fā)所以頻率合成技術(shù)具有高頻率分辨率、高穩(wěn)定性、易操控、轉(zhuǎn)換頻率快等優(yōu)點[2-3]。DDS要實現(xiàn)高精度的輸出必然要占據(jù)很大的內(nèi)存空間,數(shù)據(jù)轉(zhuǎn)換時,數(shù)據(jù)量大,處理速度受到限制。
基于以上問題文獻[4]提出了一種在不使用ROM的情況下將貝塞爾曲線進行5次迭代的方式合成正弦信號的設(shè)計,但設(shè)計較為繁瑣,電路結(jié)構(gòu)復(fù)雜。文獻[5]使用CORDIC算法來獲取對應(yīng)的正玄波,其獲取的方式以及角度主要是通過上一次的迭代的角度來確定下一次的迭代方向,精度越高,迭代次數(shù)越多,速度就越慢。文獻[7]使用sunderland算法將相位累加器的輸出分成高位、中間位和低位,讀取兩個存儲正弦波幅度值的查找表后相加作為輸出,壓縮比為1:42.6。
與以上不同的是,本論文提出了一種將改進sunderland算法與QE-ROM算法相結(jié)合的正弦數(shù)據(jù)壓縮方法,在不改變波形輸出精度的前提下,對全周期的正弦波數(shù)據(jù)進行壓縮從而達到降低ROM存儲空間開銷的的目的。通過對整體設(shè)計進行建模仿真驗證了設(shè)計的正確性,并利用FPGA進行了硬件電路的實現(xiàn)。
DDS指的是數(shù)字頻率合成技術(shù),其更深層次的含義則是從相位的角度來對波形進行合成。它的硬件電路設(shè)計主要包括有基準時鐘模塊設(shè)計,內(nèi)部的頻率累加器設(shè)計,波形相位累加器設(shè)計,波形幅度與相位相互轉(zhuǎn)換的模塊電路設(shè)計,數(shù)模轉(zhuǎn)換器模塊電路設(shè)計,低通濾波器設(shè)計以及其他外圍硬件等等。要想獲取到DDS的輸出信號頻率則需要得到相位累加器的溢出頻率即可。但是要想相位累加器出現(xiàn)溢出則需要在時鐘fclk信號的輔助下將數(shù)據(jù)加法器輸入端的頻率控制字信號Fword進行線性相位的疊加直至產(chǎn)生溢出為止。如圖1所示,其中相位累加器包括一個N位頻率寄存器,該頻率寄存器存儲頻率控制字Δφ,全加器和相位寄存器分別用于累加和保存累加后的數(shù)據(jù)。N位的頻率控制字在每個時鐘周期被執(zhí)行一次累加。頻率控制字表示相角步長,得到線性循環(huán)增長的相位值。輸出頻率由式(1)表示:
圖1 全周期正弦數(shù)據(jù)重建過程
(1)
其中:N為相位累加器的位寬,Δφ為頻率控制字,fclk為系統(tǒng)時鐘,fout為輸出頻率。x相位-幅值轉(zhuǎn)換器將相位信息轉(zhuǎn)換為正弦波的幅度值[6]。在相位精度無窮大且無幅值量化的理想情況下,它的輸出序列由式(2)確定:
(2)
其中:φ(n)為相位累加寄存器在第n個周期的值,相位累加器輸出序列的數(shù)字周期定義為T的最小值,對于所有的n存在φ(n)=φ(n+T),相位累加器輸出序列的數(shù)字周期為:
(3)
GCD(Pword,2N)為Pword與2N間的最大公約數(shù),當(dāng)為2的整數(shù)次冪時,相位截斷后鋸齒波的周期等于理想化連續(xù)時間鋸齒波的周期。ROM的輸出被送到D/A轉(zhuǎn)換器,它產(chǎn)生一個量化的模擬正弦波。
一個16位輸出的DDS所使用ROM的尺寸為2B×M,其中B是被截斷的相位地址的字長,M是ROM的字長。若希望提高ROM的分辨率,則需要更大的ROM存儲,這就意味著更高的功耗、更低的速度和更大的成本,所以對ROM尺寸的精簡就顯得尤為重要。
其本質(zhì)為利用和積化差公式將sin(α+β+γ)等效成sin(α+β)cos(γ)+cos(α)cos(β)sin(γ)-cos(α)sin(β)cos(γ)通過兩個更小的存儲單元coarse ROM與fine ROM,大小為2α+β和2α+γ來代替原來大小為2α+β+γ的ROM,其中α、β、γ分別為想正弦函數(shù)相位的最高位、中間為和最低位[7]。因為α遠大于β和γ所以原始又可化簡為sin(α+β+γ)≈sin(α+β)+cos(α)sin(γ)。
為了進一步對ROM進行縮小處理,其中可以通過常規(guī)的方式來進行,將上述的方程式分成粗略的ROM和精確的ROM兩個部分來完成存儲,這樣可以達到縮小ROM空間的目的,但是此種方式還需要添加一個加法器將兩部分的結(jié)果相加并進行重組才能獲取到新的正弦函數(shù)。除此之外Nicholas 等人還對上述的方式進行了改進,利用計算機技術(shù)中的近似算法來代替三角函數(shù)近似法最終實現(xiàn)縮減ROM的目的[7]。
Bellaouar提出的新型的映射技術(shù)方法是基于泰勒級數(shù)的線性插值法。其主要的原理就是在變換的過程中可以通過查表法將相位值轉(zhuǎn)換成幅度值sin(θ)[8]。這種方法在正弦函數(shù)四分之一周期對稱性的基礎(chǔ)上,同時采用了線性插值法。在coarse ROM中每一個(xi,xi+1)范圍內(nèi)正弦函數(shù)可以用式(4)表示:
sin(θ)=sin(θi)+α(t-ti)+δsin
(4)
其中:θ=2πφ/2M;xi和xi+1是粗略ROM中的連續(xù)相位;t-ti代表累加輸出,同時t表示的是ROM地址的低有效位,ti表示的是 ROM地址的高有效位;α表示的是ROM 表內(nèi)的正弦函數(shù)插值系數(shù)。在式(4)中,δsin是正弦函數(shù)的泰勒展開式余項[8]。其可定義如下:
(5)
巳知相位幅度轉(zhuǎn)換輸出的幅度值為:
f(x)=Asin(πx/2)-ε(x),0≤x≤1
(6)
其中:A的幅度值≤ε(x)是近似誤差[8]。假設(shè)正弦信號的幅度值是Lbit。為了能獲取到最大的輸出幅度值則需要選擇最優(yōu)的幅度系數(shù)A。一般A取(2L-1)/2L。在此基礎(chǔ)上要想完成相位與幅度之間的轉(zhuǎn)換則線性插值法的表達等式如式(7)所示,其中f(x)為幅度值的輸出:
(7)
其中:s為分段的個數(shù),mk和表示的是斜率值,yk表示的是初始的幅度值;xk是表示的是每個階段的下限值。若要想將上式進行最大的簡化則需要挑選合適的分段個數(shù)以及長度才能實現(xiàn)。若分段個數(shù)的權(quán)值取值為2,則分段個數(shù)的最高有效位log2s其表示分段個數(shù)的值為k,同時通過查表得到所存儲的斜率系數(shù)的原始幅度值進行尋址。
文獻[9]通過驗證奈奎斯特采樣定理當(dāng)正弦曲線滿足方程y=a×sin(ωt+φ)+c即可得到一組離散序列:
yi=a×sin(ωt+φ)+c,i=0,1,...,4095
(8)
峰峰值2a=212-1,角頻率ω=2π,采樣間隔ti+1-ti=1/(212-1),由此可以計算幅度序列相對增量的絕對值:
|yi+1-yi|=|[a×sin(ωti+1+φ)+c]|-
[a×sin(ωti+φ)+c]
(9)
可以得出,當(dāng)輸出精度是12位且采集幅度序列的相位為212時,在一個采樣周期內(nèi)幅度序列的相對增量其絕對值≤4,此時的存儲空間僅僅需要3 bit即可,這相比與以前傳統(tǒng)的存儲方式縮減了原有空間的75%,在這樣的情況下則出現(xiàn)了一種ROM的新型壓縮方法。這種方法的主要目的就是可以還原出正弦波的真實幅度序列,同時為了更進一步地壓縮存儲空間,可以采用單象限幅度序列存儲結(jié)合反相器最終獲取到完整的正弦波形,這樣的操作方式還能更好地節(jié)約硬件資源。
由上述討論可知,DDS輸出信號的頻譜純度取決于儲存在正弦波查找表ROM中數(shù)值的分辨率,因此只有增加ROM的分辨率才能提高頻譜純度[10-11]。然而大的ROM意味著較高的功耗、較低的速度和昂貴的成本,為此需要有精確算法的壓縮技術(shù)。王曉音在實現(xiàn)DDS的波形存儲表幅度值壓縮方法一文中提到:為了改善DDS的輸出頻譜主要是通過增大ROM表的尋址空間同時對幅度表進行壓縮來實現(xiàn)。其最終的表現(xiàn)方式是通過減少相位截斷位數(shù)來改善雜散抑制的功率值。
為了能獲取到正弦函數(shù)的近似波形,主要采用的是三角函數(shù)的恒等變換再加上外部的邏輯控制電路來完成對ROM表的輸出進行隨機組合。前幾節(jié)列出的幾種方法中,1/4周期表、Sunderland結(jié)構(gòu)和Nicholas優(yōu)化方法都會引入有限的算法誤差。其中較為簡單的結(jié)構(gòu)方法是Sunderland粗細表,它雖然簡單但是它的雜散抑制水平還是相對較好的;Nicholas優(yōu)化方法相對于Sunderland結(jié)構(gòu)來說其雜散抑制水平更高,同時其還具有非常好的壓縮比;基于改進的正弦-相位差法與Nicholas優(yōu)化方法具有同樣的雜散抑制水平,并進一步提高了壓縮比。
存儲相對增量的ROM壓縮算法可以生成包括正弦波、方波在內(nèi)的多種波形但整體壓縮比為27:1,還有一定的提升空間?;谔├占墧?shù)的線性插值算法與線性插值算法都有比sunderland算法更高的壓縮比但是在電路補償結(jié)構(gòu)中使用了乘法器,很大程度上增加了電路路資源的使用,且邏輯控制過于復(fù)雜,實時性相對來差了一些。若在設(shè)計的過程中做到幅度表壓縮節(jié)約的資源比提高壓縮比所占用的電路設(shè)計資源還要多的話則高壓縮的追求才會意義重大。論文采用的數(shù)據(jù)壓縮方法是在Sunderland提出的粗細ROM結(jié)構(gòu)壓縮結(jié)構(gòu)基礎(chǔ)上對粗ROM進一步優(yōu)化并結(jié)QE-ROM技術(shù)實現(xiàn)高壓縮比的條件下簡化電路結(jié)構(gòu),該結(jié)構(gòu)能夠大大降低查找表的存儲容量,代價是需要增加能夠產(chǎn)生累加器和查表輸出的補碼邏輯電路。
利用正弦函數(shù)的對稱性,通過控制相位累加器輸出相位值的MSB(最高有效位)和second MSB(次高有效位)即可在只保存(0,π/2)范圍內(nèi)的正弦數(shù)據(jù)情況下通過兩個補償器重建出全周期的正弦數(shù)據(jù)。sunderland算法將1/4周期的正弦數(shù)據(jù)分別放到到兩個存儲單元分別是coarse ROM 與fine ROM中進行保存。
sunderland算法在正弦函數(shù)1/4對稱性質(zhì)的基礎(chǔ)上,將映射sin(θ)的地址位分解成高位α、中間位β和低位γ(本文中α、β、γ依次為5、4、5)。如此sin(π/2(α+β+γ))可表示為:
(10)
四分之一的正弦波幅度值被分別存放在sin(π/2(α+β))所代表的coarse ROM以及cos(π/2(α+β))sin(π/2(γ)所代表的fine ROM。coarse ROM提供了低分辨率的樣本,而fine ROM通過在低分辨率樣本之間進行插值來提供額外的分辨率。正弦相位差算法(sindiff)利用公式:
max[d(θ)]≈0.21max[sin(θ)]
(11)
在[0,π/8]范圍內(nèi)定義d(θ)的值為m0,代表矩陣為q0則:
m0(alpha_i,beta_i) =A1*2*(2*pi*t0)/pi;
q0(alpha_i,beta_i) = round(m0(alpha_i,beta_i));
其中:alpha_i代表高的地址位α,beta_i代表β。m0隨著迭代次數(shù)的增加而變化,q0矩陣代表[0,π/2]范圍內(nèi)正弦相位差算法所代表的的幅度值,將其與coarse ROM中的值作差,結(jié)果重新保存在coarse ROM中,此時存儲的數(shù)據(jù)為圖2中的sindiff。
為了進一步減小保存在coarse ROM中的值引入四線近似算法(QLA)。在[0,π/2]內(nèi)的函數(shù)表達式為:
(12)
用四段函數(shù)近似模擬正弦相位差算法后的數(shù)據(jù)在[0,π/2]范圍內(nèi)的變化曲線,相比于雙三角近似算法來說四線近似算法與原曲線有更高的貼合度,誤差值也就更小。
以[0,π/8]范圍內(nèi)的數(shù)據(jù)為例,定義q(θ)為m1,代表矩陣為q1:
m1(alpha_i,beta_i) =A1*((2*pi*t1)/pi);
q1(alpha_i,beta_i) = round(m1(alpha_i,beta_i));
將coarse ROM的原數(shù)據(jù)依次與正弦相位差(sindiff)算法、四線近似(QLA)算法作差后的誤差值重新保存在coarse ROM中,注意此時coarse ROM中存儲的數(shù)據(jù)為圖2中的errors而不是原數(shù)據(jù)。
改進的sunderland算法旨在分割原ROM的地址位并對coarse ROM的數(shù)據(jù)進行兩次幅度值上的壓縮,QE-ROM(量化和誤差)算法將分別對coarse ROM和fine ROM進行幅度值上的量化,并對量化值與誤差值分別存儲。
量化過程如圖3所示,假設(shè)此時的地址位和幅度值分別為A和L,將地址等分為2S段,每個段具有Q位量化值,并且量化值小于該節(jié)中的所有數(shù)據(jù)以使量化誤差為正數(shù)。Q-ROM大小變成2S×Q位。E-ROM存儲量化值與原始數(shù)據(jù)之間的誤差。這些誤差比原始數(shù)據(jù)小得多,因此只需要更小的尺寸。當(dāng)存儲誤差所需的位是E時,E-ROM的大小變成2A×e,Q-ROM和E-ROM的總大小變成了2S×Q+2A×e。為了最小化ROM的尺寸,我們必須找到最佳的2S的值,Q-ROM的量化位,以及存儲E-ROM所需的位數(shù)。具體可以通過以下方法找到:
1)當(dāng)初始數(shù)據(jù)的地址位為A,輸出為L位時,假設(shè)S=A、Q=L。
2)計算每一段的量化值并計算初始數(shù)據(jù)與量化值之間的誤差,得到Q-ROM尺寸。
3)得到可以表示所有誤差的E的最小值。
4)計算Q-ROM+E-ROM的大小。
5)減小Q的值然后循環(huán)2)~4),如果Q=1則執(zhí)行6)。
6)減小S的值然后循環(huán)2)~5),如果S=1則執(zhí)行7)。
7)通過比較計算結(jié)果得到最合適的Q、S、E使Q-ROM+E-ROM的值最小。
圖3 QE_ROM算法量化過程
表1為通過sunderland算法將原始數(shù)據(jù)分割后各類算法對coarse ROM再壓縮的過程和結(jié)構(gòu)。圖4為各階段算法的幅值以及數(shù)據(jù)總量。
表1 幾種正弦壓縮算法對比
圖4 各階段算法最大幅值與數(shù)據(jù)量
橫坐標中的算法從左往右依次為sunderland算法、正弦相位差算法、四線近似算法、QE-ROM算法。改進后sunderland算法的最大幅度值為1 764,數(shù)據(jù)總量為11 776 bit,與sunderland算法相比節(jié)省了四位字長,ROM面積為原來的85%。
QE-ROM算法以2 bit為步長對幅度值進行量化,然后將量化后的數(shù)據(jù)與誤差值分別存儲,結(jié)果如圖5所示。改進sunderland算法結(jié)合QE-ROM算法后的數(shù)據(jù)總量為8 576 bit,ROM面積為sunderland算法的62%。與壓縮前ROM尺寸(216×16)相比,壓縮比為122:1。
圖5 ROM內(nèi)總數(shù)據(jù)量
如6圖所示,相位累加器是基于一個32位紋波進位加法器,與一串在相同的時鐘相位上工作的全加法器。 全加法器的輸出有內(nèi)置寄存器與和位在內(nèi)部反饋以執(zhí)行累加。 用多路復(fù)用器(MUX)選擇存儲在寄存器中的32位頻率控制字以執(zhí)行累加,結(jié)果取高16位用于ROM表的尋址。
圖6 相位累加器結(jié)構(gòu)圖
相位-幅度轉(zhuǎn)換器設(shè)計的設(shè)計為本文的重點內(nèi)容,包括四線近似算法和正弦相位差算法部分的數(shù)據(jù)重建以及QE-ROM算法的數(shù)據(jù)配置。結(jié)構(gòu)如圖7所示,地址位(α+β)以1:61的比例放大后重建出正弦相位差部分數(shù)據(jù),四線近似算法中0<θ<π/8范圍內(nèi)的數(shù)據(jù)是通過向相位(α+β)下移1位生成的。π/8<θ<π/4部分的數(shù)據(jù)是通過將相位下移2位,并將相位的第一個和第二個MSB更改為10來生成。這些數(shù)據(jù)以1:61的比例放大后匹配量化和誤差算法部分恢復(fù)后的數(shù)據(jù)。0<θ<π/4和π/4<θ<π/2的數(shù)據(jù)是對稱的,因此,后半周期的數(shù)據(jù)由一個補償器生成。
相位-幅值轉(zhuǎn)換器結(jié)構(gòu)如圖7所示,總ROM由4個子ROM組成,即兩個Q-ROM和兩個E-ROM,用于分別存儲coarse ROM和fine ROM中的數(shù)據(jù)。將四分之一相位累加器的輸出分解為α+β+γ。coarse ROM和fine ROM的地址分別為α+β和α+γ。coarse ROM和fine ROM共享α地址位,因為α都是它們地址位中的最高位。因此,這四個子ROM共享一個行譯碼器以及四個不同的列復(fù)用器。圖8顯示了相位(α+β)、四次線近似算法幅度值以及重構(gòu)1/2周期正弦波的四個ROM數(shù)據(jù)幅度值的相對位置,其中第一行表示9位的相位值,第二行表示11位的四線近似方法壓縮后的數(shù)據(jù)幅度值,第三第四行分別表示coarse ROM中的量化值和誤差值,第五第六行表示fine ROM中量化值和誤差值,第七行表示加法器的輸出。
圖7 16位相位-幅值轉(zhuǎn)換器
圖8 數(shù)據(jù)位置表
為做到設(shè)計目標中的需求,采用了全橋整流的方式完成交直流轉(zhuǎn)換并利用全橋整流特性分離正負電壓[11];通過交流變壓器及LM317和LM337兩級降壓、穩(wěn)壓實現(xiàn)±9 V及3.75 V降壓輸出;在電源模塊的整體設(shè)計中均有為盡量減小電源噪聲而進行的設(shè)計,通過整流橋后及降壓輸出端均使用濾波電容來降低電源紋波并且所采用的降壓穩(wěn)壓芯片LM317和LM337噪聲僅有38uvRMS。
本設(shè)計中采用了環(huán)形變壓器來進行交流降壓[16],可較大幅度減小PCB面積及整體設(shè)計重量,并且內(nèi)阻、磁干擾以及震動噪聲較小,比較適合該設(shè)計中的高性能需求。設(shè)計中所用到的LM317和LM337為三端可調(diào)正電壓低壓差線性穩(wěn)壓器和三端可調(diào)負電壓低壓差線性穩(wěn)壓器,與同類器件相比,有較小的輸入輸出電壓比,還有較為優(yōu)越的電壓和負載調(diào)節(jié)性能以及較小的輸出電壓誤差,并且有較好的抗損性。采用輸入跳線的方法,使輸入既可以單端進行輸入,亦可雙端輸入,提高了設(shè)計的可調(diào)節(jié)性;并且在穩(wěn)壓電路部分設(shè)計了以LM317、LM337與電位器組成的可調(diào)輸出,使輸出范圍更加靈活;輸出部分做到正負輸出分別可控并且共用同一個公共地點,增加了輸出的可控性同時也保證了穩(wěn)定性;設(shè)計了LED指示燈,以便于工作狀態(tài)的可視化。
圖9 電源模塊PCB圖
在該模塊的設(shè)計中,為減小整體體積及單片機管腳的使用,采用16通道串行DAC芯片AD5360來實現(xiàn)該設(shè)計;AD5360輸出寄存器到輸出端為透傳模式,故通過LDAC引腳可控制DAC寄存器向輸出寄存器傳輸?shù)墓δ軐崿F(xiàn)所有通道需同時同相位輸出[14-16];利用VREF引腳使AD5360的輸出幅度控制在+7.5~-7.5 V,并通過縮小信號幅值至8.5 V、在輸入信號中加入3.25 V直流分量的方式來調(diào)整輸出范圍+7.5~-1 V。
設(shè)計中所用的AD5360芯片其封裝方式為LQFP-52,芯片內(nèi)部集成兩組16位的數(shù)模轉(zhuǎn)換器,同時為了降低輸出的誤差在芯片封裝的時候?qū)⒚總€數(shù)模轉(zhuǎn)換器模塊分開并且讓其能夠獨立的調(diào)整設(shè)置增益以及失調(diào),除此之外它的緩沖電壓輸出范圍是基準電壓的4倍。并且在PCB設(shè)計中采用了單點接地的方法分離數(shù)字地和模擬地,在二者之間添加一個0 Ω的電阻進行隔離,可以有效避免模擬地點的抖動帶來的干擾;并且在各輸入端添加電解電容來減小輸入紋波,以此來減小輸入噪聲。
圖10 DAC模塊PCB圖
整體仿真是在vivado 2017.4開發(fā)環(huán)境下搭建工程,圖11所示為對改進sunderland算法和量化誤差算法壓縮后的數(shù)據(jù)硬件實現(xiàn)全周期正弦函數(shù)的整體架構(gòu)圖控制模塊的輸入即為相位累加器輸入端的頻率控制字Fword、相位控制字Pword和幅度控制字Rword,輸出為16位精度的正弦波幅度值[17-18]。頂層模塊主要包含兩個子模塊,控制模塊和接口模塊。
圖11 整體框架價結(jié)構(gòu)圖
控制模塊主要完成控制4個存儲單元中的量化和誤差數(shù)據(jù)值按照其量化規(guī)則完成數(shù)據(jù)恢復(fù),四線近似算法四條函數(shù)的階段數(shù)據(jù)以及正弦相位差的數(shù)據(jù)還原。定義相位-幅值轉(zhuǎn)換器中相位累加器的輸出為Rom_Addr,因為Rom_Addr的最高兩個有效位分別控制完成正弦數(shù)據(jù)由1/4周期向1/2以及全周期的重建過程,所以α+β+γ=14即a0+b0+c0=14。
assignc0=Rom_Addr[14]?~(Rom_Addr[4:0]):Rom_Addr[4:0];
assignb0=Rom_Addr[14]?~(Rom_Addr[8:5]):Rom_Addr[8:5];
assigna0= Rom_Addr[14]?~(Rom_Addr[13:9]):Rom_Addr[13:9];
X1、X2分別為coarse ROM和fineROM中對幅度進行量化后的相位。
圖12 數(shù)據(jù)重建結(jié)構(gòu)圖
定義shift_1 <= {Rom_Addr[13:9],Rom_Addr[8:5]}>>1;
shift_2 <= {Rom_Addr[13:9],Rom_Addr[8:5]}>>2;
其中:shift_1、shift_2分別對應(yīng)式(6)中0<θ<π/8以及π/8<θ<π/4范圍內(nèi)的數(shù)據(jù)。因為0<θ<π/4與π/4<θ<π/2部分的函數(shù)實對稱的,所以后半周期的數(shù)據(jù)使用一個補償器生成。
{Rom_Addr[13:9],Rom_Addr[8:5]}則對應(yīng)正弦相位差算法作差時減掉的數(shù)據(jù)。三部分數(shù)據(jù)相加就會得到1/4周期的正弦波數(shù)據(jù),1/4周期向1/2周期擴展以及1/2周期向全周期擴展則需要在Rom_Addr[14]以及Rom_Addr[15]的控制下通過兩個補償器來完成。
接口模塊主要完成FPGA與數(shù)模轉(zhuǎn)換器(DAC)數(shù)據(jù)傳輸所使用協(xié)議的時序設(shè)計以及DAC每個通道增益參數(shù)的設(shè)置[19-20]。AD5360芯片與外部硬件器件通訊的方式是采用4線串行的方式,其接口與DSP芯片的通訊接口完全兼容,同時還具有16個通道且每個通道最高可達到16位的輸出精度,能夠處理最高50 MHz的時鐘速率。端口連接如圖13所示。
圖13 硬件接口圖
其中:SYNC為片選信號,低位有效,選同時開始數(shù)據(jù)傳輸;SCLK為FPGA生成的門控時鐘;SDI為串行輸入信號;SDO為數(shù)據(jù)回讀端口;RESET為復(fù)位信號,低位有效;LDAC為輸出控制信號,可調(diào)節(jié)全通道同時通相位輸出;CLR為數(shù)據(jù)清除信號,低電位有效,可清除通道的增益參數(shù)。BUSY為DAC數(shù)據(jù)處理進程信號。串并轉(zhuǎn)換轉(zhuǎn)換后的數(shù)據(jù)加上DAC通道地址位共計24位數(shù)據(jù)采用線性序列機由高到低依次輸出。此次設(shè)計FPGA與DAC之間數(shù)據(jù)傳輸所用時鐘為20 M,系統(tǒng)時鐘設(shè)置為50 M,正弦波頻率為200 Hz,DAC基準電壓VREF設(shè)置為3.75 V。
圖14為用vivado 2017.4對代碼進行的仿真結(jié)果,器件選擇為xc7z020clg400-2。FF觸發(fā)器的使用量為144,占片上可以用總量的0.14%,LUT的使用量為176,占片上可使用總量的0.32%。片上總功耗為0.11 W。
圖14 Vivado 仿真結(jié)果圖
以上正弦波形發(fā)生電路均vivado2017.3集成開發(fā)環(huán)境下搭建工程,利用Verilog硬件描述語言編寫,并且編譯通過。該 DDS信號發(fā)生器設(shè)計使用的BRAM位為兩個僅占用 FPGA芯片可使用總量的1.43%。將編譯生成的DDS.bit文件通過USB-Blaster下載FPGA 開發(fā)板上,并在數(shù)模轉(zhuǎn)換器輸出端連接示波器探頭,測試結(jié)果如圖15所示。
圖15 正弦信號測試圖
圖15為DDS測試系統(tǒng)與正弦信號在示波器上的測試結(jié)果。圖中顯示正弦波頻率為200 Hz,峰峰值為8.5 V,為滿幅情況下DAC的輸出電壓,可以看到在不影響波形平滑度的情況下完成16位精度輸出,并且ROM占用資源比傳統(tǒng)方式節(jié)省99.2%。
本文提出了一種將改進sunderland算法與QE-ROM算法相結(jié)合的正弦數(shù)據(jù)壓縮算法。改進sunderland算法是在sundeland算法的基礎(chǔ)上利用正弦相位差算法與四線近似算法將coarse ROM中的數(shù)據(jù)作差后將差值部分存儲到coarse ROM,這比原數(shù)據(jù)要小得多。QE-ROM再對整體數(shù)據(jù)量化,量化后的數(shù)據(jù)整體占用空間變小,對量化后的數(shù)據(jù)與量化誤差分別保存。利用加法器對重建出[0,π/2]范圍內(nèi)的輸出,然后結(jié)合正弦函數(shù)對稱性通過補償器重建出全周期的數(shù)據(jù)。本文提出的正弦數(shù)據(jù)壓縮算法將正弦數(shù)據(jù)查找表(ROM)的尺寸從(216×16)壓縮至(27×7+29×7+28×4+210×3) 8 576 bit,壓縮比為122:1,尺寸僅為原來的0.8%.能夠有效降低DDS芯片的面積和功耗。
但該算法也存在一定的不足之處,當(dāng)頻率控制字并非為2的整數(shù)次冪時,相位截斷后鋸齒波的周期不等于理想化連續(xù)時間鋸齒波的周期,就會引入相位截斷誤差,相位截斷誤差序列的周期性是造成DDS輸出頻譜中含有大量雜散分量的主要原因之一。在算法的設(shè)計過程中,如果想要降低DAC的非線性誤差以及ROM幅度量化的誤差則可通過兩方面來實現(xiàn),一方面是采用更多位數(shù)的DAC器件,這樣其精度可以隨之得到提高,從而降低它的非線性誤差;另一方面是增加ROM的字長從而實現(xiàn)降低它的幅度量化誤差。同時要想在設(shè)計的過程中增加ROM地址位數(shù)的話,則在硬件的選型設(shè)計時就會更加的復(fù)雜。在設(shè)計的過程中需要考慮到的是DAC的非線性誤差是與其位數(shù)成線性關(guān)系的,DAC的位數(shù)越大其對應(yīng)的精度以及分辨率就會越高,則非線性誤差也會越小;ROM幅度量化的誤差是與ROM的字節(jié)長度成線性關(guān)系,與ROM的地址位數(shù)成指數(shù)關(guān)系,若ROM的字節(jié)長度越長對應(yīng)的地址位數(shù)越多,則其幅度量化的誤差也會越小。若在硬件方面增加對應(yīng)成本便可以選擇更多地址位數(shù)的ROM,但是在此情況下,其對應(yīng)的相位截斷誤差在所有噪聲的比率中會有所上升。因此如何提高對相位截斷雜散的抑制來提高DDS性能需要進一步研究。