課程設(shè)計(jì)--可調(diào)幅度簡(jiǎn)易波形刺激發(fā)生器設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  1、前言</b></p><p>  可調(diào)幅度簡(jiǎn)易波形刺激發(fā)生器是信號(hào)發(fā)生器的一種,在生產(chǎn)實(shí)踐和科研領(lǐng)域中有著廣泛的應(yīng)用。在研制、生產(chǎn)、測(cè)試和維修各種電子元件、部件以及整機(jī)設(shè)備時(shí),都需要有信號(hào)源,由它產(chǎn)生不同幅度不同波形的電壓、電流信號(hào)并加到被測(cè)器件或設(shè)備上,用其他儀器觀察、測(cè)量被測(cè)儀器的輸出響應(yīng),以分析確定它們的性能參數(shù)。信號(hào)發(fā)生器是電子測(cè)量領(lǐng)域中最基本、應(yīng)用

2、最廣泛的一類電子儀器。它可以產(chǎn)生多種波形信號(hào),如正弦波,三角波和方波等,因而廣泛用于通信、雷達(dá)、導(dǎo)航、宇航等領(lǐng)域。</p><p>  在本設(shè)計(jì)中它能夠產(chǎn)生多種波形,如正弦波,三角波和方波等,并能實(shí)現(xiàn)對(duì)各種波形幅度的改變。正因?yàn)槠湓谏钪袘?yīng)用的重要性,人們它做了大量的研究,總結(jié)出了許多實(shí)現(xiàn)方式??梢曰贔PGA 、VHDL、單片機(jī)、DOS技能、數(shù)字電路等多種方法實(shí)現(xiàn)。</p><p>  

3、本設(shè)計(jì)是采用VHDL來(lái)實(shí)現(xiàn)的可調(diào)幅度簡(jiǎn)易波形刺激發(fā)生器設(shè)計(jì)。它能產(chǎn)生正弦波,三角波和方波。且對(duì)各種波形的要求如下:</p><p>  (1)設(shè)計(jì)一個(gè)簡(jiǎn)易多功能信號(hào)發(fā)生器,產(chǎn)生穩(wěn)定的波形:</p><p>  正弦波,三角波,方波;</p><p>  (2)信號(hào)發(fā)生器波形信號(hào)的選擇由撥碼開(kāi)關(guān)控制選擇。 </p><p>  (3)信號(hào)發(fā)生器

4、輸出信號(hào)幅度要求:幅度為1.25V、2.5V、5V。 幅度控制由撥碼開(kāi)關(guān)實(shí)現(xiàn)。輸出頻率不做要求。</p><p>  (4)波形通過(guò)DA轉(zhuǎn)換后在示波器上顯示。 </p><p>  2、FPGA原理及特點(diǎn)</p><p>  FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個(gè)新概念,內(nèi)部包括可配置邏輯模塊CLB(Configurable L

5、ogic Block)、輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個(gè)部分?,F(xiàn)場(chǎng)可編程門陣列(FPGA)是可編程器件。與傳統(tǒng)邏輯電路和門陣列(如PAL,GAL及CPLD器件)相比,F(xiàn)PGA具有不同的結(jié)構(gòu),F(xiàn)PGA利用小型查找表(16X1RAM)來(lái)實(shí)現(xiàn)組合邏輯,每個(gè)查找表連接到一個(gè)D觸發(fā)器的輸入端,觸發(fā)器再來(lái)驅(qū)動(dòng)其他邏輯電路或驅(qū)動(dòng)I/O,由此構(gòu)成了既可實(shí)現(xiàn)組合邏輯功能又可實(shí)現(xiàn)時(shí)序邏輯功

6、能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接到I/O模塊。FPGA的邏輯是通過(guò)向內(nèi)部靜態(tài)存貯單元加載編程數(shù)據(jù)來(lái)實(shí)現(xiàn)的,存儲(chǔ)在存儲(chǔ)器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的連接方式,并最終決定了FPGA所能實(shí)現(xiàn)的功能FPGA允許無(wú)限次的編程。</p><p>  FPGA的基本特點(diǎn)主要有: </p><p>  1)采用FPGA設(shè)計(jì)ASIC電路,用戶不需要投

7、片生產(chǎn),就能得到合用的芯片。 </p><p>  2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。 </p><p>  3)FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。 </p><p>  4)FPGA是ASIC電路中設(shè)計(jì)周期最短、開(kāi)發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一。 </p><p>  5) FPGA采用高速CHMOS工藝,功耗

