《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 基于Nios II與LabVIEW的任意波形發(fā)生器實(shí)現(xiàn)
基于Nios II與LabVIEW的任意波形發(fā)生器實(shí)現(xiàn)
林青松,王應(yīng)麗
摘要: 以Altera公司的EP1C12芯片為SOPC系統(tǒng)的載體,介紹了基于嵌入式軟核處理器Nios II的DDS任意波形發(fā)生器的設(shè)計(jì)和實(shí)現(xiàn)。
Abstract:
Key words :

    摘 要:Altera" title="Altera">Altera公司的EP1C12芯片為SOPC系統(tǒng)的載體,介紹了基于嵌入式軟核處理器Nios II的DDS任意波形發(fā)生器" title="波形發(fā)生器">波形發(fā)生器的設(shè)計(jì)和實(shí)現(xiàn)。
    關(guān)鍵詞: 任意波形發(fā)生器  直接數(shù)字頻率合成" title="直接數(shù)字頻率合成">直接數(shù)字頻率合成  可編程片上系統(tǒng)

 

    目前,基于直接數(shù)字頻率合成DDS(Direct Digital Frequency Synthesis) 技術(shù)的任意波形發(fā)生器在設(shè)計(jì)上多采用FPGA" title="FPGA">FPGA結(jié)合微處理器的形式。DDS部分功能由FPGA來實(shí)現(xiàn),微處理器芯片用于完成控制功能,這種結(jié)構(gòu)電路復(fù)雜,開發(fā)周期長,系統(tǒng)的軟硬件升級也存在困難。SOPC技術(shù)基于FPGA芯片,將處理器、存儲(chǔ)器、I/O等系統(tǒng)設(shè)計(jì)需要的模塊集成到一起,軟硬件可剪裁,并具備在系統(tǒng)可編程的功能。本文基于SOPC技術(shù),把DDS 模塊和微處理器控制部分集成到單片F(xiàn)PGA芯片內(nèi)部,大大減化了系統(tǒng)電路,提高了集成度。
1 基于DDS的任意波形發(fā)生器組成原理
    DDS技術(shù)建立在采樣定理的基礎(chǔ)上,其基本原理如圖1所示,主要由相位累加器、波形ROM、DAC以及低通濾波器等組成。N位相位累加器在取樣時(shí)鐘的控制下與頻率控制字K所決定的相位增量相加;相位累加器的高位輸出作為波形ROM的地址,實(shí)現(xiàn)波形相位到幅值的轉(zhuǎn)換;波形數(shù)據(jù)經(jīng)DAC轉(zhuǎn)換成模擬量,通過濾波器輸出相對平滑的波形。輸出頻率fout與時(shí)鐘頻率fclk、相位累加器的位數(shù)N及頻率控制字K的關(guān)系為fout=K×fclk/2N。

 

    用DDS實(shí)現(xiàn)任意波形發(fā)生器的途徑是把存放波形量化表的ROM換成可以改寫的RAM,利用上位機(jī)生成所需波形的數(shù)據(jù)來改變存放在波形RAM中的數(shù)據(jù),再由DDS系統(tǒng)將波形合成出來,就可以產(chǎn)生出所需的任意波形。
2 系統(tǒng)硬件電路的設(shè)計(jì)
    本系統(tǒng)的功能要求是:接收從上位機(jī)傳來的控制信息和數(shù)據(jù)(包括給定的波形、頻率、初相位和幅值信息),然后經(jīng)DDS 輸出相應(yīng)參數(shù)的波形。系統(tǒng)通過這種方式可輸出規(guī)則波形及任意波。在輸出波形的同時(shí),可以從上位機(jī)對波形參數(shù)進(jìn)行實(shí)時(shí)調(diào)整。頻率調(diào)制的范圍是0.1Hz~2.5MHz,調(diào)頻步長為0.1Hz。輸出幅度范圍:-10V~+10V。
    根據(jù)功能將系統(tǒng)分為控制部分、波形產(chǎn)生部分以及通信部分??刂撇糠止δ苤饕汕度隖PGA內(nèi)部的軟核處理器Nios II來完成,同時(shí)在FPGA剩余的邏輯單元上設(shè)計(jì)DDS主通道部分,實(shí)現(xiàn)波形生成。Nios II的UART IP實(shí)現(xiàn)與上位機(jī)的波形數(shù)據(jù)傳輸。
    系統(tǒng)硬件電路結(jié)構(gòu)框圖如圖2所示,選用了Altera公司Cyclone系列FPGA,型號(hào)為EP1C12,有高達(dá)20 060個(gè)邏輯單元和288Kbit的RAM。它提供了全功能的鎖相環(huán)(PLL),Altera的Nios II嵌入式處理器的IP資源可以用于Cyclone系列FPGA的開發(fā)。Nios II系統(tǒng)通過串口與其他RS232設(shè)備相連,要遵循RS232C標(biāo)準(zhǔn)中定義的電平規(guī)范,不能直接使用FPGA I/O端口上的LVTTL(一般為3.3V)電平,需要有電平轉(zhuǎn)換芯片來完成從LVTTL電平到RS232C電平的轉(zhuǎn)換。電平轉(zhuǎn)換芯片采用了SP3232ECA芯片。D/A轉(zhuǎn)換部分電路如圖3所示,由AD768芯片結(jié)合起緩沖作用的AD811來完成。為了達(dá)到最終±10V的輸出電壓,在AD811的輸出端添加了功放芯片LM318D進(jìn)行電壓放大。

 

 

    在PCB板的設(shè)計(jì)中,采用核心板加底板的設(shè)計(jì)方案,這種模塊化的設(shè)計(jì)為以后板子的安裝、調(diào)試與檢修等提供了方便。

