版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于FPGA的數(shù)字波形發(fā)生器</p><p> 作 者:張清明 林杰文 方 艾</p><p> 指導(dǎo)老師:王 彥 黃智偉</p><p><b> 摘要:</b></p><p> 系統(tǒng)基于FPGA設(shè)計(jì),VHDL編程實(shí)現(xiàn)。系統(tǒng)集成于一片Xilinx公司的SpartanⅡ系列XC2S1
2、00-PQ208芯片上,核心技術(shù)是直接數(shù)字頻率合成技術(shù),其中包括固定分頻器,正弦波合成器,三角波、矩形波、鋸齒波發(fā)生器,波形選擇模塊,鍵盤控制模塊,它們輸出的8位數(shù)據(jù)通過(guò)D/A轉(zhuǎn)換并經(jīng)功率放大后即得所需波形,通過(guò)改變相位步進(jìn)可調(diào)頻率,通過(guò)改變D/A電阻網(wǎng)絡(luò)的基準(zhǔn)電壓可調(diào)幅度。系統(tǒng)的頻率范圍寬,可從10Hz到10kHz之間等步進(jìn)調(diào)節(jié),最小步進(jìn)10Hz,幅度和頻率精度高。</p><p> 關(guān)鍵字:現(xiàn)場(chǎng)可編程邏輯門
3、陣列 直接數(shù)字頻率合成 數(shù)模轉(zhuǎn)換</p><p><b> Abstract:</b></p><p> The system is implemented by programmed with VHDL base on FPGA. the system whose basic technique is DDFS (Direct Digital Freq
4、uency Synthesis) is integrated into a Xilinx’s SpartanⅡXC2S100-PQ208 FPGA chip that consisted of a frequency divider, a sine wave synthesizer, a triangular wave, rectangular wave and sawtooth wave generator, a wave selec
5、ting module and a keyboard module. The 8-bit output data of the FPGA are converted by a D/AC and then amplified. By altering the phase increment, the frequ</p><p> Keywords: FPGA DDFS D/AC</p><
6、p> 初稿:August 13, 2003</p><p> 最后修改:September 23, 2003</p><p><b> 目錄</b></p><p> 第一章 方案比較與論證……………………………………….3</p><p> 1.1 總體方案設(shè)計(jì)…………………………………………………
7、.3</p><p> 波形數(shù)據(jù)的產(chǎn)生………………………………………………..3</p><p> 頻率調(diào)節(jié)………………………………………………………..3</p><p> 幅度調(diào)節(jié)………………………………………………………..3</p><p> 總體設(shè)計(jì)………………………………………………………..3</p>&l
8、t;p> 第二章 單元電路設(shè)計(jì)………………………………………….4</p><p> 2.1 波形合成器的設(shè)計(jì)……………………………………………...4</p><p> 2.2 頻率與幅度調(diào)節(jié)的原理及實(shí)現(xiàn)………………………………...4</p><p> 2.3 波形選擇模塊與鍵盤控制模塊設(shè)計(jì)…………………………...5</p>&l
9、t;p> 2.4 FPGA接口與數(shù)模轉(zhuǎn)換電路設(shè)計(jì)………………………………..5</p><p> 第三章 軟件設(shè)計(jì)……………………………………………….5</p><p> 3.1 正弦波合成器設(shè)計(jì)..…………………………………………….5</p><p> 3.2 三角波、矩形波、鋸齒波發(fā)生器…………………………………..6</p>
10、<p> 3.3 波形選擇模塊………………………………………………..….6</p><p> 3.4 鍵盤控制模塊………………………………………………...…6</p><p> 第四章 系統(tǒng)測(cè)試…………………………………………....…..6</p><p> 第五章 結(jié)論……………………………………………….….....7</p&g
11、t;<p> 參考文獻(xiàn)…………………………………………….……………7</p><p> 附錄…………………………………………………………….…8</p><p><b> 方案比較與論證</b></p><p> 1.1 總體方案設(shè)計(jì)</p><p> 方案一:采用鎖相環(huán)鎖定頻率,穩(wěn)定度和精確度
12、高,但是頻率調(diào)節(jié)不便且調(diào)節(jié)范圍小,只能得到方波和正弦波,對(duì)其它波形需外加整型電路,使得系統(tǒng)復(fù)雜。</p><p> 方案二:采用直接數(shù)字頻率合成,用單片機(jī)作為核心控制部件,能達(dá)到較高的要求,實(shí)現(xiàn)各種波形輸出,但受限于運(yùn)算位數(shù)及運(yùn)算速度,產(chǎn)生的波形往往需通過(guò)濾波器才能達(dá)到滿意效果,并且頻率可調(diào)范圍小,很難得到較高頻率。</p><p> 方案三:采用直接數(shù)字頻率合成,用FPGA器件作為核
13、心控制部件,精度高穩(wěn)定性好,得到波形平滑,特別是由于FPGA的高速度,能實(shí)現(xiàn)較高頻率的波形。控制上更方便,可得到較寬頻率范圍的波形輸出,步進(jìn)小。因此采用方案三。</p><p> 1.2波形數(shù)據(jù)的產(chǎn)生:</p><p> 方案一:使用Visual C++計(jì)算正弦波及指定函數(shù)波的N點(diǎn)采樣值,然后寫入到ROM中待用。</p><p> 方案二:使用Matlab計(jì)算
14、上述數(shù)據(jù)。</p><p> 兩種方案都是利用軟件計(jì)算波形參數(shù)的較佳方案。VC++對(duì)計(jì)算值的舍入是直接取整,因此方案一得到的數(shù)據(jù)有較大誤差,而且該方案編程復(fù)雜。Matlab能對(duì)數(shù)據(jù)進(jìn)行四舍五入,因此方案二得到的數(shù)據(jù)誤差較小,且編程簡(jiǎn)單,修改容易,調(diào)用方便。因此采用方案二。</p><p><b> 1.3 頻率調(diào)節(jié):</b></p><p>
15、; 方案一:通過(guò)預(yù)置FPGA的分頻系數(shù)調(diào)節(jié)頻率。</p><p> 方案二:通過(guò)預(yù)置FPGA的分頻系數(shù)以及改變相位步進(jìn)調(diào)節(jié)頻率。</p><p> 方案一的調(diào)節(jié)步進(jìn)只能以指數(shù)形式遞增,對(duì)于較高的頻率范圍有較多空白,無(wú)法等步進(jìn)調(diào)頻;方案二采用粗調(diào)與細(xì)調(diào)相結(jié)合,可以實(shí)現(xiàn)等步進(jìn)調(diào)頻,因此選用方案二。</p><p><b> 1.4 幅度調(diào)節(jié):</
16、b></p><p> 方案一:采用雙D/AC實(shí)現(xiàn)幅度調(diào)節(jié)。</p><p> 方案二:模擬方式調(diào)幅。</p><p> 方案一實(shí)現(xiàn)數(shù)字調(diào)幅,精度較高,但其輸出幅度無(wú)法連續(xù),由于幅度本身是以模擬量輸出的,采用高精度的立式電位器調(diào)節(jié)已能滿足要求,故采用方案二。</p><p><b> 總體設(shè)計(jì):</b>&l
17、t;/p><p> 綜上方案論證,得到系統(tǒng)框圖如圖1.1所示。</p><p> 圖1.1 波形發(fā)生器系統(tǒng)框圖</p><p><b> 單元電路設(shè)計(jì)</b></p><p> 2.1 波形合成器的設(shè)計(jì):</p><p> 2.1.1 正弦波合成:對(duì)一個(gè)幅度為1的正弦波的一個(gè)周期進(jìn)行1024
18、點(diǎn)采樣,用Matlab計(jì)算得到每一點(diǎn)對(duì)應(yīng)的幅度值,然后量化成8位二進(jìn)制數(shù)據(jù)存放在ROM中,理論上,采樣的點(diǎn)數(shù)及量化的位數(shù)越多,合成的波形精確度越高,但是,D/AC0832的位數(shù)只有8位,量化等級(jí)最高為256,其量化誤差已能達(dá)到要求,對(duì)于查正弦表的舍入誤差也可忽略,故不再細(xì)分。這里采用1024個(gè)采樣點(diǎn),是為了調(diào)頻時(shí)能得到較好的波形。依次取出ROM中的數(shù)據(jù),即可得到幅度上是階梯型的正弦波。再經(jīng)過(guò)D/A轉(zhuǎn)換,便可得到連續(xù)的正弦波。</p
19、><p> 2.1.2 三角波、鋸齒波、矩形波的合成:由于三角波、鋸齒波、矩形波波形變化是線性,因此不需要進(jìn)行波形存儲(chǔ)。三角波的產(chǎn)生是使幅度逐次增加一個(gè)相位進(jìn),一直到最大值后變?yōu)椴街鸫螠p少一個(gè)相位步進(jìn),如此便產(chǎn)生一個(gè)周期的波形,鋸齒波與三角波類似,只是到達(dá)最大值后又從0開始。矩形波的產(chǎn)生更為簡(jiǎn)單,只需根據(jù)占空比,調(diào)節(jié)一個(gè)周期內(nèi)輸出高、低電平的時(shí)間即可。</p><p> 2.2 頻率與幅度
20、調(diào)節(jié)的原理及實(shí)現(xiàn):</p><p> 2.2.1頻率等步進(jìn)調(diào)節(jié)的實(shí)現(xiàn):由于采用DDFS,在ROM中存有波形一個(gè)周期的n個(gè)等間隔歸一化采樣數(shù)據(jù),改變相位累加器的步進(jìn),從而改變對(duì)ROM中數(shù)據(jù)的讀取速度,即可合成不同頻率的波形,存儲(chǔ)器中存入過(guò)量的采樣值,使得采樣點(diǎn)數(shù)較少時(shí),依然能夠得到較好的波形輸出,從而得到較高的頻率輸出。否則,采樣點(diǎn)數(shù)太少會(huì)使產(chǎn)生的波形嚴(yán)重失真。輸出波形的頻率可由式(2-1)計(jì)算:</p&g
21、t;<p><b> 式(2-1)</b></p><p> 其中,fosc為晶振頻率,k為分頻系數(shù),N為相位累加器位數(shù),S為相位累加器步長(zhǎng)。</p><p> 若取fosc=32.768MHz,k=50,N=16,帶入上式得到f0=10S(Hz)。</p><p> 因此,只要控制S的值就可以準(zhǔn)確地實(shí)現(xiàn)頻率步進(jìn)為10Hz
22、的等步進(jìn)調(diào)頻。但是,現(xiàn)有的晶振為32MHz,通過(guò)實(shí)驗(yàn)測(cè)試、比較,可用下式計(jì)算頻率:</p><p><b> 式(2-2)</b></p><p> 也能得到10Hz精確的等步進(jìn)調(diào)節(jié),但犧牲了波形的質(zhì)量,因?yàn)?5306不是一個(gè)2N的數(shù),這樣波形會(huì)漏掉少量采樣點(diǎn)。不過(guò),即使這樣,得到的波形依然很平滑,可以滿足設(shè)計(jì)要求。若要使頻率調(diào)節(jié)步進(jìn)減小到1Hz,對(duì)晶振有特殊要求
23、,它的振蕩頻率必須是2的N次冪。由式(2-1)舉例說(shuō)明累加器位數(shù)不同產(chǎn)生的差異:</p><p><b> 式(2-3)</b></p><p><b> 式(2-4)</b></p><p> 式(2-4)產(chǎn)生的波形將遠(yuǎn)遠(yuǎn)優(yōu)于式(2-3),更優(yōu)于我們現(xiàn)在所得到的波形,最高頻率可提高幾倍。</p>&l
24、t;p> 另外,由于DAC0832的電流建立時(shí)間是1μs,因此輸出波形的最高頻率由下式?jīng)Q定:</p><p> 因此,要得到更高頻率的波形需使用更高速的D/A轉(zhuǎn)換器。</p><p> 2.2.1幅度調(diào)節(jié):直接對(duì)數(shù)模轉(zhuǎn)換芯片的電阻網(wǎng)絡(luò)的基準(zhǔn)電壓進(jìn)行調(diào)節(jié),DAC0832的基準(zhǔn)電壓為±10V,因此理論上輸出波形的幅度范圍±10V。通過(guò)在ADC0832的8腳(基準(zhǔn)
25、電壓輸入腳)接一個(gè)立式電位器便可實(shí)現(xiàn),調(diào)節(jié)精度高。</p><p> 2.3 波形選擇模塊與鍵盤控制模塊設(shè)計(jì):波形選擇用于按鍵選擇輸出的波形類型,采用一個(gè)按鍵,每按一次變換一種波形,選到最后一個(gè)之后又重頭開始。鍵盤控制模塊連接相位步進(jìn)累加器和波形選擇模塊,是完成波形選擇與調(diào)頻的人機(jī)界面。使用有限狀態(tài)機(jī)設(shè)計(jì),可以減少大量的按鍵,操作簡(jiǎn)單。</p><p> 2.4 FPGA接口及數(shù)模轉(zhuǎn)
26、換電路設(shè)計(jì):電路如圖2.1所示</p><p> 圖2.1FPGA接口與模數(shù)轉(zhuǎn)換電路</p><p><b> 軟件設(shè)計(jì)</b></p><p> 3.1正弦波合成器設(shè)計(jì):</p><p> 3.1.1 正弦波波形數(shù)據(jù)產(chǎn)生:</p><p> 利用Matlab6.5計(jì)算波形數(shù)據(jù),程序及
27、結(jié)果如下:</p><p> >> step=2*pi/1023;</p><p> >> x=0:step:2*pi;</p><p> >> y=127.5*sin(x)+127.5;</p><p> >> z=round(y)</p><p><b&
28、gt; z =</b></p><p> Columns 1 through 10 </p><p> 128 128 129 130 131 131 132 133 134 135</p><p> Columns 11 through 20 </p><p> 135 136
29、 137 138 138 139 140 141 142 142</p><p><b> ……</b></p><p> Columns 1021 through 1024 </p><p> 125 126 127 127</p><p> 3.1.2 波形存儲(chǔ)器的設(shè)
30、計(jì):</p><p> 使用開發(fā)軟件為Xilinx ISE 4.2,編程語(yǔ)言為VHDL,仿真工具為ModelSim Xilinx Edition 5.3d XE,程序見(jiàn)附錄第9頁(yè)。</p><p> 3.2 三角波、矩形波、鋸齒波發(fā)生器及相位累加器:</p><p> 三角波、矩形波、鋸齒波發(fā)生器及相位累加器集成于同一個(gè)模塊中,程序流程圖如圖3.1所示。程序見(jiàn)
31、附錄第9頁(yè)。</p><p> 圖3.1 三角波、矩形波、鋸齒波發(fā)生器及相位累加器程序流程</p><p> 3.3 鍵盤控制模塊: 程序見(jiàn)附錄第11頁(yè)。</p><p> 3.4 波形選擇模塊: 程序見(jiàn)附錄第12頁(yè)。</p><p><b> 系統(tǒng)測(cè)試</b></p><p> 使用儀
32、器: 示波器:綠揚(yáng)YB4365, 100MHz,江蘇揚(yáng)中電子儀器廠;</p><p> FPGA實(shí)驗(yàn)儀:DP-FPGA, 廣州致遠(yuǎn)電子有限公司;</p><p> 頻率計(jì):SP-1500A等精度頻率計(jì),南京盛普電子實(shí)業(yè)有限公司。</p><p> 表4.1 正弦波理論值與實(shí)測(cè)值比較</p><p> 圖4.1 理論值與實(shí)測(cè)值曲線&
33、lt;/p><p> 圖4.2 誤差分析圖</p><p> 頻率范圍:10Hz~10kHz, 最小可調(diào)步進(jìn):10Hz。</p><p> 幅度范圍:2.89V~5.1V</p><p><b> 結(jié)論</b></p><p> 將DDFS技術(shù)與FPGA的相結(jié)合,實(shí)現(xiàn)了各種波形的產(chǎn)生,且波
34、形平滑,無(wú)毛刺,質(zhì)量較高,采用Matlab計(jì)算波形數(shù)據(jù),更符合工程要求。輸出波形的頻率可調(diào)范圍寬,可等步進(jìn)調(diào)節(jié)且步進(jìn)小。人機(jī)界面經(jīng)過(guò)精簡(jiǎn),按鍵少且操作方便。</p><p><b> 參考文獻(xiàn):</b></p><p> 黃正謹(jǐn),徐堅(jiān),章小麗等.CPLD系統(tǒng)設(shè)計(jì)技術(shù)入門與應(yīng)用【M】. 北京:電子工業(yè)出版社.2002。</p><p> 潘
35、松,黃繼業(yè).EDA 技術(shù)實(shí)用教程【M】.北京:科學(xué)出版社.2002。</p><p> 趙俊超等.集成電路設(shè)計(jì)VHDL教程.【M】.北京.北京希望電子出版社.2002。</p><p> 周俊峰 陳 濤. 基于FPGA的直接數(shù)字頻率合成器的設(shè)計(jì)和實(shí)現(xiàn).http://passmatlab.myetang.com.2003年</p><p><b> 附
36、錄:</b></p><p><b> --頂層程序 --</b></p><p> --文件名:top.vhd--</p><p> library IEEE;</p><p> use IEEE.STD_LOGIC_1164.ALL;</p><p> use IEEE.
37、STD_LOGIC_ARITH.ALL;</p><p> use IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> entity top is</p><p> Port (sysclk,reset,key1,add,sub,key_route:in std_logic;</p><p> led1,led
38、10,led100,led1000: out std_logic; </p><p> data : out std_logic_vector( 8 downto 0));</p><p><b> end top;</b></p><p> architecture Behavioral of top is</p><
39、;p> component key</p><p> Port (sysclk,key1,reset,add,sub: in std_logic;</p><p> led1,led10,led100,led1000,clock3200: out std_logic;</p><p> N:out integer range 1023 downto 0
40、);</p><p> end component;</p><p> component pir_add</p><p> Port ( sysclk,reset : in std_logic;</p><p> N :in integer range 1023 downto 0;</p><p> add
41、r: out integer range 1023 downto 0;</p><p> aslant,triangle,rectangular:out std_logic_vector( 8 downto 0));</p><p> end component;</p><p> component sinx</p><p> PO
42、RT ( Qt : in INTEGER RANGE 1023 DOWNTO 0 ;</p><p> DD : out std_logic_vector(8 downto 0));</p><p> end component;</p><p> component choice_function</p><p> Port (
43、clk3200,reset,key_route:in std_logic;</p><p> sin_data,tri_data,asl_data,rec_data:in std_logic_vector(8 downto 0);</p><p> function_data: out std_logic_vector(8 downto 0));</p><p>
44、; end component;</p><p> signal N_p,addr_p :integer range 1023 downto 0;</p><p> signal clock3200_p :std_logic;</p><p> signal sin_data_p,tri_data_p,asl_data_p,rec_data_p :std_l
45、ogic_vector(8 downto 0);</p><p><b> begin</b></p><p> key_u : key port map</p><p> (sysclk=>sysclk,reset=>reset,add=>add,sub=>sub,key1=>key1,clock3200=
46、>clock3200_p, led1=>led1,led10=>led10,led100=>led100,led1000=>led1000,N=>N_p);</p><p> pir_add_u : pir_add port map</p><p> (sysclk=>sysclk,reset=>r
47、eset,N=>N_p,addr=>addr_p,aslant=>asl_data_p,triangle=>tri_data_p, rectangular=>rec_data_p);</p><p> sinx_u :sinx port map (Qt=>addr_p,DD=>sin_data_p);</p><p> choice_funct
48、ion_u : choice_function port map </p><p> clk3200=>sysclk,reset=>reset,key_route=>key_route, sin_data=>sin_data_p,tri_data=>tri_data_p,asl_data=>asl_data_p,rec_data=>
49、;rec_data_p,function_data=>data);</p><p> end Behavioral;</p><p> --正弦波波形存儲(chǔ) --</p><p> --文件名:sinx.vh--</p><p> --說(shuō)明:限于篇幅,只給出部分程序代碼--</p><p> librar
50、y IEEE;</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 sinx is</p><p&
51、gt; PORT ( Qt : in INTEGER RANGE 1023 DOWNTO 0 ;</p><p> DD : out std_logic_vector(8 downto 0));end sinx;</p><p> architecture Behavioral of sinx is</p><p> SIGNAL D :
52、 INTEGER RANGE 255 DOWNTO 0 ;</p><p><b> BEGIN</b></p><p> PROCESS(Qt)</p><p><b> BEGIN</b></p><p> CASE Qt IS </p><p>
53、when 0001 => D<=128; when 0002 => D<=128; when 0003 => D<=129; when 0004 => D<=130; when 0005 => D<=131; when 0006 => D<=131; when 0007 => D<=132; when 0008 => D<=133; when
54、 0009 => D<=134; when 0010 => D<=135;</p><p><b> --(部分省略)</b></p><p> when 1011 => D<=117; when 1012 => D<=118; when 1013 => D<=119; when 1014 => D
55、<=120; when 1015 => D<=120; when 1016 => D<=121; when 1017 => D<=122; when 1018 => D<=123; when 1019 => D<=124; when 1020 => D<=124;</p><p> when 1021 => D<=125;
56、 when 1022 => D<=126; when 1023 => D<=127; when 0000 => D<=127;</p><p> WHEN OTHERS => NULL ;</p><p><b> end case;</b></p><p> END PROCESS;</p
57、><p> DD <= conv_std_logic_vector(D,9) ; </p><p> end Behavioral; => D<=104; when 0995 => D<=105; when 0996 => D<=106; when 0997 => D<=106; when 0998 => D<=107; w
58、hen 0999 => D<=108; </p><p> --相位累加器及三角波、矩形波、三角波發(fā)生器 --</p><p> --程序名:pir_add.vhd--</p><p> library IEEE;</p><p> use IEEE.STD_LOGIC_1164.ALL;</p><p
59、> use IEEE.STD_LOGIC_ARITH.ALL;</p><p> use IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> entity PIR_ADD is</p><p> Port ( sysclk,reset : in std_logic;</p><p> N :in int
60、eger range 1023 downto 0;</p><p> addr: out integer range 1023 downto 0;</p><p> aslant,triangle,rectangular:out std_logic_vector( 8 downto 0));</p><p> end PIR_ADD;</p>&
61、lt;p> architecture Behavioral of PIR_ADD is</p><p> signal dd,ddd: std_logic_vector( 16 downto 0);</p><p> signal clk49 :std_logic;</p><p> signal ad: std_logic_vector(9 dow
62、nto 0);</p><p> type state is (st1,st2);</p><p> signal current :state;</p><p><b> begin</b></p><p> process(sysclk,reset)</p><p> variabl
63、e count2: integer;</p><p> variable clk0: std_logic;</p><p><b> begin</b></p><p> if reset='0' then</p><p> count2:=0;</p><p> cl
64、k0:='0';</p><p> elsif sysclk'event and sysclk='1' then</p><p> count2:=count2+1;</p><p> if count2=25 then</p><p> clk0:='1';</p>
65、<p> elsif count2=49 then</p><p> count2:=0;</p><p> clk0:='0';</p><p><b> --end if;</b></p><p><b> end if;</b></p>&
66、lt;p><b> end if;</b></p><p> clk49<=clk0;</p><p> end process ;</p><p> process(clk49,reset)</p><p> variable cnt : integer range 65535 downto 0;
67、</p><p><b> begin</b></p><p> if reset='0' then</p><p><b> cnt:=0;</b></p><p> elsif rising_edge (clk49) then</p><p>
68、cnt:=cnt+N;</p><p> if cnt>32768 then</p><p> rectangular<="111111111";</p><p> else rectangular<="000000000";</p><p><b> end if;
69、</b></p><p> if cnt>65306 then</p><p><b> cnt:=0;</b></p><p><b> end if;</b></p><p> end if; </p><p> dd<= conv_
70、std_logic_vector( cnt,16);</p><p> end process;</p><p> tri:process(clk49,reset)</p><p> variable cnt : integer range 65535 downto 0;</p><p><b> begin</b&g
71、t;</p><p> if reset='0' then</p><p><b> cnt:=0;</b></p><p> current<=st1;</p><p> elsif rising_edge (clk49) then</p><p> case c
72、urrent is</p><p> when st1 =>cnt:=cnt+N;</p><p> if cnt>32767 then</p><p> current<=st2;</p><p><b> end if;</b></p><p> when st2
73、=>cnt:=cnt-N;</p><p> if cnt<64 then</p><p> current<=st1;</p><p><b> end if;</b></p><p> when others =>current<=st1;</p><p&g
74、t;<b> end case;</b></p><p> end if; </p><p> ddd<= conv_std_logic_vector( cnt,16);</p><p> end process;</p><p> ad<= dd( 15 downto 6);</p>
75、;<p> aslant<=dd(15 downto 7);</p><p> triangle<=ddd( 15 downto 7);</p><p> addr<=conv_integer(ad); </p><p> end Behavioral;</p><p><b> -- 波形
76、選擇 –</b></p><p> -- 文件名:choice_function.vhd –</p><p> library IEEE;</p><p> use IEEE.STD_LOGIC_1164.ALL;</p><p> use IEEE.STD_LOGIC_ARITH.ALL;</p><
77、p> use IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> entity choice_function is</p><p> Port (clk3200,reset,key_route:in std_logic;</p><p> sin_data,tri_data,asl_data,rec_data:in std_l
78、ogic_vector(8 downto 0);</p><p> function_data: out std_logic_vector(8 downto 0));</p><p> end choice_function;</p><p> architecture Behavioral of choice_function is</p>&
79、lt;p> type state is (st1,st2);</p><p> signal current :state;</p><p><b> begin</b></p><p> process(key_route,clk3200)</p><p> variable cnt :integer
80、range 5 downto 0 ;</p><p><b> begin</b></p><p> if reset='0' then</p><p><b> cnt:=1;</b></p><p> current<=st1;</p><p&g
81、t; function_data<=sin_data;</p><p> elsif rising_edge(clk3200) then</p><p> case current is</p><p> when st1 =>if key_route='0' then current<=st2;</p>&l
82、t;p> else case cnt is</p><p> when 1=>function_data<=sin_data;</p><p> when 2=>function_data<=asl_data;</p><p> when 3=>function_data<=tri_data;</p>
83、<p> when 4=>function_data<=rec_data;</p><p> when others =>null;</p><p><b> end case;</b></p><p><b> end if; </b></p><p>
84、when st2 =>if key_route='1' then </p><p> cnt:=cnt+1;</p><p> case cnt is</p><p> when 1=>function_data<=sin_data;current<=st1;</p><p> when 2=&
85、gt;function_data<=asl_data;current<=st1;</p><p> when 3=>function_data<=tri_data;current<=st1;</p><p> when 4=>function_data<=rec_data;current<=st1;</p><p>
86、; when 5=>cnt:=1;current<=st1;</p><p> when others =>null;</p><p><b> end case;</b></p><p><b> end if;</b></p><p> when others=>
87、;null;</p><p><b> end case;</b></p><p><b> end if;</b></p><p> end process;</p><p> end Behavioral;</p><p> -- 鍵盤控制 --</p&g
88、t;<p> -- 文件名:key.vhd -- </p><p> library IEEE;</p><p> use IEEE.STD_LOGIC_1164.ALL;</p><p> use IEEE.STD_LOGIC_ARITH.ALL;</p><p> use IEEE.STD_LOGIC_UNSIGN
89、ED.ALL;</p><p> entity key is</p><p> Port (sysclk,key1,reset,add,sub: in std_logic;</p><p> led1,led10,led100,led1000,clock3200: out std_logic;</p><p> N:out integ
90、er range 1023 downto 0);</p><p><b> end key;</b></p><p> architecture Behavioral of key is</p><p> type state is (st1,st2);</p><p> signal current :stat
91、e;</p><p> type state_1 is (s1,s2,s3);</p><p> signal current_1 :state_1;</p><p> signal clk3200:std_logic;</p><p> signal step1,step10,step100,step1000 :std_logic;
92、</p><p><b> begin</b></p><p> process(sysclk,reset)</p><p> variable count2: integer;</p><p> variable clk0: std_logic;</p><p><b> b
93、egin</b></p><p> if reset='0' then</p><p> count2:=0;</p><p> clk0:='0';</p><p> elsif sysclk'event and sysclk='1' then</p>
94、<p> count2:=count2+1;</p><p> if count2=1600 then</p><p> clk0:='1';</p><p> elsif count2=3200 then</p><p> count2:=0;</p><p> clk0:
95、='0';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> clock3200<=clk0;</p><p> clk3200<=clk0;</p><p> end
96、process;</p><p> process(key1,clk3200)</p><p> variable cnt :integer range 4 downto 0 ;</p><p><b> begin</b></p><p> if reset='0' then</p>
97、<p><b> cnt:=0;</b></p><p> current<=st1;</p><p> step1<='1';step10<='1';step100<='0';step1000<='1';</p><p> el
98、sif rising_edge(clk3200) then</p><p> case current is</p><p> when st1 =>if key1='0' then current<=st2;</p><p><b> end if; </b></p><p> w
99、hen st2 =>if key1='1' then </p><p> cnt:=cnt+1;</p><p> case cnt is</p><p> when 1=>step1<='0';step10<='1';step100<='1';step1000<
100、;='1';current<=st1;</p><p> when 2=>step1<='1';step10<='0';step100<='1';step1000<='1';current<=st1;</p><p> when 3=>step1<=
101、39;1';step10<='1';step100<='0';step1000<='1';current<=st1;</p><p> when 4=>step1<='1';step10<='1';step100<='1';step1000<='0
102、';cnt:=0;current<=st1;</p><p> when others =>null;</p><p><b> end case;</b></p><p><b> end if;</b></p><p> when others=>null;&l
103、t;/p><p><b> end case;</b></p><p><b> end if;</b></p><p> end process;</p><p> process(reset,clk3200)</p><p> variable count2,cou
104、nt3,count5: integer range 1023 downto 0 ;</p><p> variable clk0: std_logic;</p><p><b> begin</b></p><p> if reset='0' then</p><p><b> N&l
105、t;=100;</b></p><p> clk0:='0';</p><p> count3:=100;</p><p> current_1<=s1;</p><p> elsif clk3200'event and clk3200='1' then</p>
106、<p> case current_1 is</p><p> when s1 =>if add='0' then current_1<=s2;</p><p> elsif sub='0' then current_1<=s3;</p><p><b> end if; </b&
107、gt;</p><p> when s2 =>if add='1' then</p><p> if step1='0' then count3:=count3+1;current_1<=s1;</p><p> elsif step10='0' then count3:=count3+10;curr
108、ent_1<=s1;</p><p> elsif step100='0' then count3:=count3+100;current_1<=s1;</p><p> elsif step1000='0' then count3:=count3+1000;current_1<=s1;</p><p><
109、b> end if;</b></p><p><b> end if;</b></p><p> when s3 =>if sub='1' then</p><p> if step1='0' then count3:=count3-1;current_1<=s1;</
110、p><p> elsif step10='0' then count3:=count3-10;current_1<=s1;</p><p> elsif step100='0' then count3:=count3-100;current_1<=s1;</p><p> elsif step1000='0
111、9; then count3:=count3-1000;current_1<=s1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> when others =>null;</p><p><b>
112、end case;</b></p><p><b> end if;</b></p><p> N<=count3;</p><p> end process ;</p><p> led1<=step1;led10<=step10;led100<=step100;led100
113、0<=step1000; </p><p> end Behavioral;</p><p> 計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)</p><p> 畢業(yè)實(shí)習(xí)及畢業(yè)論文(設(shè)計(jì))規(guī)范</p><p> 計(jì)算機(jī)科學(xué)與工程學(xué)院</p><p><b> 計(jì)算機(jī)科學(xué)與技術(shù)系</b></p>
114、<p><b> 2015年03月</b></p><p><b> 目 錄</b></p><p> 一. 畢業(yè)實(shí)習(xí)及畢業(yè)論文(設(shè)計(jì))的主要目的1</p><p> 二. 指導(dǎo)教師選聘及對(duì)指導(dǎo)教師的要求1</p><p> 三. 畢業(yè)實(shí)習(xí)分組及實(shí)施計(jì)劃3<
115、/p><p> 四. 畢業(yè)論文(設(shè)計(jì))的選題3</p><p> 五.畢業(yè)實(shí)習(xí)及畢業(yè)論文(設(shè)計(jì))的進(jìn)度控制4</p><p> 六、畢業(yè)論文的結(jié)構(gòu)與格式7</p><p> 七、畢業(yè)實(shí)習(xí)以及畢業(yè)論文(設(shè)計(jì))成績(jī)?cè)u(píng)定10</p><p> 八、畢業(yè)設(shè)計(jì)的歸檔工作10</p><p>
116、; 九、畢業(yè)實(shí)習(xí)及畢業(yè)論文(設(shè)計(jì))領(lǐng)導(dǎo)小組12</p><p> 附件1:任務(wù)書的填寫格式14</p><p> 附件2:開題報(bào)告的填寫格式18</p><p> 附件3:文獻(xiàn)綜述格式22</p><p> 附件4:實(shí)習(xí)報(bào)告封面格式27</p><p> 附件5:實(shí)習(xí)鑒定表格式28</p&
117、gt;<p> 附件6:實(shí)習(xí)成績(jī)?cè)u(píng)定表格式29</p><p> 附件7:畢業(yè)論文格式的基本要求30</p><p> 附件8:畢業(yè)設(shè)計(jì)袋封面填寫格式39</p><p> 附件9:畢業(yè)論文驗(yàn)收表40</p><p> 附件10:畢業(yè)設(shè)計(jì)(論文)評(píng)論標(biāo)準(zhǔn)41</p><p> 附件1
118、1:畢業(yè)設(shè)計(jì)資料電子文檔目錄結(jié)構(gòu)46</p><p> 根據(jù)學(xué)院有關(guān)學(xué)生實(shí)習(xí)的規(guī)定和本專業(yè)教學(xué)計(jì)劃的安排,對(duì)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)學(xué)生畢業(yè)實(shí)習(xí)及畢業(yè)論文(設(shè)計(jì))作如下具體安排:</p><p> 一. 畢業(yè)實(shí)習(xí)及畢業(yè)論文(設(shè)計(jì))的主要目的</p><p> 畢業(yè)實(shí)習(xí)的主要目的:</p><p> (1) 通過(guò)畢業(yè)實(shí)習(xí),使學(xué)生從理論走向
119、實(shí)踐,并運(yùn)用所學(xué)的理論知識(shí)解決一些實(shí)際軟硬件應(yīng)用問(wèn)題,達(dá)到實(shí)踐鍛煉的目的。</p><p> (2) 總結(jié)升華理論知識(shí)的目的,使學(xué)生畢業(yè)后能迅速適應(yīng)實(shí)際工作崗位。</p><p> (3) 為畢業(yè)論文(設(shè)計(jì))獲取素材。</p><p> 畢業(yè)論文(設(shè)計(jì))的主要目的:</p><p> (1) 全面檢驗(yàn)學(xué)生四年所學(xué)得基本理論和基本技能狀
120、況,鞏固學(xué)生所學(xué)知識(shí),并提高學(xué)生運(yùn)用所學(xué)知識(shí)的能力。</p><p> (2) 通過(guò)畢業(yè)論文(設(shè)計(jì))的撰寫,彌補(bǔ)知識(shí)結(jié)構(gòu)中的薄弱環(huán)節(jié),優(yōu)化畢業(yè)生知識(shí)結(jié)構(gòu),提高畢業(yè)生的適應(yīng)能力。</p><p> (3) 培養(yǎng)學(xué)生運(yùn)用所學(xué)理論知識(shí)和技術(shù),發(fā)現(xiàn)、分析和解決問(wèn)題的能力,使學(xué)生掌握科學(xué)研究的方法和原則,培養(yǎng)和提高學(xué)生對(duì)理論和時(shí)間問(wèn)題研究的能力。</p><p> (4
121、) 通過(guò)論文撰寫,培養(yǎng)學(xué)生創(chuàng)造性思維能力,提高學(xué)生創(chuàng)新能力。</p><p> 二. 指導(dǎo)教師選聘及對(duì)指導(dǎo)教師的要求</p><p><b> 指導(dǎo)教師選聘</b></p><p> (1) 指導(dǎo)教師應(yīng)具有講師及以上專業(yè)技術(shù)職稱或具有碩士學(xué)位,并有一定實(shí)踐經(jīng)驗(yàn)的相關(guān)專業(yè)人員。</p><p> (2) 指導(dǎo)教師的
122、聘任由計(jì)算機(jī)科學(xué)與技術(shù)系根據(jù)工作需要提出初步名單,經(jīng)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院院長(zhǎng)審核,予以聘任。</p><p> (3) 指導(dǎo)教師指導(dǎo)學(xué)生數(shù):講師或具有碩士學(xué)位的指導(dǎo)教師一般不超過(guò)6人,高級(jí)職稱(教授、副教授、高工)的指導(dǎo)人數(shù)不超過(guò)8人。</p><p> (4) 指導(dǎo)教師責(zé)任</p><p> 1). 學(xué)生畢業(yè)論文(設(shè)計(jì))工作實(shí)行指導(dǎo)教師負(fù)責(zé)制。指導(dǎo)教師應(yīng)以高
123、度認(rèn)真負(fù)責(zé)的態(tài)度對(duì)待畢業(yè)論文(設(shè)計(jì))的指導(dǎo)工作,按時(shí)完成畢業(yè)論文(設(shè)計(jì))的各項(xiàng)工作。</p><p> 2). 指導(dǎo)教師對(duì)學(xué)生畢業(yè)論文(設(shè)計(jì))中的以下事項(xiàng)負(fù)責(zé):</p><p> 把握正確的政治方向;</p><p> 確保選題與培養(yǎng)目標(biāo)的一致性;</p><p> 論文(設(shè)計(jì))結(jié)構(gòu)與撰寫格式的規(guī)范性;</p><
124、p> 督促學(xué)生保質(zhì)、保量,按時(shí)圓滿地完成畢業(yè)論文(設(shè)計(jì))工作。</p><p> (5) 指導(dǎo)教師指導(dǎo)工作基本要求</p><p> 1). 提出參考選題;</p><p> 2). 針對(duì)學(xué)生的選題,結(jié)合學(xué)生的實(shí)際情況,確定所指導(dǎo)學(xué)生的畢業(yè)論文(設(shè)計(jì))題目,并提出明確的撰寫要求和進(jìn)度計(jì)劃;</p><p> 3). 介紹有關(guān)參
125、考文獻(xiàn),指導(dǎo)學(xué)生搜集和查閱必要的資料;</p><p> 4). 下發(fā)《畢業(yè)設(shè)計(jì)任務(wù)書》,認(rèn)真指導(dǎo)和檢查學(xué)生填寫《開題報(bào)告》等相關(guān)內(nèi)容,并在簽名處簽名;</p><p> 5). 指導(dǎo)學(xué)生擬寫畢業(yè)論文提綱,定期檢查學(xué)生畢業(yè)論文的進(jìn)展情況,做好每個(gè)階段的工作記錄;</p><p> 6). 加強(qiáng)與學(xué)生的溝通,認(rèn)真指導(dǎo)學(xué)生提交論文初稿、2稿、3稿等,并及時(shí)提出修改
126、意見(jiàn),圓滿完成最終定稿;</p><p> 7). 根據(jù)評(píng)分標(biāo)準(zhǔn),結(jié)合學(xué)生平時(shí)的表現(xiàn),評(píng)定畢業(yè)論文(設(shè)計(jì))成績(jī);指導(dǎo)教師評(píng)語(yǔ)字?jǐn)?shù)不少于200字,其中包括工作態(tài)度、選題意義,理論水平、應(yīng)用價(jià)值等;</p><p> 8). 確認(rèn)所指導(dǎo)學(xué)生的畢業(yè)論文(設(shè)計(jì))是否可以遞交答辯,并簽署意見(jiàn);</p><p> 9). 協(xié)助做好畢業(yè)設(shè)計(jì)(論文)的歸檔工作。</p&
127、gt;<p> 10). 撰寫畢業(yè)設(shè)計(jì)指導(dǎo)工作總結(jié),包括所指導(dǎo)學(xué)生的選題分析、質(zhì)量分析、計(jì)劃執(zhí)行情況等。</p><p> 三. 畢業(yè)實(shí)習(xí)分組及實(shí)施計(jì)劃</p><p> (1) 畢業(yè)實(shí)習(xí)分組</p><p> 畢業(yè)實(shí)習(xí)主要采取集中與分組相結(jié)合,以收集畢業(yè)論文資料為主,主要采取由各指導(dǎo)教師根據(jù)學(xué)生所選論文(設(shè)計(jì))題目,聯(lián)系,分派學(xué)生到相關(guān)單位進(jìn)
128、行實(shí)習(xí),收集資料;計(jì)算機(jī)科學(xué)與技術(shù)系可以在此基礎(chǔ)上做統(tǒng)一安排。</p><p> (2) 畢業(yè)實(shí)習(xí)時(shí)間</p><p> 根據(jù)教學(xué)計(jì)劃,學(xué)生在第四學(xué)年第2學(xué)期的第1周到第4周進(jìn)行畢業(yè)實(shí)習(xí),共4周。</p><p><b> (3) 實(shí)習(xí)要求</b></p><p> 1). 實(shí)習(xí)期間,學(xué)生必須自覺(jué)遵守學(xué)院和實(shí)習(xí)單
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于fpga的波形發(fā)生器的設(shè)計(jì).
- 基于fpga的多波形發(fā)生器設(shè)計(jì)
- 基于fpga波形發(fā)生器說(shuō)明書
- 基于fpga的信號(hào)發(fā)生器設(shè)計(jì)6波形
- 基于fpga的波形發(fā)生器說(shuō)明書
- 基于FPGA的多波形發(fā)生器的設(shè)計(jì).pdf
- 基于fpga任意波形發(fā)生器的設(shè)計(jì)開題報(bào)告
- 基于FPGA的DDS雙通道波形發(fā)生器.pdf
- fpga實(shí)現(xiàn)的任意波形發(fā)生器的設(shè)計(jì)
- 基于fpga的dds任意波形發(fā)生器說(shuō)明書
- 基于fpga的多功能波形發(fā)生器說(shuō)明書
- 波形發(fā)生器
- 基于FPGA的任意波形發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- fpga任意波形發(fā)生器設(shè)計(jì)與實(shí)現(xiàn)(初稿)
- 基于multisim的波形發(fā)生器設(shè)計(jì)
- 畢業(yè)論文——基于tlc5620的fpga波形發(fā)生器設(shè)計(jì)
- 畢業(yè)論文——基于tlc5620的fpga波形發(fā)生器設(shè)計(jì)
- 基于FPGA的任意波形發(fā)生器硬件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于multisim的波形發(fā)生器設(shè)計(jì)
- 基于DDS和FPGA技術(shù)的波形發(fā)生器的研究和設(shè)計(jì).pdf
評(píng)論
0/150
提交評(píng)論