8、低,可以與CMOS、TTL電平兼容。 </p><p>  可以說(shuō),F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。 </p><p>  FPGA是由存放在片內(nèi)RAM中的程序來(lái)設(shè)置其工作狀態(tài)的,因此,工作時(shí)需要對(duì)片內(nèi)的RAM進(jìn)行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。 </p><p>  加電時(shí),F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片內(nèi)

9、編程RAM中,配置完成后,F(xiàn)PGA進(jìn)入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,F(xiàn)PGA能夠反復(fù)使用。FPGA的編程無(wú)須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當(dāng)需要修改FPGA功能時(shí),只需換一片EPROM即可。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。 </p><p><b>  3、設(shè)計(jì)方案</b

10、></p><p>  3.1實(shí)驗(yàn)要求及總體框圖</p><p>  根據(jù)實(shí)驗(yàn)設(shè)計(jì)要求,可將設(shè)計(jì)分為以下幾個(gè)模塊(如圖3.1):</p><p>  波形產(chǎn)生模塊。主要用來(lái)產(chǎn)生三種波形(正弦波、三角波、方波)。</p><p>  波形選擇模塊。該模塊用于選擇當(dāng)前輸出的為何種波形。</p><p>  幅度控制模

11、塊。用于控制輸出信號(hào)的幅度,本設(shè)計(jì)中要求有三個(gè)檔位,即1.25V,2.5V,5V。</p><p>  DA轉(zhuǎn)換。用于將前面的數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)。</p><p>  輸出模塊。用實(shí)驗(yàn)室提供的示波器觀察檢測(cè)生成的波形。</p><p><b>  圖3.1</b></p><p>  本設(shè)計(jì)采用模塊化編程,在工程中編

12、寫各個(gè)模塊的程序,然后生成symbol 文件,最后在頂層文件中連線編譯下載即可。</p><p>  3.2、單元程序設(shè)計(jì)及仿真分析</p><p>  3.2.1方波的發(fā)生模塊</p><p>  設(shè)計(jì)中利用計(jì)數(shù)的方法來(lái)產(chǎn)生方波,原理類似于分頻器:對(duì)脈沖進(jìn)行計(jì)數(shù),從0計(jì)到31即計(jì)數(shù)32個(gè)脈沖,輸出高電平(1023);從32計(jì)到63即再計(jì)32個(gè)脈沖,輸出為低電平,程

13、序編寫成功后生成的元件模塊圖如圖3.2,其時(shí)序仿真波形圖如圖3.3所示:</p><p><b>  圖3.2</b></p><p><b>  圖3.3</b></p><p>  由波形圖可以看出,每計(jì)數(shù)31個(gè)時(shí)鐘脈沖,輸出電平進(jìn)行一次翻轉(zhuǎn),形成占空比為50%的方波信號(hào)。</p><p>  

14、3.2.2正弦波的發(fā)生模塊</p><p>  對(duì)于正弦波(如圖3.4),由于是周期信號(hào),可以通過(guò)對(duì)一個(gè)完整周期內(nèi)以一定點(diǎn)數(shù)的采樣來(lái)離散化。又由于D/A轉(zhuǎn)換接口為10位輸入,所以必須要考慮到采樣個(gè)數(shù)和采樣值的大小。如果僅以原始波形為基礎(chǔ)進(jìn)行采樣,必然會(huì)出現(xiàn)小數(shù)和負(fù)數(shù),這將使得二進(jìn)制的轉(zhuǎn)化和編程變的很困難。</p><p>  綜合所述,要解決的問(wèn)題就是消除小數(shù)和負(fù)數(shù),使采樣數(shù)值變成正整數(shù),

15、我們采用了以下的算法:首先,將原始波形幅度擴(kuò)大為原來(lái)的512倍,如(圖3.5)。然后將波形向上移動(dòng)512,如圖3.6。接著,利用抽樣點(diǎn)來(lái)產(chǎn)生正弦波,外部接線每產(chǎn)生一個(gè)上升沿,記一次數(shù),同時(shí)根據(jù)計(jì)數(shù)值選擇要輸出的正弦采樣點(diǎn)數(shù)值。設(shè)定64個(gè)抽樣點(diǎn),每個(gè)抽樣點(diǎn)的幅值為:</p><p>  其中 n=0,1,2,…,63。</p><p>  根據(jù)抽樣點(diǎn)所對(duì)應(yīng)的函數(shù)值,DA轉(zhuǎn)換后就可得到一個(gè)正

