版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、微機原理綜合項目報告基于nexys4簡易數(shù)字信號發(fā)生器 班 級: 通信1301班學 號: HUST 姓 名: 華中科技大學 指導老師: 左冬紅 羅 杰 目錄一、項目簡介 .11.設計思路12.任務分配13.功能描述.1二、項目構(gòu)成及概要設計21. 硬件模塊構(gòu)成.22. 軟件實現(xiàn)流程.2三、項目詳細設計.41.硬件的內(nèi)部構(gòu)成.42.硬件平臺的搭建.93. 軟件模塊的構(gòu)成及其實現(xiàn)13 波形產(chǎn)生模塊.13 頻率調(diào)節(jié)模塊.15 幅度調(diào)節(jié)模塊.16 方波占空比調(diào)節(jié)模塊.16四、 項目操作說明18五、 附錄19六、 心得體會及建議201、 項目簡介1.設計思路 本次項目我們小組選擇的是信號發(fā)生器,由于之前
2、做過D/A顯示鋸齒波的實驗,便想到在該實驗的基礎(chǔ)上進行功能的擴充,這樣思路比較清晰。首先我們想到在上次實驗的基礎(chǔ)上加上方波、三角波和正弦波這幾種常見波形,實現(xiàn)起來也與鋸齒波較為類似,只是在正弦波的顯示上花了點功夫,最后決定通過MATLAB取值來實現(xiàn),最后能正常顯示。而幾種波形的切換我們則想到了開關(guān),通過添加開關(guān)的GPIO核來獲取開關(guān)的狀態(tài),預留了三位用于波形的切換。僅僅幾種波形的顯示是遠不夠的,所以我們決定添加頻率的調(diào)節(jié)和幅度的調(diào)節(jié)部分,實現(xiàn)時發(fā)現(xiàn)幅度調(diào)節(jié)容易實現(xiàn)但頻率調(diào)節(jié)有些難度,最后從代碼產(chǎn)生波形的原理上來分析想到通過改變?nèi)拥拇螖?shù)來調(diào)節(jié)頻率的增減,而選擇用一位開關(guān)用于切換頻率增加和減小,
3、這樣會節(jié)省資源。 當添加了方波后又發(fā)現(xiàn)其占空比也應該實現(xiàn)調(diào)節(jié)的功能,想到通過開發(fā)板上的按鈕來實現(xiàn),通過建立按鈕的中斷控制,來調(diào)節(jié)時間延時的增減,從而控制占空比的實現(xiàn)。 當實現(xiàn)了MATLAB取數(shù)進行正弦波的顯示時,小組一位成員提出顯示心形的設計想法,通過類似的思路也得到了實現(xiàn)。 具體的設計原理及流程后面會有詳細說明。2.任務分配 小組成員、貢獻比例及具體分工: 1硬件平臺的搭建,軟件代碼的實現(xiàn)以及各功能的設計 2心形顯示的提出和設計,正弦波MATLAB取值的實現(xiàn) 3項目整體框圖的設計和繪制 實驗報告、PPT以及視頻的拍制則是由小組成員一起完成。3. 功能描述 該信號發(fā)生器工程能顯示方波,鋸齒波,
4、正弦波,三角波以及“愛心”形狀(ch1、ch2分別顯示“愛心”上下部分再拼接成完整的“愛心”)。通過開發(fā)板按鈕能調(diào)節(jié)各個波形的頻率、幅度和方波的占空比,通過led燈能反映開關(guān)狀態(tài),通過數(shù)碼管能反映當前顯示的波形序號。 Switch<2>-Switch<0>:選擇波形 Switch<8>-Switch<3>:調(diào)節(jié)頻率 Switch<9>:控制頻率增加和減小 Switch<15>-Switch<10>:調(diào)節(jié)幅度 BTNU:增加占空比 BTND:減小占空比192、 項目構(gòu)成及概要設計1. 硬件模塊構(gòu)成 本項目用到的硬
5、件平臺包括SPI IP核與D/A芯片構(gòu)成數(shù)據(jù)的傳輸和數(shù)模轉(zhuǎn)換的功能,4個GPIO IP核分別用于開關(guān)狀態(tài)的讀取,按鈕狀態(tài)的讀取,LED燈的顯示,數(shù)碼管的段選和位選。一個INTC IP核用于接受來自于SPI和按鈕的GPIO的中斷,并將中斷發(fā)送給microblaze核來控制。 硬件整體框圖:2. 軟件實現(xiàn)流程 配置好各GPIO、SPI和INTC中斷控制器的連接,初始化各個模塊并進行設置,讀取開關(guān)的狀態(tài)并寫入LED燈的GPIO來控制其顯示獲取波形選擇、頻率調(diào)節(jié)和幅度調(diào)節(jié)的信息根據(jù)波形選擇信息來顯示相應的波形并通過數(shù)碼管顯示波形對應的序號調(diào)節(jié)波形的頻率和幅度當為方波時,可通過按鈕來調(diào)節(jié)方波的占空比各種
6、波形的具體實現(xiàn)。 流程圖:3、 項目詳細設計1. 硬件的內(nèi)部構(gòu)成 SPI IP核內(nèi)部框圖:接口寄存器定義:SPICR寄存器各位的含義如下:SPISR寄存器各位的含義如下:SPISSR寄存器各位的含義如下: SPISSR寄存器bit0bitn-1分別對應控制SS(0n-1)的輸出IPISR寄存器各位的含義如下: DA芯片DAC121S101S是12位D/A轉(zhuǎn)換芯片,可以采用SPI串行接口進行數(shù)據(jù)輸入,其引腳定義和結(jié)構(gòu)圖如下圖所示:其工作原理可以描述為:串行接口模塊按照一定的時序?qū)⒋袛?shù)據(jù)采樣送到輸入移位寄存器;移位寄存器將串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)將一部分并行數(shù)據(jù)(低12位)送入12位D/A轉(zhuǎn)換寄存
7、器,另一部分送入電源下拉控制邏輯。 12位D/A轉(zhuǎn)換寄存器的數(shù)據(jù)同時送入D/A轉(zhuǎn)換寄存器,將數(shù)字信號轉(zhuǎn)換為模擬信號后,再經(jīng)過輸出放大電路以及電源下拉控制邏輯的控制之后輸出到Vout。 其中Vout輸出的模擬電壓范圍為0VA。其中Vout與輸入數(shù)據(jù)D的關(guān)系為:Vout= VA(D/4096),D為12位輸入的數(shù)字量,其取值范圍為04095 DAC121S101要求每次傳輸16位數(shù)據(jù),這16位串行數(shù)據(jù)的含義為:D0D11為12位DA轉(zhuǎn)換的數(shù)字量, PD0PD1為電源下拉控制邏輯的輸入,控制電源下拉模塊的工作方式,改變輸出Vout的 GPIO IP核AXI GPIO控制器包括AXI總線接口模塊、中斷
8、產(chǎn)生邏輯模塊以及雙通道輸入/輸出模塊。內(nèi)部框圖:GPIO內(nèi)部寄存器定義如下:寄存器名稱偏移地址初始值含義讀寫操作GPIO_DATA0x00通道1數(shù)據(jù)寄存器通道1數(shù)據(jù)GPIO_TRI0x40通道1三態(tài)控制寄存器寫控制通道1傳輸方向GPIO2_DATA0x80通道1數(shù)據(jù)寄存器通道2數(shù)據(jù)GPIO2_TRI0xC0通道1三態(tài)控制寄存器寫控制通道1傳輸方向GPIO_TRI的各位分別控制GPIO_DATA的各位為輸入或輸出:當GPIO_TRI某位為0時,GPIO相應的I/O引腳配置為輸出;當GPIO_TRI某位為1時,GPIO相應的I/O引腳配置為輸入。GPIO內(nèi)部中斷相關(guān)寄存器:名稱偏移地址含義讀寫操作
9、GIER0x11C全局中斷屏蔽寄存器最高位bit31控制GPIO是否輸出中斷信號IrqIP IER0x128中斷屏蔽寄存器控制各個通道是否允許產(chǎn)生中斷bit0-通道1;bit1-通道2IP ISR0x120中斷狀態(tài)寄存器各個通道的中斷請求狀態(tài),寫1將清除相應位的中斷狀態(tài)bit0-通道1;bit1-通道2AXI INTC主要包括AXI總線接口模塊,INTC從設備接口模塊,中斷控制器核心模塊。其構(gòu)成原理框圖為:寄存器各位的定義如圖:2. 硬件平臺的搭建 添加SPI IP核,按鈕、LED燈、開關(guān)和數(shù)碼管的GPIO核以及中斷控制器INTC核,外部連線如圖: 各GPIO核、SPI IP核及INTC中斷控
10、制器配置如下: 按鈕的GPIO配置: 開關(guān)的GPIO配置: LED燈的GPIO配置: 數(shù)碼管的GPIO配置: SPI的配置: 將SPI和按鈕的GPIO作為中斷源,觸發(fā)INTC的中斷,INTC的配置:得到各模塊分配的地址,如圖:配置各模塊的引腳: 至此已經(jīng)配置好完整的硬件平臺,生成bit流文件并導出到SDK即可進行軟件代碼的設計。3.軟件模塊的構(gòu)成及其實現(xiàn) 波形產(chǎn)生模塊 鋸齒波:while(Count<4096)value=Count;WriteBuffer0=(u8)(value);WriteBuffer1=(u8)(value>>8)&0x0f;TransferIn
11、Progress=TRUE;XSpi_Transfer(&SpiInstance,WriteBuffer,(void *)0,2);while(TransferInProgress); Count=Count+1;分析:value值每傳輸一次增加1;當value=4096時令其為0;得到一個鋸齒波,循環(huán)執(zhí)行便可顯示出鋸齒波。方波:for(i=0;i<5000;i+)value=4095;WriteBuffer0=(u8)(value);WriteBuffer1=(u8)(value>>8)&0x0f;TransferInProgress=TRUE;XSpi_T
12、ransfer(&SpiInstance,WriteBuffer,(void *)0,2);while(TransferInProgress);for(i=0;i<5000;i+)value=0;WriteBuffer0=(u8)(value);WriteBuffer1=(u8)(value>>8)&0x0f;TransferInProgress=TRUE;XSpi_Transfer(&SpiInstance,WriteBuffer,(void *)0,2);while(TransferInProgress); 分析:令value=4095即最大值,通
13、過for循環(huán)使其維持一段時間,循環(huán)執(zhí)行完成后,令value=0并維持相同的時間,執(zhí)行完成后重復執(zhí)行上述步驟,得到完整的方波。三角波:Count=0;while(Count<4096) value=Count;WriteBuffer0=(u8)(value); WriteBuffer1=(u8)(value>>8)&0x0f;TransferInProgress=TRUE;XSpi_Transfer(&SpiInstance,WriteBuffer,(void *)0,2);while(TransferInProgress);Count=Count+1;Coun
14、t=4095;while(Count>=0)value=Count;WriteBuffer0=(u8)(value);WriteBuffer1=(u8)(value>>8)&0x0f;TransferInProgress=TRUE;XSpi_Transfer(&SpiInstance,WriteBuffer,(void *)0,2);while(TransferInProgress);Count=Count-1;分析:首先令Count=0,當其小于4096時讓其每次傳輸后增加1,直至其值超過4096,令其為4095,并在每次傳輸后減1直至為0,重復執(zhí)行上述計算
15、,得到三角波。正弦波:Count=0;while(Count<=4000)value=sinCount;WriteBuffer0=(u8)(value);WriteBuffer1=(u8)(value>>8)&0x0f;TransferInProgress=TRUE;XSpi_Transfer(&SpiInstance,WriteBuffer,(void *)0,2);while(TransferInProgress); Count=Count+1;分析:正弦波的產(chǎn)生不同于上述方法,因為正弦波不能直接通過Count的加減簡單的實現(xiàn),故選擇通過MATLAB計算的
16、方式得到4000組數(shù)據(jù),依次傳輸?shù)玫秸也?。MATLAB取值的具體實現(xiàn)見附錄。心形:心形的實現(xiàn)與正弦波的實現(xiàn)類似,同樣是通過MATLAB取值,分別得到心形的上下部分,通過示波器兩個通道拼接得到完整的心形。具體實現(xiàn)見附錄。 頻率的調(diào)節(jié)模塊本項目通過開關(guān)的switch<8>-switch<3>這6位實現(xiàn)頻率的調(diào)節(jié),而switch<9>則實現(xiàn)頻率增加和減小的選擇。具體頻率的調(diào)節(jié)如下,以鋸齒波為例:while(Count<4096)for(i=0;i<=defre;i+)value=Count/(mag+1);WriteBuffer0=(u8)(valu
17、e);WriteBuffer1=(u8)(value>>8)&0x0f;TransferInProgress=TRUE;XSpi_Transfer(&SpiInstance,WriteBuffer,(void *)0,2);while(TransferInProgress);Count=Count+1+infre;分析:增加頻率是通過Count每次增加的幅度來改變,Count每次增加的幅度越大,取樣的周期就越短,頻率就會增加。減小頻率則是通過重復傳輸同一個數(shù)來實現(xiàn)時間的延時,這樣增加了周期,減小了頻率。除了方波,其余波形的頻率增減均是通過上述方式得到的。方波:for
18、(i=0;i<5000*(1+defre)/(1+infre);i+)value=4095;WriteBuffer0=(u8)(value);WriteBuffer1=(u8)(value>>8)&0x0f;TransferInProgress=TRUE;XSpi_Transfer(&SpiInstance,WriteBuffer,(void *)0,2);while(TransferInProgress);for(i=0;i<5000*(1+defre)/(1+infre);i+)value=0;WriteBuffer0=(u8)(value);Wri
19、teBuffer1=(u8)(value>>8)&0x0f;TransferInProgress=TRUE;XSpi_Transfer(&SpiInstance,WriteBuffer,(void *)0,2);while(TransferInProgress);分析:通過改變延時的時間得到頻率的變化。當增加頻率時,循環(huán)次數(shù)減少,周期減少,頻率增加;當減小頻率時,循環(huán)次數(shù)增加,周期增加,頻率減小。 幅度的調(diào)節(jié)模塊本項目中幅度的調(diào)節(jié)采用的都是相同的方式,由于D/A新芯片支持的最大電壓為3.3V,采用的初始電壓也為3.3V,故只能減小電壓幅度。以鋸齒波為例:while(
20、Count<4096)for(i=0;i<=defre;i+)value=Count/(mag+1);WriteBuffer0=(u8)(value);WriteBuffer1=(u8)(value>>8)&0x0f;TransferInProgress=TRUE;XSpi_Transfer(&SpiInstance,WriteBuffer,(void *)0,2);while(TransferInProgress);Count=Count+1+infre;分析:只需將要傳輸?shù)闹党噪妷旱乃p值便可實現(xiàn)電壓幅度的改變。 方波占空比的調(diào)節(jié)模塊通過按鈕來實現(xiàn)
21、占空比的調(diào)節(jié),由于按鈕需要產(chǎn)生中斷來進行控制,需要添加按鈕的中斷控制及處理程序,并在硬件平臺上配置好。將開發(fā)板上的BTNU和BTND分別用于占空比的增加和減小,通過以下代碼實現(xiàn):if(state1=0x1)blank+;state1=0;else if(state1=0x8)blank-;state1=0;for(i=0;i<5000*(1+defre)/(1+infre)+100*blank;i+)value=4095/(mag+1);WriteBuffer0=(u8)(value);WriteBuffer1=(u8)(value>>8)&0x0f;Transfer
22、InProgress=TRUE;XSpi_Transfer(&SpiInstance,WriteBuffer,(void *)0,2);while(TransferInProgress);for(i=0;i<5000*(1+defre)/(1+infre)-100*blank;i+)value=0;WriteBuffer0=(u8)(value);WriteBuffer1=(u8)(value>>8)&0x0f;TransferInProgress=TRUE;XSpi_Transfer(&SpiInstance,WriteBuffer,(void *)
23、0,2);while(TransferInProgress);分析:首先定義一個靜態(tài)的全局變量blank用于改變占空比,當中斷是由BTNU產(chǎn)生時,blank會增加,且每按一次按鈕其值均會增加一次,同理當中斷是由BTND產(chǎn)生時,blank會減小,且每按一次按鈕其值均會減小一次,由于blank為靜態(tài)全局變量,其每次改變的值均會保留,故增加占空比和減小占空比可隨意進行,且都是通過增加某項的延時時間和減小另一項的延時時間來實現(xiàn)的。4、 項目操作說明 將代碼下載到開發(fā)板中,數(shù)碼管會顯示當前波形的序號,通過開關(guān)控制波形的一系列操作。switch<2>-swich<0>控制波形的切換
24、,三個開關(guān)構(gòu)成的二進制數(shù)值記為wave,wave=0顯示鋸齒波,wave=1顯示方波,wave=2顯示三角波,wave=3顯示正弦波,wave=4和5時分別顯示“心形”的上下部分。 switch<9>用于控制是增加頻率還是減小頻率。當switch<9>=0時,switch<8>-switch<3>用于增加頻率,記switch<8>-switch<3>構(gòu)成的二進制數(shù)值為infre,此時頻率會變?yōu)樵瓉淼模╥nfre+1)倍;當switch<9>=1時,switch<8>-switch<3>用
25、于減小頻率,記switch<8>-switch<3>構(gòu)成的二進制數(shù)值為defre,此時頻率會變?yōu)樵瓉淼模╠efre+1)倍。 switch<15>-switch<10>用于控制電壓的變化,由于DA限制的電壓最大值為3.3V,而設置的初始電壓為3.3V,故只能減小電壓,記switch<15>-switch<10>構(gòu)成的二進制數(shù)值為mag,此時電壓會變?yōu)樵瓉淼?/(mag+1)。 按鈕BTNU和BTND分別用于調(diào)節(jié)方波的占空比,BTNU用于增加占空比,每按一次按鈕占空比會比原來增加1%,BTND用于減小占空比,每按一次按鈕占空比會比原來減小1%,可隨意調(diào)節(jié)占空比。 Switch<2>-Switch<0>:選擇波形 Switch<8>-Switch<3>:調(diào)節(jié)頻率 Switch<9>:控制頻率增加和減小 Switch<15>-Switch<10>:調(diào)節(jié)幅度
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45111-2024保護層分析(LOPA)、安全完整性等級(SIL)定級和驗證質(zhì)量控制導則
- BIM工程師-全國《BIM應用技能資格》考前沖刺2
- 浙江省溫州市龍港市2024年中考數(shù)學二模試題附答案
- 電子政務提高公共服務效率
- 幼兒園大班數(shù)學測試題
- 高一化學教案:第二單元化學反應中的熱量
- 2024高中地理第1章區(qū)域地理環(huán)境與人類活動第4節(jié)第1課時資源跨區(qū)域調(diào)配精練含解析湘教版必修3
- 2024高中語文第6單元墨子蚜第1課兼愛訓練含解析新人教版選修先秦諸子蚜
- 2024高中語文第六單元文無定格貴在鮮活種樹郭橐駝傳作業(yè)含解析新人教版選修中國古代詩歌散文欣賞
- 2024高考化學一輪復習第一部分考點10氯及其化合物強化訓練含解析
- 2025湖北襄陽市12345政府熱線話務員招聘5人高頻重點提升(共500題)附帶答案詳解
- 2025年河北省職業(yè)院校技能大賽智能節(jié)水系統(tǒng)設計與安裝(高職組)考試題庫(含答案)
- 2024年下半年鄂州市城市發(fā)展投資控股集團限公司社會招聘【27人】易考易錯模擬試題(共500題)試卷后附參考答案
- GB/T 29498-2024木門窗通用技術(shù)要求
- 《職業(yè)院校與本科高校對口貫通分段培養(yǎng)協(xié)議書》
- 人教版(2024)英語七年級上冊單詞表
- 中醫(yī)養(yǎng)生產(chǎn)業(yè)現(xiàn)狀及發(fā)展趨勢分析
- 2023年浙江省溫州市中考數(shù)學真題含解析
- 司庫體系建設
- 居間合同范本解
- 機電傳動單向數(shù)控平臺-礦大-機械電子-有圖
評論
0/150
提交評論