eda信號(hào)發(fā)生器的課程設(shè)計(jì)說(shuō)明書(shū)_第1頁(yè)
已閱讀1頁(yè),還剩24頁(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>  簡(jiǎn)易多功能信號(hào)發(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><

3、p>  本設(shè)計(jì)是采用VHDL來(lái)實(shí)現(xiàn)的簡(jiǎn)易多功能信號(hào)發(fā)生器。它能產(chǎn)生正弦波,三角波,方波和鋸齒波。且對(duì)各種波形的要求如下:</p><p> ?。?)根據(jù)按鍵選擇不同的波形(實(shí)現(xiàn)正弦波,三角波,方波和鋸齒波);</p><p>  (2)各波形的頻率范圍為100Hz-20KHz;</p><p> ?。?)各波形頻率可調(diào)(通過(guò)按鍵控制頻率的變化,步進(jìn)值為500H

4、z);</p><p> ?。?)用LED數(shù)碼管實(shí)時(shí)顯示輸出波形的頻率值;</p><p> ?。?)用按鍵控制實(shí)現(xiàn)輸出信號(hào)的幅度調(diào)節(jié)(幅度調(diào)節(jié)為2.5V和5V)。</p><p><b>  2 EDA技術(shù)介紹</b></p><p><b>  2.1 EDA介紹</b></p>

5、<p>  EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)縮寫(xiě)。EDA技術(shù)是以計(jì)算機(jī)為工具,根據(jù)硬件描述語(yǔ)言HDL( Hardware Description language)完成的設(shè)計(jì)文件,自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合及優(yōu)化、布局布線、仿真以及對(duì)于特定目標(biāo)芯片的適配編譯和編程下載等工作。 硬件描述語(yǔ)言HDL是相對(duì)于一般的計(jì)算機(jī)軟件語(yǔ)言,如:C、PASCAL而言的。HDL語(yǔ)言使用與

6、設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語(yǔ)言,它能描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接方式。設(shè)計(jì)者可利用HDL程序來(lái)描述所希望的電路系統(tǒng),規(guī)定器件結(jié)構(gòu)特征和電路的行為方式;然后利用綜合器和適配器將此程序編程能控制FPGA和CPLD內(nèi)部結(jié)構(gòu),并實(shí)現(xiàn)相應(yīng)邏輯功能的的門級(jí)或更底層的結(jié)構(gòu)網(wǎng)表文件或下載文件。目前,就FPGA/CPLD開(kāi)發(fā)來(lái)說(shuō),比較常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL[1]。</p><p>  

7、幾乎所有適于大學(xué)生做的數(shù)字邏輯電路實(shí)驗(yàn)都可以在計(jì)算機(jī)上利用EDA (Electronic Design Automatic—電子設(shè)計(jì)自動(dòng)化)軟件進(jìn)行設(shè)計(jì)、仿真,只有極少量外部配件不能在計(jì)算機(jī)上進(jìn)行仿真。因此,在實(shí)驗(yàn)前期階段,即實(shí)驗(yàn)預(yù)習(xí)階段的主要應(yīng)用工具是EDA軟件,利用EDA軟件可以設(shè)計(jì)、仿真實(shí)驗(yàn)課題,進(jìn)行虛擬實(shí)驗(yàn)。通過(guò)虛擬實(shí)驗(yàn)使實(shí)驗(yàn)者在進(jìn)入真實(shí)實(shí)驗(yàn)前就能對(duì)預(yù)做的實(shí)驗(yàn)有相當(dāng)?shù)牧私猓踔量梢灶A(yù)測(cè)到實(shí)驗(yàn)的結(jié)果。這樣在實(shí)際做實(shí)驗(yàn)時(shí),可以把許多

8、設(shè)計(jì)型實(shí)驗(yàn)的難度降低,同時(shí)能有更多的時(shí)間讓實(shí)驗(yàn)者動(dòng)手做實(shí)驗(yàn),研究問(wèn)題,提高實(shí)驗(yàn)效率。當(dāng)前數(shù)字電路設(shè)計(jì)已由計(jì)算機(jī)輔助設(shè)計(jì)進(jìn)入到以計(jì)算機(jī)為主的設(shè)計(jì)時(shí)代。</p><p>  2.2 VHDL基本介紹</p><p>  VHDL是一種主要的硬件描述語(yǔ)言之一,硬件描述語(yǔ)言(HDL)是各種描述方法中最能體現(xiàn)EDA優(yōu)越性的描述方法。所謂硬件描述語(yǔ)言,實(shí)際上就是一種描述工具,其描述的對(duì)象就是待設(shè)計(jì)電路