16、弦波。</p><p>  在Quartus II軟件編寫VHDL代碼,通過(guò)編譯和時(shí)序仿真,可得到如下圖(圖3.7和圖3.8)所示的元件模塊圖和時(shí)序仿真波形。</p><p><b>  圖3.7</b></p><p><b>  圖3.8</b></p><p>  3.2.3三角波的發(fā)生模塊&

17、lt;/p><p>  三角波的波形也呈現(xiàn)一定的規(guī)律,可以通過(guò)外部脈沖刺激,在原來(lái)數(shù)值的基礎(chǔ)上進(jìn)行加(減)一個(gè)固定值,本設(shè)計(jì)利用狀態(tài)機(jī)來(lái)實(shí)現(xiàn),狀態(tài)機(jī)具有良好的可靠性,不易出錯(cuò)。本設(shè)計(jì)狀態(tài)機(jī)有兩個(gè)狀態(tài):</p><p>  狀態(tài)S0:主要用于三角波前半部分(上升部分)的幅值輸出及判斷,幅值采用累加輸出,判斷幅值是否達(dá)到峰值,是則跳轉(zhuǎn)狀態(tài)二,否則仍處于本狀態(tài)。</p><p&g

18、t;  狀態(tài)S1:主要用于三角波后半部分(下降部分)的幅值輸出及判斷,幅值采用遞減輸出,判斷幅值是否達(dá)到0,是則跳轉(zhuǎn)狀態(tài)一,否則仍處于本狀態(tài)。</p><p>  這樣通過(guò)狀態(tài)的不斷轉(zhuǎn)換,就會(huì)輸出一系列值,通過(guò)DA轉(zhuǎn)換就能產(chǎn)生一個(gè)三</p><p>  角波,元件模塊圖及時(shí)序仿真波形圖如圖3.9和圖3.10所示:</p><p><b>  圖3.9<

19、;/b></p><p><b>  圖3.10</b></p><p><b>  3.4波形選擇單元</b></p><p>  波形選擇采用撥碼開(kāi)關(guān)控制,三路輸入(除去開(kāi)關(guān)輸入),一路輸出,通過(guò)對(duì)兩個(gè)撥碼開(kāi)關(guān)的組合狀態(tài)識(shí)別判斷來(lái)控制輸出為哪一路輸入。下圖(圖3.11)為生成模塊圖:</p><

20、;p><b>  圖3.11</b></p><p>  其時(shí)序仿真波形圖如圖3.12所示:</p><p><b>  圖3.12</b></p><p>  由圖可知,用A、B兩個(gè)撥碼開(kāi)關(guān)進(jìn)行選擇。當(dāng)A&B為“01”時(shí),選擇I1為輸出波形;當(dāng)A&B為“10”時(shí),選擇I2為輸出波形;當(dāng)A&B

21、為“11”時(shí),選擇I3為輸出波形;當(dāng)A&B為其他組合時(shí),輸出為高阻抗ZZZZZZZZZZ。</p><p><b>  3.5幅度調(diào)節(jié)單元</b></p><p>  幅度調(diào)節(jié)單元是對(duì)所產(chǎn)生的波形的幅值進(jìn)行調(diào)節(jié)的,幅度的調(diào)節(jié)有三個(gè)檔,5.00V,2.50V和1.25V。顯然,以上三個(gè)檔位呈2倍關(guān)系,故可在原波形數(shù)據(jù)基礎(chǔ)上通過(guò)除2和除4操作來(lái)實(shí)現(xiàn)檔位調(diào)節(jié)。本設(shè)計(jì)

22、采用撥碼開(kāi)關(guān)Sw3和Sw4來(lái)對(duì)幅度進(jìn)行選擇的。當(dāng)Sw3& Sw4為“00”時(shí)幅值為1.25V;當(dāng)Sw3 & Sw4為“01”時(shí)幅值為2.5V;當(dāng)Sw3& Sw4為“10”時(shí)幅值為5.00V。該功能的實(shí)現(xiàn)主要是通過(guò)if語(yǔ)句來(lái)判斷撥碼開(kāi)關(guān)Sw3和Sw4的狀態(tài),并根據(jù)判斷結(jié)果做出相應(yīng)的操作。</p><p>  在Quartus II軟件輸入該單元的VHDL程序,生成元件模塊圖如圖3.13所示,

23、再通過(guò)編譯和時(shí)序仿真,可得到如下(圖3.14)的仿真波形。</p><p><b>  圖3.13</b></p><p><b>  圖3.14</b></p><p>  從仿真波形可以看出,當(dāng)C&D即Sw3& Sw4的值“10”時(shí)輸出D_OUT等于輸入D_IN;當(dāng)C&D即Sw3& Sw