3 FPGA芯片中Nios II系統(tǒng)硬件部分的構(gòu)建
    FPGA芯片總體設(shè)計(jì)如圖4所示。根據(jù)所設(shè)計(jì)的任意波形發(fā)生器的要求,在Quartus II的SOPC Builder中構(gòu)建Nios II系統(tǒng)。該系統(tǒng)包括以下組件:


    (1)Nios II標(biāo)準(zhǔn)型內(nèi)核。不選用硬件乘法器,指令緩存為4KB,選用level 1的調(diào)試模式。這種內(nèi)核約占1 200個(gè)LE(邏輯單元)。
    (2)PIO接口。系統(tǒng)中為Nios II處理器共設(shè)計(jì)了三個(gè)PIO接口:PIO_fkey、PIO_pkey、PIO_sel。其中,PIO_fkey作為Nios II處理器從上位機(jī)獲得的頻率控制字到DDS的接口,設(shè)計(jì)為28位;PIO_pkey為相位控制字接口,設(shè)計(jì)為10位;3位的 PIO_sel接口作為多路選擇器的控制信號(hào)用。
    (3)顯示與鍵盤。LCD控制器使用Nios II提供的IP Core;鍵盤接口使用基于Alvon總線的自定義接口。
    另外,還需要添加SDRAM控制器、FLASH控制器、Avalon三態(tài)總線橋、JTAG UART core(提供給主機(jī)通過FPGA上的JTAG管腳訪問芯片的功能)、UART接口控制器(使用時(shí),在彈出的對話框中需設(shè)置好波特率、數(shù)據(jù)位等參數(shù))、timer_0計(jì)時(shí)器、system ID和用戶邏輯接口(實(shí)現(xiàn)Nios II與片上RAM的通信)。
    在FPGA的剩余LE上,還需用Verilog語言編程實(shí)現(xiàn)DDS部分的電路。DDS模塊在傳統(tǒng)的DDS結(jié)構(gòu)之上進(jìn)行了改進(jìn),使用了雙端口RAM以達(dá)到波形的過零切換,使得任意波形發(fā)生器可以使用在一些要求苛刻的場合。改進(jìn)后的DDS模塊包含相位累加器、波形存儲(chǔ)RAM 和D/A等幾個(gè)部分。DDS用Verilog HDL實(shí)現(xiàn)之后的仿真結(jié)果如圖5所示。


    整個(gè)SOPC系統(tǒng)的片上硬件構(gòu)建完成后,在Quartus II中對頂層設(shè)計(jì)進(jìn)行編譯,編譯的結(jié)果如圖6所示,從使用情況可以看出選用的FPGA芯片是非常合理的,既滿足了當(dāng)前的需要,又有一定的冗余,為系統(tǒng)以后的升級提供了條件。

 