9、系統(tǒng)的邏輯功能,實(shí)現(xiàn)該功能的算法,選用的電路結(jié)構(gòu)以及其他各種約束條件等。通常要求HDL既能描述系統(tǒng)的行為,又能描述系統(tǒng)的結(jié)構(gòu)。</p><p>  VHDL語(yǔ)言是美國(guó)國(guó)防部與20世紀(jì)80年代后期,出于軍事工業(yè)需要開(kāi)發(fā)的。1984年VHDL被IEEE確定為標(biāo)準(zhǔn)的硬件描述語(yǔ)言。1993年IEEE對(duì)VHDL進(jìn)行了修正,增加了部分新的VHDL命令與屬性,增強(qiáng)了對(duì)系統(tǒng)的描述能力。</p><p> 

10、 VHDL涵蓋面廣,抽象描述強(qiáng),支持硬件的設(shè)計(jì),驗(yàn)證,綜合和測(cè)試。VHDL能在多級(jí)別上對(duì)同一邏輯功能進(jìn)行描述。VHDL的基本結(jié)構(gòu)包含一個(gè)實(shí)體和一個(gè)結(jié)構(gòu)體,而完整的VHDL結(jié)構(gòu)還包括配置,程序包與庫(kù)。各種硬件描述語(yǔ)言中,VHDL的描述能力最強(qiáng),因此運(yùn)用VHDL 進(jìn)行復(fù)雜電路設(shè)計(jì)時(shí),往往采用自頂向下結(jié)構(gòu)化的設(shè)計(jì)方法。</p><p>  2.3 設(shè)計(jì)工具簡(jiǎn)介</p><p>  Quartus

11、 II 是Altera公司的綜合性PLD開(kāi)發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。</p><p>  Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫(kù),使用戶可以充分利用

12、成熟的模塊,簡(jiǎn)化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度。對(duì)第三方EDA工具的良好支持也使用戶可以在設(shè)計(jì)流程的各個(gè)階段使用熟悉的第三放EDA工具。</p><p>  此外,Quartus II 通過(guò)和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實(shí)現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開(kāi)發(fā),集系統(tǒng)級(jí)設(shè)計(jì)、嵌入式軟件開(kāi)發(fā)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開(kāi)發(fā)平臺(tái)

13、。</p><p>  Maxplus II 作為Altera的上一代PLD設(shè)計(jì)軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前Altera已經(jīng)停止了對(duì)Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在Quartus II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設(shè)計(jì)輔助工具,集成了SOPC和H

14、ardCopy設(shè)計(jì)流程,并且繼承了Maxplus II 友好的圖形界面及簡(jiǎn)便的使用方法。</p><p>  Altera Quartus II 作為一種可編程邏輯的設(shè)計(jì)環(huán)境, 由于其強(qiáng)大的設(shè)計(jì)能力和直觀易用的接口,越來(lái)越受到數(shù)字系統(tǒng)設(shè)計(jì)者的歡迎。 </p><p>  Altera的Quartus II可編程邏輯軟件屬于第四代PLD開(kāi)發(fā)平臺(tái)。該平臺(tái)支持一個(gè)工作組環(huán)境下的設(shè)計(jì)要求,其中包括

15、支持基于Internet的協(xié)作設(shè)計(jì)。Quartus平臺(tái)與Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供應(yīng)商的開(kāi)發(fā)工具相兼容。改進(jìn)了軟件的LogicLock模塊設(shè)計(jì)功能,增添 了FastFit編譯選項(xiàng),推進(jìn)了網(wǎng)絡(luò)編輯性能,而且提升了調(diào)試能力。</p><p><b>  3 設(shè)計(jì)流程</b></p>&

16、lt;p>  3.1設(shè)計(jì)思想及原理圖</p><p>  基于VHDL語(yǔ)言設(shè)計(jì)一個(gè)簡(jiǎn)易多功能信號(hào)發(fā)生器,通過(guò)選入輸入信號(hào),可以輸出正弦波、三角波、方波和鋸齒波四種波形信號(hào)。信號(hào)發(fā)生器的控制模塊可以用數(shù)據(jù)選擇器實(shí)現(xiàn),四種信號(hào)的信號(hào)選擇可以用4選1數(shù)據(jù)選擇器實(shí)現(xiàn)。同時(shí)本設(shè)計(jì)使用原理圖的方法,對(duì)正弦波、三角波、方波和鋸齒波和4選1數(shù)據(jù)選擇器元件進(jìn)行調(diào)用。</p><p>  簡(jiǎn)易多功能信號(hào)

17、發(fā)生器的原理圖如下:</p><p>  本設(shè)計(jì)的主題思想是各個(gè)模塊分別產(chǎn)生相應(yīng)的波形,再通過(guò)一個(gè)4選1數(shù)據(jù)選擇器輸出相應(yīng)的波形。通過(guò)其他按鍵控制波形的頻率和幅度的變化。</p><p>  3.2 正弦波、三角波、方波和鋸齒波的實(shí)現(xiàn)</p><p>  3.2.1正弦波設(shè)計(jì)</p><p>  正弦波的產(chǎn)生思想是將對(duì)模擬波形采樣后的編碼存