24、4的值“01”時(shí)輸出D_OUT等于輸入D_IN/2; 當(dāng)C&D即Sw3& Sw4的值“00”時(shí)輸出D_OUT等于輸入D_IN/4,跟我們的設(shè)計(jì)目的相符。</p><p>  3.6 DA轉(zhuǎn)換單元</p><p>  數(shù)模轉(zhuǎn)換(DAC)采用TLC5616芯片。TLC5615是一個(gè)串行10位DAC芯片,性能比早期電流型輸出的nAC要好。只需要通過(guò)3根串行總線就可以完成1O位數(shù)據(jù)

25、的串行輸入,易于和工業(yè)標(biāo)準(zhǔn)的微處理器或微控制器(單片機(jī))接口,適用 于電池供電的測(cè)試儀表、移動(dòng)電話,也適用于數(shù)字失 調(diào)與增益調(diào)整以及工業(yè)控制場(chǎng)合。該芯片的封裝及I/O口定義如下(圖3.15和表3.1):</p><p><b>  圖3.15</b></p><p><b>  表3.1</b></p><p>  其工作

26、時(shí)序圖如圖3.16:</p><p><b>  圖3.16</b></p><p>  Note:A、為使時(shí)鐘反饋為最小,當(dāng)CS為高電平時(shí)加在SCLK端的輸入時(shí)鐘應(yīng)當(dāng)呈現(xiàn)低電平。</p><p>  C、第12個(gè)SCLK下降沿。</p><p>  注意:此圖為非級(jí)聯(lián)方式下DA轉(zhuǎn)換時(shí)序,可將芯片的第四腳懸空不做處理。在

27、非級(jí)聯(lián)方式下,1腳DIN輸入的數(shù)據(jù)格式如下所示,高10位為有效數(shù)據(jù),低2位可以設(shè)置為‘0’電平。</p><p>  本設(shè)計(jì)中需要的操作主要是編程產(chǎn)生TLC5615的控制信號(hào)(SCLK時(shí)鐘和CS信號(hào))及串行輸送TLC5615所需的轉(zhuǎn)換數(shù)據(jù),設(shè)計(jì)時(shí)采用狀態(tài)機(jī)。狀態(tài)轉(zhuǎn)移圖如圖3.17:</p><p><b>  圖3.17</b></p><p>

28、;<b>  其中:</b></p><p>  S0:CS為高,SCLK為低 ,計(jì)數(shù)為0;</p><p>  S1:等待一個(gè)時(shí)鐘周期;</p><p>  S2:CS為低,SCLK為低,并判斷CNT計(jì)數(shù)器是否小于等于11,是則跳到S3,否則跳到時(shí);</p><p>  S3:CS為低,SCLK為高,計(jì)數(shù)器CNT加1計(jì)

29、數(shù),并跳轉(zhuǎn)到S2;</p><p>  S3:CS為高,SCLK為低,跳轉(zhuǎn)到S0;</p><p>  另外,送數(shù)與更新數(shù)據(jù)的處理: </p><p>  判斷CS,若為高,則更新數(shù)據(jù),即往移位寄存器中裝載需要轉(zhuǎn)換成模擬信號(hào)的數(shù)字信號(hào)數(shù)據(jù);若CS為低,則通過(guò)移位,把數(shù)據(jù)串行送給TLC5615芯片的輸入端(每個(gè)SCLK上升沿移一位送出數(shù)據(jù))。</p>&

30、lt;p>  另外,本模塊還需一個(gè)分頻,實(shí)驗(yàn)板的時(shí)鐘信號(hào)為50MHZ, 需將它分頻以適應(yīng)TLC5615要求的時(shí)鐘信號(hào)。本設(shè)計(jì)中采用的方案是:一是當(dāng)計(jì)數(shù)器計(jì)數(shù)到偶數(shù)分N/2-1時(shí),將輸出電平進(jìn)行一次翻轉(zhuǎn),同時(shí)給計(jì)數(shù)器一個(gè)復(fù)位信號(hào),如此循環(huán)。在Quartus II軟件編寫VHDL程序,經(jīng)過(guò)編譯和時(shí)序仿真,可得到如下(圖3.18)的仿真波形及元件模塊圖(圖3.19)。</p><p><b>  圖3.

31、18</b></p><p><b>  圖3.19</b></p><p>  從波形圖上可以看到,分頻器得到了將系統(tǒng)時(shí)鐘50分頻后的時(shí)鐘信號(hào)。</p><p>  4、原理圖設(shè)計(jì)及仿真分析</p><p>  將各個(gè)模塊用線連接起來(lái),得到頂層文件電路圖,如圖4.1所示:</p><p&

