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

4 任意波形發(fā)生器系統(tǒng)軟件的設(shè)計(jì)
整個DDS任意波形發(fā)生器的軟件包括兩個部分:下位機(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)繪制波形的方式,用戶移動鼠標(biāo)可繪制出自己需要的任意波形,系統(tǒng)采集相應(yīng)的波形數(shù)據(jù)點(diǎn),通過串口送入下位機(jī)中。兩種控制界面分別如圖8、圖9所示。

5 試驗(yàn)結(jié)果
圖10(a)為正弦波的輸出波形,頻率為100Hz, 圖10 (b)波形頻率為1MHz。兩個波形的輸出幅度給定值均為-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的高性能信號發(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.