4 任意波形發(fā)生器系統(tǒng)軟件的設(shè)計(jì)
    整個(gè)DDS任意波形發(fā)生器的軟件包括兩個(gè)部分:下位機(jī)的運(yùn)行于Nios II系統(tǒng)上基于功能實(shí)現(xiàn)的軟件;上位機(jī)運(yùn)行的基于儀器操作的人機(jī)界面的軟件。
    下位機(jī)的軟件開發(fā)使用Altera公司的Nios II IDE集成開發(fā)環(huán)境。Nios II IDE是Nios II系列嵌入式處理器的主要軟件開發(fā)工具。用戶可以在Nios II IDE中完成所有的軟件開發(fā)任務(wù),如編輯、編譯、下載、調(diào)試和閃存編程。

    下位機(jī)程序流程如圖7所示。上電以后,進(jìn)行系統(tǒng)各部分的初始化,然后等待從上位機(jī)串口發(fā)來的信息,Nios II處理器在收到消息之后,產(chǎn)生串口中斷,將收到的數(shù)據(jù)依次放入緩沖區(qū),之后要對收到的數(shù)據(jù)根據(jù)通信協(xié)議進(jìn)行數(shù)據(jù)的處理和解釋工作,并根據(jù)發(fā)來的命令調(diào)用相應(yīng)的功能子程序,最終將數(shù)據(jù)送往D/A進(jìn)行轉(zhuǎn)換。串口中斷程序主要完成串口的中斷響應(yīng),將串口接收寄存器的數(shù)據(jù)放入接收緩沖區(qū),并修改緩沖區(qū)的指針,同時(shí)如果發(fā)送緩沖區(qū)中有待發(fā)送數(shù)據(jù),而發(fā)送寄存器又為空的話,就發(fā)送緩沖區(qū)中數(shù)據(jù)。串口處理和解釋程序主要根據(jù)協(xié)議內(nèi)容對緩沖區(qū)中接收過來的數(shù)據(jù)進(jìn)行判斷,如果是起始碼,則將其后的數(shù)據(jù)認(rèn)為是命令碼,命令碼后的數(shù)據(jù)為命令參數(shù),然后再根據(jù)命令碼的具體形式,依據(jù)制定的協(xié)議執(zhí)行相應(yīng)的代碼,完成來自上位機(jī)的命令。


    上位機(jī)軟件的開發(fā)環(huán)境采用NI(美國國家儀器公司)的LabVIEW 8.0。根據(jù)上位機(jī)所要完成的任務(wù),采用LabVIEW 8.0設(shè)計(jì)了兩種控制界面,一種用于以公式形式的波形輸入,用戶直接輸入波形公式,系統(tǒng)采集相應(yīng)的波形數(shù)據(jù)點(diǎn),通過串口送入下位機(jī),同時(shí)可以在控制面板上進(jìn)行波形參數(shù)的調(diào)節(jié)。使用公式輸出用戶需要的波形,雖然波形非常精確,但卻不能囊括現(xiàn)實(shí)世界中遇到的一些無法用公式來表達(dá)的波形,為彌補(bǔ)使用公式輸出的缺憾,設(shè)計(jì)了另一種采用鼠標(biāo)繪制波形的方式,用戶移動(dòng)鼠標(biāo)可繪制出自己需要的任意波形,系統(tǒng)采集相應(yīng)的波形數(shù)據(jù)點(diǎn),通過串口送入下位機(jī)中。兩種控制界面分別如圖8、圖9所示。

 

5 試驗(yàn)結(jié)果
    圖10(a)為正弦波的輸出波形,頻率為100Hz, 圖10 (b)波形頻率為1MHz。兩個(gè)波形的輸出幅度給定值均為-1V~+1V。試驗(yàn)表明,輸出正弦波的幅度誤差很小,基本上在±1.5%左右。圖10(c)、圖10(d)分別為利用公式輸入面板和鼠標(biāo)輸入面板得到的波形。


    試驗(yàn)結(jié)果表明,對于從上位機(jī)輸入的公式形式的波形,系統(tǒng)可以進(jìn)行精確的輸出。利用鼠標(biāo)輸入面板得到的任意波形輸出失真較小,波形質(zhì)量較好。

    本文采用SOPC技術(shù)將任意波形發(fā)生器的DDS模塊與控制模塊集成到單片F(xiàn)PGA芯片中。結(jié)果表明,設(shè)計(jì)的任意波形發(fā)生器實(shí)現(xiàn)了系統(tǒng)所要求的功能,技術(shù)指標(biāo)也達(dá)到了要求。因此,在單片F(xiàn)PGA上實(shí)現(xiàn)任意波形發(fā)生器是可行的。與傳統(tǒng)的采用控制器與FPGA結(jié)合的設(shè)計(jì)方法相比,它有效地簡化了系統(tǒng)電路結(jié)構(gòu),提高了集成度。
參考文獻(xiàn)
[1] 潘松,黃繼業(yè),曾毓.SOPC技術(shù)實(shí)用教程[M].北京:清華大學(xué)出版社,2005:1-328.
[2] 吳繼華,王城. Altera FPGA/CPLD 設(shè)計(jì)(基礎(chǔ)篇)[M].北京:人民郵電出版社,2005:1-236.
[3] 張福貴,姚振東.基于DDS的高性能信號(hào)發(fā)生器的實(shí)現(xiàn)[J].成都信息工程學(xué)院學(xué)報(bào),2006,21(1):12-17.
[4] 崔建鵬,趙敏,江帆.采用DDS 技術(shù)實(shí)現(xiàn)的虛擬任意波形發(fā)生器[J].計(jì)算機(jī)測量與控制,2003,11(7):533-555.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。