32、gt;<b>  圖4.1</b></p><p>  5、硬件實(shí)驗(yàn)結(jié)果及時(shí)序分析結(jié)果</p><p>  本課程設(shè)計(jì)是幅值可調(diào)的波形發(fā)生器,根據(jù)引腳所鎖定圖將系統(tǒng)中的各個(gè)輸入輸出端口鎖定到合適的引腳上。其管腳設(shè)置如圖5.1所示</p><p>  其中clk為FPGA系統(tǒng)時(shí)鐘;A、B、C、D代表四個(gè)撥碼開(kāi)關(guān)的值。 </p>&l

33、t;p>  當(dāng)引腳鎖定完畢后,將程序下載到試驗(yàn)箱中,連好示波器,在輸入端輸入相應(yīng)的值即可得到相應(yīng)的輸出波形。具體的硬件仿真波形如下:</p><p>  在clk端輸入50MHz的時(shí)鐘信號(hào),當(dāng)圖4.1的原理圖中的A&B輸入“01”時(shí)得到的是正弦波波形,如圖5.2所示。改變C&D的值可以該變輸出波形的幅值。當(dāng)為“00”時(shí)幅值為1.25V ;當(dāng)C&D為“01”時(shí)幅值為2.5V;當(dāng)C&am

34、p;D為“10”時(shí)幅值為5.00V。</p><p>  當(dāng)圖4.1的原理圖中的A&B輸入“10”時(shí)得到的是方波波形,如圖5.3所示。同理,改變C&D的值可以該變輸出波形的幅值。</p><p>  當(dāng)圖4.1的原理圖中的A&B輸入“11”時(shí)得到的是三角方波波形,如圖5.4所示。同理,改變C&D的值可以該變輸出波形的幅值。</p><p&

35、gt;<b>  結(jié)果分析:</b></p><p>  從實(shí)驗(yàn)結(jié)果來(lái)看,設(shè)計(jì)成功完成了三種波形的設(shè)計(jì)。當(dāng)選擇撥碼開(kāi)關(guān)SW1、SW2的不同組合時(shí),波形輸出發(fā)生變化;當(dāng)選擇撥碼開(kāi)關(guān)SW3、SW4的不同組合時(shí),實(shí)現(xiàn)了波形幅度的調(diào)節(jié)。由于設(shè)計(jì)過(guò)程中存在不可避免的誤差,輸出波形的形狀及輸出幅值均與標(biāo)準(zhǔn)有些微偏差,但都保持在約束范圍內(nèi)。綜上所述,本次設(shè)計(jì)的信號(hào)發(fā)生器,達(dá)到了設(shè)計(jì)所定要求,完成了要求所需

36、的各個(gè)功能。</p><p><b>  6、總結(jié)</b></p><p>  本次設(shè)計(jì)五人一組,為時(shí)兩個(gè)星期。期間,小組成員之間分工明確,合作默契,進(jìn)行了多次討論分析,使得本次課程設(shè)計(jì)得以順利完成。</p><p>  對(duì)于EDA的編程,其編程語(yǔ)言本身不會(huì)很難,關(guān)鍵在于編程的內(nèi)在邏輯。經(jīng)過(guò)一個(gè)學(xué)期的理論學(xué)習(xí),我們對(duì)EDA有了個(gè)初步的認(rèn)識(shí),而通

37、過(guò)這次的課程設(shè)計(jì),我們對(duì)EDA又有了更深一步的理解,鍛煉了我們的動(dòng)手能力和思維能力。</p><p>  在設(shè)計(jì)過(guò)程中遇到不少問(wèn)題,如鍵盤控制。鍵盤在7段數(shù)碼管顯示時(shí),由于按下鍵一短時(shí)間后應(yīng)放開(kāi)按鍵,這樣勢(shì)必會(huì)對(duì)輸出顯示造成影響,所以程序邏輯上應(yīng)該有鎖存功能。但這種方法在本設(shè)計(jì)中行不通,因?yàn)轱@示程序中的按鍵程序內(nèi)部是通過(guò)定義一個(gè)信號(hào)tmp來(lái)保存待顯示的數(shù)值的,而本設(shè)計(jì)中要鎖存的是一個(gè)動(dòng)態(tài)產(chǎn)生信號(hào)的輸入通道,若仍按

