基于FPGA信號發(fā)生器論文_第1頁
基于FPGA信號發(fā)生器論文_第2頁
基于FPGA信號發(fā)生器論文_第3頁
基于FPGA信號發(fā)生器論文_第4頁
基于FPGA信號發(fā)生器論文_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于基于 fpgafpga 信號發(fā)生器論文信號發(fā)生器論文 目目 錄錄 摘 要.2 1 前 言.3 2 設(shè)計方案.5 2.1 總體設(shè)計思路 .5 2.2 方案論證 .6 2.2.1 方案一 .6 2.2.2 方案二 .6 2.2.3 方案三 .6 2.3 方案確定 .7 3 軟件設(shè)計.8 3.1 波形產(chǎn)生模塊 .8 3.1.1 正弦波 .8 3.1.2 矩形波.10 3.1.3 三角波.10 3.1.4 基波.11 3.1.5 諧波的產(chǎn)生 .11 3.1.6 波形模塊圖.11 3.2 頻率控制模塊 .11 3.3 選擇波形模塊 .11 3.4 分頻器模塊 .13 3.4.1 設(shè)計思路.13 3.

2、4.2 vhdl 實(shí)現(xiàn) .13 3.4.3 分頻值計算.14 4 硬件電路設(shè)計.15 4.1 硬件設(shè)計注意事項(xiàng) .15 4.2 濾波電路.15 4.3 幅度控制電路 .16 4.4 fpga 器件引腳分配.16 4.5 硬件電路實(shí)現(xiàn) .17 5 調(diào) 試.18 5.1 設(shè)計及仿真調(diào)試使用設(shè)備.18 5.2 調(diào)試方法 .18 5.2.1 硬件調(diào)試.18 5.2.2 軟件調(diào)試.18 5.2.3 綜合調(diào)試.18 5.3 調(diào)試結(jié)果 .19 5.3.1 軟件仿真結(jié)果及分析.19 5.3.2 綜合調(diào)試結(jié)果.21 6 結(jié) 論.24 致謝辭.25 參考文獻(xiàn).26 附 錄.27 基于基于 fpgafpga 的信號

3、發(fā)生器的信號發(fā)生器 摘摘 要要 本次設(shè)計課題為應(yīng)用 vhdl 語言及 max+plus ii 軟件提供的原理圖輸入設(shè)計功能,結(jié)合 電子線路的設(shè)計加以完成一個可應(yīng)用于數(shù)字系統(tǒng)開發(fā)或?qū)嶒?yàn)時做輸入脈沖信號或基準(zhǔn)脈沖 信號用的信號發(fā)生器,它具結(jié)構(gòu)緊湊,性能穩(wěn)定,設(shè)計結(jié)構(gòu)靈活,方便進(jìn)行多功能組合的 特點(diǎn),經(jīng)濟(jì)實(shí)用,成本低廉。具有產(chǎn)生三種基本波形脈沖信號(正弦波、矩形波和三角波) , 以及三次(及三次以下)諧波與基波的線性組合脈沖波形輸出,且單脈沖輸出脈寬及連續(xù) 脈沖輸出頻率可調(diào),范圍從 100hz 到 1khz,步進(jìn)為 100hz;幅度可調(diào),從 0 到 5 伏,步進(jìn)為 0.1v。 關(guān)鍵詞:信號發(fā)生器,

4、fpga,eda,vhdl 語言。 1 前 言 隨著我國的經(jīng)濟(jì)日益增長,社會對電子產(chǎn)品的需求量也就越來越大,目前, 我國的電子產(chǎn)品市場正在迅速的壯大,市場前景廣闊。fpga(field programmable gate array,現(xiàn)場可編程門陣列)在現(xiàn)代數(shù)字電路設(shè)計中發(fā)揮著越 來越重要的作用。fpga/cpld(complex programmable logic device)所具有的 靜態(tài)可重復(fù)編程和動態(tài)在系統(tǒng)重構(gòu)的特性,使得硬件的功能可以像軟件一樣通 過編程來修改,這樣就極大地提高了電子系統(tǒng)設(shè)計的靈活性和通用性,縮短了 產(chǎn)品的上市時間并降低可電子系統(tǒng)的開發(fā)成本,且可以毫不夸張地講,

5、fpga/cpld 能完成任何數(shù)字器件的功能,從簡單的 74 電路到高性能的 cpu。它 的影響毫不亞于 20 世紀(jì) 70 年代單片機(jī)的發(fā)明和使用。 現(xiàn)在隨著電子技術(shù)的發(fā)展,產(chǎn)品的技術(shù)含量越來越高,使得芯片的復(fù)雜程 度越來越高,人們對數(shù)萬門乃至數(shù)百萬門設(shè)計的需求也越來越多,特別是專用 集成電路(asic)設(shè)計技術(shù)的日趨進(jìn)步和完善,推動了數(shù)字系統(tǒng)設(shè)計的迅速發(fā) 展。僅靠原理圖輸入方式已不能滿足要求,采用硬件描述語言 vhdl 的設(shè)計方式 應(yīng)運(yùn)而生,解決了傳統(tǒng)用電路原理圖設(shè)計大系統(tǒng)工程時的諸多不便,成為電子 電路設(shè)計人員的最得力助手。設(shè)計工作從行為、功能級開始,并向著設(shè)計的高 層次發(fā)展。這樣就出現(xiàn)了

