基于模型的DDS芯片設(shè)計(jì)與實(shí)現(xiàn)
摘要:介紹了一種基于模型的DDS芯片的設(shè)計(jì)方法。根據(jù)DDS基本原理,在MATLAB環(huán)境下建立模型,用System Generator產(chǎn)生VHDL程序,并在ISE軟件中編寫仿真和控制程序,最后在Spartan-3E Starter Kit開發(fā)板上實(shí)現(xiàn)設(shè)計(jì)。與傳統(tǒng)的FPGA編程設(shè)計(jì)方法相比,本文所介紹的方法可以避免繁瑣的編程工作、節(jié)省時(shí)間并降低出錯(cuò)概率。實(shí)驗(yàn)結(jié)果證明了這種設(shè)計(jì)方法的可行性。
0 引言
1971 年,美國(guó)學(xué)者J.Tierncy.C.M.Rader 和B. Gold 應(yīng)用全數(shù)字技術(shù),從相位概念出 發(fā)給出了直接合成波形的一種新的頻率合成原理, 這就是DDS ( Direct DIGITAL Synthesizer),直接數(shù)字合成技術(shù)。近幾年超高速數(shù)字電路的發(fā)展尤其是大規(guī)模超高速FPGA 技術(shù)日漸成熟,以及對(duì)DDS 的深入研究,使得DDS 的最高工作頻率以及噪聲性能已接近并達(dá) 到與鎖相頻率合成器相當(dāng)?shù)乃絒1]。與其它頻率合成方法相比,DDS 具有頻率轉(zhuǎn)換時(shí)間短、 頻率分辨率高、輸出相位連續(xù)、可編程、全數(shù)字化、易于集成等突出優(yōu)點(diǎn)。本文提出的方法 基于Xilinx 公司和它的合作者聯(lián)合提出的XtremeDSP 解決方案,從系統(tǒng)結(jié)構(gòu)設(shè)計(jì)直接映射 到基于FPGA 的DSP 系統(tǒng)硬件實(shí)現(xiàn)。在這種基于模型的設(shè)計(jì)技術(shù)中,利用Simulink 的圖形化 界面由系統(tǒng)的技術(shù)條件建立系統(tǒng)的數(shù)學(xué)模型,通過算法對(duì)模型進(jìn)行仿真優(yōu)化,再轉(zhuǎn)化成IP 核實(shí)現(xiàn)。System generator 同Simulink 模型工具結(jié)合,可以將算法參數(shù)化、最優(yōu)化,并可 自動(dòng)從行為級(jí)的系統(tǒng)模型轉(zhuǎn)換到FPGA 實(shí)現(xiàn),不需手工重設(shè),從而避免了繁瑣的編程工作, 大大節(jié)省了開發(fā)時(shí)間并降低了出錯(cuò)的概率。
1 DDS 的基本原理
[!--empirenews.page--]
2 在MATLAB 中建立的DDS 模型并在ISE 中實(shí)現(xiàn)
2.1 建立DDS 模型
Simulink 是一個(gè)可用于多領(lǐng)域動(dòng)態(tài)系統(tǒng)仿真的平臺(tái),為動(dòng)態(tài)系統(tǒng)提供建模和分析的方 法,提供交互的圖形化方框圖環(huán)境帶有為信號(hào)處理、通信和控制等可定制的模塊集。System Generator 就是Xilinx 公司的一個(gè)專有模塊集(Blockset),它是Simulink 的一個(gè)插件, 包括基本DSP 函數(shù)和邏輯算符,其中包含的預(yù)先定義好的模塊可以保證FPGA 實(shí)現(xiàn)時(shí)位和周 期的正確。用它可以自動(dòng)生成VHDL 語言、測(cè)試向量等文件,還可以自動(dòng)將特定的設(shè)計(jì)模塊 映射成高度優(yōu)化的IP 核模型。在本文介紹的設(shè)計(jì)中,最后生成的工程文件中就自動(dòng)映射出 一個(gè)累加器核和一個(gè)單口塊ROM 核。
根據(jù)DDS 控制原理在MATLAB 環(huán)境中建立如下的模型(圖1):其中在存儲(chǔ)正弦數(shù)據(jù)的RO中設(shè)定Depth 為:4096,Initial Value Vector 為:2047*sin(pi*(0:4095)/2048)+2047, 即讓System Generator 在編譯過程中自動(dòng)產(chǎn)生一個(gè)存儲(chǔ)4096 個(gè)正弦數(shù)據(jù)的ROM。為了配合 使用開發(fā)板上的D/A 模塊,ROM 中的每個(gè)值設(shè)置成12 位無符號(hào)數(shù)。Accumulator 模塊用來進(jìn) 行相位的累加,AddSub 模塊將相位偏移量與相位累加值相加,作為ROM2 的地址輸入。在仿 真前,設(shè)置相位控制字為PWord=512,由公式算出移相后的波形應(yīng)該較基準(zhǔn)正弦波偏移;設(shè)置頻率控制字FWord=4,將仿真時(shí)間設(shè)置為2048,這樣 從理論上我們應(yīng)該可以看到兩個(gè)周期的完整波形輸出。運(yùn)行仿真,可以在Scope 中觀察到如圖2.1 中波形。改變控制字的值,就可以得到不同頻率、不同相位的波形(圖2.2)。
2.2 在ISE 中實(shí)現(xiàn)并仿真
點(diǎn)擊System Generator 圖標(biāo)中的generate 按鈕,生成可綜合的VHDL 代碼,并在ISE 中打開。先對(duì)代碼使用Synthesize-XST 進(jìn)行綜合,通過之后可以觀察到系統(tǒng)RTL 級(jí)視圖。 然后創(chuàng)建一個(gè).tbw 文件對(duì)綜合后的設(shè)計(jì)進(jìn)行仿真,能夠得到和MATLAB 環(huán)境下一樣的仿真結(jié) 果(按照正弦規(guī)律變化的離散數(shù)值序列)。為了能夠在實(shí)驗(yàn)板上實(shí)現(xiàn)設(shè)計(jì),在ISE 環(huán)境中建立 頂層文件,將System Generator 產(chǎn)生的文件與PicoBlaze 的控制程序文件結(jié)合,再進(jìn)行對(duì) 應(yīng)的功能仿真,正確后加載約束文件,生成比特流文件。[!--empirenews.page--]
3 設(shè)計(jì)的硬件實(shí)現(xiàn)
選擇在Xilinx 公司的Spartan-3E Starter Kit 開發(fā)板上實(shí)現(xiàn)整個(gè)設(shè)計(jì)。在該開發(fā)板 上,有一片LTC2* D/A 芯片,通過一個(gè)SPI 接口與FPGA 管腳相接,能夠提供4 路獨(dú)立的 模擬量輸出。為了便于對(duì)D/A 芯片以及各種控制接口的控制,在實(shí)現(xiàn)過程中使用了一個(gè) PicoBlaze 軟核。
PicoBlaze 是一個(gè)緊湊型、資源占用極少、完全嵌入式的8 位精簡(jiǎn)指令集 微控制器軟核。我們可以在文本編輯環(huán)境下根據(jù)PicoBlaze 的指令系統(tǒng)編寫自己的控制代 碼,然后保存為.psm 格式的文件,再用Xilinx 的KCPSM3 assembler 對(duì)文件進(jìn)行編譯,編 譯通過后自動(dòng)生成一個(gè)儲(chǔ)存用戶程序的ROM(VHDL 文件)。將生成的ROM 文件和KCPSM3 軟 核加載到工程中,并建立上層文件對(duì)各輸入、輸出口及中斷進(jìn)行配置,這樣,一個(gè)PicoBlaze 軟核就設(shè)計(jì)成功了。 在PicoBlaze 的控制程序中采用軟件中斷方式控制D/A 芯片以20KHZ 的頻率對(duì)數(shù)字量采 樣。在每個(gè)采樣過程中,由PicoBlaze 軟核控制向D/A 芯片發(fā)送32 位控制字,其中有12 位待轉(zhuǎn)換的數(shù)字量、4 位通道選擇控制字、4 位模式控制字,其余各位為0。在ISE 中對(duì)主 時(shí)鐘進(jìn)行軟件分頻,將開發(fā)板上原本50MHZ 的時(shí)鐘降低到100KHZ 之后再接到DDS 產(chǎn)生電路 的輸入時(shí)鐘端口。這樣, 在FWord = 4 的情況下, DDS 的輸出頻率
輸入時(shí)鐘可以直接接入50MHZ 的晶振,這樣,在同樣頻率控制字的情況下輸出頻率也會(huì)相應(yīng) 提高。這里分頻只是為了配合相對(duì)低速的D/A 芯片,以使得輸出波形每個(gè)周期的采樣數(shù)相對(duì) 多一些,以便于用示波器進(jìn)行觀察。
將生成的比特流代碼下載到目標(biāo)板,板上的開關(guān)信號(hào)作為用戶接口控制FWord 的值, 控制不同開關(guān)的關(guān)閉和開啟,模擬不同頻率控制字的情況,得到不同頻率的波形,用示波器 觀察開發(fā)板上J5 連接器的A 通道,得到如圖3 的波形:觀察波形,與由公式計(jì)算出的理論值吻合,證明了本文所介紹的方法的有效性、可行性。在ISE 的設(shè)計(jì)使用摘要窗口中,我們 可以清楚的看到該系統(tǒng)所占用的芯片資源極少,由此可見,如果我們加大ROM 的深度,并且 通過DCM 時(shí)鐘管理提高主時(shí)鐘頻率的話,能夠很容易的實(shí)現(xiàn)更高頻率、更高精度的DDS 芯片。
4 結(jié)語
該設(shè)計(jì)過程演示了在MATLAB/SIMULINK 環(huán)境下使用Xilinx 公司的System Generator 模塊集對(duì)DDS 建模,并在ISE 中進(jìn)行編譯、仿真,最終在開發(fā)板上實(shí)現(xiàn)DDS 功能芯片的過程。 雖然在ISE 集成環(huán)境中已經(jīng)提供了DDS 的IP 核供編程者使用,但是只能產(chǎn)生正弦或者余弦 波形,在需要產(chǎn)生其它波形(如方波、三角波等)的場(chǎng)合難以發(fā)揮作用,而且根據(jù)DDS 原理 使用軟件編程方法產(chǎn)生其它波形具有一定的復(fù)雜性,容易出錯(cuò)且效率不高。本文介紹的方法 具有數(shù)字頻率合成的普遍性,設(shè)計(jì)者通過修改ROM 中存儲(chǔ)的初始值向量,可以用類似的方法 達(dá)到產(chǎn)生任意波形的目的。這是一種在Xtreme 系統(tǒng)中實(shí)現(xiàn)DSP 設(shè)計(jì)的普遍方法,使用這樣 的設(shè)計(jì)流程,可以避免編寫煩瑣的HDL 程序,更可以實(shí)現(xiàn)其它更加復(fù)雜的DSP 算法。該方法 充分發(fā)揮了使用FPGA 實(shí)現(xiàn)DSP 系統(tǒng)所具有的高度并行性、重構(gòu)靈活性以及低性價(jià)比的優(yōu)勢(shì), 在無線基站、復(fù)雜網(wǎng)絡(luò)系統(tǒng)、視頻服務(wù)和醫(yī)療圖象等DSP 領(lǐng)域?qū)⒌玫礁訌V泛的應(yīng)用。
本文的創(chuàng)新點(diǎn):不僅提出了一種先進(jìn)的基于模型的DDS 芯片的設(shè)計(jì)新方法,而且通過實(shí) 際實(shí)驗(yàn)在硬件開發(fā)板上實(shí)現(xiàn)了整個(gè)設(shè)計(jì)構(gòu)想,實(shí)驗(yàn)結(jié)果符合設(shè)計(jì)要求,驗(yàn)證了該設(shè)計(jì)方法的 正確性、可行性。