38、照l(shuí)ed顯示時(shí)按鍵的程序編寫方法,那么tmp內(nèi)鎖存的數(shù)據(jù)只是一個(gè)暫時(shí)的靜態(tài)數(shù)據(jù),導(dǎo)致按鍵松開(kāi)后輸出的數(shù)據(jù)只是一個(gè)恒定值,而不時(shí)動(dòng)態(tài)變化的波形數(shù)據(jù)。所以最后趙老師建議我們換成撥碼開(kāi)關(guān)。</p><p>  從接觸到這個(gè)設(shè)計(jì)課題到設(shè)計(jì)成功,途中遇到了住多么困難,通過(guò)組員之間的相互討論及指導(dǎo)老師的指點(diǎn),最終得以解決,在此對(duì)那些給過(guò)幫助的老師及同學(xué)表示感謝。</p><p>  本系統(tǒng)即實(shí)現(xiàn)了可以

39、輸出三種波形的幅值可調(diào)的波形發(fā)生器,最后的測(cè)試結(jié)果表明,該設(shè)計(jì)正確有效,可以作為制作實(shí)物的理論依據(jù)。</p><p><b>  7、參考文獻(xiàn)</b></p><p>  1].潘松,黃繼業(yè) 《EDA技術(shù)實(shí)用教程(第三版)》科技出版社 2006年9月第三版</p><p>  2].趙小明 《EDA技術(shù)基礎(chǔ)實(shí)驗(yàn)指導(dǎo)書》重慶大學(xué)生物工程學(xué)院

40、2012年5月</p><p><b>  8、附錄</b></p><p><b>  附錄1: 任務(wù)分工</b></p><p>  波形產(chǎn)生:余春蓉、尹玉妮、黃瑩瑩、李文滿、藍(lán)海強(qiáng)</p><p>  幅度控制:余春蓉、尹玉妮、藍(lán)海強(qiáng)</p><p>  波形選擇:黃瑩

41、瑩、李文滿、藍(lán)海強(qiáng)</p><p><b>  DA轉(zhuǎn)換:藍(lán)海強(qiáng)</b></p><p><b>  報(bào)告:全體成員</b></p><p><b>  答辯ppt:藍(lán)海強(qiáng)</b></p><p><b>  附錄2:程序</b></p>&

42、lt;p><b>  分頻器程序</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY FENPIN IS</

43、p><p>  PORT(CLK :IN STD_LOGIC;</p><p>  CLK1:OUT STD_LOGIC</p><p><b>  );</b></p><p><b>  END;</b></p><p>  ARCHITECTURE FP OF FENPIN

44、 IS</p><p>  SIGNAL A:INTEGER:=0;</p><p>  SIGNAL Z:STD_LOGIC;</p><p><b>  BEGIN</b></p><p>  PROCESS(CLK)</p><p><b>  BEGIN</b><

45、;/p><p>  IF (CLK'EVENT AND CLK='1') THEN </p><p><b>  A<=A + 1;</b></p><p>  IF A=24 THEN </p><p>  Z<=(NOT Z);</p><p><b&

46、gt;  A<= 0;</b></p><p><b>  END IF;</b></p><p><b>  CLK1<=Z;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p>

47、<p><b>  END FP;</b></p><p><b>  2方波發(fā)生模塊程序</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_U

48、NSIGNED.ALL;</p><p>  ENTITY FB IS</p><p>  PORT (CLK:IN STD_LOGIC;</p><p>  FBO:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));</p><p>  END ENTITY;</p><p>  ARCHITECT

49、URE BHV OF FB IS</p><p>  SIGNAL Q:INTEGER RANGE 63 DOWNTO 0;</p><p><b>  BEGIN</b></p><p>  PROCESS(CLK)</p><p><b>  BEGIN</b></p><p

50、>  IF CLK'EVENT AND CLK='1' THEN </p><p><b>  Q<=Q+1;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  PROCESS(Q)<

51、;/p><p><b>  BEGIN </b></p><p>  CASE Q IS </p><p>  WHEN 0 TO 31=>FBO<="1111111111";</p><p>  WHEN OTHERS=>FBO<="0000000000";&

52、lt;/p><p><b>  END CASE;</b></p><p>  END PROCESS;</p><p><b>  END;</b></p><p><b>  正玄波發(fā)生模塊程序</b></p><p>  library ieee;&l

53、t;/p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_arith.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity sin is</p><p>  port(

54、clk:in std_logic;</p><p>  outp:out std_logic_vector(9 downto 0)</p><p><b>  );</b></p><p><b>  end;</b></p><p>  architecture dac of sin is<

