摘 要: 以Altera" title="Altera">Altera公司的EP1C12芯片為SOPC系統(tǒng)的載體,,介紹了基于嵌入式軟核處理器Nios II的DDS任意波形發(fā)生器" title="波形發(fā)生器">波形發(fā)生器的設(shè)計和實現(xiàn),。
關(guān)鍵詞: 任意波形發(fā)生器 直接數(shù)字頻率合成" title="直接數(shù)字頻率合成">直接數(shù)字頻率合成 可編程片上系統(tǒng)
目前,基于直接數(shù)字頻率合成DDS(Direct Digital Frequency Synthesis) 技術(shù)的任意波形發(fā)生器在設(shè)計上多采用FPGA" title="FPGA">FPGA結(jié)合微處理器的形式,。DDS部分功能由FPGA來實現(xiàn),,微處理器芯片用于完成控制功能,這種結(jié)構(gòu)電路復(fù)雜,,開發(fā)周期長,,系統(tǒng)的軟硬件升級也存在困難。SOPC技術(shù)基于FPGA芯片,,將處理器,、存儲器、I/O等系統(tǒng)設(shè)計需要的模塊集成到一起,,軟硬件可剪裁,,并具備在系統(tǒng)可編程的功能。本文基于SOPC技術(shù),把DDS 模塊和微處理器控制部分集成到單片F(xiàn)PGA芯片內(nèi)部,大大減化了系統(tǒng)電路,提高了集成度,。
1 基于DDS的任意波形發(fā)生器組成原理
DDS技術(shù)建立在采樣定理的基礎(chǔ)上,,其基本原理如圖1所示,主要由相位累加器,、波形ROM,、DAC以及低通濾波器等組成。N位相位累加器在取樣時鐘的控制下與頻率控制字K所決定的相位增量相加,;相位累加器的高位輸出作為波形ROM的地址,,實現(xiàn)波形相位到幅值的轉(zhuǎn)換;波形數(shù)據(jù)經(jīng)DAC轉(zhuǎn)換成模擬量,,通過濾波器輸出相對平滑的波形,。輸出頻率fout與時鐘頻率fclk、相位累加器的位數(shù)N及頻率控制字K的關(guān)系為fout=K×fclk/2N,。
用DDS實現(xiàn)任意波形發(fā)生器的途徑是把存放波形量化表的ROM換成可以改寫的RAM,,利用上位機生成所需波形的數(shù)據(jù)來改變存放在波形RAM中的數(shù)據(jù),再由DDS系統(tǒng)將波形合成出來,就可以產(chǎn)生出所需的任意波形,。
2 系統(tǒng)硬件電路的設(shè)計
本系統(tǒng)的功能要求是:接收從上位機傳來的控制信息和數(shù)據(jù)(包括給定的波形,、頻率,、初相位和幅值信息),然后經(jīng)DDS 輸出相應(yīng)參數(shù)的波形,。系統(tǒng)通過這種方式可輸出規(guī)則波形及任意波,。在輸出波形的同時,可以從上位機對波形參數(shù)進(jìn)行實時調(diào)整,。頻率調(diào)制的范圍是0.1Hz~2.5MHz,,調(diào)頻步長為0.1Hz。輸出幅度范圍:-10V~+10V,。
根據(jù)功能將系統(tǒng)分為控制部分,、波形產(chǎn)生部分以及通信部分??刂撇糠止δ苤饕汕度隖PGA內(nèi)部的軟核處理器Nios II來完成,,同時在FPGA剩余的邏輯單元上設(shè)計DDS主通道部分,實現(xiàn)波形生成,。Nios II的UART IP實現(xiàn)與上位機的波形數(shù)據(jù)傳輸,。
系統(tǒng)硬件電路結(jié)構(gòu)框圖如圖2所示,選用了Altera公司Cyclone系列FPGA,,型號為EP1C12,,有高達(dá)20 060個邏輯單元和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è)計中,采用核心板加底板的設(shè)計方案,,這種模塊化的設(shè)計為以后板子的安裝,、調(diào)試與檢修等提供了方便。
3 FPGA芯片中Nios II系統(tǒng)硬件部分的構(gòu)建
FPGA芯片總體設(shè)計如圖4所示,。根據(jù)所設(shè)計的任意波形發(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個LE(邏輯單元),。
(2)PIO接口,。系統(tǒng)中為Nios II處理器共設(shè)計了三個PIO接口:PIO_fkey、PIO_pkey,、PIO_sel,。其中,PIO_fkey作為Nios II處理器從上位機獲得的頻率控制字到DDS的接口,,設(shè)計為28位,;PIO_pkey為相位控制字接口,,設(shè)計為10位,;3位的 PIO_sel接口作為多路選擇器的控制信號用。
(3)顯示與鍵盤,。LCD控制器使用Nios II提供的IP Core,;鍵盤接口使用基于Alvon總線的自定義接口。
另外,,還需要添加SDRAM控制器,、FLASH控制器、Avalon三態(tài)總線橋,、JTAG UART core(提供給主機通過FPGA上的JTAG管腳訪問芯片的功能),、UART接口控制器(使用時,在彈出的對話框中需設(shè)置好波特率,、數(shù)據(jù)位等參數(shù)),、timer_0計時器、system ID和用戶邏輯接口(實現(xiàn)Nios II與片上RAM的通信),。
在FPGA的剩余LE上,,還需用Verilog語言編程實現(xiàn)DDS部分的電路。DDS模塊在傳統(tǒng)的DDS結(jié)構(gòu)之上進(jìn)行了改進(jìn),,使用了雙端口RAM以達(dá)到波形的過零切換,,使得任意波形發(fā)生器可以使用在一些要求苛刻的場合。改進(jìn)后的DDS模塊包含相位累加器,、波形存儲RAM 和D/A等幾個部分,。DDS用Verilog HDL實現(xiàn)之后的仿真結(jié)果如圖5所示。
整個SOPC系統(tǒng)的片上硬件構(gòu)建完成后,,在Quartus II中對頂層設(shè)計進(jìn)行編譯,,編譯的結(jié)果如圖6所示,從使用情況可以看出選用的FPGA芯片是非常合理的,,既滿足了當(dāng)前的需要,,又有一定的冗余,,為系統(tǒng)以后的升級提供了條件。
4 任意波形發(fā)生器系統(tǒng)軟件的設(shè)計
整個DDS任意波形發(fā)生器的軟件包括兩個部分:下位機的運行于Nios II系統(tǒng)上基于功能實現(xiàn)的軟件,;上位機運行的基于儀器操作的人機界面的軟件,。
下位機的軟件開發(fā)使用Altera公司的Nios II IDE集成開發(fā)環(huán)境。Nios II IDE是Nios II系列嵌入式處理器的主要軟件開發(fā)工具,。用戶可以在Nios II IDE中完成所有的軟件開發(fā)任務(wù),,如編輯、編譯,、下載,、調(diào)試和閃存編程。
下位機程序流程如圖7所示,。上電以后,,進(jìn)行系統(tǒng)各部分的初始化,然后等待從上位機串口發(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ū)的指針,,同時如果發(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)的代碼,,完成來自上位機的命令,。
上位機軟件的開發(fā)環(huán)境采用NI(美國國家儀器公司)的LabVIEW 8.0。根據(jù)上位機所要完成的任務(wù),,采用LabVIEW 8.0設(shè)計了兩種控制界面,,一種用于以公式形式的波形輸入,用戶直接輸入波形公式,系統(tǒng)采集相應(yīng)的波形數(shù)據(jù)點,,通過串口送入下位機,,同時可以在控制面板上進(jìn)行波形參數(shù)的調(diào)節(jié)。使用公式輸出用戶需要的波形,,雖然波形非常精確,,但卻不能囊括現(xiàn)實世界中遇到的一些無法用公式來表達(dá)的波形,為彌補使用公式輸出的缺憾,,設(shè)計了另一種采用鼠標(biāo)繪制波形的方式,,用戶移動鼠標(biāo)可繪制出自己需要的任意波形,系統(tǒng)采集相應(yīng)的波形數(shù)據(jù)點,,通過串口送入下位機中,。兩種控制界面分別如圖8、圖9所示,。
5 試驗結(jié)果
圖10(a)為正弦波的輸出波形,,頻率為100Hz, 圖10 (b)波形頻率為1MHz,。兩個波形的輸出幅度給定值均為-1V~+1V,。試驗表明,,輸出正弦波的幅度誤差很小,,基本上在±1.5%左右。圖10(c),、圖10(d)分別為利用公式輸入面板和鼠標(biāo)輸入面板得到的波形,。
試驗結(jié)果表明,對于從上位機輸入的公式形式的波形,,系統(tǒng)可以進(jìn)行精確的輸出,。利用鼠標(biāo)輸入面板得到的任意波形輸出失真較小,波形質(zhì)量較好,。
本文采用SOPC技術(shù)將任意波形發(fā)生器的DDS模塊與控制模塊集成到單片F(xiàn)PGA芯片中,。結(jié)果表明,設(shè)計的任意波形發(fā)生器實現(xiàn)了系統(tǒng)所要求的功能,,技術(shù)指標(biāo)也達(dá)到了要求,。因此,在單片F(xiàn)PGA上實現(xiàn)任意波形發(fā)生器是可行的,。與傳統(tǒng)的采用控制器與FPGA結(jié)合的設(shè)計方法相比,,它有效地簡化了系統(tǒng)電路結(jié)構(gòu),提高了集成度,。
參考文獻(xiàn)
[1] 潘松,,黃繼業(yè),曾毓.SOPC技術(shù)實用教程[M].北京:清華大學(xué)出版社,2005:1-328.
[2] 吳繼華,,王城. Altera FPGA/CPLD 設(shè)計(基礎(chǔ)篇)[M].北京:人民郵電出版社,,2005:1-236.
[3] 張福貴,姚振東.基于DDS的高性能信號發(fā)生器的實現(xiàn)[J].成都信息工程學(xué)院學(xué)報,,2006,,21(1):12-17.
[4] 崔建鵬,趙敏,,江帆.采用DDS 技術(shù)實現(xiàn)的虛擬任意波形發(fā)生器[J].計算機測量與控制,,2003,11(7):533-555.