18、入定義好的ROM中,再根據(jù)時(shí)鐘循環(huán)的將這些編碼順序輸出,在輸出端將經(jīng)過(guò)數(shù)模轉(zhuǎn)換器轉(zhuǎn)換后的模擬信號(hào)接入示波器即可顯示正弦波形。產(chǎn)生正弦波的VHDL代碼如下:</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity sin2 is</p><p&g

19、t;  port(clock,sel:in std_logic;</p><p>  dout4:out integer range 0 to 255);</p><p><b>  end sin2;</b></p><p>  architecture bhv of sin2 is</p><p>  type me

20、m_type is array(0 to 63) of integer range 0 to 255;</p><p>  constant mem:mem_type:=(255,254,252,249,245,239,233,225,</p><p>  217,207,197,186,174,162,150,137,</p><p>  124,112,99,8

21、7,75,64,53,43,34,</p><p>  26,19,13,8,4,1,0,0,1,4,8,</p><p>  13,19,26,34,43,53,64,75,87,99,</p><p>  112,124,137,150,162,174,186,197,207,</p><p>  217,225,233,239,245,

22、249,252,254,255);</p><p>  signal address:integer range 0 to 63;</p><p><b>  begin</b></p><p>  process(clock)</p><p><b>  begin</b></p>

23、<p>  if clock'event and clock='1' then</p><p>  if address>63 then</p><p>  address<=0;</p><p><b>  else</b></p><p>  if sel='1&

24、#39; then</p><p>  address<=address+1;</p><p>  dout4<=(mem(address))/2;</p><p><b>  else</b></p><p>  address<=address+1;</p><p>  do

25、ut4<=mem(address);</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p

26、><b>  end bhv;</b></p><p>  3.2.2正弦波的仿真</p><p>  在Quartus II軟件輸入上述代碼,再通過(guò)編譯和時(shí)序仿真,可得到如下的仿真波形。</p><p>  上圖中的輸出制式模擬信號(hào)各采樣點(diǎn)的數(shù)字編碼,由于沒(méi)有經(jīng)過(guò)數(shù)模轉(zhuǎn)換,輸出結(jié)果就如圖中所示。當(dāng)將程序下載到硬件后,在示波器上就可以顯示

27、正弦波形了。</p><p>  3.2.3三角波設(shè)計(jì)</p><p>  三角波的產(chǎn)生思想是將對(duì)模擬波形采樣后的編碼存入定義好的ROM中,再根據(jù)時(shí)鐘循環(huán)的將這些編碼順序輸出,在輸出端將經(jīng)過(guò)數(shù)模轉(zhuǎn)換器轉(zhuǎn)換后的模擬信號(hào)接入示波器即可顯示三角波形。產(chǎn)生三角波的VHDL代碼如下:</p><p>  library ieee;</p><p>  

28、use ieee.std_logic_1164.all;</p><p>  entity sanjiao is</p><p>  port(clock,sel:in std_logic;</p><p>  dout3:out integer range 0 to 255);</p><p>  end sanjiao;</p>

29、;<p>  architecture bhv of sanjiao is</p><p>  type mem_type is array(0 to 63) of integer range 0 to 255;</p><p>  constant mem:mem_type:=(0,8,16,24,32,40,48,56,</p><p>  64,

30、72,80,88,96,104,112,120,</p><p>  128,136,144,152,160,168,176,184,</p><p>  192,200,208,216,224,232,240,248,</p><p>  255,248,240,232,224,216,208,200,</p><p>  192,184,

31、176,168,160,152,144,136,</p><p>  128,120,112,104,96,88,80,72,</p><p>  64,56,48,40,32,24,16,8);</p><p>  signal address:integer range 0 to 63;</p><p><b>  begin&

32、lt;/b></p><p>  process(clock)</p><p><b>  begin</b></p><p>  if clock'event and clock='1' then</p><p>  if address>63 then</p><

33、;p>  address<=0;</p><p><b>  else</b></p><p>  if sel='1' then</p><p>  address<=address+1;</p><p>  dout3<=(mem(address))/2;</p>

34、<p><b>  else</b></p><p>  address<=address+1;</p><p>  dout3<=mem(address);</p><p><b>  end if;</b></p><p><b>  end if;</b

35、></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end bhv;</b></p><p>  3.2.4三角波的仿真</p><p>  在Quartus II軟件輸入上述代碼,再通過(guò)編譯

36、和時(shí)序仿真,可得到如下的仿真波形。</p><p>  上圖中的輸出制式模擬信號(hào)各采樣點(diǎn)的數(shù)字編碼,由于沒(méi)有經(jīng)過(guò)數(shù)模轉(zhuǎn)換,輸出結(jié)果就如圖中所示。當(dāng)將程序下載到硬件后,在示波器上就可以顯示三角波形了。</p><p><b>  3.2.5方波設(shè)計(jì)</b></p><p>  方波波的產(chǎn)生思想是將對(duì)模擬波形采樣后的編碼存入定義好的ROM中,再根據(jù)