6、第三代 eda 系統(tǒng),其特點(diǎn)是高層次設(shè)計的自動化。 第三代 eda 系統(tǒng)中除了引入硬件描述語言,還引入了行為綜合工具和邏輯 綜合工具,采用較高的抽象層次進(jìn)行設(shè)計,并按層次式方法進(jìn)行管理,可大大 提高處理復(fù)雜設(shè)計的能力,縮短設(shè)計周期,綜合優(yōu)化工具的采用使芯片的品質(zhì) 如面積、速度和功耗等獲得了優(yōu)化,因而第三代 eda 系統(tǒng)迅速得到了推廣應(yīng)用。 目前,最通用的硬件描述語言有 vhdl 和 veriloghdl 兩種,現(xiàn)在大多設(shè)計 者都使用 93 年版標(biāo)準(zhǔn)的 vhdl,并且通過了 ieee 認(rèn)定,成為世界范圍內(nèi)通用的 數(shù)字系統(tǒng)設(shè)計標(biāo)準(zhǔn)。vhdl 是一種新興的程序設(shè)計語言,使用 vhdl 進(jìn)行設(shè)計其 性

7、能總是比常規(guī)使用 cpu 或者 mcu 的程序設(shè)計語言在性能上要高好幾個數(shù)量級。 這就是說,在傳統(tǒng)上使用軟件語言的地方,vhdl 語言作為一種新的實(shí)現(xiàn)方式會 應(yīng)用得越來越廣泛。本課題設(shè)計是采用美國 altera 公司的 flex10k10 器件, 使用的是 altera 公司的 eda 軟件平臺 maxplus ii 可編程邏輯器件開發(fā)軟件。 基于 eda 工具的 fpga/cpld 的開發(fā)流程 cpld/fpga 器件的設(shè)計一般可分為 設(shè)計輸入、設(shè)計實(shí)現(xiàn)和編程三個設(shè)計步驟: 1.設(shè)計輸入方式主要由文本輸入和圖形輸入兩種,可根據(jù)需要選擇,也可 混合輸入。eda 工具會自動檢查語法; 2.設(shè)計實(shí)

8、現(xiàn)階段 eda 工具對設(shè)計文件進(jìn)行編譯,進(jìn)行邏輯綜合、優(yōu)化,并 針對器件進(jìn)行映射、布局、布線,產(chǎn)生相應(yīng)的適配文件; 3.編程階段 eda 軟件將適配文件配置到相應(yīng)的 cpldfpga 器件中,使其能 夠?qū)崿F(xiàn)預(yù)期的功能。 信號發(fā)生器是數(shù)字設(shè)備運(yùn)行工作中必不可少的一部分,沒有良好的脈沖信 號源,最終就會導(dǎo)致系統(tǒng)不能夠正常工作,更不必談什么實(shí)現(xiàn)其它功能了。不 論是處于開發(fā)還是故障檢修階段,輸出標(biāo)準(zhǔn)且性能優(yōu)秀的信號發(fā)生器總是能夠 帶來工作效率的大幅提升,使新產(chǎn)品有一個標(biāo)準(zhǔn)的信號源、損壞的系統(tǒng)得到正 確校驗(yàn),不會被一些故障所蒙蔽。在傳統(tǒng)的信號發(fā)生器中,大都使用分立元件, 而且體積龐大攜帶不便,且大部分只

9、能輸出一種脈沖信號波形。在設(shè)計領(lǐng)域, 不管采用什么技術(shù)生產(chǎn),生產(chǎn)的產(chǎn)品用在哪里,其產(chǎn)品設(shè)計的宗旨都是離不開 以下幾點(diǎn):實(shí)用性高、成本低、可升級、功能完善可擴(kuò)展等!使用專用的數(shù)字 電路設(shè)計的信號發(fā)生器,設(shè)備成本高、使用復(fù)雜?;谝陨峡紤],在中小型數(shù) 字電路的設(shè)計和測試中,迫切需要設(shè)計一種小型易用成本低廉的信號發(fā)生器。 此課題的設(shè)計以小型經(jīng)濟(jì),集成度高,性能穩(wěn)定,使用方便為指導(dǎo),在功能上 力求完善實(shí)用,同時兼顧商業(yè)價值與應(yīng)用價值的體現(xiàn)。 2 2 設(shè)計方案設(shè)計方案 2.1 總體設(shè)計思路 1 設(shè)計步驟 此設(shè)計將按模塊式實(shí)現(xiàn),據(jù)任務(wù)書要求,設(shè)計總共分四大步份完成:(1) 產(chǎn)生波形(三種波形:方波、三角波

10、和矩形波)信號;(2)波形組合;(3) 頻率控制;(4)幅度控制。 2 設(shè)計思想 利用 vhdl 編程,依據(jù)基本數(shù)字電路模塊原理進(jìn)行整合。系統(tǒng)各部分所需工 作時鐘信號由輸入系統(tǒng)時鐘信號經(jīng)分頻得到,系統(tǒng)時鐘輸入端應(yīng)滿足輸入脈沖 信號的要求。組合波形信號經(jīng)顯示模塊輸出。具備幅度和頻率可調(diào)功能,幅度 可通過電位器調(diào)整,頻率控制模塊則是一個簡易的計數(shù)器,控制步徑為 100hz 的可調(diào)頻率,最終送至脈沖發(fā)生模塊輸出脈沖信號,達(dá)到設(shè)計課題所要求的輸 出波形頻率可調(diào)及幅度可調(diào)功能。幅度可調(diào)功能由于比較簡單,可以在 fpga 外 部利用硬件電路實(shí)現(xiàn)。總體設(shè)計框圖如下圖 1 所示: 1khz 圖 1 總體設(shè)計框

