文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)06-091-04
信號(hào)發(fā)生器是各種測(cè)試和實(shí)驗(yàn)過(guò)程中不可缺少的儀器,在通信、測(cè)量、雷達(dá)、控制、教學(xué)、科研等領(lǐng)域應(yīng)用十分廣泛。隨著我國(guó)經(jīng)濟(jì)和科技的發(fā)展,對(duì)相應(yīng)的測(cè)試儀器和測(cè)試手段也提出了更高的要求。傳統(tǒng)的信號(hào)發(fā)生器大多采用專用芯片或單片機(jī)或模擬電路,具有成本高、控制方式不靈活或波形種類較少等缺點(diǎn)。
本文采用直接數(shù)字合成(DDS)技術(shù)[1],通過(guò)基于 NIOSⅡ的SoPC系統(tǒng)實(shí)現(xiàn)一個(gè)任意波形發(fā)生器。DDS技術(shù)是一種新穎的頻率合成技術(shù),具有易于程控、相位連續(xù)、輸出頻率穩(wěn)定度高、頻率轉(zhuǎn)換速度快和分辨率高等優(yōu)點(diǎn)。SoPC(System on a Programmable Chip)[2-3]技術(shù)是美國(guó)Altrea公司于2000年最早提出的,并同時(shí)推出了相應(yīng)的開發(fā)軟件Quartus II及硬件平臺(tái)FPGA(Field-Programmable Gate Array)芯片。SoPC是基于FPGA解決方案的SoC,SoPC的設(shè)計(jì)是以IP為基礎(chǔ)、以硬件描述語(yǔ)言VHDL為主要設(shè)計(jì)手段、借助于以計(jì)算機(jī)為平臺(tái)的EDA工具進(jìn)行的,具有靈活的設(shè)計(jì)方式和軟硬件在系統(tǒng)可編程的功能。本設(shè)計(jì)通過(guò)Altera公司的FPGA芯片和NIOSⅡ嵌入式系統(tǒng)實(shí)現(xiàn)SoPC。
1 系統(tǒng)總體方案設(shè)計(jì)
本設(shè)計(jì)實(shí)現(xiàn)一個(gè)基于SoPC的任意波形發(fā)生器, 其輸出頻率范圍為10 Hz~1 MHz,頻率分辨率為1Hz,輸出電壓幅值范圍為 0~5 V,步進(jìn)間隔為0.1 V,輸出信號(hào)的頻率和電壓值可通過(guò)鍵盤進(jìn)行設(shè)置,可實(shí)時(shí)顯示輸出信號(hào)的類型、幅度、頻率和頻率步進(jìn)值。
片上系統(tǒng)在Altera CycloneⅡ系列的 EP2C8Q208C8 FPGA上實(shí)現(xiàn),構(gòu)建了一個(gè)基于NIOSⅡ的SoPC系統(tǒng),完成系統(tǒng)控制和DDS信號(hào)發(fā)生,通過(guò)PS/2鼠標(biāo)鍵盤設(shè)定波形的種類、任意頻率和任意幅度的信號(hào)輸出,最后通過(guò)外部電路將片上系統(tǒng)數(shù)字輸出轉(zhuǎn)換為模擬輸出、放大、濾波和幅度控制,系統(tǒng)框圖如圖1所示。
2 片上系統(tǒng)設(shè)計(jì)
片上系統(tǒng)為一個(gè)基于NIOSⅡ的SoPC系統(tǒng),由四部分組成:NIOS Ⅱ模塊、DDS模塊、PLL模塊和片上RAM 模塊。
2.1 NIOS Ⅱ模塊
本模塊提供主控CPU部分,NIOS II模塊通過(guò)在SoPC Builder[2]中調(diào)用IP庫(kù)組件實(shí)現(xiàn),由Quartus軟件定制,需加入SDRAM、LCD、RS232等控制器。利用SDRAM配合FPGA構(gòu)成片上系統(tǒng),建立NIOS控制系統(tǒng),完成任務(wù)調(diào)度及人機(jī)交互控制。對(duì)DDS部分的控制由PIO口完成,均為輸出口,包括頻率控制字輸出口、波形選擇輸出口、幅度控制輸出口。本設(shè)計(jì)中,由于NIOSⅡ CPU主要負(fù)責(zé)UART串口的數(shù)據(jù)傳輸和簡(jiǎn)單的I/O接口控制,所以選用經(jīng)濟(jì)型NIOSⅡ/e 內(nèi)核,以達(dá)到節(jié)省資源的目的,NIOS II CPU頂層原理圖如圖2所示。
2.2 DDS 模塊
2.2.1直接數(shù)字頻率合成器原理
直接數(shù)字合成DDS(Direct Digital Synthesis)是一種從相位出發(fā)的新的頻率合成技術(shù)和信號(hào)產(chǎn)生方法。DDS的原理框圖如圖3所示[4]。圖中相位累加器可在每一個(gè)時(shí)鐘周期來(lái)臨時(shí)將頻率控制字(FTW)所決定的相位增量M累加一次,如果記數(shù)大于N,則自動(dòng)溢出,而只保留后面的N位數(shù)字于累加器中。正弦查詢表ROM用于實(shí)現(xiàn)從相位累加器輸出的相位值到正弦幅度值的轉(zhuǎn)換,然后送到DAC中將正弦幅度值的數(shù)字量轉(zhuǎn)換為模擬量,最后通過(guò)濾波器輸出一個(gè)很純凈的正弦波信號(hào)。
2.2.2正弦波產(chǎn)生原理
上式中,M為相位累加器的位數(shù),F(xiàn)TW為頻率步進(jìn)控制字,fclk為時(shí)鐘頻率,輸出信號(hào)頻率主要取決于頻率控制字FTW。當(dāng)FTW增大時(shí),fout可以不斷增加,綜合考慮Nyquist 采樣定理,最高輸出頻率應(yīng)小于fout/2。根據(jù)實(shí)驗(yàn)所得,實(shí)際工作頻率應(yīng)小于fclk/ 3。由于本案例只要求設(shè)計(jì)出最高為1 MHz的信號(hào),根據(jù)D/A及FPAG的速度,可以很容易地滿足設(shè)計(jì)需要。本例中選用32 MHz的CLK時(shí)鐘,在輸出最高1 MHz的信號(hào)時(shí),波形在一個(gè)周期內(nèi)仍有32個(gè)點(diǎn),能夠完整描述出波形。
2.2.3 DDS模塊的FPGA實(shí)現(xiàn)
DDS模塊采用DDS技術(shù)基于FPGA設(shè)計(jì)信號(hào)發(fā)生模塊,由三個(gè)子模塊組成,產(chǎn)生要求的信號(hào)序列。該模塊通過(guò) VHDL 語(yǔ)言直接編程,用于完成頻率控制字的相位累加和截?cái)噍敵觯瑥亩鴮?shí)現(xiàn)波形數(shù)據(jù)的輸出和頻率調(diào)制功能,是整個(gè)系統(tǒng)的核心模塊。由于其采用VHDL語(yǔ)言編寫,所以必須將其轉(zhuǎn)換為圖形符號(hào),加入設(shè)計(jì)頂層圖中,如圖5所示。
子模塊“xianglei”為32位的相位累加器,它由一個(gè)32 bit字長(zhǎng)的二進(jìn)制加法器和一個(gè)固定時(shí)鐘脈沖clk取樣的32 bit相位寄存器組成,32 bit的din[31..0]輸入為相位累加器頻率控制字輸入端,在時(shí)鐘脈沖的控制下,改變頻率控制字,即可改變輸出頻率;子模塊“rom”是一個(gè)采用Quartus 軟件定制的LPM_ROM正弦查詢表,正弦數(shù)據(jù)由Matlab軟件生成,并以mif 的文件格式存儲(chǔ)后加載到ROM模塊中,文件為sin10bit.mif,輸入為10 bit地址,在時(shí)鐘的作用下,輸出存儲(chǔ)的正弦數(shù)據(jù);子模塊“outs”為波形輸出模塊,10 bit地址輸入端與相位累加器模塊輸出相連,10 bit數(shù)據(jù)輸入端與正弦查詢表的ROM輸出相連,sel為波形選擇端,當(dāng)選擇端為0、1、2、3時(shí),在時(shí)鐘的作用下,分別輸出正弦波、方波、三角波和鋸齒波,由于D/A轉(zhuǎn)換模塊采用的是8 bit D/A,因此輸出端僅接qout的前8 bit。
2.3 PLL模塊
該模塊通過(guò)調(diào)用QuartusⅡ內(nèi)嵌的器件函數(shù)實(shí)現(xiàn),QuartusⅡ內(nèi)嵌了許多常用器件的函數(shù),用戶只需要進(jìn)行設(shè)置即可直接調(diào)用,而不需要自己編程,大大提高了系統(tǒng)開發(fā)的效率。本設(shè)計(jì)需要兩個(gè)PLL模塊,一個(gè)用于產(chǎn)生NIOS及片外SDRAM所需的時(shí)鐘,另一個(gè)用于DDS時(shí)鐘,采用32 MHz,其中片外SDRAM 的時(shí)鐘輸入必須比系統(tǒng)的時(shí)鐘滯后63°相位。
2.4 片上RAM模塊
該模塊采用Quartus軟件定制的LPM_ROM模塊,用來(lái)存儲(chǔ)一個(gè)周期的波形數(shù)據(jù)。DDS模塊對(duì)RAM進(jìn)行讀操作,讀取波形數(shù)據(jù),產(chǎn)生幅度量化序列。片上RAM地址位為10 bit,數(shù)據(jù)位為10 bit,空間大小為10 KB,即存儲(chǔ)了1 024個(gè)10 bit數(shù)據(jù)。
2.5 軟件設(shè)計(jì)
片上系統(tǒng)的軟件設(shè)計(jì)利用Altera的SoPC Builder系統(tǒng)開發(fā)工具和QuatrtusII 7.2設(shè)計(jì)軟件,在集成開發(fā)軟件NIOSⅡ IDE中通過(guò)C語(yǔ)言編程實(shí)現(xiàn)。主要是DDS控制、LCD顯示控制接口和鍵盤掃描程序的的編寫。如要產(chǎn)生某個(gè)1 kHz波形,由鍵盤設(shè)置相應(yīng)數(shù)值、波形類別、波形幅值和步進(jìn)幅度,通過(guò)PIO的控制口送給DDS模塊,就可得到相應(yīng)的波形。限于篇幅,軟件設(shè)計(jì)流程圖不再給出。
3 SoPC外圍電路
SoPC的外圍電路是完成人機(jī)接口、信號(hào)處理及驅(qū)動(dòng)負(fù)載等重要功能,主要由RS232 & PS2模塊、D/A轉(zhuǎn)換與幅度控制模塊、LCD1602模塊組成。其中RS232 & PS2模塊由RS232電平轉(zhuǎn)換電路和PS2鍵盤接口電路兩部分組成,用于完成RS232串口通信和PS2接口通信,可實(shí)現(xiàn)與計(jì)算機(jī)串口通信、PS鍵盤擴(kuò)展等功能,該模塊通過(guò)8針接口連接到EDA-SoPC核心板;D/A轉(zhuǎn)換與幅度控制模塊,相當(dāng)于兩路D/A輸出,一路使用D/A芯片完成,即在時(shí)鐘的作用下,將8 bit的數(shù)據(jù)送到輸出端,在D/A模擬輸出相應(yīng)模擬電壓,另一路D/A使用電阻網(wǎng)絡(luò)完成轉(zhuǎn)換后作為輸出信號(hào)的幅度調(diào)節(jié),經(jīng)過(guò)EDA-SoPC核心板的DDS技術(shù)可實(shí)現(xiàn)任意波形、一定頻率、一定幅度范圍的信號(hào)輸出;LCD1602模塊主要提供EDA-SoPC核心板與LCD1602液晶接口及液晶所需的負(fù)壓調(diào)節(jié)及背光控制電路。由于篇幅所限,本文只給出D/A轉(zhuǎn)換及驅(qū)動(dòng)電路,如圖6所示。
信號(hào)D/A轉(zhuǎn)換及驅(qū)動(dòng)電路由DDS輸入的8 bit數(shù)據(jù)通過(guò)DAC908轉(zhuǎn)換為模擬信號(hào),DAC908是一個(gè)8 bit高速、低功耗CMOS DAC芯片,最高轉(zhuǎn)換速率為125 Mb/s,采用單端模擬輸出,再通過(guò)AD8058運(yùn)放驅(qū)動(dòng)后,作為信號(hào)輸出。AD8058是一款低成本、高性能的電壓反饋型放大器,可以在高增益的條件下保持帶寬特性,噪聲和失真性能符合高速放大要求,具有很高的穩(wěn)定性。
4 測(cè)試結(jié)果
在指標(biāo)測(cè)試中,采用了60 MHz數(shù)字示波器固緯GDS1062,其面板上可直接顯示信號(hào)的頻率與幅值。
4.1 輸出波形頻率測(cè)試
在10 Hz~1 MHz范圍內(nèi)以不同的步進(jìn)分別進(jìn)行了正弦波、三角波、方波的頻率測(cè)試。在10 Hz~100Hz范圍內(nèi)步進(jìn)間隔為1 Hz;在100 Hz~1 kHz范圍內(nèi)步進(jìn)間隔為10 Hz;在1 kHz~1 MHz范圍內(nèi)步進(jìn)間隔為1 kHz。測(cè)試結(jié)果表明,輸出信號(hào)頻率穩(wěn)定度優(yōu)于10-5,與頻率設(shè)定值完全一致,波形穩(wěn)定無(wú)失真。
4.2 正弦波帶負(fù)載能力測(cè)試
輸入頻率為f=1 kHz的正弦波,在空載和帶負(fù)載(1 kΩ)情況下,幅值設(shè)定了0.1 V~5 V共10組數(shù)據(jù),測(cè)得負(fù)載變化率最大值為0.22%,輸出波形的幅度與設(shè)定幅度非常接近,系統(tǒng)帶負(fù)載能力很強(qiáng)。
本設(shè)計(jì)完成了任意波形發(fā)生器的軟硬件設(shè)計(jì)和調(diào)試,而基于NIOS II的嵌入式處理SoPC技術(shù),使系統(tǒng)性能得到了極大的提高,系統(tǒng)波形顯示清晰、工作穩(wěn)定。實(shí)驗(yàn)結(jié)果表明,系統(tǒng)指標(biāo)方面遠(yuǎn)遠(yuǎn)超過(guò)了傳統(tǒng)頻率合成技術(shù)所能達(dá)到的水平。
參考文獻(xiàn)
[1] 林丹,肖啟俊,鄭小燕.基于SoPC的任意波形發(fā)生器[D]. 深圳:深圳大學(xué),2007.
[2] 李蘭英.NiosⅡ嵌入式軟核SoPC設(shè)計(jì)原理及應(yīng)用[M]. 北京:北京航空航天大學(xué)出版社,2006.
[3] 江國(guó)強(qiáng).正版SoPC技術(shù)與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2006.
[4] 帥倩,吳國(guó)輝,代冀陽(yáng).基于FPGA的DDS設(shè)計(jì)及實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù),2010,34(13):90-92.