37、時(shí)鐘循環(huán)的將這些編碼順序輸出,在輸出端將經(jīng)過(guò)數(shù)模轉(zhuǎn)換器轉(zhuǎn)換后的模擬信號(hào)接入示波器即可顯示方波波形。產(chǎn)生方波的VHDL代碼如下:</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity fangbo is</p><p>  port(clo

38、ck,sel:in std_logic;</p><p>  dout1:out integer range 0 to 255);</p><p>  end fangbo;</p><p>  architecture bhv of fangbo is</p><p>  type mem_type is array(0 to 63) of

39、 integer range 0 to 255;</p><p>  constant mem:mem_type:=(255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,</p><p>  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,25

40、5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,</p><p>  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);</p><p>  signal address:integer range 0 to 63;</p><p><b>  begin</b></p><p>  

41、process(clock)</p><p><b>  begin</b></p><p>  if clock'event and clock='1' then</p><p>  if address>63 then</p><p>  address<=0;</p>

42、<p><b>  else</b></p><p>  if sel='1' then</p><p>  address<=address+1;</p><p>  dout1<=(mem(address))/2;</p><p><b>  else</b&

43、gt;</p><p>  address<=address+1;</p><p>  dout1<=mem(address);</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end i

44、f; </p><p>  end process;</p><p><b>  end bhv;</b></p><p>  3.2.6方波的仿真</p><p>  在Quartus II軟件輸入上述代碼,再通過(guò)編譯和時(shí)序仿真,可得到如下的仿真波形。</p><p>  上圖中的輸出制

45、式模擬信號(hào)各采樣點(diǎn)的數(shù)字編碼,由于沒(méi)有經(jīng)過(guò)數(shù)模轉(zhuǎn)換,輸出結(jié)果就如圖中所示。當(dāng)將程序下載到硬件后,在示波器上就可以顯示三角波形了。</p><p>  3.2.7鋸齒波設(shè)計(jì)</p><p>  鋸齒波的產(chǎn)生思想是將對(duì)模擬波形采樣后的編碼存入定義好的ROM中,再根據(jù)時(shí)鐘循環(huán)的將這些編碼順序輸出,在輸出端將經(jīng)過(guò)數(shù)模轉(zhuǎn)換器轉(zhuǎn)換后的模擬信號(hào)接入示波器即可顯示鋸齒波形。產(chǎn)生鋸齒波的VHDL代碼如下:&

46、lt;/p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity juchi is</p><p>  port(clock,sel:in std_logic;</p><p>  dout2:out integer rang

47、e 0 to 255);</p><p>  end juchi;</p><p>  architecture bhv of juchi is</p><p>  type mem_type is array(0 to 63) of integer range 0 to 255;</p><p>  constant mem:mem_typ

48、e:=(0,4,8,12,16,20,24,28,</p><p>  32,36,40,44,48,52,56,60,</p><p>  64,68,72,76,80,84,88,92,</p><p>  96,100,104,108,112,116,120,124,</p><p>  128,132,136,140,144,148,

49、152,156,</p><p>  160,164,168,172,176,180,184,188,</p><p>  192,198,200,204,208,212,216,220,</p><p>  224,228,234,238,242,246,250,255);</p><p>  signal address:integer

50、range 0 to 63;</p><p><b>  begin</b></p><p>  process(clock)</p><p><b>  begin</b></p><p>  if clock'event and clock='1' then</p&

51、gt;<p>  if address>63 then</p><p>  address<=0;</p><p><b>  else</b></p><p>  if sel='1' then</p><p>  address<=address+1;</p>

52、;<p>  dout2<=(mem(address))/2;</p><p><b>  else</b></p><p>  address<=address+1;</p><p>  dout2<=mem(address);</p><p><b>  end if;<

53、;/b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end bhv;</b></p><p>  3.2.8鋸齒

54、波的仿真</p><p>  在Quartus II軟件輸入上述代碼,再通過(guò)編譯和時(shí)序仿真,可得到如下的仿真波形。</p><p>  上圖中的輸出制式模擬信號(hào)各采樣點(diǎn)的數(shù)字編碼,由于沒(méi)有經(jīng)過(guò)數(shù)模轉(zhuǎn)換,輸出結(jié)果就如圖中所示。當(dāng)將程序下載到硬件后,在示波器上就可以顯示鋸齒波波形了。</p><p>  3.3各個(gè)控制單元的實(shí)現(xiàn)</p><p>

55、  3.3.1頻率控制單元</p><p>  頻率控制單元包括按鍵輸入識(shí)別模塊、分頻數(shù)產(chǎn)生模塊和分頻模塊。其器件圖分別如圖6、圖7和圖8所示。</p><p>  在按鍵輸入識(shí)別模塊中共有4個(gè)輸入端。其中一個(gè)時(shí)鐘輸入端,以一個(gè)頻率調(diào)</p><p>  節(jié)輸入端,一個(gè)使系統(tǒng)輸出波形的頻率為最大的控制輸入端和一個(gè)使系統(tǒng)輸出波形的頻率為最小的控制輸入端。本課程設(shè)計(jì)要求