55、/p><p>  signal q: integer range 63 downto 0;</p><p>  signal dd4:integer;</p><p><b>  begin</b></p><p>  outp<=conv_std_logic_vector(dd4,10);</p>&l

56、t;p>  process(clk)</p><p><b>  begin</b></p><p>  if (clk'event and clk='1') then</p><p><b>  q<=q+1;</b></p><p><b>  ca

57、se q is</b></p><p>  when 00=>dd4<=512;</p><p>  when 01=>dd4<=562;</p><p>  when 02=>dd4<=611;</p><p>  when 03=>dd4<=660;</p><

58、;p>  when 04=>dd4<=707;</p><p>  when 05=>dd4<=753;</p><p>  when 06=>dd4<=796;</p><p>  when 07=>dd4<=836;</p><p>  when 08=>dd4<=874;

59、</p><p>  when 09=>dd4<=907;</p><p>  when 10=>dd4<=937;</p><p>  when 11=>dd4<=963;</p><p>  when 12=>dd4<=985;</p><p>  when 13=&

60、gt;dd4<=1001;</p><p>  when 14=>dd4<=1014;</p><p>  when 15=>dd4<=1021;</p><p>  when 16=>dd4<=1023;</p><p>  when 17=>dd4<=1021;</p>

61、<p>  when 18=>dd4<=1014;</p><p>  when 19=>dd4<=1001;</p><p>  when 20=>dd4<=985;</p><p>  when 21=>dd4<=963;</p><p>  when 22=>dd4<

62、=937;</p><p>  when 23=>dd4<=907;</p><p>  when 24=>dd4<=874;</p><p>  when 25=>dd4<=836;</p><p>  when 26=>dd4<=796;</p><p>  when

63、 27=>dd4<=753;</p><p>  when 28=>dd4<=707;</p><p>  when 29=>dd4<=660;</p><p>  when 30=>dd4<=611;</p><p>  when 31=>dd4<=562;</p>

64、<p>  when 32=>dd4<=511;</p><p>  when 33=>dd4<=461;</p><p>  when 34=>dd4<=412;</p><p>  when 35=>dd4<=363;</p><p>  when 36=>dd4<=3

65、16;</p><p>  when 37=>dd4<=257;</p><p>  when 38=>dd4<=227;</p><p>  when 39=>dd4<=187;</p><p>  when 40=>dd4<=149;</p><p>  when 4

66、1=>dd4<=116;</p><p>  when 42=>dd4<=86;</p><p>  when 43=>dd4<=60;</p><p>  when 44=>dd4<=38;</p><p>  when 45=>dd4<=22;</p><p&

67、gt;  when 46=>dd4<=9;</p><p>  when 47=>dd4<=2;</p><p>  when 48=>dd4<=0;</p><p>  when 49=>dd4<=2;</p><p>  when 50=>dd4<=9;</p>&

68、lt;p>  when 51=>dd4<=22;</p><p>  when 52=>dd4<=38;</p><p>  when 53=>dd4<=60;</p><p>  when 54=>dd4<=86;</p><p>  when 55=>dd4<=116;&l

69、t;/p><p>  when 56=>dd4<=149;</p><p>  when 57=>dd4<=187;</p><p>  when 58=>dd4<=227;</p><p>  when 59=>dd4<=257;</p><p>  when 60=>

70、;dd4<=316;</p><p>  when 61=>dd4<=363;</p><p>  when 62=>dd4<=412;</p><p>  when 63=>dd4<=461;</p><p>  when others=>null;</p><p>&

71、lt;b>  end case;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end dac;</b></p><p><b>  三角波發(fā)生模塊程序</b></p

72、><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  use ieee.std_logic_arith.all;</p><p>  ENTITY SJ

73、B IS</p><p>  PORT( CLK:IN STD_LOGIC;</p><p>  SJOUT:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));</p><p><b>  END;</b></p><p>  ARCHITECTURE BV OF SJB IS</p>&

