基于fpga的波形發(fā)生器_第1頁(yè)
已閱讀1頁(yè),還剩65頁(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>  基于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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論