56、輸出波形的頻率在每按一次相應(yīng)的按鍵時(shí),就增加或減少500Hz。而實(shí)驗(yàn)室的硬件設(shè)備上的按鍵都是撥碼是按鍵,即按鍵按下后一直有效,這顯然不能滿足要求。于是按鍵輸入識(shí)別模塊中用如下的代碼實(shí)現(xiàn)按鍵沒(méi)按一次都能有效的功能。</p><p>  if button0='0' and button1='1' then</p><p>  if cnt=40 then<

57、;/p><p><b>  cnt<=0;</b></p><p><b>  else</b></p><p>  cnt<=cnt+1;</p><p><b>  end if;</b></p><p>  elsif button0=&#

58、39;1' and button1='0' then</p><p>  if cnt=40 then</p><p><b>  cnt<=0;</b></p><p><b>  else</b></p><p>  cnt<=cnt+1;</p>

59、<p><b>  end if;</b></p><p>  以上代碼實(shí)現(xiàn)的只是頻率增長(zhǎng)的功能,同理就可以實(shí)現(xiàn)頻率減小的功能。</p><p>  當(dāng)按下按鍵輸入識(shí)別模塊中分別使整個(gè)系統(tǒng)輸出最大和最小頻率的波形的控制輸入端時(shí) ,在按相應(yīng)的使頻率增減的按鍵則實(shí)現(xiàn)頻率從最大或最小開(kāi)始增加或減少的功能。</p><p>  在分頻數(shù)產(chǎn)

60、生模塊中有一個(gè)輸入端接收從按鍵輸入識(shí)別模塊中輸出地對(duì)頻率的控制信號(hào)的輸入端,一個(gè)分頻數(shù)輸出端,四個(gè)相應(yīng)的接數(shù)碼管以顯示系統(tǒng)輸出信號(hào)的頻率的輸出端。</p><p>  當(dāng)分頻數(shù)產(chǎn)生模塊的輸入端接收從按鍵輸入識(shí)別模塊中輸出地對(duì)頻率的控制信號(hào)后,便產(chǎn)生相應(yīng)的分頻數(shù)送到輸出端,同時(shí)將與分頻數(shù)相應(yīng)頻率送到與數(shù)碼管相接的輸出端。其VHDL代碼見(jiàn)本課程設(shè)計(jì)的附錄。</p><p>  在分頻模塊中有一

61、個(gè)系統(tǒng)時(shí)鐘輸入端,一個(gè)分頻數(shù)輸入端和一個(gè)頻率輸出端。分頻器的功能主要是根據(jù)分頻數(shù)產(chǎn)生相應(yīng)的輸出頻率。</p><p>  3.3.2波形輸出控制單元</p><p>  波形輸出控制單元中只包括一個(gè)數(shù)據(jù)選擇器模塊。其器件圖如圖9所示</p><p>  在該模塊為4選1的數(shù)據(jù)選擇器,包括4個(gè)數(shù)據(jù)輸入端,一個(gè)數(shù)據(jù)選擇輸入端和一個(gè)數(shù)據(jù)輸出端。其功能是根據(jù)數(shù)據(jù)選擇輸入端輸

62、入的數(shù)據(jù)來(lái)選擇相應(yīng)的數(shù)據(jù)送到輸出端。從而實(shí)現(xiàn)數(shù)據(jù)的選擇輸出。</p><p><b>  3.4硬件測(cè)試</b></p><p>  本課程設(shè)計(jì)是簡(jiǎn)易多功能信號(hào)發(fā)生器,其總共有6個(gè)輸入端和6個(gè)輸出端。具體的輸入輸出端可見(jiàn)圖1中所示。</p><p>  根據(jù)引腳所鎖定圖將系統(tǒng)中的各個(gè)輸入輸出端口鎖定到合適的引腳上。需要注意的是本系統(tǒng)用到了數(shù)碼管

63、顯示,所以應(yīng)該選定實(shí)驗(yàn)箱的模式6。另外,本實(shí)驗(yàn)輸入的時(shí)鐘頻率是12MHz。</p><p>  當(dāng)引腳鎖定完畢后,將程序下載到試驗(yàn)箱中,連好示波器,在輸入端輸入相應(yīng)的值即可得到相應(yīng)的輸出波形。具體的硬件仿真波形如下:</p><p>  在clk端輸入12MHz的時(shí)鐘信號(hào),當(dāng)圖1的原理圖中的bx[1..0]輸入“00”時(shí)得到的是方波波形,如圖10所示。改變sel的值可以該變輸出波形的幅值。