11、圖 控制電路 正弦波、 方波、 三角波 信號產(chǎn) 生模塊 波形組 合選擇 模塊 幅度控 制/電位 器頻率控制 模塊/計數(shù) 器模塊 濾波 電路 fpga 輸出電路 100hz1khz 2.2 方案論證 2.2.1 方案一 采用 dds(直接數(shù)字頻率合成器)來設(shè)計,設(shè)計總體框圖如圖 2 所示。在 設(shè)計界里眾所周知,dds 器件采用高速數(shù)字電路和高速 d/a 轉(zhuǎn)換技術(shù),具有頻 率轉(zhuǎn)換時間短、頻率分辨率高、頻率穩(wěn)定度高、輸出信號頻率和相位可快速程 控切換等優(yōu)點(diǎn),所以,我們可以利用 dds 具有很好的相位控制和幅度控制功能, 另外其數(shù)據(jù)采樣功能也是極具精確和完善的,它可以產(chǎn)生較為精確的任何有規(guī) 則波形信號

12、,可以實(shí)現(xiàn)對信號進(jìn)行全數(shù)字式調(diào)制。用 fpga 和 dds 實(shí)現(xiàn)信號調(diào)制, 既克服了傳統(tǒng)的方法實(shí)現(xiàn)帶來的缺點(diǎn),若采用它來編程設(shè)計,必定會事半功倍, 且使設(shè)計趨于理想狀態(tài)。但鑒于 dds 的占用 ram 空間較大,我們設(shè)計是采用 fpga10k10 器件,總共只有一萬門的邏輯門數(shù)量,而整個 dds 設(shè)計下來,大概 最少會占用 3-4 萬門的數(shù)量,所以在性價比方面不合理,這樣也使得我們的設(shè) 計會有些不切實(shí)際。 頻率控制字 信號輸出 時鐘 圖 2 dds 與 fpga 總體設(shè)計圖 2.2.2 方案二 采用震蕩器頻率合成方案。具體方案如下:首先通過頻率合成技術(shù)產(chǎn)生所 需要頻率的方波,通過積分電路就可以

13、得到同頻率的三角波,再經(jīng)過濾波器就 可以得到正弦波。其優(yōu)點(diǎn)是工作頻率可望做得很高,也可以達(dá)到很高的頻率分 辨率;缺點(diǎn)是使用的濾波器要求通帶可變,實(shí)現(xiàn)很難,高低頻率比不可能做得 很高。 相位累加 器 rom d/a 變換 低通 濾波 2.2.3 方案三 采用 vhdl 語言來編程,然后下載文件到 fpga 來實(shí)現(xiàn)。vhdl 語言是電子設(shè) 計領(lǐng)域的主流硬件描述語言,具有很強(qiáng)的電路描述和建模能力,能從多個層次對 數(shù)字系統(tǒng)進(jìn)行建模和描述,從而大大降低了硬件設(shè)計任務(wù),提高了設(shè)計效率和 可靠性,要比模擬電路快得多。該方案是利用 fpga 具有的靜態(tài)可重復(fù)編程和動 態(tài)在系統(tǒng)重構(gòu)的特性,使得硬件的功能可以像軟

14、件一樣通過編程來修改,極大 地提高了電子系統(tǒng)設(shè)計的靈活性和通用性,而且大大縮短了系統(tǒng)的開發(fā)周期。 2.3 方案確定 由上述三個方案對比,采用第三種方案: 通過 fpga 軟件掃描方式將波形數(shù)據(jù)讀出傳輸給 dac0832 產(chǎn)生波形輸出。這 種方法在軟、硬件電路設(shè)計上都簡單,且與我們的設(shè)計思路緊密結(jié)合。 由于幅度控制部分在設(shè)計需要用到數(shù)字電子,這樣有要經(jīng)過 d/a 轉(zhuǎn)換器再 輸出,必將占用大量資源,造成不必要的開銷。鑒于有設(shè)計經(jīng)驗(yàn)的同學(xué)和老師 的建議,采用一個電位器代替,雖然精確度不夠,但是也彌補(bǔ)了性價比方面的 不足。 波形組合如果采用分開式模塊實(shí)現(xiàn),也必將導(dǎo)致占用大量的資源,而且模 塊設(shè)計復(fù)雜度

15、提高,只要采用重復(fù)調(diào)用一個模塊的設(shè)計方法,既可以降低資源 的占用率,也使得設(shè)計更加靈活且有針對性。此信號發(fā)生器的特點(diǎn)及功能集成 度高,因采取整體模塊式設(shè)計,在此也考慮到實(shí)際應(yīng)用中,萬一 fpga 的邏輯門 數(shù)量不夠,特準(zhǔn)備了一套備用方案。 備用方案:將波形數(shù)據(jù)存放在 6116ram 中,6116 的存儲容量大,且可重復(fù) 使用,雖用單片機(jī)在速度方面遠(yuǎn)不及 fpga,但是這樣是在出現(xiàn)上述狀況后的最 佳補(bǔ)償方式。 綜合以上涉及方面的分析,因此本次課題采用此方案進(jìn)行設(shè)計。 3 軟件設(shè)計軟件設(shè)計 3.1 波形產(chǎn)生模塊 本設(shè)計用 vhdl 語言根據(jù)傅立葉函數(shù)采集點(diǎn)進(jìn)行掃描,分別產(chǎn)生正弦波、 三角波和矩形波

