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