64、按頻率控制單元中介紹的方法可以實(shí)現(xiàn)波形頻率的改變。</p><p>  在clk端輸入12MHz的時(shí)鐘信號(hào),當(dāng)圖1的原理圖中的bx[1..0]輸入“01”時(shí)得到的是鋸齒波波形,如圖11所示。改變sel的值可以該變輸出波形的幅值。按頻率控制單元中介紹的方法可以實(shí)現(xiàn)波形頻率的改變。</p><p>  在clk端輸入12MHz的時(shí)鐘信號(hào),當(dāng)圖1的原理圖中的bx[1..0]輸入“11”時(shí)得到的是

65、正弦波波形,如圖12所示。改變sel的值可以該變輸出波形的幅值。按頻率控制單元中介紹的方法可以實(shí)現(xiàn)波形頻率的改變。</p><p><b>  4 結(jié)論</b></p><p>  EDA技術(shù)是當(dāng)前數(shù)字系統(tǒng)設(shè)計(jì)領(lǐng)域比較火熱的一種工具,他可以大大縮短設(shè)計(jì)需要的時(shí)間,降低成本的同時(shí)也提高了系統(tǒng)的穩(wěn)定性。使用VHDL語(yǔ)言描述硬件系統(tǒng)使得EDA技術(shù)有了更為廣闊的空間。本設(shè)計(jì)使

66、用了基于Altera公司的開(kāi)發(fā)軟件工具Quartus II,本系統(tǒng)即實(shí)現(xiàn)了可以輸出三種波形的簡(jiǎn)易多功能波形發(fā)生器,仿真結(jié)果證明,該設(shè)計(jì)正確有效,可以作為制作實(shí)物的理論依據(jù)。 對(duì)于EDA技Quartus II進(jìn)行了系統(tǒng)的設(shè)計(jì)和仿真。簡(jiǎn)易波形發(fā)生器在生活中各個(gè)場(chǎng)合都有著大量的使用術(shù)我一直都有著濃厚的興趣,借做課設(shè)的機(jī)會(huì),認(rèn)真的研究了一下這么科學(xué)。發(fā)現(xiàn)EDA技術(shù)比我們想象中的要有很大的難度。里面有很多的思想來(lái)源于信息電子技術(shù)輯算法的設(shè)計(jì),需要

67、有很強(qiáng)的C語(yǔ)言編程功底。學(xué)習(xí)一門知識(shí)要從最基本的體系構(gòu)架開(kāi)始,倘若一開(kāi)始就從頂層設(shè)計(jì)入手,就會(huì)造成很多基本原理、基本概念上的偏差,甚里面的基本知識(shí),包括電路的概念以及寄存器傳送的基本知識(shí)。VHDL語(yǔ)言與C語(yǔ)言有很大的不同,但是C語(yǔ)言的編程思想也可以移植到VHDL語(yǔ)言當(dāng)中來(lái),尤其是一些邏至?xí)涎釉O(shè)計(jì)的時(shí)間,事倍功半。雖然可設(shè)完成了,但我意識(shí)到,我對(duì)于這門學(xué)科只是停留在入門</p><p><b>  參考

68、文獻(xiàn)</b></p><p>  [1] 潘松,黃繼業(yè). EDA技術(shù)實(shí)用教程.北京:科學(xué)出版社,2002.</p><p>  [2] 甘歷.VHDL應(yīng)用與開(kāi)發(fā)實(shí)際.北京:科學(xué)出版社,2003.</p><p>  [3] 孫延鵬,張芝賢.VHDL與可編程邏輯器件應(yīng)用.航空工業(yè)出版社,2006.</p><p>  [4] 趙明富

69、,李立軍,石新鋒,沈獻(xiàn)博.EDA技術(shù)基礎(chǔ).北京大學(xué)出版社,2007.</p><p>  [5] 黃仁欣.EDA技術(shù)實(shí)用教程.清華大學(xué)出版社,2006.</p><p><b>  附錄</b></p><p><b>  方波</b></p><p>  library ieee;</p&g

70、t;<p>  use ieee.std_logic_1164.all;</p><p>  entity fangbo is</p><p>  port(clock,sel:in std_logic;</p><p>  dout1:out integer range 0 to 255);</p><p>  end fan

71、gbo;</p><p>  architecture bhv of fangbo is</p><p>  type mem_type is array(0 to 63) of integer range 0 to 255;</p><p>  constant mem:mem_type:=(255,255,255,255,255,255,255,255,255,

72、255,255,255,255,255,255,255,</p><p>  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);</p><p>  signal address:in

73、teger range 0 to 63;</p><p><b>  begin</b></p><p>  process(clock)</p><p><b>  begin</b></p><p>  if clock'event and clock='1' then&

74、lt;/p><p>  if address>63 then</p><p>  address<=0;</p><p><b>  else</b></p><p>  if sel='1' then</p><p>  address<=address+1;<

75、;/p><p>  dout1<=(mem(address))/2;</p><p><b>  else</b></p><p>  address<=address+1;</p><p>  dout1<=mem(address);</p><p><b>  end

76、if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end bhv;</b></p><p><