16、。以下介紹各種常用周期信號的傅立葉函數(shù)展開式。 3.1.1 正弦波 1 設(shè)計思想 正弦波發(fā)生分為兩個步驟,即正弦波幅值采樣存儲和正弦波波形的還原輸 出。幅值采樣是將一個周期正弦波進(jìn)行 64 等分,如圖 3 所示,將 64 個采樣點(diǎn) 進(jìn)行量化處理,量化值=255*sin360/64(v) ,將 64 點(diǎn)量化值存入存儲器。正弦 波形的產(chǎn)生是通過循環(huán)反復(fù)將存儲器中的 64 點(diǎn)采樣值通過 dac0832 進(jìn)行還原 輸出,得到幅值正比于 64 點(diǎn)采樣值的正弦波。 f(t) a t 0.5t -a t 圖圖 12-18(c) 矩矩形形波波三三 2 vhdl 實(shí)現(xiàn) 1正弦信號波形數(shù)據(jù)文件建立 正弦波波形數(shù)據(jù)

17、由 64 個點(diǎn)構(gòu)成,此數(shù)據(jù)經(jīng) dac0832,可在示波器上觀察到 正弦波形。源程序如下程序 1 所示: 程序程序 11 width=8; -表示數(shù)據(jù)輸出位寬是 8 depth=64; -表示共有 64 個 8 位數(shù)據(jù)點(diǎn) address_radix=hex; -表示地址信號用十六進(jìn)制數(shù)表示 data_radix=dec; -表示輸出數(shù)據(jù)是十進(jìn)制數(shù) content begin 00:255;01:254;02:252;03:249;04:245;05:239;06:233;07:225; 08:217;09:207;0a:197;0b:186;0c:174;0d:162;0e:150;0f:137

18、; 圖 3 正弦波采樣圖圖 4 方波采樣圖 t 0 t f(t) 10:124;11:112;12: 99;13: 87;14: 75;15: 64;16: 53;17: 43; 18: 34;19: 26;1a: 19;1b: 13;1c: 8;1d: 4;1e: 1;1f: 0; 20: 0;21: 1;22: 4;23: 8;24: 13;25: 19;26: 26;27: 34; 28: 43;29: 53;2a: 64;2b: 75;2c: 87;2d: 99;2e:112;2f:124; 30:137;31:150;32:162;33:174;34:186;35:197;36:20

