一、基于FPGA的DDS信號(hào)發(fā)生器設(shè)計(jì)
引 言
信號(hào)發(fā)生器又稱(chēng)信號(hào)源或振蕩器,在生產(chǎn)實(shí)踐和科技領(lǐng)域中有著廣泛的應(yīng)用。能夠產(chǎn)生多種波形,如三角波、鋸齒波、矩形波(含方波)、正弦波的電路被稱(chēng)為函數(shù)信號(hào)發(fā)生器。函數(shù)信號(hào)發(fā)生器的實(shí)現(xiàn)方法通常是采用分立元件或單片專(zhuān)用集成芯片,但其頻率不高,穩(wěn)定性較差,且不易調(diào)試,開(kāi)發(fā)和使用上都受到較大限制。隨著可編程邏輯器件(FPGA)的不斷發(fā)展,直接頻率合成(DDS)技術(shù)應(yīng)用的愈加成熟,利用DDS原理在FP-GA平臺(tái)上開(kāi)發(fā)高性能的多種波形信號(hào)發(fā)生器與基于DDS芯片的信號(hào)發(fā)生器相比,成本更低,操作更加靈活,而且還能根據(jù)要求在線(xiàn)更新配置,系統(tǒng)開(kāi)發(fā)趨于軟件化、自定義化。本文研究了基于FPGA的DDS信號(hào)發(fā)生器設(shè)計(jì),實(shí)現(xiàn)了滿(mǎn)足預(yù)定指標(biāo)的多波形輸出。
1 DDS基本原理
DDS建立在采樣定理基礎(chǔ)上,首先對(duì)需要產(chǎn)生的波形進(jìn)行采樣,將采樣值數(shù)字化后存入存儲(chǔ)器作為查找表,然后通過(guò)查表讀取數(shù)據(jù),再經(jīng)D/A轉(zhuǎn)換器轉(zhuǎn)換為模擬量,將保存的波形重新合成出來(lái)。DDS基本原理框圖如圖1所示。
除了濾波器(LPF)之外,DDS系統(tǒng)都是通過(guò)數(shù)字集成電路實(shí)現(xiàn)的,易于集成和小型化。系統(tǒng)的參考時(shí)鐘源通常是一個(gè)具有高穩(wěn)定性的晶體振蕩器,為各組成部分提供同步時(shí)鐘。頻率控制字(FSW)實(shí)際上是相位增量值(二進(jìn)制編碼)作為相位累加器的累加值。相位累加器在每一個(gè)參考時(shí)鐘脈沖輸入時(shí),累加一次頻率字,其輸出相應(yīng)增加一個(gè)步長(zhǎng)的相位增量。由于相位累加器的輸出連接在波形存儲(chǔ)器(ROM)的地址線(xiàn)上,因此其輸出的改變就相當(dāng)于查表。這樣就可以通過(guò)查表把存儲(chǔ)在波形存儲(chǔ)器內(nèi)的波形抽樣值(二進(jìn)制編碼)查找出來(lái)。ROM的輸出送到D/A轉(zhuǎn)換器,經(jīng)D/A轉(zhuǎn)換器轉(zhuǎn)換成模擬量輸出。
2 系統(tǒng)總體方案設(shè)計(jì)
該設(shè)計(jì)以FPGA開(kāi)發(fā)平臺(tái)為核心,將各波形的幅值/相位量化數(shù)據(jù)存儲(chǔ)在ROM內(nèi),按照設(shè)定頻率,以相應(yīng)頻率控制字k為步進(jìn),對(duì)相位進(jìn)行累加,以累加相位值作為地址碼讀取存放在存儲(chǔ)器內(nèi)的波形數(shù)據(jù),經(jīng)D/A轉(zhuǎn)換和幅度控制、濾波即可得到所需波形。波形發(fā)生器采取全數(shù)字化結(jié)構(gòu),用硬件描述語(yǔ)言Verilog設(shè)計(jì)實(shí)現(xiàn)其頻率可調(diào)可顯示。經(jīng)開(kāi)發(fā)平臺(tái)的D/A轉(zhuǎn)化和外加濾波整形處理波形數(shù)據(jù),理論上能夠?qū)崿F(xiàn)任意頻率的各種波形。系統(tǒng)總體設(shè)計(jì)方框圖如圖2所示。
系統(tǒng)按工作原理和控制對(duì)象的先后分為三個(gè)功能單元:波形數(shù)據(jù)產(chǎn)生單元、D/A轉(zhuǎn)化單元和濾波整形處理單元。波形數(shù)據(jù)產(chǎn)生單元除具有波形數(shù)據(jù)輸出功能外,還有頻率設(shè)置和輸出顯示功能。波形信號(hào)頻率可設(shè)置范圍為0~99 999 999 Hz,系統(tǒng)時(shí)鐘采用外接晶體振蕩器40 MHz時(shí)鐘脈沖,頻率穩(wěn)定度優(yōu)于10-4輸出采用8位LED數(shù)碼循環(huán)動(dòng)態(tài)顯示。D/A轉(zhuǎn)換單元負(fù)責(zé)對(duì)從ROM表里讀取的波形數(shù)據(jù)進(jìn)行D/A轉(zhuǎn)換,對(duì)D/A轉(zhuǎn)換器件的選用從建立時(shí)間、位數(shù)、轉(zhuǎn)化誤差和轉(zhuǎn)換時(shí)間等四個(gè)方面考慮。濾波整形處理單元完成對(duì)D/A轉(zhuǎn)換的模擬波進(jìn)行平滑,濾除雜波和高頻干擾,補(bǔ)償頻帶損耗和幅度損失,最終輸出低誤差、高質(zhì)量、滿(mǎn)足題設(shè)要求的波形。
3 系統(tǒng)功能單元實(shí)現(xiàn)
3.1 波形數(shù)據(jù)產(chǎn)生單元
波形數(shù)據(jù)產(chǎn)生單元是信號(hào)發(fā)生器設(shè)計(jì)的主體。在此,采用DDS原理設(shè)計(jì)的信號(hào)發(fā)生器能完成三種波形(正弦、三角和方波)數(shù)據(jù)的產(chǎn)生,而且根據(jù)控制信號(hào)還可完成選定波形指定頻率的輸出。波形數(shù)據(jù)產(chǎn)生單元按功能實(shí)現(xiàn)上的相互聯(lián)系可劃分為頻率控制字生成模塊、相位累加器模塊和波形數(shù)據(jù)ROM表模塊,如圖3所示。其中,頻率控制字生成模塊可根據(jù)輸入產(chǎn)生指定頻率字,同時(shí)顯示輸入頻率數(shù)字。相位累加器模塊負(fù)責(zé)對(duì)所選波形的相位尋址,以頻率控制字作為步長(zhǎng)反復(fù)進(jìn)行累加運(yùn)算。波形數(shù)據(jù)ROM表模塊存放三種波形的幅值/相位量化值,通過(guò)地址選擇相應(yīng)波形的數(shù)據(jù)。
系統(tǒng)輸入控制使用4×4鍵盤(pán).鍵盤(pán)主要按鍵功能介紹如下:
“0~9”:數(shù)字鍵,設(shè)定信號(hào)頻率;
“確定”:用于對(duì)波形信號(hào)設(shè)置的確認(rèn),波形信號(hào)的設(shè)置必須“確定”后才有效;
“←”:刪除已輸入信號(hào)頻率數(shù)字的最后一位,用于修改設(shè)置的頻率;
“清零”:將頻率數(shù)字快速全部清零;
“↑”:步進(jìn)增大控制;
“↓”:步進(jìn)減小控制。
設(shè)定頻率輸出范圍為1 kHz~10 MHz,頻率步進(jìn)為50 Hz。系統(tǒng)輸出采用8個(gè)LED數(shù)碼管,以?huà)呙璺绞斤@示(單位為Hz)頻率數(shù)字。根據(jù)DDS原理,以步進(jìn)值50Hz作為頻率控制字1,那么最大值10 MHz對(duì)應(yīng)的頻率控制字為200 000,用18位二進(jìn)制數(shù)值就可以表示(218》200 000)。從抽樣值恢復(fù)出原波形數(shù)據(jù),理論上每個(gè)周期波形數(shù)據(jù)至少抽取2個(gè)點(diǎn),考慮到實(shí)際應(yīng)用時(shí)受頻率損耗、線(xiàn)間串?dāng)_等因素的限制,該設(shè)計(jì)采用22 b的頻率控制字和相位累加器,4 Kb的8位波形ROM表,取相位累加器輸出的高12 b尋址波形數(shù)據(jù),三種波形按幅值/相位對(duì)應(yīng)關(guān)系分別存儲(chǔ)782個(gè)數(shù)據(jù)。故各波形數(shù)據(jù)單位周期有800 768(782×210)個(gè)相位狀態(tài),完全滿(mǎn)足任一波形在單位周期內(nèi)取4個(gè)幅值點(diǎn)的要求,可保證即使輸出最大頻率的波形仍能達(dá)到較好的效果。波形選擇功能由兩位開(kāi)關(guān)組合實(shí)現(xiàn),共有四種狀態(tài),其中三組用來(lái)表征不同的波型,另一組留作擴(kuò)展波形用。
3.2 D/A轉(zhuǎn)換單元
數(shù)/模轉(zhuǎn)換單元是繼波形數(shù)據(jù)產(chǎn)生單元之后,將數(shù)字量形式的波形幅值轉(zhuǎn)換成所要求的合成頻率的模擬量形式信號(hào)。DAC輸出信號(hào)實(shí)際上是階梯模擬信號(hào),需在數(shù)/模轉(zhuǎn)換后利用低通濾波器對(duì)波形進(jìn)行平滑處理。在此,采用ADI公司生產(chǎn)的單片雙8位CMOS乘法數(shù)/模轉(zhuǎn)換器AD7528,線(xiàn)性度達(dá)到1/2,轉(zhuǎn)換時(shí)間達(dá)到納秒級(jí),可以很準(zhǔn)確地進(jìn)行10 MHz信號(hào)的量化運(yùn)算。
3.3 濾波處理單元
濾波器是一種能通過(guò)有用頻率信號(hào)而同時(shí)抑制(或衰減)無(wú)用頻率信號(hào)的電子裝置。由于運(yùn)算放大器具有近似理想的特性,且可以省去電感,得到接近理論預(yù)測(cè)的頻率響應(yīng)特性。構(gòu)成有源濾波電路后還具有一定的電壓放大和緩沖作用,并能減小體積。綜合考慮,系統(tǒng)采用運(yùn)算放大器SL560構(gòu)成二階低通濾波器。
4 系統(tǒng)功能仿真和驗(yàn)證分析
4.1 頻率控制字生成模塊仿真與分析
頻率控制字的生成直接影響著波形數(shù)據(jù)的尋址,該模塊負(fù)責(zé)快速記錄并實(shí)時(shí)顯示輸入的頻率數(shù)字,準(zhǔn)確計(jì)算得到相應(yīng)的頻率控制字。系統(tǒng)鍵盤(pán)為高速動(dòng)態(tài)掃描(頻率為200Hz),采用狀態(tài)機(jī)設(shè)計(jì),設(shè)置了按鍵去抖動(dòng)功能。在FPGA開(kāi)發(fā)平臺(tái)對(duì)該模塊進(jìn)行功能驗(yàn)證,整體無(wú)誤操作產(chǎn)生,幾乎沒(méi)有時(shí)滯效應(yīng),按鍵的防抖動(dòng)效果也良好,達(dá)到了預(yù)期的目的。
4.2 相位累加器模塊仿真與分析
相位累加器用于實(shí)現(xiàn)相位累加,并存儲(chǔ)其累加結(jié)果。當(dāng)前,相位累加器的值和時(shí)鐘周期到來(lái)后的相位累加器的值相差k(k為頻率控制字)。該模塊的仿真波形如圖4所示。
4.3 實(shí)驗(yàn)波形觀(guān)測(cè)與誤差分析
信號(hào)發(fā)生器功能驗(yàn)證無(wú)誤,用示波器觀(guān)測(cè)實(shí)驗(yàn)波形如圖5所示。
檢測(cè)輸入頻率為0~10 MHz時(shí),波形形狀均良好,未出現(xiàn)明顯失真。計(jì)算理論誤差為0.095%,在實(shí)測(cè)中發(fā)現(xiàn),波形數(shù)字的誤差相對(duì)很小,不足0.1 %。由于濾波整形電路存在高頻耦合通路,產(chǎn)生線(xiàn)間串?dāng)_,對(duì)濾波效果形成了不利影響,因此濾波器設(shè)計(jì)必須滿(mǎn)足頻帶寬,截止特性好,抗干擾性強(qiáng)等特性。
5 結(jié) 語(yǔ)
介紹了以直接數(shù)字頻率合成技術(shù)(DDS)為基礎(chǔ)的波形信號(hào)發(fā)生器工作原理和設(shè)計(jì)過(guò)程,并在FPGA實(shí)驗(yàn)平臺(tái)上設(shè)計(jì)實(shí)現(xiàn)了滿(mǎn)足各功能指標(biāo)的信號(hào)發(fā)生器。系統(tǒng)硬件除需外加濾波整形電路外,其余部分均可在FPGA開(kāi)發(fā)實(shí)驗(yàn)系統(tǒng)KH-310上集成開(kāi)發(fā),系統(tǒng)軟件可在Quartus下編寫(xiě)代碼,實(shí)現(xiàn)數(shù)據(jù)信息處理和控制操作等功能。整體開(kāi)發(fā)環(huán)境成熟,應(yīng)用工具齊全,隨著FPGA性?xún)r(jià)比的不斷提高,基于FPGA平臺(tái)開(kāi)發(fā)信號(hào)發(fā)生器將逐步走向標(biāo)準(zhǔn)化、規(guī)?;?a target="_blank">產(chǎn)品化。
現(xiàn)代電子和通信技術(shù)的發(fā)展,對(duì)信號(hào)發(fā)生器提出了更高、更嚴(yán)格的要求。除了對(duì)信號(hào)頻率范圍、帶寬和頻率分辨率的嚴(yán)格限制外,對(duì)信號(hào)的波型及調(diào)制特性等也有著苛刻的規(guī)定。研究和開(kāi)發(fā)具有更高性?xún)r(jià)比的信號(hào)發(fā)生器將是當(dāng)前和今后一段時(shí)間內(nèi)亟需解決的課題。這里旨在建立一種基于FPGA的簡(jiǎn)單數(shù)字信號(hào)發(fā)生器設(shè)計(jì)方法。若能充分利用FPGA強(qiáng)大的數(shù)據(jù)運(yùn)算處理能力以及編程靈活、運(yùn)行速率快等優(yōu)點(diǎn),合理整合IP核資源和SoPC技術(shù),簡(jiǎn)化設(shè)計(jì)結(jié)構(gòu),一定可以設(shè)計(jì)出功能多樣、性能更加出色的信號(hào)發(fā)生器。
二、基于FPGA的信號(hào)發(fā)生器設(shè)計(jì)
以FPGA 芯片為載體, 通過(guò)QuartusII 的LPM_ROM 模塊和VHDL 語(yǔ)言為核心設(shè)計(jì)一個(gè)多功能信號(hào)發(fā)生器,根據(jù)輸入信號(hào)的選擇可以輸出遞增鋸齒波、遞減鋸齒波、三角波、階梯波和方波等5 種信號(hào),通過(guò)QuartusII 軟件進(jìn)行波形仿真、定時(shí)分析,仿真正確后,利用實(shí)驗(yàn)板提供的資源,下載到芯片中實(shí)現(xiàn)預(yù)定功能。
信號(hào)發(fā)生器又稱(chēng)為波形發(fā)生器, 是一種常用的信號(hào)源,廣泛應(yīng)用于電子電路、通信、控制和教學(xué)實(shí)驗(yàn)等領(lǐng)域。它是科研及工程實(shí)踐中最重要的儀器之一, 以往多用硬件組成,系統(tǒng)結(jié)構(gòu)比較復(fù)雜,可維護(hù)性和可操作性不佳。隨著計(jì)算機(jī)技術(shù)的發(fā)展,信號(hào)發(fā)生器的設(shè)計(jì)制作越來(lái)越多的是用計(jì)算機(jī)技術(shù),種類(lèi)繁多,價(jià)格、性能差異很大。用FPGA 或CPLD 來(lái)實(shí)現(xiàn),它的優(yōu)點(diǎn)是可以進(jìn)行功能仿真,而且FPGA 和CPLD 的片內(nèi)資源豐富,設(shè)計(jì)的流程簡(jiǎn)單。用FPGA 所構(gòu)成的系統(tǒng)來(lái)產(chǎn)生波形信號(hào),這個(gè)系統(tǒng)既能和主機(jī)系統(tǒng)相連,用相應(yīng)的上層軟件展示波形信號(hào), 又方便程序的編寫(xiě), 而且還有A/D0809接口可以產(chǎn)生模擬信號(hào)的輸出和外面的示波器相連。
1 正弦信號(hào)發(fā)生器的LPM 定制
正弦信號(hào)發(fā)生器由計(jì)數(shù)器或地址發(fā)生器(6 位)、正弦信號(hào)數(shù)據(jù)ROM (6 位地址線(xiàn),8 位數(shù)據(jù)線(xiàn), 含有64 個(gè)8 位數(shù)據(jù), 一個(gè)周期)、原理圖頂層設(shè)計(jì)和8 位D/A ( 實(shí)驗(yàn)中用DAC0832 代替)。
其框圖如圖1 所示。其中信號(hào)產(chǎn)生模塊將產(chǎn)生所需的各種信號(hào),這些信號(hào)的產(chǎn)生可以有多種方式,如用計(jì)數(shù)器直接產(chǎn)生信號(hào)輸出,或者用計(jì)數(shù)器產(chǎn)生存儲(chǔ)器的地址,在存儲(chǔ)器中存放信號(hào)輸出的數(shù)據(jù)。信號(hào)發(fā)生器的控制模塊可以用數(shù)據(jù)選擇器實(shí)現(xiàn), 用8 選1 數(shù)據(jù)選擇器實(shí)現(xiàn)對(duì)5 種信號(hào)的選擇。
圖1 信號(hào)發(fā)生器結(jié)構(gòu)框圖
最后將波形數(shù)據(jù)送入D/A 轉(zhuǎn)換器,將數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào)輸出。用示波器測(cè)試D/A 轉(zhuǎn)換器的輸出,可以觀(guān)測(cè)到5 種信號(hào)的輸出。
1.1 定制初始化數(shù)據(jù)文件
QuartusII 能接受的LPM_ROM 模塊中的初始化數(shù)據(jù)文件的格式有兩種:。mif 格式文件和。hex 格式文件。實(shí)際應(yīng)用中只要使用其中一種格式的文件即可。下面采用。mif 格式文件,調(diào)出產(chǎn)生ROM 數(shù)據(jù)文件大小的選擇窗。根據(jù)64 點(diǎn)8 位正弦數(shù)據(jù)的情況,可選ROM 的數(shù)據(jù)數(shù)Number 為64,數(shù)據(jù)寬Word size 取8 位。單擊OK 按鈕,將出現(xiàn)圖2 所示的空的。mif數(shù)據(jù)表格,表格中的數(shù)據(jù)格式可通過(guò)鼠標(biāo)右鍵單擊窗口邊緣的地址數(shù)據(jù)彈出的窗口選擇。
圖2 .mif 數(shù)據(jù)表格
將波形數(shù)據(jù)填入mif 文件表中也可以使用QuartusII 以外的編輯器設(shè)計(jì)MIF 文件,其格式如下:
#include 《STdio.h》
#include “math.h”
main()
{int i;float s;
for (i=0;i《1024; i++)
{ s = sin(atan(1)*8*i/1024);
printf(“%d : %d;\n”,i,(int)((s+1)*1023/2)); }}
把上述程序編譯成程序后, 可在DOS 命令行下執(zhí)行命令:
romgen 》 sin_ rom. mif;
1.2 定制LPM 元件
打開(kāi)Mega Wizard Plug_In Manager 初始對(duì)話(huà)框, 選擇Create a new custom… 項(xiàng)。單擊Next 按鈕后,選擇Storage 項(xiàng)下的LPM_ROM, 再選擇ACEX1K 器件和VHDL 語(yǔ)言方式;最后輸入ROM 文件存放的路徑和文件名:F:\sing_gnt\data_rom (定制的ROM 元件文件名),單擊Next 按鈕,選擇ROM 控制線(xiàn)、地址線(xiàn)和數(shù)據(jù)線(xiàn)。這里選擇地址線(xiàn)位寬和ROM 中數(shù)據(jù)數(shù)分別為6 和64; 選擇地址鎖存控制信號(hào)inclock。
對(duì)于地址信號(hào)發(fā)生器的設(shè)計(jì)。方法一:用VHDL 語(yǔ)言設(shè)計(jì)6 位計(jì)數(shù)器,產(chǎn)生其元件符號(hào);方法二:仍采用LPM 定制的方法。
1.3 完成頂層設(shè)計(jì)
按圖3 畫(huà)出頂層原理圖,然后進(jìn)行編譯,波形仿真如圖4所示。
圖3 簡(jiǎn)易正弦信號(hào)發(fā)生器頂層電路設(shè)計(jì)
圖4 當(dāng)前工程仿真波形輸出
對(duì)當(dāng)前設(shè)計(jì)通過(guò)執(zhí)行Quartus II 的命令Create ∠ Update/ Create Symbol Files for Current File,可以為設(shè)計(jì)電路建立一個(gè)元件符號(hào),以便被頂層設(shè)計(jì)多功能信號(hào)發(fā)生器所調(diào)用。
2 其他信號(hào)部分原程序
其他各信號(hào)發(fā)生器可參照正弦信號(hào)發(fā)生器的設(shè)計(jì)方法設(shè)計(jì)或直接采用VHDL 硬件描述語(yǔ)言進(jìn)行設(shè)計(jì)。
LIBRARY IEEE;--遞增鋸齒波的設(shè)計(jì)
USE IEEE.STD LOGIC 1164.ALL;
USE IEEE.STD LOGIC UNSIGNED.ALL;
ENTITY signal2 IS --遞增鋸齒波signal1
PORT(clk,reset:IN std_logic;--復(fù)位信號(hào)reset, 時(shí)鐘信號(hào)clk
q:OUT std_logic_vector (7 DOWNTO 0));--輸出信號(hào)q
END signal2;
ARCHITECTURE b OF signal2 IS
BEGIN
PROCESS(clk,reset)
VARIABLE tmp:std_logic_vector(7 DOWNTO 0);
BEGIN
IF reset=‘0’ THEN
tmp:=“00000000”;
ELSIT rising_ege(clk)THEN
IF tmp=“11111111”THEN
tmp:=“00000000”;
ELSE
tmp:=tmp+1; --遞增信號(hào)的變化
END IF;
END IF;
q《=tmp:
END PROCESS;
END b;
LIBRARY IEEE;--方波的設(shè)計(jì)
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
entity signal5 is --方波signal5
PORT(clk,reset:in std_logic; --復(fù)位信號(hào)reset,時(shí)鐘信號(hào)clk
q:out std_logic_vector (7 DOWNTO 0)); --輸出信號(hào)q,8 位數(shù)字信號(hào)
END signal5;
ARCHITEECTURE a OF signal5 IS
SIGNAL; a:std_logic;
BEGIN
PROCESS(clk,reset)
YARIABLE tmp:std_logic_vector(7 downto 0);
BEQIN
IF reset=‘0’ then
a《=‘0’;
elsif rising_edge(clk)THEN
IF tmp=“11111111” THEN
tmp:=“00000000”;
ELSE
tmp:=tmp+1;
END IF;
if tmp《=“10000000” then
a《=‘1’;
else
a《=‘0’;
END IF;
END IF;
END PROCESS;
PROCESS(clk,a)
BEGIN
IF rising_edge(clk)THEN
IF a=‘1’ THEN
q《=“11111111”;
ELSE
q《=“00000000”;
END IF;
END IF;
END PROCESS;
END a;
3 頂層電路的設(shè)計(jì)
將上述6 個(gè)模塊生成符號(hào),供頂層電路調(diào)用。這些模塊分別是:遞減鋸齒波信號(hào)產(chǎn)生模塊signall、遞增鋸齒波信號(hào)產(chǎn)生模塊signal2、三角波信號(hào)產(chǎn)生模塊signal3、階梯波信號(hào)產(chǎn)生模塊signal4、方波信號(hào)產(chǎn)生模塊signal5 和數(shù)據(jù)選擇器mux51。頂層電路的連接如圖5 所示。
圖5 信號(hào)發(fā)生器頂層電路
4 D/A 轉(zhuǎn)換器的連接
選擇一個(gè)D/A 轉(zhuǎn)換器,將數(shù)據(jù)選擇器的輸出與D/A 轉(zhuǎn)換器的輸入端連接。D/A 轉(zhuǎn)換器的可選范圍很寬,這里以常用的DAC0832 為例。DAC0832 的連接電路如圖6 所示。
圖6 DAC0832 的連接電路
5 實(shí)現(xiàn)與測(cè)試
信號(hào)發(fā)生器頂層電路的仿真波形如圖7 所示,這里只就輸入選擇信號(hào)等于5 時(shí)的情況進(jìn)行仿真,此時(shí)輸出波形是方波,輸出的數(shù)字信號(hào)為周期性的全0 或全1。
圖7 信號(hào)發(fā)生器頂層電路的仿真波形
信號(hào)發(fā)生器的底層電路模塊也可以分別進(jìn)行仿真,例如對(duì)階梯波信號(hào)產(chǎn)生模塊signal4 進(jìn)行仿真,仿真波形如圖8 所示,輸出的數(shù)字信號(hào)為階梯狀變化。
圖8 階梯波信號(hào)產(chǎn)生模塊signal4 的仿真波形
6 結(jié)束語(yǔ)
硬件電路設(shè)計(jì)主要是設(shè)計(jì)相關(guān)模塊的設(shè)計(jì)思想的可視化,是相關(guān)模塊的電路圖的匯總和其相關(guān)仿真波形的集錦,該部分條理清晰,思路明確,從中我們可以清晰地看到該設(shè)計(jì)方案的具體模塊和整個(gè)設(shè)計(jì)的原理結(jié)構(gòu)實(shí)圖;程序設(shè)計(jì)這一部分主要闡述該設(shè)計(jì)的設(shè)計(jì)方法與設(shè)計(jì)思想,進(jìn)一步從軟件設(shè)計(jì)上揭示設(shè)計(jì)構(gòu)思,主要包含了整個(gè)設(shè)計(jì)所用到的模塊的硬件描述語(yǔ)言的設(shè)計(jì), 本文設(shè)計(jì)思路清晰,通過(guò)QuartusII 軟件進(jìn)行波形仿真成功,特別是正弦信號(hào)發(fā)生器的LPM 定制對(duì)于編程不是特別強(qiáng)的人員提供另一種途徑來(lái)實(shí)現(xiàn),加深理解EDA 的層次設(shè)計(jì)思想,很好的把握住了教學(xué)的改革方向,更好的鍛煉了學(xué)生理論聯(lián)系實(shí)踐的能力。
三、基于FPGA及VHDL的LED點(diǎn)陣漢字滾動(dòng)顯示設(shè)計(jì)方案
漢字滾動(dòng)顯示器的傳統(tǒng)設(shè)計(jì)方法是用單片機(jī)來(lái)控制的,雖然單片機(jī)方案具有價(jià)格低廉,程序編程靈活等特點(diǎn),但由于單片機(jī)硬件資源的限制,未來(lái)對(duì)設(shè)計(jì)的變更和升級(jí),總是要付出較多研發(fā)經(jīng)費(fèi)和較長(zhǎng)投放市場(chǎng)周期的代價(jià),甚至有可能需要重新設(shè)計(jì)。況且,在以顯示為主的系統(tǒng)中,單片機(jī)的運(yùn)算和控制等主要功能的利用率很低,單片機(jī)的優(yōu)勢(shì)得不到發(fā)揮,相當(dāng)于很大的資源浪費(fèi)。
采用EDA技術(shù)的自頂向下的模塊化設(shè)計(jì)方法,借助相關(guān)開(kāi)發(fā)軟件,例如QualtusⅡ軟件,將硬件描述語(yǔ)言——VHDL程序固化于具有豐富I/O口、內(nèi)部邏輯和連線(xiàn)資源的FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)中。該技術(shù)具有系統(tǒng)設(shè)計(jì)效率高、集成度好、保密性強(qiáng)、易于修改、易于實(shí)現(xiàn)等優(yōu)點(diǎn),成為當(dāng)今數(shù)字系統(tǒng)設(shè)計(jì)主流技術(shù)。此方式所制作的LED點(diǎn)陣控制器,由于是純硬件行為,具有速度快、可靠性高、抗干擾能力強(qiáng)、開(kāi)發(fā)周期短等顯著優(yōu)點(diǎn)。
1 EDA點(diǎn)陣顯示漢字原理
以8×8的LED點(diǎn)陣為例,8×8的LED點(diǎn)陣是由64個(gè)發(fā)光二極管按矩陣形式排列而成,每一行上的發(fā)光管有一個(gè)公共的陽(yáng)極(或陰極),每一列上的發(fā)光管有一個(gè)公共的陰極(或陽(yáng)極),一般按動(dòng)態(tài)掃描方式顯示漢字或圖形。掃描分為點(diǎn)掃描、行掃描和列掃描三種方式。行掃描需要按行抽取字型碼,列掃描則需要按列抽取字型碼。為滿(mǎn)足視覺(jué)暫留要求,若使用點(diǎn)掃描方式,其掃描頻率必須大于16×64=1 024Hz,周期小于1ms。若使用行或列掃描,則頻率必須大于16×8=128Hz,周期小于7.8ms。由于所用實(shí)驗(yàn)板上提供有1 kHz的時(shí)鐘,本例設(shè)計(jì)中利用該時(shí)鐘進(jìn)行掃描,使每行掃描時(shí)間為1 ms,實(shí)驗(yàn)結(jié)果顯示亮度合適?,F(xiàn)以行掃描為例簡(jiǎn)單說(shuō)明動(dòng)態(tài)掃描顯示的原理。圖1給出漢字“熱”在點(diǎn)陣為列共陽(yáng)時(shí)的行字模。工作時(shí)先將要掃描行的點(diǎn)陣字模從各列上輸出,再讓譯碼器選中(掃描)該行,使本行得以顯示,接著再送下一行數(shù)據(jù),再使下一行有效,直到8行全被掃描一遍。至此,一幅完整的文字信息就顯現(xiàn)出來(lái),然后再反復(fù)掃描這8行直至顯示新的信息。以下設(shè)計(jì)采用行掃描方式實(shí)現(xiàn)滾動(dòng)顯示。
2 硬件原理圖
整個(gè)電路由五大部分組成:時(shí)鐘計(jì)數(shù)模塊GEL_CLK,存儲(chǔ)漢字字模的ROM模塊ROMZI,數(shù)據(jù)分配器模塊MUX,移位模塊YW及顯示模塊XIANSH-I。時(shí)鐘計(jì)數(shù)模塊用于產(chǎn)生整個(gè)電路所需要的時(shí)鐘及其對(duì)時(shí)鐘的計(jì)數(shù)值,例如:移位時(shí)鐘CLK YW,移位計(jì)數(shù)器CNT YW,字計(jì)數(shù)器CNT WORD,顯示掃描計(jì)數(shù)器CNT SM。ROMZI模塊是由QualtusⅡ中的LPM 1PORT ROM定制成,用來(lái)存儲(chǔ)8個(gè)待顯示的漢字。MUX模塊用于在掃描時(shí)鐘及掃描計(jì)數(shù)器的作用下,從ROM中讀出一個(gè)漢字的8個(gè)行字模信息,送給移位模塊YW,YW模塊在移位時(shí)鐘及移位計(jì)數(shù)器作用下,根據(jù)SELECT信號(hào)選擇對(duì)讀出的字模信息,進(jìn)行相應(yīng)的移位(左移、右移、上移、下移)后,最后送顯示模塊DISP驅(qū)動(dòng)LED點(diǎn)陣顯示漢字。原理圖如圖2所示。
3 模塊設(shè)計(jì)及時(shí)序仿真
3.1 時(shí)鐘計(jì)數(shù)產(chǎn)生模塊
時(shí)鐘計(jì)數(shù)產(chǎn)生模塊由1 kHz的輸人時(shí)鐘為基準(zhǔn),進(jìn)行17位的循環(huán)計(jì)數(shù)CNT[16..O]。該時(shí)鐘,既是動(dòng)態(tài)掃描顯示的時(shí)鐘,也是從ROM中取一個(gè)字8個(gè)字模的時(shí)鐘,對(duì)之進(jìn)行的3位循環(huán)計(jì)數(shù)作為掃描顯示計(jì)數(shù)器和取一個(gè)字的字型碼計(jì)數(shù)器。CNT[16..O]中的CNT[9]是對(duì)該時(shí)鐘的1 024分頻,將其作為移位時(shí)鐘CNT_YW,周期約為l s。CNT[13…lO]作為4位的移位計(jì)數(shù)器,是對(duì)移位時(shí)鐘CLK_YW的計(jì)數(shù),也是對(duì)移位位數(shù)的統(tǒng)計(jì)。16個(gè)狀態(tài)使一個(gè)漢字逐列移進(jìn)點(diǎn)陣,又逐列移出。每經(jīng)過(guò)16個(gè)移位時(shí)鐘,將會(huì)顯示完一個(gè)漢字。CNT[16..14]作為3位的取字計(jì)數(shù)器。
CNT[16…14]&CNT[2..O]作為ROM地址發(fā)生器。
3.2 ROMZI模塊
利用LPM參數(shù)化模塊庫(kù)中單口ROM,利用QualtusⅡ中的MegaWizard Plug-In Manager定制而成,定制前首先要制作LPM ROM初始化文件,其中存儲(chǔ)待顯示漢字的字模數(shù)據(jù),然后按照LPM MegaWizardPlug-In Manager的向?qū)崾荆Y(jié)合設(shè)計(jì)要求進(jìn)行定制。
圖3為所定制ROM中的初始化漢字“元旦生日開(kāi)心快樂(lè)”的字型碼。數(shù)據(jù)分配模塊MUX要求能在8個(gè)時(shí)鐘作用下,從ROM中讀出一行(一個(gè)漢字的8個(gè)字型碼)分別送到數(shù)據(jù)分配器中的WLl~WL8輸出端。圖4為數(shù)據(jù)分配模塊在掃描時(shí)鐘作用下讀取的字模數(shù)據(jù),比較圖3和圖4可知,仿真結(jié)果正確,能滿(mǎn)足題目要求。
3.3 移位模塊YW
移位模塊YW是整個(gè)設(shè)計(jì)的核心,行掃描實(shí)現(xiàn)左移,是通過(guò)每來(lái)一個(gè)移位時(shí)鐘,將每一行的字模按位左移一位,掃描時(shí)鐘到來(lái)時(shí)送出移位后的新字模。通過(guò)8次移位,可將一個(gè)漢字移出點(diǎn)陣平面,按類(lèi)似的道理,也可以將一個(gè)漢字經(jīng)8次移位后移進(jìn)點(diǎn)陣平面。本例(圖2)中,CNT YW為移位時(shí)鐘的計(jì)數(shù)值,以WLl~WL8為欲顯示漢字的原始字模,L10~L80為移位后從列上送出的8行顯示字模信息,LLl~LL8為8個(gè)原始字模信息未送出位的暫存信號(hào)。設(shè)計(jì)中需要16個(gè)移位時(shí)鐘,通過(guò)前8個(gè)時(shí)鐘將WLl~WL8字模移進(jìn)LED點(diǎn)陣平面,再經(jīng)后8個(gè)時(shí)鐘,將漢字又一位一位地移出。 移位設(shè)計(jì)參考文獻(xiàn)中有關(guān)移位寄存器的設(shè)計(jì),分計(jì)數(shù)值為“0000“和非”0000“兩部分處理,對(duì)第一行字模的處理為:
其他行可按相同方法處理,具體參見(jiàn)如下的程序:
右移處理方法與上面左移相反,如對(duì)第一行可按如下方法處理:
上移時(shí)的部分程序按以下思路編制:L10~L70在CNT_YW為初態(tài)“0000”時(shí),各信號(hào)均賦值X“00”,非初態(tài)時(shí),均進(jìn)行上移一位。即:L10《=L20;L20《=L30;…;L60《=L70;L70《=L80;對(duì)于L80,在漢字移進(jìn)LED過(guò)程中即前8個(gè)狀態(tài)各移進(jìn)一個(gè)新行,在移出LED即后8個(gè)狀態(tài)時(shí),都補(bǔ)進(jìn)X“00”。程序如下:
下移程序可按相反思路去編。
3.4 顯示模塊DISP設(shè)計(jì)
顯示模塊DISP是以CNT_SM為掃描計(jì)數(shù)器,是對(duì)1kHz進(jìn)行三位循環(huán)計(jì)數(shù),由前述的時(shí)鐘計(jì)數(shù)產(chǎn)生模塊產(chǎn)生,WLl~WL8為待送出顯示的8個(gè)8位字型碼,由前述的移位模塊YW提供;SW[7..O]為行掃描輸出信號(hào),連接至點(diǎn)陣的8個(gè)行;DATA[7..0]為行掃描時(shí)對(duì)應(yīng)的列輸出字型碼,對(duì)外連至點(diǎn)陣的8列。該模塊參考文獻(xiàn)中數(shù)碼管動(dòng)態(tài)顯示程序進(jìn)行設(shè)計(jì)如下:
4 硬件實(shí)現(xiàn)
上述各模塊分別在QualtusⅡ中通過(guò)了仿真驗(yàn)證,最后對(duì)整體設(shè)計(jì)進(jìn)行了硬件驗(yàn)證。將設(shè)計(jì)載入KH31001開(kāi)發(fā)板的Cyclone工系列EPlC6Q-240C8FPGA器件中,實(shí)驗(yàn)證明漢字滾動(dòng)顯示掃描情況均正常,能夠按照預(yù)想進(jìn)行移位顯示,這說(shuō)明。FPGA的內(nèi)核硬件工作良好,可以正確地實(shí)現(xiàn)所要求的設(shè)計(jì)功能。
5 系統(tǒng)擴(kuò)展
本文是針對(duì)8×8點(diǎn)陣設(shè)計(jì),故每次取8個(gè)字形碼,如果是16×16點(diǎn)陣,將RONZI中存儲(chǔ)的字形碼改為16位,數(shù)據(jù)線(xiàn)改為16位,一個(gè)漢字需要16個(gè)16位的字形碼,數(shù)據(jù)分配模塊MUX、移位模塊YW、顯示模塊DISP,均要將輸入輸出數(shù)據(jù)中的原來(lái)的8位改成相應(yīng)的16位。掃描及取字型碼計(jì)數(shù)器CNT_SM應(yīng)改為CNT計(jì)數(shù)器的低4位。一個(gè)16×16點(diǎn)陣漢字的移進(jìn)移出共需32個(gè)狀態(tài)。由5位的計(jì)數(shù)器提供。如用CNT[16..0]中的14~10位作為該計(jì)數(shù)器,這可在時(shí)鐘計(jì)數(shù)器產(chǎn)生單元CLK_GE中應(yīng)做相應(yīng)修改,字計(jì)數(shù)器CNT WORD按照每取16個(gè)字進(jìn)行加1統(tǒng)計(jì)。顯示DISP部分的譯碼器要由3-8譯碼改為4-16譯碼。顯示的漢字信息越多,ROM的地址線(xiàn)位數(shù)越多,字計(jì)數(shù)器CNT_WORD應(yīng)在時(shí)鐘計(jì)數(shù)器產(chǎn)生單元GE_CLK中,將相應(yīng)的計(jì)數(shù)器位數(shù)擴(kuò)展,由CNT計(jì)數(shù)器的最高位到位15來(lái)承擔(dān)。若還是8個(gè)漢字,計(jì)數(shù)器應(yīng)為CNT[17..O],CNT[17..15]為字計(jì)數(shù)器;若為16個(gè)漢字,計(jì)數(shù)器應(yīng)為CNT[18..O],CNT[18..15]為字計(jì)數(shù)器,…,依次類(lèi)推。
6 結(jié)語(yǔ)
本文在KH31001開(kāi)發(fā)板上實(shí)現(xiàn)了基于Altera公司的Cyclone I系列FPGA器件EPlC6Q240C8硬件及VHDL硬件描述語(yǔ)言設(shè)計(jì)的LED點(diǎn)陣漢字滾動(dòng)顯示,能在8×8點(diǎn)陣上滾動(dòng)顯示“元旦生日開(kāi)心快樂(lè)”8個(gè)漢字。文中從LED點(diǎn)陣顯示漢字的原理闡述出發(fā),給出了點(diǎn)陣漢字滾動(dòng)顯示控制器的原理圖,部分模塊的VHDL源程序及時(shí)序仿真圖,并能由按鍵選擇其滾動(dòng)方式:左移、右移、上移、下移等,給出了系統(tǒng)擴(kuò)展成16×16點(diǎn)陣漢字滾動(dòng)的改動(dòng)思路。從文中描述的系統(tǒng)擴(kuò)展方案中看出,當(dāng)系統(tǒng)顯示字符個(gè)數(shù)變化時(shí),只需對(duì)控制邏輯和連接關(guān)系做適當(dāng)?shù)男薷?,再將修改完成的程序下載到器件即可,顯然,系統(tǒng)的維護(hù)和修改是極其方便和容易的,本文對(duì)同類(lèi)設(shè)計(jì)也具有一定的參考價(jià)值。
四、數(shù)字控制振蕩器(NCO)的FPGA實(shí)現(xiàn)
NCO(N umerically Controlled Oscillator)是用于產(chǎn)生一個(gè)理想的、數(shù)字可控的正弦或余弦波的數(shù)字控制式振蕩器,其實(shí)現(xiàn)方法有實(shí)時(shí)計(jì)算法和查表法等多種。實(shí)時(shí)計(jì)算法的正弦波樣本以實(shí)時(shí)計(jì)算產(chǎn)生,該方法因其計(jì)算需要耗費(fèi)很多時(shí)間,因而只能產(chǎn)生較低頻率的正弦波,而且存在計(jì)算精度與計(jì)算時(shí)間的矛盾。由于在需要產(chǎn)生高速的正交信號(hào)時(shí),實(shí)時(shí)計(jì)算法將無(wú)法實(shí)現(xiàn)。因此,在實(shí)際應(yīng)用中一般采用最有效、最簡(jiǎn)單的查表法,即事先根據(jù)各個(gè)NCO正弦波的相位計(jì)算好相位的正弦值,并按相位作為地址信息存儲(chǔ)該相位的正弦值數(shù)據(jù)。
1 NCO的基本原理
在通過(guò)相位累加產(chǎn)生地址信息時(shí),通常需要輸出當(dāng)前時(shí)刻的相位值所對(duì)應(yīng)的正弦值,即以參考頻率源對(duì)相位進(jìn)行等可控間隔采樣。眾所周知,理想的正弦波信號(hào)S(t)可以表示成:
式(1)說(shuō)明,信號(hào)s(t)在振幅A和初相φ確定之后,其頻率可以由相位來(lái)唯一確定。即:
NCO就是利用式(2)中φ(t)與時(shí)間t成線(xiàn)性關(guān)系的原理來(lái)進(jìn)行頻率合成的,也就是說(shuō),在時(shí)間t=△t間隔內(nèi),正弦信號(hào)的相位增量△φ與正弦信號(hào)的頻率f可構(gòu)成一一對(duì)應(yīng)關(guān)系,也就是說(shuō),對(duì)式(2)兩端進(jìn)行微分后有:
。
由上面的討論可知:
其中,△θ為一個(gè)采樣間隔△t之間的相位增量,采樣周期
。故式(3)可改寫(xiě)為:
由式(4)可知,如果可以控制△θ,就可以控制不同的頻率輸出。由于△θ受頻率控制字FCW的控制,即:
,所以,改變FCW就可以得到不同的輸出頻率f0,然后經(jīng)代換處理可得如下方程:
式(5)和式(6)中的L為相位累加器的位數(shù)。根據(jù)Nyquist準(zhǔn)則,允許輸出的頻率最高為FCLK/2,即
。但在實(shí)際工程中,由于受到低通濾波器的限制,一般輸出的頻率
。
2 NCO的性能指標(biāo)
NCO的性能指標(biāo)包括信號(hào)頻率分辨率、信噪比(SNR)、無(wú)雜散動(dòng)態(tài)范圍(SFDR)和輸出的信號(hào)正交性。這些性能指標(biāo)取決于NCO的數(shù)據(jù)位數(shù)。NCO的數(shù)據(jù)位數(shù)包括用于表示相位數(shù)據(jù)的位數(shù)n和表示相位的正弦值數(shù)據(jù)的位數(shù)nb,二者之間存在nb取決于n的關(guān)系,且前者必須能夠表示相位變化時(shí)其相位正弦值變化的最小值和最大值。而這又分為兩種情況:
第一種情況是相位最小變化值的正弦值最小變化發(fā)生在π/2-△φ~π/2,π/2~π/2+△φ,3π/2-△φ~3π/2,3π/2~3π/2+△φ,同時(shí)其相位的取值是在0~2π間且等間隔地分為2n爪取值點(diǎn),因此,由正弦波的特性可知:只需要討論相位在π/2-△φ與π/2取值點(diǎn)的正弦值之差:
第二種情況是相位最小變化值的正弦值的最大變化發(fā)生在0~△φ,π-△φ~π,π~π+△φ,2π-△φ~2π取值點(diǎn)處。該情況可以通過(guò)類(lèi)似于第一種情況的推導(dǎo)方法得到:
設(shè)計(jì)時(shí)可以根據(jù)式(9)和式(10)較好地取值n和nb,以避免相位的分辨率發(fā)生鈍化,并很好地達(dá)到設(shè)計(jì)要求。
NCO的噪聲是因?yàn)榇嬖谡抑档牧炕`差而引入的,且量化誤差由表示正弦值的位數(shù)決定,其近似關(guān)系為:
式中,B是作為尋址ROM的地址的舍位位數(shù),n是相位位數(shù)。NCO的另一個(gè)性能參數(shù)是頻率分辨率△f,該參數(shù)取決于相位位數(shù),其關(guān)系式為:
3 NCO在FPGA中的實(shí)現(xiàn)
NCO的查找表是一個(gè)正弦值表,該表的正弦值是按照相位作為存儲(chǔ)地址來(lái)進(jìn)行存儲(chǔ)的,而且一般以相位遞增的方式存儲(chǔ)。利用正弦波的奇偶對(duì)稱(chēng)性,可以把2π相位分成4等份,然后利用各等份之間的對(duì)稱(chēng)性來(lái)實(shí)現(xiàn)地址信息的映射,通常只存儲(chǔ)[0,π/2]象限內(nèi)的幅度碼。
相位累加器可完成相位累加,即每來(lái)1個(gè)時(shí)鐘就累加1次φ=φ+△φ,且采用流水線(xiàn)方式工作。本設(shè)計(jì)采用QUARTUS II中IP核自帶的一種32位累加器來(lái)實(shí)現(xiàn)相位的累加。
邏輯轉(zhuǎn)換完成后,可采用小表結(jié)構(gòu)功能塊把相位累加器產(chǎn)生的最高2位信號(hào)轉(zhuǎn)換為地址控制信號(hào)和象限轉(zhuǎn)換控制信號(hào)。其中地址控制信號(hào)是根據(jù)最高兩位信號(hào)來(lái)控制地址從0開(kāi)始遞增方式產(chǎn)生還是從2L開(kāi)始以遞減方式產(chǎn)生。
正弦表是每來(lái)一個(gè)時(shí)鐘輸出一個(gè)大于零的正弦值數(shù)據(jù),這些數(shù)據(jù)可作為象限變換器的輸入,由象限變換器完成數(shù)據(jù)的象限變換。其轉(zhuǎn)換原則是:象限控制信號(hào)根據(jù)正弦信號(hào)的對(duì)稱(chēng)性把查表得到的數(shù)據(jù)轉(zhuǎn)換為正負(fù)數(shù)據(jù),并對(duì)于正弦信號(hào)的1、2象限數(shù)據(jù)進(jìn)行加零操作,而對(duì)3、4象限的數(shù)據(jù)進(jìn)行求補(bǔ)運(yùn)算。余弦數(shù)據(jù)也同樣,在1、4象限對(duì)數(shù)據(jù)進(jìn)行加零操作,2、3象限數(shù)據(jù)進(jìn)行求補(bǔ)運(yùn)算。
4 仿真結(jié)果
利用上述小表結(jié)構(gòu)實(shí)現(xiàn)的NCO可以輸出多種頻率信號(hào)并減少資源消耗,影響系統(tǒng)輸出頻率的因素主要是工作頻率和器件性能。
圖1所示是整個(gè)NCO在QUARTUS II中的仿真波形圖。
在圖1所示的波形圖中,CLK是時(shí)鐘輸入頻率(為65.6 MHz),CLR為系統(tǒng)復(fù)位信號(hào),相位累加器的位數(shù)L為32位,輸出信號(hào)幅度位數(shù)為12位(包括符號(hào)位),相位寬度為12位,這樣,由式(5)便可得到頻率控制字FCW為269591793,圖1中的COS_OUT與SIN_OUT是系統(tǒng)輸出信號(hào),頻率為4.08 MHz。
由式(11)、(12)、(13)可得,此系統(tǒng)的信噪比和SFDR分別為74 dB和84 dB。
圖2所示是將波形文件中的正弦余弦數(shù)據(jù)讀入MATLAB中所顯示出來(lái)的波形。
5 結(jié)束語(yǔ)
本文通過(guò)分析數(shù)控振蕩器的實(shí)現(xiàn)原理和性能,給出了通過(guò)FPGA來(lái)實(shí)現(xiàn)NCO的具體方法,同時(shí)通過(guò)QUARTUSⅡ中的仿真驗(yàn)證了本設(shè)計(jì)的正確性。結(jié)果證明,用該方法設(shè)計(jì)的NCO可以輸出多種頻率的信號(hào),同時(shí)也可以減少資源消耗。
?
?
評(píng)論
查看更多