77、;b>  正弦波</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity sin2 is</p><p>  port(clock,sel:in std_logic;</p><p>  d

78、out4:out integer range 0 to 255);</p><p><b>  end sin2;</b></p><p>  architecture bhv of sin2 is</p><p>  type mem_type is array(0 to 63) of integer range 0 to 255;</

79、p><p>  constant mem:mem_type:=(255,254,252,249,245,239,233,225,</p><p>  217,207,197,186,174,162,150,137,</p><p>  124,112,99,87,75,64,53,43,34,</p><p>  26,19,13,8,4,1,0

80、,0,1,4,8,</p><p>  13,19,26,34,43,53,64,75,87,99,</p><p>  112,124,137,150,162,174,186,197,207,</p><p>  217,225,233,239,245,249,252,254,255);</p><p>  signal address:i

81、nteger range 0 to 63;</p><p><b>  begin</b></p><p>  process(clock)</p><p><b>  begin</b></p><p>  if clock'event and clock='1' then

82、</p><p>  if address>63 then</p><p>  address<=0;</p><p><b>  else</b></p><p>  if sel='1' then</p><p>  address<=address+1;&l

83、t;/p><p>  dout4<=(mem(address))/2;</p><p><b>  else</b></p><p>  address<=address+1;</p><p>  dout4<=mem(address);</p><p><b>  end

84、 if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end bhv;</b></p><p>&l

85、t;b>  鋸齒波</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity juchi is</p><p>  port(clock,sel:in std_logic;</p><p> 

86、 dout2:out integer range 0 to 255);</p><p>  end juchi;</p><p>  architecture bhv of juchi is</p><p>  type mem_type is array(0 to 63) of integer range 0 to 255;</p><p>

87、;  constant mem:mem_type:=(0,4,8,12,16,20,24,28,</p><p>  32,36,40,44,48,52,56,60,</p><p>  64,68,72,76,80,84,88,92,</p><p>  96,100,104,108,112,116,120,124,</p><p>  1

88、28,132,136,140,144,148,152,156,</p><p>  160,164,168,172,176,180,184,188,</p><p>  192,198,200,204,208,212,216,220,</p><p>  224,228,234,238,242,246,250,255);</p><p>  

89、signal address:integer range 0 to 63;</p><p><b>  begin</b></p><p>  process(clock)</p><p><b>  begin</b></p><p>  if clock'event and clock=

90、'1' then</p><p>  if address>63 then</p><p>  address<=0;</p><p><b>  else</b></p><p>  if sel='1' then</p><p>  address&

91、lt;=address+1;</p><p>  dout2<=(mem(address))/2;</p><p><b>  else</b></p><p>  address<=address+1;</p><p>  dout2<=mem(address);</p><p&g

92、t;<b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end bhv;</b></p&

93、gt;<p><b>  三角波</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity sanjiao is</p><p>  port(clock,sel:in std_logic;<

94、/p><p>  dout3:out integer range 0 to 255);</p><p>  end sanjiao;</p><p>  architecture bhv of sanjiao is</p><p>  type mem_type is array(0 to 63) of integer range 0 to 25

95、5;</p><p>  constant mem:mem_type:=(0,8,16,24,32,40,48,56,</p><p>  64,72,80,88,96,104,112,120,</p><p>  128,136,144,152,160,168,176,184,</p><p>  192,200,208,216,224,2

96、32,240,248,</p><p>  255,248,240,232,224,216,208,200,</p><p>  192,184,176,168,160,152,144,136,</p><p>  128,120,112,104,96,88,80,72,</p><p>  64,56,48,40,32,24,16,8);&

97、lt;/p><p>  signal address:integer range 0 to 63;</p><p><b>  begin</b></p><p>  process(clock)</p><p><b>  begin</b></p><p>  if cloc

98、k'event and clock='1' then</p><p>  if address>63 then</p><p>  address<=0;</p><p><b>  else</b></p><p>  if sel='1' then</p>

99、;<p>  address<=address+1;</p><p>  dout3<=(mem(address))/2;</p><p><b>  else</b></p><p>  address<=address+1;</p><p>  dout3<=mem(addres

100、s);</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end

101、 bhv;</b></p><p><b>  按鍵輸入識(shí)別模塊</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity aa is</p><p>  port(clk:i

102、n std_logic;</p><p>  btn:in std_logic_vector(1 downto 0);</p><p>  highh:in std_logic;</p><p>  loww:in std_logic;</p><p>  addr:out integer range 0 to 40);</p>

103、<p><b>  end aa;</b></p><p>  architecture bhv of aa is</p><p>  signal cnt:integer range 0 to 40 :=0;</p><p>  signal button0,button1,button2,button3:std_logic;&l

104、t;/p><p><b>  begin</b></p><p>  process(highh,loww,clk,button0,button1)</p><p><b>  begin</b></p><p>  if clk'event and clk='1' then&l

105、t;/p><p>  button0<=btn(0);</p><p>  button1<=button0;</p><p>  button2<=btn(1);</p><p>  button3<=button2;</p><p>  if highh='1' then<