19、7;37:217; 38:225;39:233;3a:239;3b:245;3c:249;3d:252;3e:254;3f:255; end; 2定制 rom 源程序如下所示: sindata.vhdsindata.vhd: library ieee; use ieee.std_logic_1164.all; entity sindata is port(address:in std_logic_vector(5 downto 0); inclock:in std_logic; q:out std_logic_vector(7 downto 0); end sindata; architect

20、ure syn of sindata is signal sub_wire0 :std_logic_vector(7 downto 0); component 1pm_rom generic(1pm_width :natural; 1pm_widthid :natural; 1pm_address_control:string; 1pm_outdata:string; 1pm_file:string); port(address:in std_logic_vector(5 downto 0); inclock:in std_logic; q:out std_logic_v ector(7 do

21、wnto 0); end component; begin q8,lpm_widthad=6, lpm_address_comtrol=registered,lpm_outdata=unregistered, lpm_file=d:/sin_g/data/sin_data.mif) port map(address=address,inclock=inclock,q=sub_wire0); end syn; 正弦波信號發(fā)生器頂層設(shè)計源程序:正弦波信號發(fā)生器頂層設(shè)計源程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic

22、_unsigend.all; entity signt is port(clk:in std_logic; dout:out std_logic_vector(7 downto 0); end architecture dacc of singt is component sindata port(address:in std_logic_vector(5 downto 0); inclock:in std_logic; q:out std_logic_vector(7 downto 0); end conponent; signal q1:std_logic_vector(5 downto

23、0); begin process(clk) begin if clkevent and clk=1then q1q1,q=dout;in clock=clk); end; 3.1.2 矩形波 1 設(shè)計思路 矩形波的實(shí)現(xiàn)較之正弦波發(fā)生簡單,由于矩形波是兩個電平值間的交替變 換,因此波形采樣值的預(yù)存只要有兩個不同的數(shù)值就行了,為了使矩形波發(fā)生 的頻率靈活可調(diào),采用 60 個采樣值掃描輸出來實(shí)現(xiàn),每半個矩形波周期采用三 十個采樣值,循環(huán)反復(fù)將存儲器中的 60 點(diǎn)采樣值通過 dac0832 進(jìn)行還原輸出, 得到幅值正比于點(diǎn)采樣值的矩形波。采樣圖如圖 4 所示。 2 vhdl 實(shí)現(xiàn) 源程序見附錄。 3

24、.1.3 三角波 1 設(shè)計思路 由于三角波是線性的,比較簡單就可以產(chǎn)生,如果最低電壓設(shè)為 15v,最 高是 255v,那么根據(jù)它的公式 255/15=17,每個點(diǎn)的電壓只要依次加 17 就可以 得到,一個波形所以采用簡單的加減算法就可實(shí)現(xiàn),如圖 5 所示三角波的采樣 圖: f(t) a t t -a 圖圖 12-19 三三角角波波 圖 5 三角波采樣圖 2 vhdl 實(shí)現(xiàn) 具體源程序見附錄。 3.1.4 基波 通過 vhdl 編程產(chǎn)生的正弦波、方波、三角波三種周期性波形即為基波。 3.1.5 諧波的產(chǎn)生 采用與基波產(chǎn)生的同樣原理,編程產(chǎn)生三種波形的諧波,所不同的是一個 波形的周期采樣的點(diǎn)數(shù)不同

25、,如果基波采樣點(diǎn)為 63 個,諧波采樣點(diǎn)數(shù)則為 21 個,其每點(diǎn)的電壓值為 255*(sin360/60+sin360/20) (v) ,在對其進(jìn)行循環(huán)掃 描即可實(shí)現(xiàn)基波與諧波的線性疊加。 3.1.6 波形模塊圖 最終波形的設(shè)計模塊圖如圖 6 所示,l1 是三角波,l2 是方波,l3 是正弦 波,l4 是諧波。 3.2 頻率控制模塊 本課題要求頻率控制是在 100hz-1khz,步進(jìn)為 100hz。在本題設(shè)計中只需 借助 fpga 便可完成。根據(jù)用戶需要的頻率,通過編程把頻率控制數(shù)值傳送給各 個模塊,從而實(shí)現(xiàn)頻率的控制。如下圖 7 所示: 3.3 選擇波形模塊 這一部分主要是通過一個按鍵對波形

26、進(jìn)行循環(huán)選擇,按下確認(rèn)按鈕后進(jìn) 行波形的調(diào)用。設(shè)計流程圖如下圖 8 所示 圖 6 波形模塊圖 圖 7 頻率控制模塊流程圖 開始 返回 頻率控制 按下否 讀入按鍵數(shù)值 調(diào)用頻率控制 模塊 y n 鍵按下否? 確認(rèn)鍵按下否? 圖 8 選擇波形電路設(shè)計流程圖 3.4 分頻器模塊 3.4.1 設(shè)計思路 分頻器模塊將輸入的高頻脈沖降頻得到各模塊所需的低頻脈沖,分頻器模 塊利用計數(shù)器的原理進(jìn)行設(shè)計,通過對預(yù)設(shè)的分頻值進(jìn)行比較計數(shù),實(shí)現(xiàn)輸入 高頻時鐘脈沖的分頻輸出功能。本次課題的設(shè)計方案中使用了十組分頻器,其 設(shè)計原理完全相同,將對應(yīng)的頻率用 8421bcd 碼對其進(jìn)行編程賦值,如 100hz 則對應(yīng)的二進(jìn)

27、制數(shù)是“0000” ,200hz 則是“0001”1khz 則是“1010” ?,F(xiàn)選 取其中的 500 分頻分頻器進(jìn)行簡單說明。具體程序見附錄。 3.4.2 vhdl 實(shí)現(xiàn) process(clk_in) 開始 返回 波形選擇控 制按下否 進(jìn)行波形的調(diào)用 調(diào)用波形選擇 程序 y n y n begin if(clk_inevent and clk_in=0) then if step249 then分頻值 step=step+1; else step=0;循環(huán)累加 clk_out=not clk_out;計數(shù)滿,輸出翻轉(zhuǎn) end if; end if; end process; 3.4.3 分

28、頻值計算 分頻值(輸出時鐘脈沖周期輸入時鐘脈沖周期)21 輸入時鐘脈沖頻率1khz,周期1ms;輸出時鐘脈沖頻率2hz,周期 500ms 分頻值(500ms1ms)21249 3.4.4 分頻器模塊及初步仿真圖 分頻器模塊及初步仿真圖如圖 9 所示。 圖 9 4 硬件電路設(shè)計 4.1 硬件設(shè)計注意事項(xiàng) 此次設(shè)計利用 eda 試驗(yàn)箱實(shí)現(xiàn)硬件功能,試驗(yàn)箱設(shè)計可靠,干擾小,能使 系統(tǒng)在良好的環(huán)境中正常工作。但是實(shí)際制作硬件電路時,就應(yīng)考慮到干擾所 帶來的負(fù)面影響。為了避免干擾信號影響系統(tǒng)正常工作,未分配功能的 fpga 引 腳必須接地,在 fpga 器件的電源端必須并連一 0.01uf 的退耦電容,

29、在所有的 輸入引腳上串聯(lián) 100 歐姆左右電阻減弱干擾信號影響,如有必要還應(yīng)在輸入端 設(shè)置上拉或下拉電阻。 4.2 濾波電路 如圖 10 所示,設(shè)計 d/a 輸出后,通過濾波電路、輸出緩沖電路,使信號平 滑且具有負(fù)載能力。 正弦波的輸出頻率小于 262khz,為保證 262khz 頻帶內(nèi)輸出幅度平坦,又 要盡可能抑制諧波和高頻噪聲,綜合考慮取 r1=1k,r2=1k,c1=100pf,c=100pf 運(yùn)放選用寬帶運(yùn)放 lf351,用 electronics workbench 分析表明:截止頻率約 為 1mhz,262khz 以內(nèi)幅度平坦。 為保證穩(wěn)幅輸出,選用 ad817,這是一種低功耗、高

30、速、寬帶運(yùn)算放大器 , 具有很強(qiáng)的大電流驅(qū)動能力。實(shí)際電路測量結(jié)果表明:當(dāng)負(fù)載 100、輸出電 壓峰-峰值 1ov 時,帶寬大于 500khz,幅度變化小于土 1%。 圖 10 濾波電路 4.3 幅度控制電路 幅度控制電路采用初定方案來設(shè)計,即用一個電位器來控制波形的輸出幅 度。電位器的型號為 10k 歐。 4.4 fpga 器件引腳分配 為了方便硬件設(shè)計,降低硬件設(shè)計的復(fù)雜度,對 fpga 的輸入輸出引腳進(jìn)行 分配,將關(guān)聯(lián)的引腳集中排布,將同一組內(nèi)的引腳按順序排布,將需要輸入高 頻時鐘脈沖的端口安排在時鐘輸入端,以提高其信號接收能力。分配如下: clkusr pin62。 cs0 pin67

31、。 cs1 pin68 bev_clk pin76. bev_oe pin72 in pin31、33、73、75。 d0 pin1 td0 pin9 td1 pin4 ce0 pin64 ce1 pin3 config pin23 conf_done pin65 rs pin70 ws pin69 tms pin46 trst pin45 tck pin66 dclk pin2 status pin44 msel0 pin20 msel1 pin21 init_done pin58 rdy_busy pin59 dev_oe pin72 dev_clr pin77 4.5 硬件電路實(shí)現(xiàn) 此次

32、設(shè)計硬件部分通過 fpga/cpld 實(shí)驗(yàn)箱完成,如今后需制作單獨(dú)的硬件 電路,亦可以依照實(shí)驗(yàn)箱各部分結(jié)構(gòu)進(jìn)行設(shè)計。 5 調(diào) 試 5.1 設(shè)計及仿真調(diào)試使用設(shè)備設(shè)計及仿真調(diào)試使用設(shè)備 示波器:hitachi v-1060,萬用表,fpga 實(shí)驗(yàn)箱,pc 機(jī)各一臺。 5.2 調(diào)試方法 根據(jù)方案設(shè)計的要求,調(diào)試過程共分三大部分:硬件調(diào)試、軟件調(diào)試和綜 合調(diào)試。電路用 fpga/cpld 實(shí)驗(yàn)箱按模塊調(diào)試,各模塊逐個調(diào)試通過后再進(jìn)行 綜合調(diào)試。 5.2.1 硬件調(diào)試 (1)在做控制電路的調(diào)試時,分析輸入輸出,可以發(fā)現(xiàn)時序與仿真結(jié)果是否 有出入,便于找出硬件電路中的故障。再調(diào)試 d/a 轉(zhuǎn)換是否正常。

33、 (2) 為提高電路抗干擾性能,我們采取了一些抗干擾措施。如接線線盡量短, 減少交叉,每個芯片的電源與地之間都接有去擾電容,數(shù)字地與模擬地分開。 實(shí)踐證明,這些措施對消除某些引腳上的 “毛刺 ” 及高頻噪聲起到了很好的 效果。 (3) 運(yùn)算放大器的選擇 由于輸出頻率達(dá)到上千赫茲,因此對放大器的帶寬 有一定要求。所以,在調(diào)試濾波電路和緩沖輸出電路時,都選擇了高速寬帶運(yùn) 放。 5.2.2 軟件調(diào)試 本系統(tǒng)的軟件功能強(qiáng)大,運(yùn)用 vhdl 語言來編寫,先在 max+plus ii 對所編 的模塊一一進(jìn)行仿真,排除了語法的錯誤編寫和設(shè)計邏輯思維的錯誤,當(dāng)仿真完 確認(rèn)程序沒問題時,再直接下載到 fpga

34、芯片,用 fpga 實(shí)驗(yàn)箱進(jìn)行調(diào)試。采取 的就是自底向上的調(diào)試方法,即先單獨(dú)調(diào)試好每一個模塊,然后再連接成一個 完整的系統(tǒng)再調(diào)試。 5.2.3 綜合調(diào)試 fpga 系統(tǒng)的軟硬件設(shè)計是緊密相連的,將軟件編譯綜合并且通過下載對 fpga 進(jìn)行適配,運(yùn)行中的 fpga 是由其內(nèi)部的硬件結(jié)構(gòu)控制讀出數(shù)據(jù),從而產(chǎn) 生波形。因此,如果在軟硬件都基本調(diào)通的情況下,系統(tǒng)的軟硬件綜合調(diào)試難 度不是很大。 5.3 調(diào)試結(jié)果 5.3.1 軟件仿真結(jié)果及分析 1.分頻 (1)仿真波形圖如圖 11 所示: 圖 11 clkin:基準(zhǔn)時鐘輸入; clkout:分頻時鐘輸出; movin:處始置入值; (2)仿真結(jié)果分析

35、clk_in 為輸入高頻時鐘脈沖,clkout 為分頻輸出的低頻時鐘脈沖。此分頻 器輸入為 1khz,輸出為 100hz,為 10 分頻分頻器,如圖 12 所示。 2.信號波形產(chǎn)生 (1)正弦波 仿真波形圖如圖 12 所示: 圖 12 frct:相位控制端; clk:時鐘輸入; sinout:正弦波輸出; vsin:正弦波地址寄存器; (2)方波 仿真波形圖如圖 13 所示: 圖 13 clk:時鐘輸入; frct:相位控制端; squout:方波輸出; (3)三角波 仿真波形圖如圖 14 所示: 圖 14 clk:時鐘輸入; frct:相位控制端; triout:三角波輸出; (4)任意波形

36、的地址 仿真波形圖如圖 15 所示: 圖 15 frct:相位控制端; clk:時鐘輸入; addout:地址輸出; (5)波形選擇 仿真波形圖如圖 16 所示: 圖 16 ri:ram 的讀數(shù)控制端; selin:波形選擇輸入端(0:正弦波;1:三角波;2:方波;3:任意波地址; 4:三角波和正弦波的疊加;5:方波和正弦波的疊加;6:方波和三角波的疊加; 7:三種波形的疊加) addin:地址輸入端; sinin:正弦波輸入端; triin:三角波輸入端; squin:方波輸入端; qadd:地址輸出端; q:波形選擇輸出端; (6)仿真結(jié)果分析 經(jīng)過仿真,從各個仿真圖上看得,基本上可以實(shí)現(xiàn)

37、預(yù)期的波形產(chǎn)生功 能。 5.3.2 綜合調(diào)試結(jié)果 1基波的輸出波形如圖 17 所示: (1)方波 (2)正弦波 (3)三角波 圖 17 基波輸出波形圖 2.諧波與基波疊加的輸出波形 (1)正弦與其三次諧波的疊加,如圖 18 與圖 19 所示: )3sin 3 1 (sin 4 )( 2 tt a tf f1(t) 4a/ o t f2(t) a o t 圖 18 圖 19 (2)我們觀察到圖 20d 的波形,它也混有二次諧波,但這二次諧波帶有 一定的相移(圖 20c)。同樣地,當(dāng)觀察到圖 21b 的波形,我們就知道它除了 基波以外混有三次諧波(見圖 21a)。圖 21d 的波形也混有三次諧波,

38、并帶有 一定相移(圖 21c)。 (a) (b) (c) (d) 圖 20 基波與二次諧波疊加 (a) (b) (c) (d) 圖 21 基波與三次諧波的疊加圖 3綜合調(diào)試數(shù)據(jù) (1)輸出波形頻率范圍測試測試數(shù)據(jù)如下表 1 所示 : 單位:hz 輸出頻率 預(yù)置頻率 正弦波方波三角波 負(fù)載電阻 (歐姆) 100100.03100.03100.03100 500500.06500.06500.06100 800800.5800.5800.5100 1k1 000.21 000.21 000.2100 表 1 (2) 輸出波形幅度范圍測試,在頻率為 100hz-1khz 測得的輸出幅度數(shù)據(jù)范圍 可以

39、達(dá)到 0-5v 的要求。 6 結(jié) 論 通過此次設(shè)計,讓我深深的感覺到自己所學(xué)知識真是非常的淺薄。面對電 子技術(shù)日新月異的發(fā)展,利用 eda 手段進(jìn)行設(shè)計已成為不可阻擋的趨勢。相對 于傳統(tǒng)至底向上的設(shè)計方式,自上而下的設(shè)計具有其顯著的優(yōu)越性。利用 eda 設(shè)計軟件輔助設(shè)計,方便快捷,減少了錯誤率的產(chǎn)生,縮短了產(chǎn)品的設(shè)計及上 市周期,既減輕了設(shè)計工作量又滿足了商業(yè)利益的需求。 該系統(tǒng)以 fpga10k10 器件為核心部件,可利用軟件編程實(shí)現(xiàn)了對 d/a 轉(zhuǎn)換 信號的處理。努力做到了線路簡單、高性價比的特點(diǎn),充分利用了軟件編程, 彌補(bǔ)了硬件元器件的不足。 在設(shè)計過程當(dāng)中,遇到了軟件操作不熟練,程序編

40、寫不規(guī)范等諸多問題, 通過對問題的總結(jié)分析得出,應(yīng)用軟件的主要功能必須熟練操作,才能提高工作 效率,需要規(guī)范操作的地方必須嚴(yán)格按照使用說明操作,避免由于軟件使用不 當(dāng)造成的錯誤產(chǎn)生。程序的編寫格式必須規(guī)范,模塊、端口以及信號變量的命 名應(yīng)當(dāng)反映實(shí)際意義,縮進(jìn)格式工整明了,方便閱讀理解,這樣有利于程序的 編寫,有利于分析調(diào)試,也有利于程序的重復(fù)使用。 此次課題的設(shè)計已告一段落,在這次畢業(yè)設(shè)計過程中需要用一些不曾學(xué)過 的東西時,就要去有針對性地查找資料,然后加以吸收利用,以提高自己的應(yīng) 用能力,而且還能增長自己見識,補(bǔ)充最新的專業(yè)知識,學(xué)會了一些編程方面 的常用算法。作為一名電子專業(yè)的畢業(yè)生,我將

41、會繼續(xù)在新技術(shù)的道路上不斷 鉆研、開拓進(jìn)取。相信通過此次設(shè)計的鍛煉,我對專業(yè)知識和技能的掌握將更 加牢靠,在今后的工作和學(xué)習(xí)中,必將使我受益匪淺,取得應(yīng)有的優(yōu)勢。 致謝辭 在這里感謝指導(dǎo)老師鄭文斌給我耐心的指導(dǎo),在這次設(shè)計期間,碰到許多 專業(yè)方面的難題,鄭老師都一一幫我解答,特別在教學(xué)繁忙的情況下,還為我 們提供了許多寶貴的資料和意見,并幫我們作出了詳細(xì)的分析,使我們更加順 利地完成此次畢業(yè)設(shè)計。通過這一個多月的時間,使我學(xué)到許多知識,明白了 許多以前上課時無法理解的知識,還積累了一些較簡單的問題解決方案。與此 同時也感謝同組做課題設(shè)計的同學(xué),在設(shè)計過程中,有許多東西我不懂,他們 都耐心地給我

42、講解,給予我技術(shù)支援,幫助我解決了不少難題。另外由于該方 面的設(shè)計水平有限,所以存在著許多缺陷和失誤,懇請老師批評指正。 參考文獻(xiàn) 1潘松,黃繼業(yè). eda 技術(shù)實(shí)用教程(第二版). 北京科學(xué)出版社. 2005.2 2億特科技. cpld/fpga 應(yīng)用系統(tǒng)設(shè)計與產(chǎn)品開發(fā). 人民郵電出版社. 2005.7 3李輝. pld 與數(shù)字系統(tǒng)設(shè)計. 西安電子科技大學(xué)出版社. 2005.5 4王志鵬,付麗琴. 可編程邏輯器件開發(fā)技術(shù) max+plus ii.北京國防工業(yè)出版社.2005.3 5王道先. vhdl 電路設(shè)計技術(shù). 北京國防工業(yè)出版社. 2004.1 6 趙不賄. 在系統(tǒng)可編程器件與開發(fā)技術(shù)

43、. 機(jī)械工業(yè)出版社. 2001.6 7 曾繁泰. eda 工程的理論與實(shí)踐. 電子工業(yè)出版社. 2004.5 8 尹佳喜,尹 仕. 基于 cpld 的三相多波形函數(shù)發(fā)生器設(shè)計 http:/ 9 高淼. 基于 fpga 的自治型 spwm 波形發(fā)生器的設(shè)計 http:/ 10 李剛強(qiáng). fpga 設(shè)計中關(guān)鍵問題的研究 http:/ 附附 錄錄 正弦波源程序:正弦波源程序: 數(shù)據(jù)采集點(diǎn)表數(shù)據(jù)采集點(diǎn)表: : width=8; depth=64;address_radix=hex; data_radix=dec; content begin 00:255;01:254;02:252;03:249;04

44、:245;05:239;06:233;07:225; 08:217;09:207;0a:197;0b:186;0c:174;0d:162;0e:150;0f:137; 10:124;11:112;12: 99;13: 87;14: 75;15: 64;16: 53;17: 43; 18: 34;19: 26;1a: 19;1b: 13;1c: 8;1d: 4;1e: 1;1f: 0; 20: 0;21: 1;22: 4;23: 8;24: 13;25: 19;26: 26;27: 34; 28: 43;29: 53;2a: 64;2b: 75;2c: 87;2d: 99;2e:112;2f:1

45、24; 30:137;31:150;32:162;33:174;34:186;35:197;36:207;37:217; 38:225;39:233;3a:239;3b:245;3c:249;3d:252;3e:254;3f:255; end; 定制定制 romrom 源程序源程序 sindata.vhdsindata.vhd: library ieee; use ieee.std_logic_1164.all; entity sindata is port(address:in std_logic_vector(5 downto 0); inclock:in std_logic; q:out

46、 std_logic_vector(7 downto 0); end sindata; architecture syn of sindata is signal sub_wire0 :std_logic_vector(7 downto 0); component 1pm_rom generic(1pm_width :natural; 1pm_widthid :natural; 1pm_address_control:string; 1pm_outdata:string; 1pm_file:string); port(address:in std_logic_vector(5 downto 0

47、); inclock:in std_logic; q:out std_logic_v ector(7 downto 0); end component; begin q8,lpm_widthad=6, lpm_address_comtrol=registered,lpm_outdata=unregistered, lpm_file=d:/sin_g/data/sin_data.mif) port map(address=address,inclock=inclock,q=sub_wire0); end syn; 正弦波頂層設(shè)計源程序正弦波頂層設(shè)計源程序singt.vhdsingt.vhd: l

48、ibrary ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigend.all; entity signt is port(clk:in std_logic; dout:out std_logic_vector(7 downto 0); end architecture dacc of singt is component sindata port(address:in std_logic_vector(5 downto 0); inclock:in std_logic; q:out std_logic_vector(7 do

49、wnto 0); end conponent; signal q1:std_logic_vector(5 downto 0); begin process(clk) begin if clkevent and clk=1then q1q1,q=dout;in clock=clk); end; addersadders 程序:程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity address is port(clk:in std_logic; addout:out std_l

50、ogic_vector(5 downto 0); end; architecture one of address is begin process(clk) variable adda:std_logic_vector(5 downto 0); variable con:integer range 0 to 60; begin if clkevent and clk=1then if adda=111100 then adda:=000000; else adda:=adda+1; end if; end if; addoutywclk,plclk=plclk,dain=datein,loc

51、k=datelock,squin=squ,triin=t rii,sinin=sin,addin=add); u2:selecte port map(selin=selin,ri=ri,sinin=sin,addin=add,squin=squ,triin=trii,q=q,q add=addout); end; 分頻器源程序:分頻器源程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fpq is port(clk:in std_logic; movin:in std_l

52、ogic_vector(7 downto 0); clkout:out std_logic); end; architecture one of fpq is begin process(clk) variable full:std_logic; variable cnt8:std_logic_vector(7 downto 0); begin if clkevent and clk=1then if cnt8=11111111then full:=not full; cnt8:=movin; else cnt8:=cnt8+1; end if; end if; clkoutq=sinin;r

53、i1:=1;qaddq=triin;ri1:=1;qaddq=squin;ri1:=1;qaddqadd=addin;ri1:=0;qx:=0q=x(8 downto 1);ri1:=1;qaddx:=0q=x(8 downto 1);ri1:=1;qaddx:=0q=x(8 downto 1);ri1:=1;qaddx:=0y:=0q=y(9 downto 2); ri1:=1;qaddnull; end case; ri=ri1; end process; end; sig:sig: library ieee; use ieee.std_logic_1164.all; use ieee.s

54、td_logic_unsigned.all; entity sig is port( clk:in std_logic; sinout:out std_logic_vector(7 to 0); end; architecture one of sig is signal msin:integer range 0 to 60; begin process(clk) variable vsin:integer range 0 to 60; begin if clkevent and clk=1 then if vsin=60 then vsin:=0; else vsin:=vsin+1; en

55、d if; end if; msinsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinoutsinouts

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論