74、lt;p>  TYPE STATE IS (S0,S1);</p><p>  SIGNAL ST:STATE;</p><p>  SIGNAL C:STD_LOGIC_VECTOR(9 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  PROCESS(CLK)</p

75、><p><b>  BEGIN</b></p><p>  IF CLK'EVENT AND CLK='1' THEN</p><p>  CASE ST IS</p><p>  WHEN S0 =>IF C=1023 THEN ST<=S1;ELSE C<=C+33;ST<

76、;=S0;END IF;</p><p>  WHEN S1 =>IF C=0 THEN ST<=S0;ELSE C<=C-33;ST<=S1;END IF;</p><p><b>  END CASE;</b></p><p><b>  SJOUT<=C;</b></p>

77、<p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END BV;</b></p><p><b>  波形選擇單元程序</b></p><p>  LIBRARY IEEE;</p>

78、<p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY XZ IS</p><p>  PORT(A,B:IN STD_LOGIC;</p><p>  I1,I2,I3:IN STD_LOGIC_

79、VECTOR(9 DOWNTO 0);</p><p>  O:OUT STD_LOGIC_VECTOR(9 DOWNTO 0)</p><p><b>  );</b></p><p>  END ENTITY;</p><p>  ARCHITECTURE BV OF XZ IS</p><p&g

80、t;  SIGNAL Q:STD_LOGIC_VECTOR(1 DOWNTO 0);</p><p><b>  BEGIN </b></p><p><b>  Q<=A & B;</b></p><p>  WITH Q SELECT </p><p>  O<=I1 WHE

81、N "01",</p><p>  I2 WHEN "10",</p><p>  I3 WHEN "11",</p><p>  "ZZZZZZZZZZ" WHEN OTHERS;</p><p><b>  END;</b></p&

82、gt;<p>  5.幅值調(diào)節(jié)單元程序.</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  ENTITY D_W IS</p><p>  PORT (C,D : IN STD_LOGIC;</p><p>

83、  D_OUT: OUT INTEGER RANGE 0 TO 1023;</p><p>  D_IN: IN INTEGER RANGE 0 TO 1023</p><p><b>  );</b></p><p><b>  END;</b></p><p>  ARCHITECTURE BH

84、V OF D_W IS</p><p>  SIGNAL NUM:STD_LOGIC_VECTOR (1 DOWNTO 0);</p><p><b>  BEGIN</b></p><p><b>  NUM<=C&D;</b></p><p>  PROCESS(NUM)</

85、p><p><b>  BEGIN</b></p><p>  IF NUM="00" THEN D_OUT<=D_IN/4;</p><p>  ELSIF NUM="01" THEN D_OUT<=D_IN/2;</p><p>  ELSIF NUM="10

86、" THEN D_OUT<=D_IN;</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END ;</b></p><p><b>  DA轉(zhuǎn)換單元程序</b></p>

87、<p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY DA IS</p><p><b>  PORT(</b></p&

88、gt;<p>  DA_CS,DA_SCLK,DA_IN:OUT STD_LOGIC;</p><p>  CLK1:IN STD_LOGIC;</p><p>  Q:IN STD_LOGIC_VECTOR(9 DOWNTO 0)</p><p><b>  );</b></p><p><b>

89、;  END;</b></p><p>  ARCHITECTURE DAS OF DA IS</p><p>  TYPE STATE IS (S0,S1,S2,S3,S4);</p><p>  SIGNAL ST:STATE;</p><p>  SIGNAL CNT:INTEGER:=0;</p><p

90、>  SIGNAL CT,SCLK:STD_LOGIC;</p><p>  SIGNAL TMP : STD_LOGIC_VECTOR(11 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  PROCESS (CLK1)</p><p><b>  BEGIN&l

91、t;/b></p><p>  IF (CLK1'EVENT AND CLK1='1') THEN </p><p>  CASE ST IS</p><p>  WHEN S0=>CT<='1';SCLK<='0';CNT<=0;ST<=S1;</p>&l

92、t;p>  WHEN S1=>ST<=S2;</p><p>  WHEN S2 =>CT<='0';SCLK<='0';IF CNT<=11 THEN ST<=S3;</p><p>  ELSE ST<=S4;END IF;</p><p>  WHEN S3=>CT&l

93、t;='0';SCLK<='1';CNT<=CNT+1;ST<=S2;</p><p>  WHEN S4=>CT<='1';SCLK<='0';ST<=S0;</p><p>  END CASE;END IF;</p><p>  DA_SCLK<=S

94、CLK;</p><p>  DA_CS<=CT;</p><p>  END PROCESS;</p><p>  PROCESS(SCLK)</p><p><b>  BEGIN</b></p><p>  IF CT='1' THEN</p><p

95、>  TMP(11 DOWNTO 2)<=Q(9 DOWNTO 0);</p><p>  TMP(1 DOWNTO 0)<="00";</p><p><b>  ELSE</b></p><p>  IF(SCLK'EVENT AND SCLK='1') THEN</p&g

96、t;<p>  DA_IN<=TMP(11);</p><p>  TMP(11 DOWNTO 1)<=TMP(10 DOWNTO 0);</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END P

溫馨提示

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

評(píng)論

0/150

提交評(píng)論