106、/p><p><b>  cnt<=40;</b></p><p>  elsif loww='1' then</p><p><b>  cnt<=0;</b></p><p><b>  else</b></p><p>  

107、if button0='0' and button1='1' then</p><p>  if cnt=40 then</p><p><b>  cnt<=0;</b></p><p><b>  else</b></p><p>  cnt<=cnt

108、+1;</p><p><b>  end if;</b></p><p>  elsif button0='1' and button1='0' then</p><p>  if cnt=40 then</p><p><b>  cnt<=0;</b>&l

109、t;/p><p><b>  else</b></p><p>  cnt<=cnt+1;</p><p><b>  end if;</b></p><p>  elsif button2='0' and button3='1' then</p>&

110、lt;p>  if cnt=0 then</p><p><b>  cnt<=40;</b></p><p><b>  else</b></p><p>  cnt<=cnt-1;</p><p><b>  end if;</b></p>

111、<p>  elsif button2='1' and button3='0' then</p><p>  if cnt=0 then</p><p><b>  cnt<=40;</b></p><p><b>  else</b></p><p>

112、;  cnt<=cnt-1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p&

113、gt;<p>  end process;</p><p>  addr<=cnt;</p><p><b>  end bhv;</b></p><p><b>  分頻模塊</b></p><p>  library ieee;</p><p>  u

114、se ieee.std_logic_1164.all;</p><p>  entity fenpin is</p><p>  port(shu:in integer range 0 to 937;</p><p>  clk:in std_logic;</p><p>  clock:out std_logic);</p>

115、<p>  end fenpin;</p><p>  architecture bhv of fenpin is</p><p>  signal num:integer range 0 to 937;</p><p>  signal i:integer range 0 to 937:=0;</p><p>  signal t

116、emp:std_logic:='0';</p><p><b>  begin</b></p><p>  process(clk,i,temp)</p><p><b>  begin</b></p><p>  if clk'event and clk='1

117、9; then</p><p>  if i=shu then</p><p><b>  i<=0;</b></p><p>  temp<=not temp;</p><p><b>  else</b></p><p><b>  i<=i+

118、1;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  clock<=temp;</p><p>  end process;</p><p><b>  end b

119、hv;</b></p><p><b>  分頻數(shù)產(chǎn)生模塊</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity pinlv is</p><p>  port(addre

120、ss:in integer range 0 to 40;</p><p>  shu:out integer range 0 to 937;</p><p>  wan,qian,bai,shi,ge:out std_logic_vector(3 downto 0));</p><p>  end pinlv;</p><p>  archi

121、tecture bhv of pinlv is</p><p><b>  begin</b></p><p>  process(address)</p><p><b>  begin</b></p><p>  case address is</p><p>  whe

122、n 0=>shu<=937;wan<="ZZZZ";qian<="ZZZZ";bai<="0001";shi<="0000";ge<="0000";</p><p>  when 1=>shu<=172;wan<="ZZZZ";qian

123、<="ZZZZ";bai<="0101";shi<="0000";ge<="0000";</p><p>  when 2=>shu<=93;wan<="ZZZZ";qian<="0001";bai<="0000";shi

124、<="0000";ge<="0000";</p><p>  when 3=>shu<=62;wan<="ZZZZ";qian<="0001";bai<="0101";shi<="0000";ge<="0000";<

125、/p><p>  when 4=>shu<=46;wan<="ZZZZ";qian<="0010";bai<="0000";shi<="0000";ge<="0000";</p><p>  when 5=>shu<=37;wan<=&

126、quot;ZZZZ";qian<="0010";bai<="0101";shi<="0000";ge<="0000";</p><p>  when 6=>shu<=31;wan<="ZZZZ";qian<="0011";bai<=

127、"0000";shi<="0000";ge<="0000";</p><p>  when 7=>shu<=26;wan<="ZZZZ";qian<="0011";bai<="0101";shi<="0000";ge<=&

128、quot;0000";</p><p>  when 8=>shu<=24;wan<="ZZZZ";qian<="0100";bai<="0000";shi<="0000";ge<="0000";</p><p>  when 9=>

129、shu<=20;wan<="ZZZZ";qian<="0100";bai<="0101";shi<="0000";ge<="0000";</p><p>  when 10=>shu<=18;wan<="ZZZZ";qian<=&quo

130、t;0101";bai<="0000";shi<="0000";ge<="0000";</p><p>  when 11=>shu<=16;wan<="ZZZZ";qian<="0101";bai<="0101";shi<=&qu

131、ot;0000";ge<="0000";</p><p>  when 12=>shu<=15;wan<="ZZZZ";qian<="0110";bai<="0000";shi<="0000";ge<="0000";</p>

132、<p>  when 13=>shu<=28;wan<="ZZZZ";qian<="0110";bai<="0101";shi<="0000";ge<="0000";</p><p>  when 14=>shu<=13;wan<="

溫馨提示

  • 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)論