版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、摘要10 引言11 系統(tǒng)總體設(shè)計22 系統(tǒng)組成電路及其工作原理22.1 FPGA核心模塊、按鍵輸入及數(shù)碼顯示模塊32.1.1 FPGA核心模塊的內(nèi)部結(jié)構(gòu)32.1.2 FPGA核心模塊的各組成單元32.1.3 Nios軟核處理器32.1.4 分頻器(FANA)模塊42.1.5 波形產(chǎn)生器(delta、square和sin)模塊42.1.6 波形選擇器(CHANGE)模塊52.2 外圍電路設(shè)計52.2.1 D/A轉(zhuǎn)換器52.2.2 低通濾波、幅度調(diào)節(jié)和峰值保持電路62.2.3 A/D轉(zhuǎn)換器73 軟件設(shè)計83.1 C語言程序設(shè)計83.2 VHDL、VerilogHDL語言程序設(shè)計84 系統(tǒng)測試及結(jié)果
2、分析95 結(jié)束語106 致謝10參考文獻(xiàn):10附錄:11基于FPGA的多波形發(fā)生器的設(shè)計作者:溫 聰 指導(dǎo)老師:林 漢 副教授湛江師范學(xué)院信息科學(xué)與技術(shù)學(xué)院摘要:文章介紹了一種基于FPGA芯片的,利用VHDL或VerilogHDL語言及Nios II嵌入式處理器共同實(shí)現(xiàn)的多功能波形發(fā)生器。該波形發(fā)生器可以產(chǎn)生正弦波、方波和三角波,頻率從1KHz到10KHz,步進(jìn)為100Hz。該系統(tǒng)以Altera公司的CycloneII系列現(xiàn)場可編程門陣列(FPGA)為數(shù)字平臺,在FPGA目標(biāo)芯片EP2C35F672C6N上將頻率選擇信號進(jìn)行譯碼,同時對系統(tǒng)時鐘進(jìn)行分頻,得到相應(yīng)的時鐘觸發(fā)信號,觸發(fā)數(shù)字波形的離
3、散樣點(diǎn)依次輸出到D/A轉(zhuǎn)換器進(jìn)行數(shù)模轉(zhuǎn)換,得到模擬信號波形。本設(shè)計為生產(chǎn)低成本,高性能,操作簡易的電子系統(tǒng)測試信號提供一種簡單易行的方法。關(guān)鍵詞:FPGA;VHDL;Nios II;D/ABased on FPGA in the design of multi-waveform generatorWen CongInformation Science and TechnologySchoolZhanjiangNormalUniversity,zhanjiang524048,ChinaAbstract: This paper presents a FPGA-based chips using V
4、HDL or VerilogHDL the language and the Nios II embedded processor to achieve the multi-waveform generator. The waveform generator can produce sine, square and triangular waves, the frequency from 1KHz to 10KHz, stepping to 100Hz.The system CycloneII series of Altera's field programmable gate arr
5、ay (FPGA) for digital platforms, in the target FPGA core EP2C35F672C6N signals will be frequency-selective decoding, at the same time the system clock frequency divided by the corresponding clock signal to trigger, the discrete digital waveform trigger points followed by output to D / A converter fo
6、r digital-to-analog conversion, the analog signal waveform. The design for the production is low-cost, high performance, which provides a simple and easy method to test the signal of an electronic system.Keywords:FPGA; EDA;VHDL;Nios II;D/A0引言現(xiàn)有的波形信號發(fā)生器,大都是利用單片機(jī)(CPU)為核心設(shè)計的,這使得電路控制比較方便,電路簡單化,小型化,但同時也存
7、在著許多不足。例如系統(tǒng)的可靠性通常不高,其主要原因是,以軟件運(yùn)行為核心的CPU的指令地址指針在外部干擾下,容易發(fā)生不可預(yù)測的變化,而使運(yùn)行陷入非法循環(huán)中,使系統(tǒng)癱瘓。EDA技術(shù)的出現(xiàn),使得完全利用硬件來實(shí)現(xiàn)波形信號發(fā)生成為可能1。例如狀態(tài)機(jī)就是很好的選擇,它的運(yùn)行方式類似于CPU,但卻有良好的可靠性和高速的性能2。因?yàn)樵谕獠繌?qiáng)干擾情況下,狀態(tài)機(jī)的死機(jī)(進(jìn)入非法狀態(tài))情況是可預(yù)測的,這包括非法狀態(tài)的數(shù)量和進(jìn)入狀態(tài)的可測性,以及是否已經(jīng)進(jìn)入的非法狀態(tài)的可判斷性。因?yàn)闋顟B(tài)機(jī)的非法狀態(tài)的編碼方式和數(shù)量是明確的,從而確保了恢復(fù)正常狀態(tài)各種措施的絕對可行性。為此,本設(shè)計提出并實(shí)現(xiàn)了一種利用數(shù)字調(diào)制技術(shù)3并
8、基于現(xiàn)場可編程門陣列(FPGA)器件實(shí)現(xiàn)信號發(fā)生器的方法4。該方法不僅能大幅度減小信號發(fā)生器的體積,而且產(chǎn)生的信號波形質(zhì)量好,功能多,可以滿足大多數(shù)場合下的應(yīng)用需求。1系統(tǒng)總體設(shè)計按照可編程片上系統(tǒng)(SOPC)的思想,在系統(tǒng)中嵌入一個Nios II軟核5,利用Altera中的CyloneII系列EP2C35器件,通過Quartus II開發(fā)工具,完成了FPGA所需的硬件系統(tǒng)設(shè)計及其軟件開發(fā)。硬件設(shè)計符合基于VHDL硬件描述語言的EDA開發(fā)流程。它是根據(jù)硬件系統(tǒng)要實(shí)現(xiàn)的功能合理地使用各種IP,并為各個實(shí)例定義地址范圍、輸出端口和時鐘。經(jīng)過仿真、綜合及布線后形成硬件配置文件。軟件設(shè)計類似于傳統(tǒng)的嵌
9、入式軟件設(shè)計,它是在硬件設(shè)計的基礎(chǔ)上根據(jù)處理器所支持的指令集及在集成開發(fā)環(huán)境Nios II IDE下編寫的程序代碼,然后對代碼進(jìn)行編譯與調(diào)試。最終使程序在硬件上或者在指令仿真狀態(tài)下運(yùn)行。在FPGA內(nèi)部,以軟核CPU Nios II為控制核心,用VHDL語言分別對輸出波形控制、分頻控制和三角波、正弦波、方波發(fā)生的各個模塊進(jìn)行子程序編程6,并把每一個模塊轉(zhuǎn)換成圖形文件,然后在原理圖編輯框中調(diào)用這些圖形模塊,并連接電路。還通過按鍵控制模塊來實(shí)現(xiàn)對頻率和波形的變換,數(shù)碼管模塊來進(jìn)行頻率和電壓幅值的顯示。實(shí)現(xiàn)了系統(tǒng)的高度集成。FPGA硬件系統(tǒng)作為數(shù)字系統(tǒng)產(chǎn)生數(shù)字量,外圍電路加上高速數(shù)模轉(zhuǎn)換器DAC083
10、2和模數(shù)轉(zhuǎn)換器ADC0804,分別將數(shù)據(jù)波形轉(zhuǎn)換為模擬波形和將輸出的電壓轉(zhuǎn)換成數(shù)值,以便于電壓顯示7。通過Nios II和VHDL的相互結(jié)合,從而實(shí)現(xiàn)了完整的多種波形發(fā)生器。設(shè)計中利用FPGA實(shí)現(xiàn)所有數(shù)字部分的設(shè)計,從而最大限度地實(shí)現(xiàn)了集成化。圖1.1 系統(tǒng)總框圖2系統(tǒng)組成電路及其工作原理從系統(tǒng)總框圖中,可見本設(shè)計可分為兩個方面三個組成部分,兩個方面分別是數(shù)字電路方面(見虛線框框部分)和模擬電路方面;而電路又可以分成三個組成部分,分別是:由FPGA核心模塊、按鍵輸入及數(shù)碼顯示模塊構(gòu)成的數(shù)字信號處理電路;由D/A轉(zhuǎn)換、波形平滑和幅度調(diào)節(jié)組成的模擬信號輸出電路;由峰值保持和A/D轉(zhuǎn)換模塊組成的電壓
11、幅值數(shù)字化電路。本設(shè)計充分利用硬件電路的可靠性、穩(wěn)定性和芯片的方便性,使整體電路達(dá)到比較高的穩(wěn)定性。2.1 FPGA核心模塊、按鍵輸入及數(shù)碼顯示模塊圖2.1 FPGA的內(nèi)部結(jié)構(gòu)圖及引腳連接FPGA核心模塊在本設(shè)計中作為主控部分,完成對按鍵輸入的檢測、信號輸出頻率的控制和相應(yīng)的頻率及電壓幅度的數(shù)字顯示等工作。其內(nèi)部結(jié)構(gòu)圖及引腳連接如圖2.1所示。2.1.1 FPGA核心模塊的內(nèi)部結(jié)構(gòu)FPGA核心模塊的設(shè)計是按照可編程片上系統(tǒng)(SOPC)的思想,在系統(tǒng)中嵌入一個Nios II軟核,用VHDL語言分別對輸出波形控制、分頻控制和三角波、正弦波、方波發(fā)生的各個模塊進(jìn)行子程序編程,并把每一個模塊轉(zhuǎn)換成圖形
12、文件,然后在原理圖編輯框中調(diào)用這些圖形模塊,并連接電路。FPGA核心模塊的各組成單元本設(shè)計的FPGA核心模塊由4個功能模塊組成:1.以Nios軟核為核心的鍵盤處理、頻率控制及頻率、電壓值顯示模塊;2.分頻器(FANA)模塊;產(chǎn)生器(分別是三角波、方波和正弦波)模塊;( CHANGE)模塊。下面分別對以上各個模塊進(jìn)行分析和實(shí)現(xiàn)。2.1.3 Nios軟核處理器 Nios II系列嵌入式處理器是一款通用的RISC結(jié)構(gòu)軟核CPU,具有32位指令、32位數(shù)據(jù)和地址路徑、32位通用寄存器和32個外部中斷源。使用同樣的指令集架構(gòu)(ISA)可完全與二進(jìn)制代碼兼容,設(shè)計者可根據(jù)系統(tǒng)需求的變化更改CPU。其指令和
13、數(shù)據(jù)總線符合AVALON總線規(guī)范。集成開發(fā)環(huán)境中NiosII IDE為GCC編譯器提供了一個圖形化用戶界面,Nios II IDE編譯環(huán)境能更容易地設(shè)計出Altera的Nios II處理器軟件。(1)Nios II CPU系統(tǒng)的設(shè)計8FPGA芯片采用Altera公司CyctoneII系列的EP2C35F672C6N,系統(tǒng)時鐘50MHz,根據(jù)所設(shè)計的多波形發(fā)生器的要求,在SOPC Builder所構(gòu)建的Nios II CPU系統(tǒng)中有以下可選的內(nèi)核:Nios II/f(快速)最高的系統(tǒng)性能,中等資源利用率;Nios II/s(標(biāo)準(zhǔn))高性能,低資源利用率;Nios Il/e(經(jīng)濟(jì))低性能,最低的資源
14、利用率??紤]本系統(tǒng)的運(yùn)算量不大,而且采用的芯片屬于較低端的產(chǎn)品,因此選用Nios II經(jīng)濟(jì)型內(nèi)核。(2)鍵盤處理程序設(shè)計利用掃描法對鍵盤進(jìn)行檢測,若有鍵盤按下,則產(chǎn)生相應(yīng)的操作。本設(shè)計在頻率控制上,只設(shè)置了兩個按鈕,一個是1KHz步進(jìn)量的控制,另一個是100Hz步進(jìn)量的控制,而每按一次鈕時,只有遞增而沒有遞減。通過按鍵的改變便可以產(chǎn)生不同的分頻系數(shù),不同的分頻系數(shù)便有不同的頻率輸出,從而實(shí)現(xiàn)了輸出頻率的控制。(3) 頻率顯示及電壓幅度顯示程序設(shè)計輸出的模擬電壓經(jīng)過峰值保持和A/D轉(zhuǎn)換器采樣,由模擬量變?yōu)閿?shù)字量直接由Nios II CPU通過PIO口讀取,經(jīng)處理后,送到數(shù)碼管顯示相應(yīng)的幅值。而頻
15、率顯示則由鍵盤處理程序直接產(chǎn)生一個相應(yīng)數(shù)值送數(shù)碼管顯示。分頻器(FANA)模塊模塊FANA功能是對外部時鐘進(jìn)行分頻,作為提供給系統(tǒng)各個模塊的工作時鐘,通過改變對外部時鐘的分頻參數(shù)實(shí)現(xiàn)輸出波形頻率可調(diào),參數(shù)計算公式如下:其中是晶振頻率,是輸出信號頻率,Y是分頻系數(shù)。具體程序見附錄2。2.1.5波形產(chǎn)生器(delta、square和sin)模塊波形產(chǎn)生器模塊是由正弦波、三角波和方波模塊組合而成。每種波形數(shù)字化描述頻率均采用波形頻率的64倍,以保證產(chǎn)生的波形穩(wěn)定且不失真。三角波的產(chǎn)生:通過由全0不斷加同一個數(shù),到全l之后再不斷減同一個數(shù)來實(shí)現(xiàn)。方波的產(chǎn)生:通過交替輸出全0和全l,給以適當(dāng)?shù)难訒r實(shí)現(xiàn)。
16、正弦波的產(chǎn)生:通過預(yù)先計算出一個正弦波表,然后查表輸出實(shí)現(xiàn)。具體程序見附錄3。2.1.6波形選擇器(CHANGE)模塊模塊CHANGE功能是選擇正弦波、三角波和方波中的一種波形進(jìn)行輸出。為了使輸出波形的幅度穩(wěn)定,本設(shè)計采用了保險的程序?qū)懛?,具體Verilog實(shí)現(xiàn)9見附錄4。2.2外圍電路設(shè)計圖2.2 外圍電路的SCH圖其外圍電路可以分成兩部分描述:一是由D/A轉(zhuǎn)換、波形平滑和幅度調(diào)節(jié)組成的波形輸出電路;二是由峰值保持和A/D轉(zhuǎn)換模塊組成的電壓數(shù)字化電路。其實(shí)這兩部分是可以集成為一個整體外圍電路10,如圖所示。圖2.3 DAC0832引腳圖D/A轉(zhuǎn)換器DAC0832是雙列直插式8位D/A轉(zhuǎn)換器,
17、能完成數(shù)字量輸入到模擬量(電流)輸出的轉(zhuǎn)換。圖為DAC0832的引腳圖。其主要參數(shù)如下:分辨率為8位,轉(zhuǎn)換時間為1s,滿量程誤差為±1LSB,參考電壓為(-10+10)V,供電電源為(+5+15)V,邏輯電平輸入與TTL兼容。在DAC0832中有兩級鎖存器,第一級鎖存器稱為輸入寄存器,它的允許鎖存信號為ILE,第二級鎖存器稱為DAC寄存器,它的鎖存信號也稱為通道控制信號。圖中,當(dāng)ILE為高電平,片選信號和寫信號為低電平時,輸入寄存器控制信號為1,這種情況下,輸入寄存器的輸出隨輸入而變化。此后,當(dāng)由低電平變高時,控制信號成為低電平,此時,數(shù)據(jù)被鎖存到輸入寄存器中,這樣輸入寄存器的輸出端
18、不再隨外部數(shù)據(jù)DB的變化而變化。對第二級鎖存來說,傳送控制信號和寫信號同時為低電平時,二級鎖存控制信號為高電平,8位的DAC寄存器的輸出隨輸入而變化,此后,當(dāng)由低電平變高時,控制信號變?yōu)榈碗娖?,于是將輸入寄存器的信息鎖存到DAC寄存器中。圖中其余各引腳的功能定義如下:(1)DI7DI0 :8位的數(shù)據(jù)輸入端,DI7為最高位。(2)IOUT1 :模擬電流輸出端1,當(dāng)DAC寄存器中數(shù)據(jù)全為1時,輸出電流最大,當(dāng) DAC寄存器中數(shù)據(jù)全為0時,輸出電流為0。(3)IOUT2 :模擬電流輸出端2,IOUT2與IOUT1的和為一個常數(shù),即IOUT1IOUT2常數(shù)。(4)RFB :反饋電阻引出端,DAC083
19、2內(nèi)部已經(jīng)有反饋電阻,所以 RFB端可以直接接到外部運(yùn)算放大器的輸出端,這樣相當(dāng)于將一個反饋電阻接在運(yùn)算放大器的輸出端和輸入端之間。(5)VREF :參考電壓輸入端,此端可接一個正電壓,也可接一個負(fù)電壓,它決定0至255的數(shù)字量轉(zhuǎn)化出來的模擬量電壓值的幅度,VREF范圍為(-10+10)V。VREF端與D/A內(nèi)部T形電阻網(wǎng)絡(luò)相連。(6)Vcc :芯片供電電壓,范圍為(+5+15)V。(7)AGND :模擬量地,即模擬電路接地端。(8)DGND :數(shù)字量地。圖2.4 FPGA和DAC0832直通方式輸出連接圖圖為FPGA和DAC0832直通方式輸出連接圖,運(yùn)放輸出電路輸出電壓為UOUT=-(D/
20、256)*VREF。2.2.2 低通濾波、幅度調(diào)節(jié)和峰值保持電路圖2.5 低通濾波、幅度調(diào)節(jié)和峰值保持電路從圖中可見,此部分電路主要有集成運(yùn)算放大器電路構(gòu)成,可分三節(jié)電路分析:第一節(jié)是低通濾波電路,濾波效果可通過開關(guān)S1進(jìn)行切換;第二節(jié)是電路幅度調(diào)節(jié)電路,輸出幅度的大小可由電位器PR1進(jìn)行調(diào)節(jié),信號輸出有直接輸出和電容耦合輸出兩種;第三節(jié)是峰值保持電路(PKD),通過這個電路能有效地把輸出信號的幅值保持下來,以便A/D轉(zhuǎn)換。2.2.3 A/D轉(zhuǎn)換器 ADC0804引腳排列ADC0804是一個早期的A/D轉(zhuǎn)換器,因其價格低廉而在要求不高的場合得到廣泛應(yīng)用。ADC0804是一個8位、單通
21、道、低價格A/D轉(zhuǎn)換器,主要特點(diǎn)是:模數(shù)轉(zhuǎn)換時間大約100us;方便的TTL或CMOS標(biāo)準(zhǔn)接口;可以滿足差分電壓輸入;具有參考電壓輸入端;內(nèi)含時鐘發(fā)生器;單電源工作時(0V5V)輸入信號電壓范圍是0V5V;不需要調(diào)零,等等。ADC0804是一個20引腳的芯片,引腳排列如圖示。所有引腳定義如下::片選信號。低電平有效,高電平時芯片不工作,:外部讀數(shù)據(jù)控制信號。此信號低電平時ADC0804把已轉(zhuǎn)換的數(shù)據(jù)加載到DB口。:外部寫數(shù)據(jù)控制信號。此信號的上升沿可以啟動ADC0804的A/D轉(zhuǎn)換過程。CLK IN:時鐘輸入引腳。ADC0804使用RC振蕩器作為A/D時鐘,CLK IN是振動器的輸入端。:轉(zhuǎn)換
22、結(jié)束輸出信號。ADC0804完成一次A/D轉(zhuǎn)換后,此引腳輸出一個低脈沖。對單片機(jī)可以稱為中斷觸發(fā)信號。Vin(+):輸入信號電壓的正極。Vin(-):輸入信號電壓的負(fù)極??梢赃B接到電源地。AGND:模擬電源的地線。V/2:參考電源輸入端。參考電源取輸入信號電壓(最大值)的二分之一。例如輸入信號電壓是0V5V時,參考電源取2.5V;輸入信號電壓是0V4V時,參考電源取2.0V。D GND:數(shù)字電源的地線。DB8DB0:數(shù)字信號輸出口,連接單片機(jī)的數(shù)據(jù)總線。CLK R:時鐘輸入端。Vcc:5V電源引腳。模數(shù)轉(zhuǎn)換器ADC0804的工作分為三個過程:復(fù)位中斷觸發(fā)信號信號表明ADC0804轉(zhuǎn)換已經(jīng)結(jié)束,
23、它提示單片機(jī)隨時可以讀取轉(zhuǎn)換結(jié)果,是ADC0804的一個輸出信號。一般情況下,啟動A/D轉(zhuǎn)換前應(yīng)該復(fù)位這個信號,以等待新的轉(zhuǎn)換完成后ADC0804發(fā)出新的信號,這樣才可以讀到新的轉(zhuǎn)換結(jié)果。復(fù)位信號的時序如圖2.7中的圖A,在實(shí)現(xiàn)片選(0)的前提下,使用一個讀信號的下降沿就可以復(fù)位信號。圖2.7 ADC0804的A/D轉(zhuǎn)換時序啟動ADC0804的A/D轉(zhuǎn)換ADC0804中的A/D轉(zhuǎn)換器在滿足一定條件時開始一個轉(zhuǎn)換過程,這個條件就是:在實(shí)現(xiàn)片選為低電平的前提下,引腳上出現(xiàn)的一個上升沿。啟動A/D轉(zhuǎn)換的時序如圖2.7中的圖B,實(shí)現(xiàn)片選以后,使用一個寫信號就可以啟動一個轉(zhuǎn)換過程。讀取轉(zhuǎn)換結(jié)
24、果在A/D轉(zhuǎn)換結(jié)束以后,ADC0804的引腳將給出一個低脈沖,如果檢測到這個低脈沖,便可以讀取ADC0804的轉(zhuǎn)換結(jié)果。3軟件設(shè)計本設(shè)計的軟件部分是運(yùn)用NiosII IDE開發(fā)軟件和C語言來對NiosII核進(jìn)行編程,用軟件來進(jìn)行數(shù)字電路模塊的設(shè)計,用VHDL、VerilogHDL語言來編寫程序。3.1 C語言程序設(shè)計C語言程序設(shè)計流程圖如圖3.1所示。VHDL、VerilogHDL語言程序設(shè)計用VHDL語言分別對輸出波形控制、分頻控制和三角波、正弦波、方波發(fā)生的各個模塊進(jìn)行子程序編程,并把每一個模塊轉(zhuǎn)換成圖形文件,然后在原理圖編輯框中調(diào)用這些圖形模塊,并連接電路。用按鍵KEY1控制delta,
25、square,sin波形選通,最后將8位輸出接AD0832的數(shù)據(jù)輸入口,再通過D/A轉(zhuǎn)換。即可從示波器看到輸出波形光柵。按下按鍵的次數(shù)不同,將輸出不同頻率的波形。從NiosII輸出10位頻率控制字,轉(zhuǎn)換為相對應(yīng)的整數(shù)輸出;由分頻模塊fana.vhd對輸入時鐘clk分頻,對分頻計數(shù)a逐次減1,當(dāng)a減到0時,輸出后;即為三角波模塊(delta)、方波模塊(square)、正弦波模塊(sin)的輸入時鐘clk。三角波模塊delta.vhd用于設(shè)定一個變量tmp,其定義范圍為00000111-11111000,每到來一個脈沖,對其分別輸出+8或-8,然后把改變后的tmp送到輸出q,以便生成三角波信號。
26、方波模塊cnt,每到來一個脈沖,檢測它是否小于32。若小于32,則把高電平送到輸出,并對cnt+l,否則就輸出低電平,并賦值cnt為0,以便生成方波信號。正弦波模塊,每到一個脈沖,逐次查找并輸出相應(yīng)的正弦數(shù)據(jù),以便生成正弦波形。波形選擇模塊change.vhd用于控制輸出波形的選通。4系統(tǒng)測試及結(jié)果分析圖4.1 用邏輯分析儀仿真的結(jié)果采用該信號發(fā)生器能產(chǎn)生正弦波、方波和三角波三種周期性波形,且輸出波形無明顯失真。圖給出三種波形在邏輯分析儀中仿真的結(jié)果11分別為方波、三角波、正弦波的實(shí)際輸出波形圖。從圖4.1中可以看出,三種波形的輸出是相當(dāng)完整的,頻率的控制也相當(dāng)準(zhǔn)確。通過實(shí)驗(yàn)測試,該信號發(fā)生器
27、在1 k負(fù)載條件下,其各種波形的輸出電壓峰峰值在05V范圍內(nèi)連續(xù)可調(diào);且最小的電壓輸出為0.05V,輸出電壓的變化是通過電位器進(jìn)行調(diào)節(jié),并且通過數(shù)碼管可實(shí)時顯示輸出信號的類型、幅度和頻率。圖4.2 方波的實(shí)際輸出圖4.3 三角波的實(shí)際輸出圖4.4 正弦波的實(shí)際輸出5結(jié)束語通過該次畢業(yè)設(shè)計發(fā)現(xiàn)自己所學(xué)知識很缺乏,特別是有關(guān)VHDL編程方面。同時讓我對以前所學(xué)過的理論知識回顧了一遍,并進(jìn)一步鞏固,自己的實(shí)踐能力的到進(jìn)一步的提高。6致謝在此,我要感謝我的導(dǎo)師林漢老師,謝謝他一直以來給我的幫助。還感謝在畢業(yè)設(shè)計期間所有給予我?guī)椭睦蠋熀屯瑢W(xué)。參考文獻(xiàn):1潘松、黃繼業(yè)EDA技術(shù)實(shí)用教程M2王振紅數(shù)字電路
28、設(shè)計與應(yīng)用實(shí)踐教程3蕭家源,聶風(fēng)仁校.電子儀表原理與應(yīng)用北京:北京科學(xué)出版社,20054褚振勇,翁木云.FPGA設(shè)計及應(yīng)用M西安:西安電子科技大學(xué)出版社,20025江國強(qiáng)SOPC技術(shù)應(yīng)用6范秋華,張冬梅,基于VHDL的可編程分頻器在波形發(fā)生器中的應(yīng)用J.青島大學(xué)學(xué)報,2003,16(4):68-717侯伯亨,顧新VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計M西安:西安電子科技大學(xué)出版社,20048周立功北京:北京航空航天大學(xué)出版社,9王金明數(shù)字系統(tǒng)設(shè)計與Verilog HDLM北京:電子工業(yè)出版,10王昊、李昕集成運(yùn)放應(yīng)用電路設(shè)計360例北京:電子工業(yè)出版社,11周立功北京:北京航空航天大學(xué)出版社,
29、附錄:附錄1 外圍電路圖附錄2分頻器程序library ieee;use ieee.std_logic_1164.all;entity fana is port(a:in integer range 0 to 1023; clk:in std_logic; q:out std_logic);end fana;architecture chu_arc of fana isbegin process(clk) variable b,d:std_logic; variable c:integer range 0 to 1023; begin if clk'event and clk='
30、;1'then if b='0'then c:=a-1; b:='1' else if c=1 then b:='0' d:=not d; else c:=c-1; end if; end if; end if; q<=d; end process;end chu_arc;附錄3:波形產(chǎn)生程序方波library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity square isport (clk,clr:in std_logic; q:
31、out integer range 0 to 255);end square;architecture sq_1 of square issignal a: bit;signal cnt:std_logic_vector(5 downto 0);beginprocess(clk,clr)beginif clk'event and clk='1' thencnt<= cnt + 1;if cnt < 32 thenq<= 255;elseq<= 0;end if;end if; end process;end sq_1;三角波library iee
32、e;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity delta is port(clk,reset:in std_logic;q:out std_logic_vector(7 downto 0);end delta;architecture delta_arc of delta isbegin process(clk,reset) variable tmp:std_logic_vector(7 downto 0); variable a:std_logic; begin if reset='0'
33、; then tmp:="00000000" elsif clk'event and clk='1'then if a='0'then if tmp="11111000"then tmp:="11111111" a:='1' else tmp:=tmp+8; end if; else if tmp="00000111"then tmp:="00000000" a:='0' else tmp:=tmp-8; end if; e
34、nd if; end if; q<=tmp; end process;end delta_arc;正弦波library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sin isport(clk,clr:in std_logic; d:out integer range 0 to 255);end sin;architecture sin_arc of sin isbeginprocess(clk,clr)variable tmp:integer range 0 to 63;begin if
35、 clr='0' then d<=0; elsif clk'event and clk='1' then if tmp=63 then tmp:=0;-脈沖控制波形離散點(diǎn)的輸出; else tmp:=tmp+1; end if; case tmp is when 00=>d<=255; when 01=>d<=254; when 02=>d<=252; when 03=>d<=249; when 04=>d<=245; when 05=>d<=239; when 06=>
36、d<=233; when 07=>d<=225; when 08=>d<=217; when 09=>d<=207; when 10=>d<=197; when 11=>d<=186; when 12=>d<=174; when 13=>d<=162; when 14=>d<=150; when 15=>d<=137; when 16=>d<=124; when 17=>d<=112; when 18=>d<=99; when 19=>d&
37、lt;=87; when 20=>d<=75; when 21=>d<=64; when 22=>d<=53; when 23=>d<=43; when 24=>d<=34; when 25=>d<=26; when 26=>d<=19; when 27=>d<=13; when 28=>d<=8; when 29=>d<=4; when 30=>d<=1; when 31=>d<=0; when 32=>d<=0; when 33=>
38、;d<=1; when 34=>d<=4; when 35=>d<=8; when 36=>d<=13; when 37=>d<=19; when 38=>d<=26; when 39=>d<=34; when 40=>d<=43; when 41=>d<=53; when 42=>d<=64; when 43=>d<=75; when 44=>d<=87; when 45=>d<=99; when 46=>d<=112; when
39、47=>d<=124; when 48=>d<=137; when 49=>d<=150; when 50=>d<=162; when 51=>d<=174; when 52=>d<=186; when 53=>d<=197; when 54=>d<=207; when 55=>d<=217; when 56=>d<=225; when 57=>d<=233; when 58=>d<=239; when 59=>d<=245; when 6
40、0=>d<=249; when 61=>d<=252; when 62=>d<=254; when 63=>d<=255; when others=>d<=0; end case;end if;end process;end sin_arc;附錄4:波形輸出控制程序module change(clk,KEY1,dlta,sqra,sina,q_out,selt);input clk;input KEY1;input 7:0dlta,sqra,sina;output 7:0q_out;output 1:0selt;reg 9:0 cnt
41、;reg 1:0 tmp;reg 7:0 q_out;reg 1:0 selt;initial begin tmp<=2'b00; cnt<=500; endalways (posedge clk) begin if(KEY1=1'b0) cnt<=0; else if(cnt<1000) cnt<=cnt+1; end always (posedge clk) begin if(cnt=100) begin if(tmp<2'b10) tmp=tmp+1; else tmp<=2'b00; end endalways
42、(posedge clk) begin case(tmp) 2'b00: q_out<=dlta; 2'b01: q_out<=sina; 2'b10: q_out<=sqra; endcase endalways (posedge clk) begin case(tmp) 2'b00: selt<=1; 2'b01: selt<=2; 2'b10: selt<=3; endcase endendmodule附錄5:100K分頻器,向A/D芯片提供時鐘頻率module clk_div(reset,f_50m,f
43、_100k); input reset,f_50m; output f_100k; reg f_100k; reg 12:0i; always (posedge f_50m) begin if(!reset) begin f_100k<=0; i<=0; end else begin if(i=500) begin i<=0; f_100k<=f_100k; end else i<=i+1; end endendmodule附錄6:控制A/D周期轉(zhuǎn)換程序module ad_clk(reset,f_50m,rd,wd); input reset,f_50m; out
44、put rd,wd; reg rd,wd; reg 31:0i; always (posedge f_50m) begin if(!reset)begin rd<=0; wd<=0; i<=0; end else begin if(i= =5000000) begin i<=0; wd<=wd; rd<=0; end else i<=i+1;end end endmodule附錄7:C語言程序設(shè)計/* * "Hello World" example. * This example prints 'Hello from Nio
45、s II' to the STDOUT stream. It runs on * the Nios II 'standard', 'full_featured', 'fast', and 'low_cost' example * designs. It runs with or without the MicroC/OS-II RTOS and requires a STDOUT * device in your system's hardware. * The memory footprint of this h
46、osted application is 69 kbytes by default * using the standard reference design.* For a reduced footprint version of this template, and an explanation of how * to reduce the memory footprint for a given application, see the * "small_hello_world" template. */#include <stdio.h>#include
47、 "string.h"#include "system.h"#include "sys/alt_irq.h"#include "altera_avalon_pio_regs.h"#define u8 alt_u8#define u32 alt_u32#define a1 10#define a2 100#define a3 1000#define a4 10000#define a5 100000#define a6 1000000#define a7 10000000/*8int led_display(u32
48、data1,u32 data2,u32 data3) u32 d0,d1,d2,d3,d4,d5,d6,d7,led; d0=0;/NO.0 ,display 0 d1=data1%a1;/NO.1 ,display 0 d2=data1/a1;d2=d2%a1;/NO.2 ,display value d3=data1/a2;d3=d3%a1;/NO.3 ,display value d4=data2%a1;/NO.4 ,display value d5=data2/a1;d5=d5%a1;/NO.5 ,display value d6=data3;/NO.6 ,display 0 d7=0
49、;/NO.7 ,display 0 /move bit d1<<=4;/move the value to the NO.1 d2<<=8;/move the value to the NO.2 d4<<=16;/move the value to the NO.4 d5<<=20;/move the value to the NO.5 d6<<=24;/move the value to the NO.6 d7<<=28;/move the value to the NO.7 /compose 32 bit data led=(d0|d1|d2|d3|d4|d5|d6|d7); return(led); /*int main() u8 key3,key2,k3=1,k2=0; u32 temp,temp1,zheng_zhi,y
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025天津市小型建設(shè)工程施工合同(空白)
- 2025年上海倉庫租賃合同(4篇)
- 牛奶店租賃合同
- 大型展會租賃合同標(biāo)準(zhǔn)文本
- 2025年不銹鋼產(chǎn)品加工合同(2篇)
- 公司人事聘用合同
- 2025商砼預(yù)拌混凝土買賣合同
- 貨物運(yùn)輸戰(zhàn)略合作合同
- 網(wǎng)絡(luò)安全運(yùn)維服務(wù)框架合同
- 深圳市物業(yè)服務(wù)合同新修訂版
- 中級半導(dǎo)體分立器件和集成電路裝調(diào)工技能鑒定考試題庫(含答案)
- HG20202-2014 脫脂工程施工及驗(yàn)收規(guī)范
- 固定資產(chǎn)培訓(xùn)課件共-51張
- 元宵節(jié)猜燈謎 11
- 施工現(xiàn)場視頻監(jiān)控系統(tǒng)施工方案
- 2024年高考語文思辨類作文預(yù)測+考前模擬題+高分范文
- 2024年演出經(jīng)紀(jì)人考試必背1000題一套
- 課題達(dá)成型品管圈
- 刑事判決書標(biāo)準(zhǔn)格式
- 《量化交易之門》連載27:風(fēng)險的角度談收益MAR和夏普比率
- 2024年廣州市高三一模普通高中畢業(yè)班高三綜合測試一 物理試卷(含答案)
評論
0/150
提交評論