趙麗娜,郭寶增,劉少鵬,馬 韜
(河北大學(xué) 電子信息工程學(xué)院,河北 保定 071002)
DDS(Direct Digital Frequency Synthesis)即直接數(shù)字式頻率合成,是從相位概念出發(fā)直接合成所需波形的一種頻率合成技術(shù)[1]。與傳統(tǒng)信號(hào)源所采用的用模擬方式生成信號(hào)不同,它是將先進(jìn)的數(shù)字信號(hào)處理理論與方法引入信號(hào)合成領(lǐng)域。DDS技術(shù)在精確度、靈活度等方面都超過模擬信號(hào)發(fā)生器。并且DDS可實(shí)現(xiàn)相位連續(xù)變化,且具有良好頻譜的信號(hào),這是傳統(tǒng)方法無(wú)法實(shí)現(xiàn)的。
FPGA的迅速發(fā)展為DDS提供了更加優(yōu)良的技術(shù)手段,它具有處理速度快、可靠性高等特點(diǎn)。SOPC(System On Programmable Chip,片上可編程系統(tǒng))是一種靈活、高效的SOC解決方案[2]。它以IP Core為基礎(chǔ),將處理器、存儲(chǔ)器、IO口等系統(tǒng)設(shè)計(jì)需要的功能模塊集成到一個(gè)FPGA器件上,構(gòu)建成一個(gè)可編程的片上系統(tǒng),具有靈活的設(shè)計(jì)方式。本設(shè)計(jì)綜合以上軟硬件可編程協(xié)同設(shè)計(jì)技術(shù),使得DDS電路在靈活性,可行性,精確性等方面得到很大提高。
DDS信號(hào)發(fā)生器是由:頻率控制字、相位累加器、ROM表、D/A轉(zhuǎn)換器以及模擬低通濾波器LPF組成.原理框圖如圖1所示。
圖1 DDS原理圖Fig.1 DDS schematic
首先對(duì)波形的一個(gè)周期進(jìn)行連續(xù)采樣,通過計(jì)算得到每一點(diǎn)對(duì)應(yīng)的幅度值,然后以二進(jìn)制格式存放在數(shù)據(jù)文件中。在時(shí)鐘脈沖fclk驅(qū)動(dòng)下,每個(gè)時(shí)鐘周期內(nèi)頻率控制字與相位累加器累加一次,產(chǎn)生ROM查找表的地址值,隨后通過查表變換,地址值被轉(zhuǎn)化為信號(hào)波形的數(shù)字幅度序列,即可得到幅度上離散的波形,再由數(shù)模變換器(D/A)將表示波形幅度的數(shù)字序列轉(zhuǎn)化為模擬量。最后經(jīng)由LPF將D/A輸出的階梯狀波形平滑為所需的連續(xù)波形。理論上,采樣點(diǎn)數(shù)越多,生成波形精確度越高[3]。
本設(shè)計(jì)在Altera的EP2C35F672C8芯片的基礎(chǔ)上,在SOPC Builder和QuartusⅡ開發(fā)環(huán)境下,利用SOPC技術(shù),在FPGA中集成Altera的嵌入式軟核處理器NiosⅡ和其他外設(shè),將硬件系統(tǒng)與軟件集成在單一可編程芯片中,從而實(shí)現(xiàn)片上的系統(tǒng)級(jí)設(shè)計(jì)。系統(tǒng)框圖如圖2所示[4],由DDS基本單元(由頻率控制字,相位累加器,ROM,DAC,LPF 構(gòu)成),F(xiàn)PGA 外部硬件資源(撥扭開關(guān) SWITCH、鍵盤 KEY、LCD12864)和 NiosⅡ處理器系統(tǒng)等構(gòu)成了基本電路。四位撥扭開關(guān)選擇輸出波形,鍵盤控制輸出波形信號(hào)頻率,LCD12864顯示波形信號(hào)參數(shù),各硬件模塊之間的協(xié)調(diào)工作通過NiosⅡ微處理器在圖形化開發(fā)環(huán)境NiosⅡIDE下用C語(yǔ)言來編程實(shí)現(xiàn)控制。
圖2 系統(tǒng)結(jié)構(gòu)示意圖Fig.2 System structure schematic
通過對(duì)DDS基本原理的分析得知只需更換波形存儲(chǔ)器中的波形采樣數(shù)據(jù),就可以得到所需波形的信號(hào)。波形數(shù)據(jù)存儲(chǔ)方式包括順序存儲(chǔ)方式和間隔存儲(chǔ)方式[5],本設(shè)計(jì)采用順序存儲(chǔ)方式將方波,三角波,正弦波,鋸齒波4種波形采樣數(shù)據(jù)全部依次存儲(chǔ)在一個(gè)查找表里,數(shù)據(jù)分布情況如表1所示。通過改變尋址首地址,并在該波形數(shù)據(jù)存儲(chǔ)地址范圍內(nèi)循環(huán)尋址,從而實(shí)現(xiàn)對(duì)所需信號(hào)波形的輸出。具體實(shí)現(xiàn)方法在累加控制模塊中有介紹。
表1 查找表數(shù)據(jù)分布圖Tab.1 Look-up table data distribution
DDS模塊中的波形數(shù)據(jù)存儲(chǔ)器是用QuartusⅡ中的MegaWizard Plug_In Manager工具添加的LPM_ROM IP核,此存儲(chǔ)器ROM是用波形存儲(chǔ)文件.mif進(jìn)行初始化,波形數(shù)據(jù)可以用matlab等工具生成,用matlab生成4種波形的波表數(shù)據(jù)程序如下:
由以上代碼生成的.mif文件即可在E盤目錄下找到,將.mif文件加載到ROM中,實(shí)現(xiàn)對(duì)ROM的初始化。
累加控制模塊如圖3所示,為了實(shí)現(xiàn)波形選擇性輸出,本設(shè)計(jì)在累加控制部分增加了選擇器,即圖3的sel模塊,作為系統(tǒng)尋址地址的高兩位,實(shí)現(xiàn)對(duì)波形查找表的范圍選擇功能。累加器Altaccumulate0的輸出做為累加控制模塊的低32位的輸出,實(shí)現(xiàn)在指定范圍內(nèi)對(duì)查找表進(jìn)行尋址。此設(shè)計(jì)方法相當(dāng)于做了一個(gè)多路數(shù)據(jù)選擇器 。四位撥扭開關(guān)作為sel模塊的輸入控制,將尋址地址轉(zhuǎn)換成所需波形首地址,即可實(shí)現(xiàn)對(duì)波形選擇的控制。Adder模塊將sel和Altaccumulate0模塊輸出進(jìn)行位拼接運(yùn)算。其部分代碼如下:
設(shè)計(jì)中為了節(jié)省ROM的容量而采用相位截?cái)嗟姆椒?,取累加器輸出的高十位作為ROM的尋址地址來進(jìn)行查表。
對(duì)于Altera SOPC Builder未提供的一些外設(shè)接口模塊,用戶可以通過自定義邏輯方法在 SOPC設(shè)計(jì)中添加自己開發(fā)的IP核,通過Avalon的讀寫時(shí)序?qū)Ω鱾€(gè)設(shè)備進(jìn)行操作。本設(shè)計(jì)通過構(gòu)建 IP核來直接控制NiosⅡ和LCD12864的接口,按照指定的時(shí)序?qū)⒉ㄐ螀?shù)顯示在LCD上[6]。在SOPC Builder中自己定義component,并把液晶顯示模塊看成外部存儲(chǔ)器,直接做成Avalon總線Slave設(shè)備,IP核設(shè)計(jì)包含軟件部分和硬件部分,需要寫HDL模塊,定義控制狀態(tài)、數(shù)據(jù)寄存器和控制位,描述組件與Avalon總線的接口以及組件與液晶屏的接口。系統(tǒng)編輯器從文件中讀取I/O信號(hào)和參數(shù)信息。其次對(duì)LCD模塊進(jìn)行初始化,由于SOPC Builder中的LCDl2864控制模塊已經(jīng)考慮了LCD的讀寫時(shí)序,所以使用NIOSⅡIDE進(jìn)行LCD驅(qū)動(dòng)和控制時(shí)只需對(duì)LCD進(jìn)行初始化[7]。
NiosⅡ是Altera針對(duì)其FPGA設(shè)計(jì)的嵌入式軟核處理器,它與其他IP核可構(gòu)成SOPC系統(tǒng)的主要部分。它具有靈活的自定義指令集和自定義硬件加速單元,以及圖形化開發(fā)環(huán)境NiosⅡIDE[2]。經(jīng)由SOPC Builder生成NiosⅡ嵌入式處理器系統(tǒng),其CPU模塊框圖如圖4所示。
圖3 累加控制模塊Fig.3 Accumulate control module
圖4 CPU模塊框圖Fig.4 CPU module diagram
利用NIOSⅡIDE開發(fā)工具完成所有軟件開發(fā)任務(wù),系統(tǒng)接收撥扭開關(guān)掃描模塊發(fā)來的4位掃描碼,根據(jù)掃描碼數(shù)值的不同進(jìn)入不同的子程序,然后再通過FPGA的鍵盤掃描模塊向NIOSⅡ處理器發(fā)送鍵盤掃描碼,軟核處理器根據(jù)接收到的掃描碼產(chǎn)生相應(yīng)的信號(hào)數(shù)據(jù)以及控制信號(hào),并通過 PIO傳送給FPGA中的 DDS模塊 ,實(shí)現(xiàn)頻率控制字的變化,即輸出頻率可調(diào),并將信號(hào)數(shù)據(jù)顯示在LCD上。同時(shí)DAC器件將DDS產(chǎn)生的8位信號(hào)數(shù)據(jù)進(jìn)行數(shù)模轉(zhuǎn)換,從而產(chǎn)生頻率可調(diào)的方波、三角波、正弦波、鋸齒波[8]。
該信號(hào)源能夠很好地滿足對(duì)不同波形、不同頻率的信號(hào)的需求,具有很強(qiáng)的實(shí)用性,并且可以方便地通過液晶顯示器直觀地觀察到波形信號(hào)的參數(shù)信息。由FPGA實(shí)現(xiàn)的DDS信號(hào)發(fā)生器不僅可實(shí)現(xiàn)頻率可調(diào)波形變換且具有頻率切換快,信號(hào)的質(zhì)量和精度高于模擬方式的特點(diǎn)。
[1]張金波,湛向,劉二偉,等.基于DDS/SOPC的多路可調(diào)諧波信號(hào)發(fā)生器[J].電力自動(dòng)化設(shè)備,2008(11):74-78.ZHANG Jin-bo,ZHAN Xiang,LIU Er-wei,et al.The wide adjustable harmonic signal generator based on DDS/SOPC[J].Electric Power Automation Equipment,2008(11):74-78.
[2]方媛,李勇,李智君,等.基于NIOSⅡ軟核處理器的通信信號(hào)源SOPC設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2007,7(12):2959-2963.FANG Yuan,LI Yong,LI Zhi-jun,et al.The SOPC design of communication signal source based on NIOSⅡsoft processors[J].Science Technology and Engineering,2007,7(12):2959-2963.
[3]黃小翰.基于FPGA的多功能波形發(fā)生器的設(shè)計(jì)[J].價(jià)值工程,2010(9):232-233.HUANG Xiao-han.The design of multifunctional waveform generator based on FPGA[J].Value Engineering,2010(9):232-233.
[4]李全利,王峰.基于Nios II的信號(hào)發(fā)生器[J].自動(dòng)化技術(shù)與應(yīng)用,2007,26(1):96-98,110.LI Quan-li,WANG Feng.The signal generator based on Nios II[J].Techniques of Automation and Applications,2007,26(1):96-98,110.
[5]李志鵬,郭勇,沈軍.基于DDS技術(shù)實(shí)現(xiàn)信號(hào)發(fā)生器[J].微計(jì)算機(jī)信息,2007,23(7-1):175-177.LI Zhi-peng,GUO Yong,SHEN Jun.The signal generator based on DDS technology[J].Microcomputer Information,2007,23(7-1):175-177.
[6]馬品宏.基于SOPC的任意波形發(fā)生器的研究與開發(fā)[D].大連:大連理工大學(xué),2006.
[7]葛遠(yuǎn)香,胡開明.基于NIOSⅡ的LCD控制器和矩陣鍵盤的IP核的設(shè) 計(jì)方法 [EB/OL]. (2010-08-16).http://www.elecfans.com/emb/arm/20100816221785.htm1.
[8]倪亮,吳麗敏,趙鵬飛.基于SOPC基本信號(hào)產(chǎn)生器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子科技,2011,24(1):89-92.NILiang,WULi-min,ZHAOPeng-fei.The designandimplementation of basic signal generator based on SOPC[J].Electronic Science and Technology,2011,24(1):89-92.