摘 要: 以Altera公司的EP1C12芯片為SOPC系統(tǒng)的載體,介紹了基于嵌入式軟核處理器Nios II的DDS任意波形發(fā)生器的設(shè)計和實現(xiàn)。
關(guān)鍵詞: 任意波形發(fā)生器 直接數(shù)字頻率合成 可編程片上系統(tǒng)
目前,基于直接數(shù)字頻率合成DDS(Direct Digital Frequency Synthesis) 技術(shù)的任意波形發(fā)生器在設(shè)計上多采用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ù)進行實時調(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,有高達20 060個邏輯單元和288Kbit的RAM。它提供了全功能的鎖相環(huán)(PLL),Altera的Nios II嵌入式處理器的IP資源可以用于Cyclone系列FPGA的開發(fā)。Nios II系統(tǒng)通過串口與其他RS232設(shè)備相連,要遵循RS232C標準中定義的電平規(guī)范,不能直接使用FPGA I/O端口上的LVTTL(一般為3.3V)電平,需要有電平轉(zhuǎn)換芯片來完成從LVTTL電平到RS232C電平的轉(zhuǎn)換。電平轉(zhuǎn)換芯片采用了SP3232ECA芯片。D/A轉(zhuǎn)換部分電路如圖3所示,由AD768芯片結(jié)合起緩沖作用的AD811來完成。為了達到最終±10V的輸出電壓,在AD811的輸出端添加了功放芯片LM318D進行電壓放大。


在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標準型內(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)之上進行了改進,使用了雙端口RAM以達到波形的過零切換,使得任意波形發(fā)生器可以使用在一些要求苛刻的場合。改進后的DDS模塊包含相位累加器、波形存儲RAM 和D/A等幾個部分。DDS用Verilog HDL實現(xiàn)之后的仿真結(jié)果如圖5所示。





